======Working with objects======
**Objects 处于 Houdini 中最顶级,使用世界坐标系。**
----
\\
一些常识:
* Objects 的变换会影响其内部所有 surface 元素的变换。
* Surface 中的变换更加精确,但速度也更慢。
====Parenting====
* //Parenting// 指将 child object 的变换信息与 parent object “关联” 起来,换句话说,child **继承了** parent 的变换信息。
* 除了变换信息之外,某些信息也会被继承,比如 motion blur 等渲染的属性。
* 一个 child 只能有一个 parent,但可以对混合(blend)的 parent 进行继承。
===Parenting 的两个重要选项===
Geometry 节点中的很多操作都有先后顺序的。比如在 Parenting 之前要先使用 Keep position when parenting 保存位置。
* **Keep position when parenting**:这个选项可以在 parenting 的时候保存 child 当前的位置,要在连接前使用。
* **Child compensation**:这个选项可以让 child 不受 parent 变换的影响。需要在 parent 里面先点上再对 parent 进行变换。
====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)