======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)