Houdini 初学者教程内部分知识点总结
本文用于记录一些教程内部分知识点、个人总结,免得学半天白学。 Part 1 预计记录一些HDA入门。想要学习这些教程的同学看了可以知道教了些啥。
📦 制作科幻风格板条箱 (Sci Fi Crate)
😘 零、教程概述
本教程涵盖 基础硬表面建模 与 基本的胡迪尼数字资产(Houdini Digital Asset)及其贴图烘焙、Unity 材质设置、贴花制作的知识。
😭感谢 Simon 老师发布在官网的本教程!在本教程学了太多东西!
需要准备的:
- Houdini 18.5(教程原作者是这个版本,我用的19)
- 安装好Houdini Engine插件的Unity HDRP项目
☝️ 一、建模大致流程
1、Box 大小比例
设置一个 Toggle 参数赋值给 Switch ,可以选择由引擎内输入物体,或者手动调整数值控制箱子的大小比例。
由于引擎内的 Cube 有三角面,非四边面将影响到后续步骤的 poly extrude - inset与布尔操作,因此中间增加一个 Bound 节点直接获取包围盒来避免问题。
使用match size将锚点放到中心底部。
- 需要暴露参数的节点,可以使用颜色标记。
2、分割上下两部分
使用一个 2*2 的Grid根据箱子高度(使用 bbox
函数,填入节点与 D_YSIZE
)按比例切割,使用Bool - Shatter,勾选输出组 A only pieces 分为上下两部分,用 Split 分开。
3、箱体的Poly Extrude & Poly Bevel
因为会使用到 Group - keep by normal 进行上下两面打组,再让前后左右四个方向的面片分别缩小、实体化、倒角后与箱体布尔,所以箱体整体的倒角顺序不能放到一开始(本笨比一开始没想明白为啥不倒角完了再切割)。
至于箱子的倒角,先删除对应面后倒角再使用 Poly Fill - Single Polygon 即可。
挤出箱子内部的两个步骤都要勾选输出挤出的 Edge Group,之后倒角使用。
挤出完了记得加一个Fuse节点避免保留多余的点。
4、箱体的 Boolean - Subtract
① 前后左右面
- Divide into - Individual Elements
- 不勾选输出Side
- 不在 inset 设置数值,而是 ↓
之后使用Labs - Thicken 节点,勾选Both Directions,挤出即可。
如果想在底部也加一个一样效果的,同样步骤操作即可。
② 四个角
- 底部面 Poly Frame 将切线方向 First Edge 作为 N,如此一来将 Box 沿 Y 轴旋转45度后的 Boolean 就能得到规整均匀的斜切效果。
- Box Copy To Points
- 设置高低位置、大小(可以暴露为参数)
- 还可以利用箱体缩小之后再次与 Box 进行Boolean - intersect ,得到金属包边。
③ Merge 后倒角
倒角完直接布尔就OK哩。
5、盖子的制作
盖子的操作几乎就是把前面箱子的复制粘贴一遍,删掉四个角简单修改。
比较不重复的就是使用Divide 节点制作三角形面片挤出后布尔得到一个金属装饰。
6、锁
教程里直接引用了一个做好的锁,这个锁是金属质感、可以分别附在箱盖、箱体的。
分离后直接给箱体一个Bound节点沿 X 轴方向缩小留下朝上面 Copy to points 得到四个锁。
🤓 二、HDA 参数设置
1、物体分离
盖子和箱体分别打组或给属性,删除后分离即可。在另一个 geometry 节点中使用 Object Merge 节点引用得到盖子,记得要输入相对位置,不然Unity里会丢失。
盖子的锚点需要在合适的位置,方便我们在 Unity 里摆出不同的合理造型。
2、HDA位置设置
把箱子和盖子两个节点选中后 Shift + C 打包,右键创建 HDA ,直接将存储位置设置到 Unity 的 Assets 文件内,这样每次更新文件后在 Unity 内 Rebuild 即可。
3、材质设置
给材质的话可以将材质位置暴露为参数,可在 Unity 内右键材质后 Copy Path 。
4、Steam 版本的 Houdini Engine 位置
5、目前来说参数列表长这样
参数要都设置好默认值和范围。一些值特别小的,可以设置一个浮点数类型的参数直接与其相乘。
6、Hide When 语法
{ name == 1 }
记得打空格不然识别不出来嗷。(下图非 Sci Fi Crate 教程)
7、👑 重点知识 MultiParm Block ( List ) 的设置与引用
- 新建文件夹 Boolean Count 类型设置为 MultiParm Block ( List )
- 回到前面的布尔步骤,给一个 For-Each Numer ,次数赋值为 Boolean Count
- 文件夹内新建一个 Odered Menu 参数,我们靠它指定(Switch节点)此次布尔的类型。(配图仅演示功能)
- 因为有 For-Each Numer 了,前面的布尔的Merge不要了。
- For-Each Number 中的参数引用:
前面在 MultiParm Block 类型文件夹内,我们能注意到每次 Apply 参数后都会给参数名加一个井号后缀。井号后就是迭代次数,因此我们使用以下公式为节点赋值参数。
ch( strcat(" ../.I/B1_." , detail("../foreach_count1","iteration" , 0) + 1))
8、Group 小细节
表达式不要乱加空格。
📀 三、高模与贴图烘焙
1、UV展开
使用 Labs 的 Auto UV - UV Unwrap 展开UV,由于生成UV会影响调整外形时的速度,因此添加一个生成UV的开关。
Soften Normals 的两个参数可以都暴露出。
2、高模制作 & 金属部件顶点色
3、贴图 R 通道 —— 金属及边缘磨损
① 曲率值
使顶点获取凸出程度值属性。
根据属性上色。
② 均匀磨损
让非金属部分得到随机颜色。
让随机颜色变成黑白、高对比的。
Color Blend 节点混合。
③ 磨损不均匀化
给一个比较大的早点然后 Color Blend - Darken。
4、贴图 G 通道 —— 污渍
5、贴图 B 通道 —— Y 轴位置渐变色
6、混合在一起🍻
7、烘焙!
记得高模低模都要分离物件再烘焙哦~
四、贴花制作
1、Grid
创建、投影、给材质,然后按照贴花的布局将部分边 Dissolve 掉。
给每个 Prim 属性。
2、贴花的位置以及类型
在箱子上提取点作为贴花的位置,给予他们属性 scale,和对应的 decal_index。
将这些点 Merge 之后,统一创建 SurfaceOffset
属性避免贴花过于紧贴模型。
3、创建贴花
👩💻 制作HDA陨石
零、课程简介
- 教程版本:H17.5
- 主要内容:
- 教程前半部分建模流程较简单,使用布尔与Mountain随机化、体素制作高模,InsMesh与Polyreduce、SimpleBaker制作低模,可学到一些参数化流程。
- 教程后半部分的内容是如何使用Mantra渲染,可参考其中的使用烘焙曲率贴图作为遮罩的思路为陨石在Unity内制作着色器。
一、流程
1、大致步骤
2、细节知识点
① 删除碎片
由于进行了三步布尔,可能导致陨石有被切割浮空的碎片。为此我们需要将这些碎片删除。
② 数字资产制作
主要是一开始录入参数的时候就要设置好默认值。
注意需要在这里设置参数,而不是参数面板的小齿轮。
更新参数设置之后:
③ 其他
- 如果在Houdini内渲染,材质的Bind注意类型设置(小细节卡我好久)。
- 按钮也可以拖进参数列表。
- 烘焙的各个参数以及输出地址都要作为暴露的参数,方便操作。