What & How & Why

Groups

Houdini SOP/Group 目录下系列节点,版本:ver 16.0


Group 总览

Houdini 16 中把以前使用的 Group 节点了分成了若干个新节点。这些节点按功能可以分为: 建立 GroupGroup 操作Utility 三个方面。

建立 Group

该类节点分为三种:

  • group create:基本的 Group 节点。
  • group by range:按 range 来分组。
  • group by expression: 按表达式分组。

Group

这个节点主要有几个比较重要的功能集 / 属性集如下:

Base Group

该功能集其实就是以前我们常用的 group by pattern。这个功能可以使用 Houdini 自带的 Group specification syntax 来对各种对象进行分组。
一些常见的使用例子如下:

0-10:2 //取 0 到 10, 隔两个取一次
0-10:2,3 //取 0 到10, 隔 3 个取一次 ,每次取两个(前面两个)
!1-10 //取所有不在 [1,10] 之内的对象
0-10 ^1-2 //从[0,10]中去掉 1-2 的对象
@Cd.x >0 //选择所有通道是红色的颜色属性值大于零的对象(@Cd.r不能用)。

base group 还可以通过 geometry filter 来指定 Group 中允许的数据对象类型。

Keep in Bounding Regins

该功能集跟老版本中用 Bounding 对象来选择区域的功能一致。
Include Partially Contained Entities 表示只要有一部分在 Bounding 范围里的对象,都属于 Group

Keep by Normal

该功能集使用 Normal 来进行对象分组:

backface from: 假设我们有两个对象,一个 box 和 一个 sphere。假设我们需要打组的是 primitive,在 box 上,那么这个功能就是将 box 不朝着 sphere 方向的所有 primitive 都会被打组。如图,红色区域被打组:


Include by Edges

这个选项简直就是选边的利器。特别需要注意的功能:

  • Unshared Edges: 快速选取几何体边缘
  • Edge Angle Uses Angle Between Edges:如果在挤出的工程中有 Division,用这个功能可以轻松选取 Division 之间的分界边。

默认的的 Edge 编组是通过 Edge 所在的面的夹角(面的 Normal 夹角)作为条件进行打组。但在 Edge Angle Uses Angle Between Edges 勾选的情况下会使用边的夹角作为条件打组。

ParametersUsage
Edge Angle Uses Angle Between Edges使用边的夹角作为打组的条件。(默认的是检测面的法线夹角)
Edge Depth选取几何体上任意一点,以该点为中心寻找半径范围内最近的点打组。数值越大,半径越大。需要 Group 设置为点模式。
Unshared Edges这个选项会将所有非共享的边进行打组,是获取几何体边缘的好办法。

Group Range

Group Range 节点通过一系列的方法来指定分组:

  • Start / End :对 $[Start, End]$ 区间内的点打组。
  • Relative to Start/End:表示的区间为 $[Start, Total - End]$。
  • Start and Length:表示的区间为:$[Start, Start + Length)$
  • Equal Partitions:该方法把整个组元素分为 number of partition 这么多块, 而 partition 则代表指定组的 indexpartition 的范围从 0 开始)。

Group Expression

该节点同样来自于以前的老 Group 节点;这个节点也是基于 VEX 的。我们可以用 wrangle 系列节点来代替这个节点;但不同是我们需要在 wrangle 里写出整个语句,而在这个节点中只用写表达式就可以。如果需要和其他语句写在一起使用,文档推荐使用 wrangle 系列节点。

注意:该节点不使用局部变量(比如 $F)。我们可以用@Frame@Time 等代替。

对 Group 的操作

本类操作主要对于 Group 做合并、拷贝、删除等操作。

Group Copy

这个节点会把存在于右边输入端中的 group 提供给左边的输入使用,如图:




这时 grid2 实际上套用了 grid1 中的组。而通过 group copy 在 grid1 上所做的操作,都会在 grid2 上生效。该节点需要左边输入和右边输入匹配;如果不匹配,拷贝结果会按最少的输入端来计算。

Copy Empty Groups 这个选项需要酌情使用。通常禁止拷贝空组可以方便找出我们希望取出的一个组。但如果一个组是动态的话,它在某一刻的内容很可能是空的;这时如果禁止拷贝空组,就会让该动态组不连续,从而导致问题。

Perfix 选项可以为 group 的名字添加前缀。

Group Transfer

这个节点和 group copy 使用方法类似,也是将右边输入中的 group 提供给左边输入使用。不同的是,左边接收的不是输入的源,而是输入的 proximity。也就是说,左边的输入直接调用了右边 group 中的数据,而跟右边输入的是什么几何体没有关系。因此,该节点并不需要匹配左边和右边的输入

Group Delete

该节点用于删除 指定group。

该节点只会删除 group, 不删除group内的元素。

Group Rename

该节点用于重命名 group。重命名次数可以有很多次,而我们也可以筛选保存哪种类型的 group。

多个重命名会按顺序排列,因此如下的方式会导致重命名被覆盖:


Group Combine

该节点通过 Boolean 运算来产生一个新节点,如图:

newgroup 代表新建的 group,group1group2、代表已存在的 group。运算顺序为:

  • 先建立新 group。
  • 判断新 group 和 指定 group 的关系,将内容存入新 group。
  • 可选的将其他 group 和新 group 组合在一起,通过各种 Boolean 运算。

Utility

Group utility 中主要包括了 group promote

Group Promote

该节点主要用于在不同 group 之间转换类型,转换后可以选择保留 group。