技术来源:Find the center of a deforming tube with Vex
求中心线大概有几种方法:
- 1 - 根据点或面编号(要求编号规整)参照这个教程:houdini 任意圆管生成中心线,思路分享
- 2 - 根据UV计算(要求UV规整)
- 3 - 还有就是这篇的通过变形模型生成线
不同方法各有优缺点,可根据模型特点使用
思路:
- 1把模型往里缩,变得很细,圆滑
- 2,转成点,用fuse焊接附近点
- 3用connectAdjacentPieces根据距离连成线,最后优化下
如何把模型往里变细?
- 使用polyExtrude把模型往外挤出一点点(这里只是为了不要和旧模型重合)
- 使用ray节点映射,这里关键一点是要反向映射(目的是模型前后对调)
- 最后把两个模型进行融合,由于模型在上面被投射到了管子的另一端,前端后端一融合就到物体中心,表达式:lerp(self, @opinput1_P, 0.5)
把点连线?
使用connectAdjacentPieces连接,搜索半径调大,最大搜索点设为3
潜在bug?
连线这里因为点顺序不对,根据距离相近点进行连接,也就可能出现一些意外。如果管子的距离挨得太近,就可能错乱,如下图
我的解决方案是先对管子做个优化,通过软选择移动把挨着的管子移开
这样跑流程就正常了
最后在pointDeform变回来
有动画的管子也可以用pointdefom跑
hip:https://pan.baidu.com/s/1JXVG27aj34_LfH8v0w4Rmg
提取码:wway