博主头像
CFX | Work

一个业余的分享网站

Houdini - 点序号重新匹配

在houdini中,对某个模型做了一系列修改之后,点序号@ptnum与原始模型完全乱的,这时候去做bs会得到很夸张的结果,这时候需要去跟匹配原始模型点序号.

核心原理是点云,去寻找最近点的,然后赋予属性,按照属性使用sort节点对ptnum排序.下面的代码是生成两个节点,自动跟第二个端口匹配

要求

两个模型最好是重合的

肯定有更好的方法,这个代码主要是houdini的python,对节点的创建,修改,放置的学习

bs_1
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)

执行之后应该就是对的了

两个模型的点必须相同,这是一定的!

bs_2
bs_2

Houdini - 点序号重新匹配
https://cfx.work/index.php/archives/20/
本文作者 silence
发布时间 2024-11-28
许可协议 CC BY-NC-SA 4.0
发表新评论