本文来自牛侃BIM的南泽有木
一、平面浮雕
1.1选取图片(通过Dy将图片倒入到我们的画布中,并读取到图片的尺寸信息)
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数组是从大到小排列的)。
下面是我们生成点的PythonScript中的代码:
(这里稍作解释一下,取横向网格、竖向网格的值作为我们创建点的x、z坐标,取色彩值--这里选用的是Red强度值,并将其缩放10倍,添加“-”号是为了让浮雕向y的反方向凸出。由上述代码可生成一个二维数组,每一列一维数组对应由上之下每一列点组,并且一维数组的点从左向右排列)
1.3既然这里空间凹凸程度不同的二维点组我们有了,接下来,我们需要创建一些系列的子Surfaces来拼凑出整体的画面。
在这里,我们新建一个Python脚本代码,代码的内容如下:
代码的思路是将每一行依次取序号为0到-2的所有点,暂且称之为点P1,接着取同行次列的点P2、以及同列次行的点P3,将三点连成闭合的线并形成facea面(即下图三个红圈内的点),于此同时取绿色圈中的三个点形成faceb。依次类推)
这里解释一下之前的“height..0..#Math.Round(_h)”为什么从大到小排列,究其原因,是因为Image.Pixels这个节点提取图片的颜色ARGB值从按照从上至下,从左至右的顺序进行的,生成的ARGB二维数组是由上而下的每一列由左至右的点数组构成的(理解下)
这是最终的效果:
(该效果精度取值为3,值越低,精度越高,相应的会消耗更长的时间)
最新文章
政策新闻 | 关于北京中关村生命科学园发展有限责任公司申请房地产开发企业二级资质初审结果的公示 政策新闻 | 省住建厅关于开展贵州省住房城乡建设领域“十五五”规划编制建言献策活动的公告 政策新闻 | 关于宝徕居6幢409室商品房公开销售公告 政策新闻 | 马鞍山市产权处首套普通住房交易购房补贴结项审计成交公告 政策新闻 | 西藏实行民族区域自治制度60年的成就与经验 政策新闻 | 遂昌县自然资源和规划局不动产权证遗失声明公告2025年56号 政策新闻 | 宁夏住建厅关于核准2025年第22批建筑施工企业安全生产许可证名单的公告 政策新闻 | 关于发布宿迁市2025年第二季度新增既有房屋安全鉴定机构名录的通知 政策新闻 | 郑州市城乡建设局关于新增城市更新项目入库的公示 政策新闻 | 广西住建厅关于批准发布广西工程建设地方标准《广西生活垃圾焚烧飞灰处理技术应用指南》的通知