前言
正在摸索学习Houdini中,在制作一个程序化门洞的案例时(思路是将Box1作为墙体,将Box2作为门/洞,两个几何体相减,对生成的新几何体进行DetailMesh的平铺),遇到了将Box2作为门时一切正常,但当Box2作为洞时,使用Labs Detail Mesh节点时会产生模型破碎的情况。如图1:
研究了半天把问题解决了,因为不是学建模出身,研究过程也学到许多新的基础知识,故在此把解决方法和研究过程都记录一下。
1.边的分析
问题产生了肯定是有原因的,首先我确定了造成破碎的直接原因是Labs Detail Mesh节点,然后寻找Box2作为门和洞两种情况的不同之处,从制作源头开始寻找,很快我发现,在进行boolean运算时,洞结构会产生门结构明显没有的两条接缝,如图2:
第一个想法自然是把它们弄掉后看看效果,但是发现好像找不到什么好方法删掉它们。然后经过大佬科普:这是建模软件在进行boolean计算时一定会产生的结构线,一定想要删掉的话可以vdb重拓扑,但模型大概率会出问题。
拓扑:建模中的拓扑可以理解为模型的建模布线。重拓扑即用某种方式重新对模型布线。
好的拓扑结构面片数量适量、大小较为平均、面片大部分为四边形,尽量避免超过四条边的多边形和超过5条边汇集的极点,这样有益于模型展uv、做平滑、动画产生形变和导入引擎产生三角面时减少歧义。
2.DetailMesh节点分析
好吧,似乎是底层原因,从头找问题的方法有点走不通了,再从问题的直接原因Labs Detail Mesh节点逆向寻找一下。
Houdini的Labs节点相当于是一个subnet或者HDA,通过工具栏->Assets->Unlock Assets解锁后,即可正常查看Labs节点内部流程。
在Labs Detail Mesh节点中,会先对输入1(模板模型)进行细分预处理,对输入2(细节网格面)进行初始化,再通过foreach循环将模板模型按照其uv裁剪成“模型uv面”,并使用Ray节点将“模型uv面”,投影至由细节网格面平铺而成的更大的细节网格面上,进行了一次模型层面上的uv映射。再进行一系列的重组、平滑、清理后,得到了最终的细节网格模型。
而模型破碎的问题就出在最开始对模型进行细分这一步上,Labs Detail Mesh节点采用divide节点切分,切分方式为勾选Bricker polygons取消Convex polygons,这会造成图4效果,模型的部分面产生翻折,自然后续的处理也不会正确。
3.解决方法
采取的解决方法是在使用Labs Detail Mesh节点前先做一次模型的切分,使用divide节点选用Convex polygons(Bricker polygons可选可不选),注意切分后模型的uv对应关系不出错,即可解决。
结语
还是Houdini菜鸟,本篇博客仅为个人观点的记录和分享,若有错误希望各位大佬指教。
加油呀达达,继续在程序化的道路上摔跤吧(๑•̀ㅂ•́)و✧