删除内部点
- 记得fuse clean
- 保证顶点干净
提取顶部的点
直接用表达式(获取bbox的最高点,正好)
@P.y==`bbox(opinputpath(".", 0), D_YMAX)`
获取面片的数量
nprims(opinputpath("../fuse2/", 0))
中心点![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a7bcd78449009636cd1b5697c699035e.png)
@P = prim(1, "P", @elemnum)
两点之间距离extrude面
排序顶点根据Y
可以确保0,1在顶部
two point resample
中间点,然后把东西实例化上去,自适应size
if (@ptnum == 0 || @ptnum == 3)
{
int neigh = abs(@ptnum-1);
vector neigh_pos = point(0, "P", neigh);
// distance and scale
float dist = distance(@P, neigh_pos);
float module_size = 0.5;
int module_amount = (int)rint(dist/module_size);
// printf("%d \n", module_amount);
float scale_z = (dist/module_amount)/module_size;
// printf("s %d \n", scale_z);
// resample
vector dir = normalize(neigh_pos - @P);
// @N = dir;
vector new_pos;
int new_pt;
for(int x=0; x<module_amount; x++)
{
new_pos = @P + dir*module_size*scale_z*x + (dir*module_size*scale_z)/2;
new_pt = addpoint(0, new_pos);
setpointattrib(0, "N", new_pt, @N, "set");
}
}
removepoint(0, @ptnum);
点随机选择偏移
float prob = ch('probability');
if(rand(prob+@P.x+@P.y+@ptnum) < prob && v@scale > 0.9 )
{
@P -= @N*0.15;
}
新版foreach节点的用法
记得选 single pass
上面的做法有问题
这才是正规做法
point表达式取法线
这句可以判断是横向还是纵向,和switch联用很合适
abs(point("../centorid/", 0, "N", 0))>0.01
移除最近的点(重合 overlap)
int nearpnts[] = nearpoints(1, @P, chf("maxdist"));
if(len(nearpnts>0))
{
removepoint(0, @ptnum);
}
程序化UV
也可以控制顶点,只有你想不到,没有你做不到
HDA导入unity材质怪异的问题
找到问题节点,加个clean节点就好
贴图改变没刷新
glcahe -c
UV错乱的问题
不用 auto UV这个节点就好
HDA参数覆盖
点击 Save HDA preset就好 还挺隐蔽
polyfill可以fix hole修复破面
houdini参数驱动另一个参数
首先在Scripts里添加驱动的方法
def myFunction(kwargs):
node = kwargs['node']
parm = kwargs['parm']
newVal = 1
node.parm('frame').set(newVal)
然后对应 Callback里写 调用的方法
hou.phm().myFunction(kwargs)
sweep节点面朝向不一致
取消勾选这个
给曲线添加法线
polyFrame节点
python输入文件访问
path = node.inputs()[0].parm('file').eval()