如果我有一个设置,为了变换骨骼,我必须:
node.transform = scale(node.transform, 2, 2, 2)
然后
bone_transform = inverse:offset_matrix *
(node.parent.transform * node.transform) * (inverse:node.parent.transform) * offset_matrix
但是,这仅适用于没有任何子对象(或节点层次中最底层的对象)的骨骼。
因此在穿过骨头部分时有困难。
如何正确执行此操作以获得所有骨骼的正确bone_transform ..
因此,如果我想变换层次中任何位置的任何骨骼(使用node.transform),它也会正确地调整其所有子骨骼bone_transforms。
也许是这样的:
mat4 transform = node.transform
while (node.parent != 0) {
if (node.is_bone) {
transform = node.parent.transform * node.transform
}
node = node.parent
}
or something with node.children recursively?
1条答案
按热度按时间v2g6jxz61#
偏移矩阵已经是骨骼的全局变换。它已经包含了从根到当前骨骼的所有变换数据。
这就是代码仅适用于没有任何父节点的骨骼的原因。