Skip to main content

带着uv进行模拟(冰激凌案例)

整个sop的路线图 在这里插入图片描述

前半部分:赋予材质并分离冰激凌球

在这里插入图片描述

一般模型是分部分的,比方说下面这个冰激凌的,分为5个部分。三个不同的冰激凌球和水和杯子。这些部分在houdini中被称为group。 在这里插入图片描述

用material节点一口气赋予5个group材质。

在这里插入图片描述 具体的材质的指定要到mat去 在这里插入图片描述

split将冰激凌球所对应的group分离出来 在这里插入图片描述

如果想要指定输出模型的大小,可以利用matchsize节点 在这里插入图片描述 最后赋予normal则得到了分离出来并赋予材质的冰激凌球 在这里插入图片描述

后半:传递属性到体积采样的点上

要点有二:

  1. 体积采样
  2. 属性传递 在这里插入图片描述 我们得到的模型其实都是只有表面薄薄的一层,所以要体积采样为点云。(采用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提升过来的。

最后输出的数据为 在这里插入图片描述 这些数据就是给模拟中输入的