带着uv进行模拟(冰激凌案例)
整个sop的路线图
前半部分:赋予材质并分离冰激凌球
一般模型是分部分的,比方说下面这个冰激凌的,分为5个部分。三个不同的冰激凌球和水和杯子。这些部分在houdini中被称为group。
用material节点一口气赋予5个group材质。
具体的材质的指定要到mat去
split将冰激凌球所对应的group分离出来
如果想要指定输出模型的大小,可以利用matchsize节点 最后赋予normal则得到了分离出来并赋予材质的冰激凌球
后半:传递属性到体积采样的点上
要点有二:
- 体积采样
- 属性传递 我们得到的模型其实都是只有表面薄薄的一层,所以要体积采样为点云。(采用pointsfromvolume节点)
但是uv等属性也只是表面一层,因此要用attribute transfer这个节点。这个节点能够通过邻域扩散的方式将表面的属性传递到体积内部。
额外的一点是:由于uv和法线都是位于vertices上的,所以要用attribute promote把他们转移到points上。 这里为了区分三个冰激凌球,还做了getgroupid的attribute wrangle。
对应的代码为
int gid=0;
string mp = s@shop_materialpath;
if(mp == "/mat/ice1")
{
gid = 1;
}
else if(mp == "/mat/ice2")
{
gid = 2;
}
else if(mp == "/mat/ice3")
{
gid = 3;
}
i@groupid = gid;
s@shop_materialpath也是从attrib promote提升过来的。
最后输出的数据为 这些数据就是给模拟中输入的