下載app免費(fèi)領(lǐng)取會(huì)員
本文來(lái)自牛侃BIM的南澤有木
一、平面浮雕
1.1選取圖片(通過(guò)Dy將圖片倒入到我們的畫(huà)布中,并讀取到圖片的尺寸信息)
1.2接下來(lái),我們將得到的尺寸值長(zhǎng)寬一同縮放一個(gè)比例m,這個(gè)比例值m可以理解為每隔一個(gè)比例值m的間距創(chuàng)建一條橫/豎向網(wǎng)格線,然后,將縮放后的網(wǎng)格線數(shù)量給到Image.Pixels這個(gè)節(jié)點(diǎn)上(x、y對(duì)應(yīng)長(zhǎng)寬網(wǎng)格數(shù)量,Image輸入我們的圖片即可),這里需要注意的一點(diǎn)是該節(jié)點(diǎn)的x/ySamples接受的是一個(gè)Int整數(shù),雖然我們給的橫縱網(wǎng)格線數(shù)量值不是Int,但也不會(huì)影響該節(jié)點(diǎn)工作(節(jié)點(diǎn)將會(huì)自動(dòng)把該值四舍五入為一個(gè)整數(shù),理解一下,這里和把輸入值int()取整數(shù)是不同的);另外的,我們需要?jiǎng)?chuàng)建兩列橫縱向的網(wǎng)格的分量,用CodeBlock代碼塊輸入“0..width..#Math.Round(_w)”、“height..0..#Math.Round(_h)”(后面會(huì)解釋一下為什么height數(shù)組是從大到小排列的)。
下面是我們生成點(diǎn)的PythonScript中的代碼:
(這里稍作解釋一下,取橫向網(wǎng)格、豎向網(wǎng)格的值作為我們創(chuàng)建點(diǎn)的x、z坐標(biāo),取色彩值--這里選用的是Red強(qiáng)度值,并將其縮放10倍,添加“-”號(hào)是為了讓浮雕向y的反方向凸出。由上述代碼可生成一個(gè)二維數(shù)組,每一列一維數(shù)組對(duì)應(yīng)由上之下每一列點(diǎn)組,并且一維數(shù)組的點(diǎn)從左向右排列)
1.3既然這里空間凹凸程度不同的二維點(diǎn)組我們有了,接下來(lái),我們需要?jiǎng)?chuàng)建一些系列的子Surfaces來(lái)拼湊出整體的畫(huà)面。
在這里,我們新建一個(gè)Python腳本代碼,代碼的內(nèi)容如下:
代碼的思路是將每一行依次取序號(hào)為0到-2的所有點(diǎn),暫且稱(chēng)之為點(diǎn)P1,接著取同行次列的點(diǎn)P2、以及同列次行的點(diǎn)P3,將三點(diǎn)連成閉合的線并形成facea面(即下圖三個(gè)紅圈內(nèi)的點(diǎn)),于此同時(shí)取綠色圈中的三個(gè)點(diǎn)形成faceb。依次類(lèi)推)
這里解釋一下之前的“height..0..#Math.Round(_h)”為什么從大到小排列,究其原因,是因?yàn)镮mage.Pixels這個(gè)節(jié)點(diǎn)提取圖片的顏色ARGB值從按照從上至下,從左至右的順序進(jìn)行的,生成的ARGB二維數(shù)組是由上而下的每一列由左至右的點(diǎn)數(shù)組構(gòu)成的(理解下)
這是最終的效果:
(該效果精度取值為3,值越低,精度越高,相應(yīng)的會(huì)消耗更長(zhǎng)的時(shí)間)
本文版權(quán)歸腿腿教學(xué)網(wǎng)及原創(chuàng)作者所有,未經(jīng)授權(quán),謝絕轉(zhuǎn)載。
推薦專(zhuān)題