▉ 一秒,一分,一天,一年,一生一世!— 每天翻译一篇教程,这就是我写给houdini的情书。【首发于同名公众号:“致houdini的情书”】
█ “ 人生的白纸上,你画下的每一笔都是在修行 ”
前言不搭后语
到昨天为止,entagma系列算是告一段落。
今天起,从houdini官网上教程开始翻译整理。有些教程时间比较长,精力有限只能每天分段进行,有些内容会一笔带过。敬请谅解。
左右组
//--1 把点分左右两个组
if(@P.x<0.01){
i@group_left = 1;
i@mask_left = 1;
}
if(@P.x>-0.01){
i@group_right = 1;
i@mask_right = 1;
}
几何体x轴向渐变属性
//-- x轴上使用relbbox函数取值从0~1范围驱动“坡度变量”
@inside_surf_ramp = chramp("x_ramp",relbbox(0,@P).x);
首先
制作步骤
小节提要
01
高分辨率模型
02
低分辨率投射成高分辨率形状
03
设置属性
04
vellum模拟
正式制作
○ “高分辨率”节点 ○
![](https://i-blog.csdnimg.cn/blog_migrate/71758b3982ea39959d46c56e982485a3.png)
geometry命名“cell_setup”
○ 具体操作 ○
01)sphere1:
polygon;Radius=0.5*0.6*0.5;Frequency=20。
02)mountain1:
Height=0.3;Element Size=0.6;Roughness=0.3。
03)Null:命名“OUT_cell_hairs_geo”。
○ “低分辨率”节点 ○
![](https://i-blog.csdnimg.cn/blog_migrate/71758b3982ea39959d46c56e982485a3.png)
○ 具体操作 ○
04)platonic1:
05)subdivide1: 细分后三角形面
06)relax:Max Iteration=40
❖ 小目标1 ❖
?解决方案?
A“左右组”
07)pointwrangle:命名“groups”
//--1 把点分左右两个组
if(@P.x<0.01){
i@group_left = 1;
i@mask_left = 1;
}
if(@P.x>-0.01){
i@group_right = 1;
i@mask_right = 1;
}
B“中间组”
08)groupcombine命名“center”
C“内部组”
后面细胞分裂时,需要建立一个内部group
09)pointwrangle:命名“inside_hull”
❖ 初始化 ❖
i@group_inside_hull=0;
❖ 小目标2 ❖
?解决方案?
10)pointwrangle:命名“inside_surf_ramp”
//-- x轴上使用relbbox函数取值从0~1范围驱动“坡度变量”
@inside_surf_ramp = chramp("x_ramp",relbbox(0,@P).x);
❖ 视觉化 ❖
11)visualize1:快捷键:x
a)调整ramp
?至此完成了“低分辨率”的拓扑?
![](https://i-blog.csdnimg.cn/blog_migrate/71758b3982ea39959d46c56e982485a3.png)
❖ 解决方案❖
匹配形状
12)ray:连接“高低模”
13)relax:均匀一下模型网格
接下来段动
?至此有了最终形状?
❖ 小目标 ❖
○创建“属性”储存局部相对边界框
○ 节点 ○
![](https://i-blog.csdnimg.cn/blog_migrate/71758b3982ea39959d46c56e982485a3.png)
❖ 小目标 1 ❖
操作
14)pointwrangle命名“bbox”
//点属性
v@bbox = relbbox(0,@P);
❖ 属性转prim类,point保留属性 ❖
15)attribpromote
❖接下来❖
处理大量细胞,像粒子一样复制自身,所以
❖ 小目标2 ❖
16)rest position
❖ 每个物体应该有的ID ❖
17)pointwrangle命名“sim_init”
//--初始化
i@cell_id = 0;
//--细胞分裂之前的id
i@cell_id_prev = -1; //因为分裂之前没有previd
//--细胞分裂的id
i@cell_id_split = 0;
//--年龄,第一次模拟之后变成0
@age_f = -1;
❖ 现在一切准备就绪 ❖
❖接下来❖
转成vellum对象,建立一个模拟
○ 节点 ○
![](https://i-blog.csdnimg.cn/blog_migrate/71758b3982ea39959d46c56e982485a3.png)
❖ 解决方案 ❖
使用工具栏vellum中的“softbody”工具
B) softbody_vellum 命名import_cells
cell_setup层级
❖小目标1❖
A) 设置vellum约束
默认vellum设置
单独显示约束效果
18) stretchcloth_constraints:
Thickness=0.002
? 技巧 ?
视觉化vellum参数
vellumpostprocess1
Stretch / Stiffness=7
Bend / Stiffness=0.05
19) strut_constraints:
❖ 小目标 ❖
更柔软一些
Stretch / Stiffness = 0.85
Damping Ratio = 0.085
❖ 小目标 ❖
A)将geo的点属性拷贝到con的点属性上
❖观察一下geo和con两个输出❖
a)vellum的约束作用只作用在prim层级;
因为:它们使用“约束线”构成,这些线需要定义一个rest length;
b)但prim数量非常不同 但两者的point相同:
❖ 解决方案 ❖
c)使用attributecopy拷贝geo点属性给con点属性
❖ 操作A ❖
23)attribcopy1:
a)连接
b)输入要复制的属性名称:
❖ 操作B ❖
拷贝到组
24)groupcopy1
❖ 现在con约束几何体点属性上也有geo点属性 ❖
B) point转prim
25)attribpromote
接下来段动
现在所有属性都在“约束节点”prim层级
❖ 接下来 ❖
? 创建资产 ?
将geo分成两半,每一半有相同的细胞
○ 节点 ○
![](https://i-blog.csdnimg.cn/blog_migrate/71758b3982ea39959d46c56e982485a3.png)
? 解决方案 ?
a)这里不切分细胞,而是创造类似的新几何体两个相同副本
b)两者具有相同点,与拓扑结构,同样属性。
c)因为我们要确保vellum保持不变。
❖ 小目标 ❖
a)创建“细胞分裂”在局部静态空间进行初次分裂
b)将这个资产用在dopnet里动态的分割细胞。
资产要求:
1。不仅可以在局部空间分裂细胞。
2.而且可以将细胞分裂成任意形状的变形和空间位置
cell_setup层级
○ 小目标 ○
↑封装资产中建立的功能 ,转成数字资产
27)subnet:右键Create Digital Asset
a) save to library输入Embedded;这样可以快速的改变。
b) 最大输出=2,这样就像细胞分裂器,一个细胞输入,希望2个细胞输出。
○ 可有可无的小小目标 ○
借用groupcopy的icon图标
28)groupcopy:
a)右键 Type Properties
b)拷贝名称
c) 粘贴在这里
d)删除groupcopy节点
○ 使用hda的原因 ○
○在一个文件中的另外地方如果想要调用封装的功能,或者集中在一个节点上,
a)节点右键,建立一个副本
b)但是对于vop之类的副本,进入内部并不关联,
○hda是种在本地复制一个节点或一组节点的好方法。
○ 节点 ○
![](https://i-blog.csdnimg.cn/blog_migrate/71758b3982ea39959d46c56e982485a3.png)
Subnetwork层级
❖ 小目标 ❖
分裂细胞
? 解决方案 ?
27-1)output0
27-2)output1
27-3)groupcombine:命名inside_hull
27-4)blast1命名inside_hull
我们并不想创建新的几何体
❖ 小目标 ❖
A 取原来的几何体转换到平面,创建一个内部surface
❖ 解决方案 ❖
27-5)polyfill:为了安全起见,表面之间留出一定空间。
B 只保留中间的修补面
27-6)blast1命名blast_patch
27-7)normal
27-8)ray1
❖小问题1❖
没有投射到平面上
❖解决方案❖
传递平面的N法线给几何体
27-9)attribtransfer1
❖小问题2❖
几何体边缘突出
❖ 解决方案 ❖
27-10)group选循环边缘:基于未共享的边建立一个组。
27-11)polyextrude:挤压边
27-12)normal:纠正打乱的法线。
27-13)attributeblur:
a)在attribtransfer之后
b)模糊法线N;取消Pin Border Points
c)模糊迭代=5
❖ 小问题 ❖
blur模糊掉了平面内部的位置
❖解决方案❖
27-14)attribblur:
a)在ray之后
b)Group:inside_hull;迭代=20;step size=1
❖小问题❖
平面的网格分布不均匀
预知后事如何,明天继续分解。
![](https://i-blog.csdnimg.cn/blog_migrate/71758b3982ea39959d46c56e982485a3.png)
![封面图片7.jpg 封面图片7.jpg](https://i-blog.csdnimg.cn/blog_migrate/2678b8c29cd2f887a0578ff3a22df3f2.jpeg)
公众号:微信号