What & How & Why

这是本文档旧的修订版!


Working with objects

Objects 处于 Houdini 中最顶级,使用世界坐标系。



一些常识:

  • Objects 的变换会影响其内部所有 surface 元素的变换。
  • Surface 中的变换更加精确,但速度也更慢。

Parenting

Parenting 指将 child object 的变换信息与 parent object “关联” 起来,也就是 child 的变换信息是相对的。

Pre-Transform

Pre-Transform 用于存储 child 在 local space 中的变换,包括位置、缩放、旋转的信息。在 Houdini 中,一个 Object 会包含两个变换信息(world space / local space)来描述自己在指定空间中的变换。如果牵涉到 Parenting,Houdini 会利用 Pre-Transform 对 local / object space 中的变换信息进行读写,方便在不同情境下使用。

Pre-Transform 有几个比较重要的操作:

  • Clean transforms:将当前 local space 的坐标置零,同时将变换信息写入 pre-transform 中
  • Extract pre-transform:读取当前 pre-transform 中的信息,写入到 local space 中
  • Reset pre-transform:清空 pre-transform 中的信息。

需要注意有两点:

  • 上述的操作都可重复进行,并且后一次操作会覆盖前一次操作,因此需要谨慎对待。
  • 同时需要注意的是,在 Parenting 的过程中,若 Parent 中包含 non-uniform scale,会导致 child 的变换空间 shearing。(原理待查证FIXME