Blender幾何節(jié)點(diǎn)技巧(提取屬性,操控屬性)
如何控制移動(dòng)一個(gè)點(diǎn)
思維:要找到能夠?qū)崿F(xiàn)點(diǎn)移動(dòng)功能的幾何節(jié)點(diǎn),確定選中的點(diǎn),確定移動(dòng)的方向和距離(總結(jié)為矢量)

ID內(nèi)數(shù)據(jù)是(0,1,2,............)選中項(xiàng)是布爾輸入,0為假,后面點(diǎn)的序號(hào)都為真,所以能夠看到除了0序號(hào)的點(diǎn)都在移動(dòng),那么下一步就要找到要移動(dòng)的點(diǎn),把他的序號(hào)構(gòu)建為1,其他的序號(hào)構(gòu)建為0

這里我選用運(yùn)算節(jié)點(diǎn),B值選取的就是自己想要移動(dòng)的點(diǎn)的序號(hào),如果相等就會(huì)輸出1,不相等就輸出0

然后在偏移量里進(jìn)行調(diào)整就行

只需要打開(kāi)查看器的三角,然后選中3D視圖中的點(diǎn),就可以再數(shù)據(jù)查看器的第一列看到點(diǎn)的序號(hào)了

如何控制移動(dòng)多個(gè)點(diǎn)
舉個(gè)例子,我們想要12,15,16....24序號(hào)的點(diǎn)移動(dòng)
如何提取這幾個(gè)序號(hào)的點(diǎn)呢?
我們可以對(duì)12——24內(nèi)進(jìn)行一個(gè)范圍提取,先用大于等于和小于等于提取出兩個(gè)極端范圍,再進(jìn)行一波并集處理


接著剔除13, 14這兩個(gè)序號(hào)

后續(xù)就是移動(dòng)了


有沒(méi)有更加便捷的選取點(diǎn)的方法呢
答案肯定是有的啦,甚至比直接輸入點(diǎn)序號(hào)還方便,我們可以直接再外部選取要確定的點(diǎn),儲(chǔ)存到頂點(diǎn)組信息中

我想要每個(gè)選中的點(diǎn)移動(dòng)的方向和距離都不相同
最簡(jiǎn)單的就是用一張?jiān)氩y理圖提取出色彩信息(等價(jià)于矢量信息)

也可以通過(guò)隨機(jī)值來(lái)做隨機(jī)矢量

這種變化是混亂的,適合后期進(jìn)行一些變動(dòng)來(lái)增加細(xì)節(jié)
我想要選中點(diǎn)的偏移量變化是有規(guī)矩的
本質(zhì)上就是要手動(dòng)構(gòu)建一個(gè)三位向量集合,集合數(shù)量要和選中的點(diǎn)數(shù)量一致
比如選取三個(gè)點(diǎn)分別做(1,1,1)(1,2,1)(1,3,1)的移動(dòng)

問(wèn)題一:我并沒(méi)有在幾何節(jié)點(diǎn)中看到有關(guān)數(shù)值序列的生成節(jié)點(diǎn)(比如生成一個(gè)1,2,3,4,5,6的數(shù)字序列)(為啥我不選取index數(shù)列呢,因?yàn)楹湍P偷年P(guān)聯(lián)度太高了,我希望這個(gè)數(shù)列能獨(dú)立出來(lái))
后續(xù)詢(xún)問(wèn)是幾何節(jié)點(diǎn)不支持自建數(shù)組......
當(dāng)然,沒(méi)有辦法我們創(chuàng)造辦法
首先要解決的就是采用的數(shù)據(jù)不和原模型關(guān)聯(lián)嘛,那我直接在幾何節(jié)點(diǎn)里新建一個(gè)幾何體,用曲線(xiàn)能更加直觀的采集數(shù)據(jù),也比較節(jié)省性能。

但是目前只有兩個(gè)點(diǎn)的數(shù)據(jù),我們得在這條直線(xiàn)上分割以獲得更多的點(diǎn),最后轉(zhuǎn)成網(wǎng)格獲得點(diǎn)數(shù)據(jù)

回到最開(kāi)始,我們需要的是(1,1,1)(1,2,1)(1,3,1),所以細(xì)分一次,調(diào)整起始點(diǎn)和終點(diǎn)

到這我們的目標(biāo)就達(dá)成了

后續(xù)發(fā)現(xiàn)可以在自定義屬性里自定義數(shù)組(也可以用python直接代碼輸入)
問(wèn)題接著出現(xiàn)
自定義的數(shù)組無(wú)法接入到原始模型中

思路轉(zhuǎn)換

我們把選中的點(diǎn)的GROUP數(shù)值提取出來(lái),再轉(zhuǎn)變?yōu)榭捎脭?shù)組
直觀的轉(zhuǎn)變
[0,0,0,0....,1,....1,....1,.....0,0,0,0]————————[0,0,0,0....,1,....2,....3,.....0,0,0,0]
果然要搞算法過(guò)程。。。。

和之前的初始數(shù)據(jù)進(jìn)行一波乘法

可以看到選中的點(diǎn)按規(guī)律變化了

如何做進(jìn)一步的變化呢
答案是通過(guò)曲線(xiàn)來(lái)調(diào)整映射數(shù)值

問(wèn)題出現(xiàn)——浮點(diǎn)曲線(xiàn)只能在0-1的范圍內(nèi)映射數(shù)據(jù)
解決方法——可以在浮點(diǎn)曲線(xiàn)的首尾進(jìn)行一個(gè)除法,一個(gè)乘法,來(lái)滿(mǎn)足要求。(手動(dòng)調(diào)節(jié)比較麻煩,有沒(méi)有更加智能的)
直接一步到位把正整數(shù)映射到0-1范圍內(nèi)的,取倒數(shù)

輸出的時(shí)候記得再取一下倒數(shù),(然后這個(gè)曲線(xiàn)調(diào)整因?yàn)檫M(jìn)行數(shù)值經(jīng)過(guò)倒數(shù)所以并不是直接對(duì)應(yīng)調(diào)高就能變高的)

能不能選取邊進(jìn)行移動(dòng)呢
從網(wǎng)格體基本屬性上來(lái)說(shuō),兩點(diǎn)構(gòu)建一個(gè)邊,所以選中邊的兩段點(diǎn)做相同的移動(dòng)就行(可能多個(gè)邊操作起來(lái)就比較麻煩而已)
學(xué)習(xí)控制點(diǎn)屬性有啥用呢
從點(diǎn)出發(fā),能夠更加精細(xì)的控制后續(xù)的變化,比如后續(xù)對(duì)散布實(shí)例的一些變換控制,