下載app免費領取會員
本文來自牛侃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,值越低,精度越高,相應的會消耗更長的時間)
本文版權歸腿腿教學網及原創作者所有,未經授權,謝絕轉載。
推薦專題