HoudiniVex笔记_P2_GroupBase组基础

原视频:https://www.youtube.com/playlist?list=PLzRzqTjuGIDhiXsP0hN3qBxAZ6lkVfGDI
Bili:Houdini最强VEX算法教程 - VEX for Algorithmic Design_哔哩哔哩_bilibili

Houdini版本:19.5

1、group-组是一种特殊属性Attribute

groupe无法提供与属性相关的功能,须通过其它方式进行访问。group值为0或1,表示是否存在该组中。

下面是<多边形sphere+group节点>,选择不同的Group Type(Verteices、Points、Primitive),Group会在相对应的组件表格中中显示,GroupType(Edges)在表格中仅指向Verteices、Points、Primitive但不显示:

 2、使用setpointattrib设置点属性官方文档介绍

geohandle:节点第几个输入点(计算机中索引以0开始,第1个输入点就是0);
name:要设置的点属性名字;
point_num:处理的点,若使用@ptnum,则按顺序访问每个点的点号,当然也可以指定点号;
value:设置属性的值;
mode:可选参数,使用“set”可覆盖圆属性值;更多用法可查看标题链接的官方文档。
【setprimattrib()、setvertexattrib()类似】

eg.示例

i@A = 10;
setpointattrib(0, 'B', @ptnum, 20);
setpointattrib(0, 'C', 1, 30);

 第一行代码结果与第二行代码运行结果相同。第一行代码应用于所有点,具有局限性;使用setpointattrib()更灵活。代码运行结果如下:

3、使用setpointgroup设置点组官方文档介绍

对点组进行添加或删除
geohandle:节点第几个输入点(计算机中索引以0开始,第1个输入点就是0);
name:组名字
point_num:需要处理的点(point number,若是@ptnum则遍历所有点);
value:0(删除)或1(添加);
mode:可选参数;更多用法可查看标题链接的官方文档。
【setprimgroup()、setvertexgroup()类似】

eg.setpointgroup()基本用法

setpointgroup(0, 'A', @ptnum, 1);

setpointgroup(0, 'B', @ptnum, 1);
setpointgroup(0, 'B', 3, 0);

运行代码结果如下:

4、使用inprimgroup函数检查primitive是否在组中(官方文档介绍


 检查primnum是否在groupname组中,存在则返回1,不存在返回0。
【inpointgroup()、invertexgroup()类似】

创建sphere、box、torus三个对象,其中sphere、box添加groupe节点,并把三个对象结合mergy

添加命名为access_group的代码节点,类型选择为primitive,运行代码

i@inbox = inprimgroup(0,  'box', @primnum) *5;
i@insphere =  inprimgroup(0, 'sphere', @primnum) *10;

结果如下;
 

5、使用nprimgroup统计Primitives数量官方文档介绍

 返回groupename组的primitive数量。
【npointsgroup()、invertexgroup()等类似】

eg.统计sphere小球对象的Primitives数量,运行代码

i@numFaces = nprimitivesgroup(0, 'sphere');

运行结果如下

5、使用expandprimgroup函数展开数组官方文档介绍

 
返回一个primitives数组,即展开数组。
【expandpointgroup()、expandvertexgroup()类似】

eg.继续使用<eg4>展开box组的Primitives,使用新的AttributeWrangle节点运行代码

i[]@prims = expandprimgroup(0, 'box');

结果如下

6、使用nearpoint()函数查找距离最近的点官方文档介绍

a.查找距离pt最近的点;
b.查找距离pt最近的点,查找最大距离为maxdist;
c.在ptgroup组内查找距离pt最近的点;
d.在ptgroup组内查找距离pt最近的点,查找最大距离为maxdist;
【nearpoints()类似,其返回一个数组】
【小知识:节点运行顺序从左只右,从上往下】

eg.创建sphere、box对象,groupe节点类型为Points,并把两个对象结合mergy;再Add添加一个点,在sphere、box内查找距离pt最近的点,

i@sphereNpt = nearpoint(1, 'sphere', @P);
i@boxNpt = nearpoint(1, 'box', @P);

运行代码结果如下

7、常用选择筛选点的几种方法

.创建sphere、box对象,groupe节点类型为Points,命名为sphere、group;并把两个对象结合mergy;再添加一个AttributeWrangle节点

方法一:直接在Group处选择组

方法二:点击下图中的符号,在sence窗口直接鼠标框选(小眼睛按钮可以选择是否同时选择模型背面的点)

 方法三:直接键入点或使用简单正则表达式官方文档介绍

 方法四:拓展-使用较为复杂的VEXpression方式

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值