Blender几何节点技巧(提取属性,操控属性)
如何控制移动一个点
思维:要找到能够实现点移动功能的几何节点,确定选中的点,确定移动的方向和距离(总结为矢量)

ID内数据是(0,1,2,............)选中项是布尔输入,0为假,后面点的序号都为真,所以能够看到除了0序号的点都在移动,那么下一步就要找到要移动的点,把他的序号构建为1,其他的序号构建为0

这里我选用运算节点,B值选取的就是自己想要移动的点的序号,如果相等就会输出1,不相等就输出0

然后在偏移量里进行调整就行

只需要打开查看器的三角,然后选中3D视图中的点,就可以再数据查看器的第一列看到点的序号了

如何控制移动多个点
举个例子,我们想要12,15,16....24序号的点移动
如何提取这几个序号的点呢?
我们可以对12——24内进行一个范围提取,先用大于等于和小于等于提取出两个极端范围,再进行一波并集处理


接着剔除13, 14这两个序号

后续就是移动了


有没有更加便捷的选取点的方法呢
答案肯定是有的啦,甚至比直接输入点序号还方便,我们可以直接再外部选取要确定的点,储存到顶点组信息中

我想要每个选中的点移动的方向和距离都不相同
最简单的就是用一张噪波纹理图提取出色彩信息(等价于矢量信息)

也可以通过随机值来做随机矢量

这种变化是混乱的,适合后期进行一些变动来增加细节
我想要选中点的偏移量变化是有规矩的
本质上就是要手动构建一个三位向量集合,集合数量要和选中的点数量一致
比如选取三个点分别做(1,1,1)(1,2,1)(1,3,1)的移动

问题一:我并没有在几何节点中看到有关数值序列的生成节点(比如生成一个1,2,3,4,5,6的数字序列)(为啥我不选取index数列呢,因为和模型的关联度太高了,我希望这个数列能独立出来)
后续询问是几何节点不支持自建数组......
当然,没有办法我们创造办法
首先要解决的就是采用的数据不和原模型关联嘛,那我直接在几何节点里新建一个几何体,用曲线能更加直观的采集数据,也比较节省性能。

但是目前只有两个点的数据,我们得在这条直线上分割以获得更多的点,最后转成网格获得点数据

回到最开始,我们需要的是(1,1,1)(1,2,1)(1,3,1),所以细分一次,调整起始点和终点

到这我们的目标就达成了

后续发现可以在自定义属性里自定义数组(也可以用python直接代码输入)
问题接着出现
自定义的数组无法接入到原始模型中

思路转换

我们把选中的点的GROUP数值提取出来,再转变为可用数组
直观的转变
[0,0,0,0....,1,....1,....1,.....0,0,0,0]————————[0,0,0,0....,1,....2,....3,.....0,0,0,0]
果然要搞算法过程。。。。

和之前的初始数据进行一波乘法

可以看到选中的点按规律变化了

如何做进一步的变化呢
答案是通过曲线来调整映射数值

问题出现——浮点曲线只能在0-1的范围内映射数据
解决方法——可以在浮点曲线的首尾进行一个除法,一个乘法,来满足要求。(手动调节比较麻烦,有没有更加智能的)
直接一步到位把正整数映射到0-1范围内的,取倒数

输出的时候记得再取一下倒数,(然后这个曲线调整因为进行数值经过倒数所以并不是直接对应调高就能变高的)

能不能选取边进行移动呢
从网格体基本属性上来说,两点构建一个边,所以选中边的两段点做相同的移动就行(可能多个边操作起来就比较麻烦而已)
学习控制点属性有啥用呢
从点出发,能够更加精细的控制后续的变化,比如后续对散布实例的一些变换控制,