跳转到内容

combinelocaltransform

始于版本18.0

matrix  combinelocaltransform(matrix local, matrix parent_world, matrix parent_local, int scale_inherit_mode)

根据给定的局部变换和父级世界变换返回新的世界变换矩阵。

matrix  combinelocaltransform(matrix local, matrix parent_world, matrix parent_local, int scale_inherit_mode, matrix &effective_local_transform)

根据给定的局部变换和父级世界变换返回新的世界变换矩阵。包含继承缩放值的局部变换会存储在effective_local_transform矩阵中 - 当模式设置为SCALE_INHERIT_OFFSET_AND_SCALE或SCALE_INHERIT_SCALE_ONLY时,该值将与local矩阵不同,此时我们会将父级的局部缩放值作为子级自身局部变换的一部分进行传递。

scale_inherit_mode

指定父级变换的缩放继承如何应用于结果。取值为math.h中定义的以下常量之一:

  • SCALE_INHERIT_DEFAULT (0) - 简单继承模式:
world = local * parent_world
  • SCALE_INHERIT_OFFSET_ONLY (1) - 子级不继承父级局部缩放,但局部位移会被缩放:
world = local_scale_rotates * invert(parent_local_scales) * local_translates * parent_world
  • SCALE_INHERIT_OFFSET_AND_SCALE (2) - 局部位移按之前方式缩放,同时父级局部缩放会在子级局部空间重新应用:
world = parent_local_scales * local_scale_rotates * invert(parent_local_scales) * T * parent_world
  • SCALE_INHERIT_SCALE_ONLY (3) - 局部位移不被缩放,但父级局部缩放会在子级局部空间重新应用:
world = parent_local_scales * local * invert(parent_local_scales) * parent_world
  • SCALE_INHERIT_IGNORE (4) - 子级完全忽略父级的所有局部缩放:
world = local * invert(parent_local_scales) * parent_world