本 Wiki 开启了 HTTPS。但由于同 IP 的 Blog 也开启了 HTTPS,因此本站必须要支持 SNI 的浏览器才能浏览。为了兼容一部分浏览器,本站保留了 HTTP 作为兼容。如果您的浏览器支持 SNI,请尽量通过 HTTPS 访问本站,谢谢!
Houdini 中的几何属性相关知识点。
必须要明确的是,Houdini 中的 Attribute 和 Variable 是两回事。从 Programming 的角度来说, Attribute 更像是全局变量,存在于整个 cooking 的过程。而 Variable(Local Variable)则正如其名,本地变量。一般本地变量的生存周期应该与节点相关联,而如果将每一个节点看做一个函数,那么每一个 节点可以使用的本地变量也是不一样的。
我们一般从下面的几个特点来区分属性与本地变量:
prim()
、point()
等等),新版本 Houdini 可以通过 @
获取$
获取属性和变量可以关联起来指向同一个数据。一般来说,属性和变量的关联有两种途径:
Attribute Create
使用了这种方法。如果不指定本地变量的名字,那么该节点将自动把属性名大写化,并作为本地变量的名字Houdini 中的属性(Attribute)是存取在点、线、面、对象等等中的值,比如点的颜色,点的位置,UV 坐标、Normal 等等就是作为 Point Attribute 来存储的。Houdini 中属性有几个特点:
老版的 Houdini 中,属性名一般由小写字母组成。如果没有进行特殊命名,系统会自动将其转化为变量,变量名为同名的大写字母。这个过程称为 variable Mapping。在新版本的 Houdini 中,可以直接使用 @ + varible name + . + channel 的格式直接调用属性。
几何体的属性主要由 Point、Vertex、Primitive 和 Detail 属性组成:
需要注意的是,以上几种属性是有优先级的;也就是说,高等级的属性会覆盖掉低等级的属性。Houdini 默认的优先级是:Vertex > Point > Primitive > Detail。属性的覆盖通常出现在 Merge 中,两个几何体 Merge, 若没有对应的属性则创建对应的属性,有对应的属性则按照上述优先级覆盖。
除开 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 |