Houdini - 点序号重新匹配
在houdini中,对某个模型做了一系列修改之后,点序号@ptnum
与原始模型完全乱的,这时候去做bs会得到很夸张的结果,这时候需要去跟匹配原始模型点序号.
核心原理是点云,去寻找最近点的,然后赋予属性,按照属性使用sort节点对ptnum排序.下面的代码是生成两个节点,自动跟第二个端口匹配
要求
两个模型最好是重合的
肯定有更好的方法,这个代码主要是houdini的python,对节点的创建,修改,放置的学习

bs_1

先做bs,即使是爆炸的,先把节点加上,就是利用这个bs节点去做的添加节点的操作
执行之后,会在这个bs节点的第0输入口前面生成两个节点
一个是pointwrangle,根据点云添加属性
一个是sort,根据生成的属性重新排序
import hou
N = list(hou.selectedNodes())[0]
input_0 = N.inputs()[0]
input_1 = N.inputs()[1]
Nodes = N.parent()
node = Nodes.path()
obj = hou.node(node)
attribwrangleNode = obj.createNode("attribwrangle")
attribwrangleNode.setName('pw_sort')
attribwrangleNode.parm('snippet').set('i@nearpt = nearpoints(1, @P, 1, 2)[0];')
sortNode = obj.createNode("sort")
sortNode.setName('set_sort')
sortNode.parm('ptsort').set('attribute')
sortNode.parm('pointattrib').set('nearpt')
posx = N.position()[0]
posy = N.position()[1]
attribwrangleNode.setPosition([posx-1,posy+2])
sortNode.setPosition([posx-1,posy+1])
attribwrangleNode.setInput(0,input_0,0)
attribwrangleNode.setInput(1,input_1,0)
sortNode.setInput(0,attribwrangleNode,0)
N.setInput(0,sortNode,0)
执行之后应该就是对的了
两个模型的点必须相同,这是一定的!
Houdini - 点序号重新匹配
https://cfx.work/index.php/archives/20/