入坑Houdini
用Houdini创建一个木桶
创建桶身
桶身由一条条木条组成,同时需要可以压弯,所以需要细分面数,先从一条木条开始,参数如下:
为了可以方便看UV的情况,可以来一波UV三连(UV映射、UV拆开、UV着色)
压弯木板,用bend(弯曲)节点
改变锚点位置,复制与旋转
边缘软化,先选择木板边缘,打组,通过PolyBevel(倒角)软化边缘
最终节点图
创建桶顶与桶底

同样从一条木条开始,用桶身的木条,可以小条一些,宽度除于1.5
UV三连
通过transform节点将木条水平放置
边缘倒角(polybevel)
复制排列
与管道(tube)进行布尔运算,裁剪圆形区域
调整UV布局,裁剪后可看到UV布局很奇怪,可以通过UVLayout节点调整布局
移动桶盖位置,合并显示
最终节点图
创建桶身上的铁圈
先搞一个圈
横放
挤出(PolyExtrude)
这时会发现圆圈开始与结束的顶点没有连接起来,导致挤出结果开裂。在挤出前可通过拼接顶点拼接(fuse)起来再挤出
之后往上挤压。记得勾选Output Back。
移动位置,缩放收缩,倒角(polybevel)
反转铁圈,发现有些黑,因为面的法线也反转了,需要反转(reverse)回来
UV二连结尾,最终节点图
创建铁圈上的螺钉
先创建一个球,压扁,缩小
选择下半部分的面,通过blast干掉
转换位置,复制旋转
位置偏移,上下都搞
UV二连结尾,最终节点图
终于…看教程照做的部分结束了…接下来重点来了
改造为程序化木桶
首先看到一个桶被分为4个物品,有点不知所措,所以先把它们合并成一个
合并的方式既是把所有节点拷贝到一个里面


为桶创建数据集
隐藏用不到的默认参数
添加我们自己要的参数
这里添加一个木条数量的整数,命名为StickAmount,范围限制在10-30
Name是在节点中要引用到的路径名
Label是显示出来的名字(在Unity中也就是面板显示的变量名)
设置下通道默认值

回到面板可以看到参数出现了,右键可以复制参数进行使用
将参数粘贴到Copy and Transform节点上,该节点就是控制木条数量的
同时旋转的角度也修改下,360度/木条数量
这样就可以通过外面面板的StickAmount参数控制木条数量
木板的宽度也受到木条数量的影响
再次调节木条数量看效果
- 其他参数也可以如法炮制,比如木桶的铁圈数,铁拳上的钉子数,木桶大小等等,都可以定制化参数接口出来,方法相同,就不一一做下去了。
将程序化木桶导入Unity
- 先找到安装Houdini时附带下载的Unity资源包
- 将资源包 以及木桶的hda文件 导入Unity
- 将木桶拉到场景中
- 在Unity中直接调整参数,生效
- 完结
——————————
2019/12/07: 该系列暂时不更新。原因该博文系统附图太多太卡了,阅读体验太差。