Py学习  »  Python

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

LAC STUDIO • 2 年前 • 457 次点击  

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
 
457 次点击