完善主体资料,免费赠送VIP会员!
* 主体类型
* 企业名称
* 信用代码
* 所在行业
* 企业规模
* 所在职位
* 姓名
* 所在行业
* 学历
* 工作性质
请先选择行业
您还可以选择以下福利:
行业福利,领完即止!

下载app免费领取会员

NULL

5cdd2dc095060.jpg

Dynamo生成精美复杂的浮雕(二)

发布于:2021-06-29 10:11:39
首页/技术分享/Dynamo
收藏
5738

网友投稿

更多

本文来自牛侃BIM的南泽有木

一、平面浮雕

1.1选取图片(通过Dy将图片倒入到我们的画布中,并读取到图片的尺寸信息)

01.png

1.2接下来,我们将得到的尺寸值长宽一同缩放一个比例m,这个比例值m可以理解为每隔一个比例值m的间距创建一条横/竖向网格线,然后,将缩放后的网格线数量给到Image.Pixels这个节点上(x、y对应长宽网格数量,Image输入我们的图片即可),这里需要注意的一点是该节点的x/ySamples接受的是一个Int整数,虽然我们给的横纵网格线数量值不是Int,但也不会影响该节点工作(节点将会自动把该值四舍五入为一个整数,理解一下,这里和把输入值int()取整数是不同的);另外的,我们需要创建两列横纵向的网格的分量,用CodeBlock代码块输入“0..width..#Math.Round(_w)”、“height..0..#Math.Round(_h)”(后面会解释一下为什么height数组是从大到小排列的)。

02.png

下面是我们生成点的PythonScript中的代码:

03.jpg

(这里稍作解释一下,取横向网格、竖向网格的值作为我们创建点的x、z坐标,取色彩值--这里选用的是Red强度值,并将其缩放10倍,添加“-”号是为了让浮雕向y的反方向凸出。由上述代码可生成一个二维数组,每一列一维数组对应由上之下每一列点组,并且一维数组的点从左向右排列)

04.jpg

05.png

1.3既然这里空间凹凸程度不同的二维点组我们有了,接下来,我们需要创建一些系列的子Surfaces来拼凑出整体的画面。

06.jpg

在这里,我们新建一个Python脚本代码,代码的内容如下:

07.jpg

代码的思路是将每一行依次取序号为0到-2的所有点,暂且称之为点P1,接着取同行次列的点P2、以及同列次行的点P3,将三点连成闭合的线并形成facea面(即下图三个红圈内的点),于此同时取绿色圈中的三个点形成faceb。依次类推)

08.png

这里解释一下之前的“height..0..#Math.Round(_h)”为什么从大到小排列,究其原因,是因为Image.Pixels这个节点提取图片的颜色ARGB值从按照从上至下,从左至右的顺序进行的,生成的ARGB二维数组是由上而下的每一列由左至右的点数组构成的(理解下)

09.png

这是最终的效果:

10.png

(该效果精度取值为3,值越低,精度越高,相应的会消耗更长的时间)

本文版权归腿腿教学网及原创作者所有,未经授权,谢绝转载。

未标题-1.jpg

上一篇:Dynamo生成精美复杂的浮雕(一)

下一篇:Dynamo生成精美复杂的浮雕(三)