本 Wiki 开启了 HTTPS。但由于同 IP 的 Blog 也开启了 HTTPS,因此本站必须要支持 SNI 的浏览器才能浏览。为了兼容一部分浏览器,本站保留了 HTTP 作为兼容。如果您的浏览器支持 SNI,请尽量通过 HTTPS 访问本站,谢谢!
这是本文档旧的修订版!
Houdini 中的几何属性相关知识点。
必须要明确的是,Houdini 中的 Attribute 和 Variable 是两回事。从 Programming 的角度来说, Attribute 更像是全局变量,存在于整个 cooking 的过程。而 Variable(Local Variable)则正如其名,局部变量。一般 Local Variable 的生存周期应该与 Node 相关联,而如果将每一个 Node 看做一个 Function,那么每一个 Node 可以使用的 Local Variable 也是不一样的。
Houdini 中的属性(Attribute)是存取在点、线、面、对象等等中的值,比如点的颜色,点的位置,UV 坐标、Normal 等等就是作为 Point Attribute 来存储的。Houdini 中属性有几个特点:
老版的 Houdini 中,属性名一般由小写字母组成。如果没有进行特殊命名,系统会自动将其转化为变量,变量名为同名的大写字母。这个过程称为 variable Mapping。在新版本的 Houdini 中,可以直接使用 @ + varible name + . + channel 的格式直接调用属性。
几何体的属性主要由 Point、Vertex、Primitive 和 Detail 属性组成:
需要注意的是,以上几种属性是有优先级的;也就是说,高等级的属性会覆盖掉低等级的属性。Houdini 默认的优先级是:Vertex > Point > Primitive > Detail。
除开 Detail 的其他三个属性,都会在该几何体内部进行遍历(按点、顶点、面等等)。
大部分的 SOP 节点都提供了使用属性进行 Group 的功能,比如 @P.y > 5
这样的表达式可以直接对组内的点进行筛选。我们可以使用 Houdini 提供的打组语法来进行分组Group syntax。
我们同时还可以使用 Attribute Cast
节点对属性进行精度的控制(参考 Attribute Cast)。
在 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 |
ginfo -I
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
控制存储的精度注:
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 | 独立碎块的编号,碎片的面共享该编号 |
Name | Type | What | Where | Tips |
---|---|---|---|---|
pscale | float | Uniform scaling factor | Rendering | 控制点和粒子的大小、instancing 的几何体大小 |
scale | vector | Axis scaling factor | Rendering | 在坐标轴方向上分别缩放 |
width | float | Open curve width | Rendering | PTA,调整渲染时曲线的宽度(世界坐标系下) |
lod | float | Level of detail | Instanting | PRA, DA |
spritescale | vector | sprint scaling factor | sprint image | PTA, Default(1,1,1) |
spriterot | float | sprite rotation factor | sprint image | PTA, Default 0 |