总结
不错的教程,就是作为入门难度有点高。
观看笔记
01 - 界面基础
02 - 数据结构
Houdini & Maya 数据结构差别
Houdini 有
Points
Primitives
Vertices
数据结构组成
对应Maya的Vertex
Face
FaceVertex
的数据结构
构建几何体

使用 add 构建几何体
生成面片需要勾选 closed
选项
// 创建一个面片
vector pos1 = set(0,0,0);
vector pos2 = set(1,0,0);
vector pos3 = set(1,1,0);
int p1 = addpoint(0, pos1);
int p2 = addpoint(0, pos2);
int p3 = addpoint(0, pos3);
int prim1 = addprim(0, "poly");
// 注意添加顺序
addvertex(0, prim1, p1);
addvertex(0, prim1, p3);
addvertex(0, prim1, p2);
也可以使用 Vex 创建一个三角形的几何体,注意 Wrangle 节点要选择 Detail 模式执行。

3 - VOP SOP 变形
这个效果除了 Vop Sop 用 turbulance noise 还可以用 mountain 节点,但是显然没有那么灵活。

教程里面贴心地介绍了 Turbulance Noise 关于 turbulance 参数的原理
turbulance 属性每次增加
就等于多叠加一层
frequency * 2
Amplitude / 2
的 noise 细节
叠加完之后颜色有些差池,但是 pattern 是一致的。
Vop 移动模型需要用到 dispalcement 节点

gain 节点可以在 将中间值 在 最大最小值直接进行过度

bias 节点可以在 上下 最大最小值直接进行过度 (最大值最小值是两个平面)
Ramp Spline 类型可以自由编辑曲线实现起伏高度的完全自定义,实现上面视频调整山峰高度的效果。
加入 abs 节点让高度 负数变为正数 , 效果就是山谷变成小山丘。
通过 twoway 节点控制数值输出。
这个效果加入 3D Noise 来扭曲 1D Noise
最后也可以在最后输出 加上一个 Turbulance Noise 调大 turbulance 参数来增加 Noise 细节
04 & 05 衰变mask 制作
hypotenuse 斜边
opposite 对边
adjacent 邻边

利用三角函数的特性,点乘时 θ 值小于 90 为正数 | 等于 90 为 0 | 大于 90 为 负数

attribute from volume 需要通过 scalar ramp 的值设置为 -0.2 和 0 才能看到 falloff。

这里的 transform 放在 iso 下面就不用每次移动 box 重新计算 iso 体积了。
06 & 07 程序化建模

iso 的烟雾看不见可以按 W 打开 wireframe 查看。

iso 节点使用 sdf volume 如果开启 laser scan 可以加速生成,但是结果会不准。

volume slice 节点可以看到模型的横切面。
使用 convert volume 节点可以转换出类似 VDB 模型的效果,同时调整 isovalue 可以非常方便调整模型的大小。

通过视窗的菜单选择 3D connected Geometry,可以逐个逐个连续模型地选择。
案例分析
多面挤压


通过 foreach 循环的 meta 节点可以获取遍历的序号,作为随机数的种子。(foreach 效率低)
显然这个方法没有利用教程提到 Houdini 数据结构,是比较蠢的方法。
创建属性属性随机可以用 Vex 更简单来实现。
f@weight = rand(@primnum);
Noise 地形

使用 Noise 制作地形。
衰变
圆球衰变比较简单,主要通过
distance
根据顶点的距离生成衰变。
线性衰变通过线段向量和顶点线段 dot 点乘计算衰变, 根据 cos 90 为零 大于 90 为负,小于90为正的特性形成衰变。
自定义形状衰变则是通过 模型转iso , 体积转属性实现。
程序化建模

