Python 要从blender导出以在ogl中查看的正确骨骼数据?

Python 要从blender导出以在ogl中查看的正确骨骼数据?,python,math,animation,blender,blender-2.50,Python,Math,Animation,Blender,Blender 2.50,编辑(原文如下): 因此,我提出了以下代码。我可以导出网格、骨骼结构和动画。我可以为一个简单的骨架设置动画。但由于某些原因,如果我为多个骨骼设置动画,则会出现问题,手臂将在错误的轴上移动 我的cpp代码如下: 我的python导出代码如下: 有人能告诉我我做错了什么吗?我想这可能和搅拌机里的骨头卷有关。我看过很多关于这方面的帖子 谢谢 (原职:) 我已经在这个问题上工作了一段时间,但仍然无法找出我缺少了什么,所以我希望有人能帮助我:3 对,我的应用程序中有如下代码: class bone {

编辑(原文如下):

因此,我提出了以下代码。我可以导出网格、骨骼结构和动画。我可以为一个简单的骨架设置动画。但由于某些原因,如果我为多个骨骼设置动画,则会出现问题,手臂将在错误的轴上移动

我的cpp代码如下:

我的python导出代码如下:

有人能告诉我我做错了什么吗?我想这可能和搅拌机里的骨头卷有关。我看过很多关于这方面的帖子

谢谢

(原职:)

我已经在这个问题上工作了一段时间,但仍然无法找出我缺少了什么,所以我希望有人能帮助我:3

对,我的应用程序中有如下代码:

class bone {
    bone * child;
    Eigen::Matrix4f local_bind_pose; // this i read from a file
    Eigen::Matrix4f final_skinning_matrix; // i then transform each vertex by this matrix

    // temporary variables
    Eigen::Matrix4f inv_bind_pose;
    Eigen::Matrix4f world_bind_pose;
}
即,一个简单的骨骼层次结构

我相信我可以通过以下方法计算出
inv\u bind\u姿势

world_bind_pose = bone.parent.world_bind_pose * local_bind_pose
inv_bind_pose = world_bind_pose.inverse()
我知道,
bind_pose
必须与父骨骼相关

我知道搅拌机是z=up,我用的是y=up

但我无法从blender导出此信息。我使用的是2.56.3版

矩阵的旋转部分是否为
骨。矩阵\u局部
?翻译部分是否为
bone.tail()-bone.head()

骨卷怎么样?这似乎确实影响了结果

一些参考资料:


非常感谢你

这看起来很复杂。我想你可以很容易地改变矩阵变换的应用顺序。试着从一个非常简单的系统开始,在这个系统中,你可以把一切都记在脑子里。

是的,我认为这就是问题所在。我试图把这简化到最低限度。也许我会在没有皮肤代码的情况下看看它。。。谢谢你的回复。:)在blender>2.6中,您可以使用bpy\u extras.io\u utils.axis\u转换(请参阅:blender.org/documentation/blender\u python\u api\u 2\u 66a\u release/…)转换为openGL空间。