What & How & Why

这是本文档旧的修订版!


Geometry Attributes

Houdini 中的几何属性相关知识点。

Attributes

Houdini 中的属性(Attribute)是存取在点、线、面、对象等等中的值,比如点的颜色,点的位置,UV 坐标、Normal 等等就是作为 Point Attribute 来存储的。Houdini 中属性有几个特点:

  • Houdini 自身的节点带有一些属性,这些属性可以通过全局或者局部变量来进行调用(属性是不能直接调用的,需要转换成变量才能调用)。
  • Houdini 自身的节点属性有一些需要通过手动来设置,比如动力学解算器和渲染引擎的一些特定属性。
  • Houdini 允许自定义属性。

老版的 Houdini 中,属性名一般由小写字母组成。如果没有进行特殊命名,系统会自动将其转化为变量,变量名为同名的大写字母。这个过程称为 variable Mapping。在新版本的 Houdini 中,可以直接使用 @ + varible name + . + channel 的格式直接调用属性。

Geometry components

几何体的属性主要由 PointVertexPrimitiveDetail 属性组成:

  • Point 属性是以点为单位的
  • Vertex 属性是以顶点为单位的
  • Primitive 属性是以面为单位的
  • Detail 属性是以整个几何体为单位的。

几何体属性的优先级

需要注意的是,以上几种属性是有优先级的;也就是说,高等级的属性会覆盖掉低等级的属性Houdini 默认的优先级是:Vertex > Point > Primitive > Detail

除开 Detail 的其他三个属性,都会在该几何体内部进行遍历(按点、顶点、面等等)。

几何体属性的编组

大部分的 SOP 节点都提供了使用属性进行 Group 的功能,比如 @P.y > 5 这样的表达式可以直接对组内的点进行筛选。我们可以使用 Houdini 提供的打组语法来进行分组Group syntax

我们同时还可以使用 Attribute Cast 节点对属性进行精度的控制(参考 Attribute Cast)。

Intrinsic attributes

geometrysheet 的列表中,如果点开 primitive 或者 detail 选项,会发现有上有一个 Intrinsics 的选项。



该列表下列出来的属性都被称为 Intrinsic attributes,也就是几何体固有存在的属性。这些属性是通过计算几何体得来的属性,比如下面的这些常见的属性:

Detail intrinsic:pointcount Number of points in the geometry
Detail/primitive intrinsic:bounds Bounding box of the geometry
Primitive intrinsic:measuredarea Surface area of the geometry
Primitive intrinsic:memoryusage Amount of memory used by the primitive

Intrinsic attributes Tips

查看 Intrinsic attributes
  • 命令行下 ginfo -I
  • geometry spreadsheet
  • Inspect tool
使用 Intrinsic attributes
Tools Usage
VEX intrinsic:xxxx 的形式直接读取,no @,use primintrinsic()detailintrinisc()
Python hou.Geometry.intrinsicNames()intrinsicValue().intrinsicValueDict()
Group @ + intrinsic:xxx + condition ,E.g.: @intrinsic:indexorder<100

不同精度的存储

存储属性有高精度 / 低精度 两种方式存储。

  • 可以在 Attribute Create 里指定存储的精度
  • 可以通过 Attribute Cast 控制存储的精度

常用的属性

注:

  • PTA = Points attribute
  • PRA = Primitive Attribute
  • DA = Detail Attribute

Geometry

Name Type What Where Tips
P vector Point Position Points PTA, 不唯一
N vector Normal direction
v vector Velocity Motion blur, particle Dop 可用 Trail 计算
id int unique element ID particle Dop 唯一, 和 P 这类的 element number 不同。
name string primitive name packed primitives, volumes 可通过寻找 name 来选中几何体
piece int broken pieces Dop 独立碎块的编号,碎片的面共享该编号

Sizes / Rotations

Name Type What Where Tips
pscale float Uniform scaling factor Rendering 控制点和粒子的大小、instancing 的几何体大小
scale vector Axis scaling factor Rendering 在坐标轴方向上分别缩放
width float Open curve width Rendering Points Attr,调整渲染时曲线的宽度(世界坐标系下)
lod float Level of detail

参考资料