Houdini VEX笔记

本文探讨了Houdini中VEX编程的多种技巧,包括向量操作、随机模型生成、法线处理、点属性管理和射线可视化等。通过具体示例,如向量拼接、随机数生成及利用wrangle节点进行高效编程,揭示了Houdini在复杂几何处理上的强大能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、基本变量

在这里插入图片描述
如图,可以理解其实wrangle里的代码本身就在一个for循环里面,所以其实是操作一个子函数,这个概念很重要!

detail 的话,只运行一次
在这里插入图片描述

切线

vector A1 = point(0,"P",@ptnum);
vector A2 = point(0,"P",@ptnum-1);
@N = cross(@N, A1 - A2) * 30; 

拼接向量

set(i.x, i.y)   // {x,y} => vector2

Tips

在这里插入图片描述
可以看到vop其生成的代码

根据两个点画线

在这里插入图片描述

removeprim(geoself(), @primnum, 1);
vector c1 = getpointbbox_center(0);
int pt0 = addpoint(0, c1 + set(0, 4, 0));
int pt1 = addpoint(0, c1 - set(0, 4, 0));

addprim(0, "polyline", pt0, pt1);

缩写

https://www.it610.com/article/1293836798295875584.htm

移除不必要的点

facet1 选 unique
在这里插入图片描述

int pts[] = nearpoints(0,@P,0.01);

if(len(pts) > 1)
{
    removepoint(0,@ptnum);
}

随机模型

https://www.youtube.com/watch?v=SVRk3sxzpLU

注意 最好是6个输入
在这里插入图片描述

随机数

在这里插入图片描述

@a = rand(@ptnum) * 3 + 1;
printf("%d \n", @a); 

查看unity HDA节点内容

在这里插入图片描述

Unity实例化节点

https://www.sidefx.com/forum/topic/38973/

法线奇怪的问题

模型合并后法线需要重新计算,加个normal节点就好

在这里插入图片描述

把polygon转换为point

在这里插入图片描述

两个点随机一个且不能重复某一个

https://forums.odforce.net/topic/27103-acess-previous-point-attribute-in-wrangle/

在这里插入图片描述

第一个wrangle

i@roof_extra = int(rand(@ptnum + ch("seed")) * 2);

这里随机种子可以增加一个参数,不然随机的不明显(可以是一个可手动调的值)

int(rand(@ptnum * ch("../sort1_window/pointseed")) * 8 + 1)

第二个wrangle

int a = point(0, "roof_extra",@ptnum);
int b = point(0, "roof_extra",@ptnum-1);


if(a == b && a == 1)
{
    @roof_extra = 0;
    // printf("%d %d |", a, b);
}

简单逻辑

要在一个wrangle里做,不然会出问题

if(hasattrib(0, "prim", "chimney"))
{
    @group_delete = 1&@group_roof_extra2;
    // printf("%d ",@ptnum);
}
else
{
    @group_delete = 0&@group_roof_extra2;
}

通过VEX打组

有例子,很好理解,没事可以下拉节点列表查看一下
在这里插入图片描述

添加射线可视化

int points[];
points[0] = addpoint(0, @P);
points[1] = addpoint(0, @P + chv("direct") * ch("scale"));

int l = addprim(0, "polyline", points);

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值