社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

软件小课堂|巧用Python-在rhino中完成批量随机散布处理

LAC STUDIO • 3 年前 • 597 次点击  

Hello小伙伴们。本期请出了「软件小课堂」栏目和大家见面~


对于建筑师而言,我们经常需要在模型中批量放置诸如树木,车辆,人物这样的一些基本素材。



并且这些素材除了位置不同之外,为了增加画面丰富程度,往往我们还需要对其进行不同的缩放和旋转处理。这就意味着纯手工处理会耗费大量建筑师的时间和精力。

虽然借助类似于skatter这样的插件,我们也可以实现随机散布的效果。但实际上只需要运用简单的Python语言,我们就可以在不借助任何插件的情况下实现随机散布。







前期准备


假设我们需要完成一个树木的批量随机散布处理,那首先我们先导入一棵树木。



为了避免后续操作的卡顿。我们将其定义为代理物体。




当然大家也可以在设置里面进一步简化模型的显示,比如使用边界框进行预览。


最后我们绘制一个面表示要散布的区域。绘制一个点表示树木的平面基准点。



Python编程


要完成随机散布的处理,首先我们需要将模型随机移动到面上,移动需要向量,向量需要初始点和终止点,起始点已经有了,就是我们绘制的树木基准点。因此我们需要在场地上获取随机点表示树木的位置。移动之后了还需要对它进行随机的旋转和随机的缩放。使用editpythonscipt打开Python编程界面。



因为涉及对于rhino物件的变动以及随机,导入rs模块和random模块。



之后我们要使用get语句获取一些基本参数:树木模型,树木基准点,目标曲面,散布数量,随机缩放系数的最大值和最小值,以及随机旋转的角度范围。



之后我们就要开始获取随机点了。现获取曲面uv,创建一个空列表来存放点。



用循环语句,借助用随机,获取随机的曲面uv值,再使用evaulate surface来得到获取点。



两点生成向量,将基本树木复制过去。



最后对齐进行随机的缩放和旋转即可。



点击运行,根据提示依次选择所有物体,就可以获得随机散布的效果。




因为是使用曲面uv来获取的,因此无论场地是平面还是曲面都是可以进行散布的。




考虑到教程长度,这里主要是对于随机散布编程思路的展示,对于具体Python语法细节就没有进行过多的讲解了。各位对于Python感兴趣的话可以点击下方图片,了解更多Python编程的知识。


《建筑编程课》


LAC STUDIO 23、24fall 招生现已全面开启!

扫描下方二维码即可免费咨询!


wechat:客服账号




推 荐 阅 读




Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/132152
 
597 次点击