Hello小伙伴们。本期请出了「软件小课堂」栏目和大家见面~
对于建筑师而言,我们经常需要在模型中批量放置诸如树木,车辆,人物这样的一些基本素材。

并且这些素材除了位置不同之外,为了增加画面丰富程度,往往我们还需要对其进行不同的缩放和旋转处理。这就意味着纯手工处理会耗费大量建筑师的时间和精力。虽然借助类似于skatter这样的插件,我们也可以实现随机散布的效果。但实际上只需要运用简单的Python语言,我们就可以在不借助任何插件的情况下实现随机散布。


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

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


当然大家也可以在设置里面进一步简化模型的显示,比如使用边界框进行预览。
最后我们绘制一个面表示要散布的区域。绘制一个点表示树木的平面基准点。

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

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

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

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

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



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


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


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

LAC STUDIO 23、24fall 招生现已全面开启!
扫描下方二维码即可免费咨询!
wechat:客服账号