编辑(原文如下):从搅拌机中导出的正确的骨骼数据在ogl中查看?
所以我想出了以下代码。我可以导出网格,骨骼结构和动画。我可以动画一个简单的骨架。但是由于某种原因,如果我使用一个以上的骨骼进行动画处理,会出现一些错误,并且手臂会沿着错误的轴线移动。
我cpp的代码是在这里:http://kyuu.co.uk/so/main.cpp
我的Python代码出口是在这里:http://kyuu.co.uk/so/test.py
可能有人请告诉我,我做错了什么?我认为这可能与搅拌器中的骨头卷有关。我见过很多关于此的帖子。
谢谢。
(原帖:)
我一直对这个问题有一段时间了,但还是无法弄清楚我缺少什么,所以我希望有人那种能帮助我: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;
}
iee一个简单的骨骼层次。
我相信我能制定出inv_bind_pose
有:
world_bind_pose = bone.parent.world_bind_pose * local_bind_pose
inv_bind_pose = world_bind_pose.inverse()
我知道bind_pose
必须是相对父骨骼。
我知道搅拌器是z =向上,我正在使用y =向上。
但我无法从搅拌机中获取此信息。我正在使用版本2.56.3。
矩阵的旋转部分是bone.matrix_local
?翻译部分是bone.tail() - bone.head()
?
骨折怎么办?看起来确实会影响结果。
一些参考:
http://www.gamedev.net/topic/571044-skeletal-animation-bonespace
http://www.blender.org/development/release-logs/blender-240/how-armatures-work
感谢你这么多!
在搅拌机> 2.6中,您可以使用bpy_extras.io_utils.axis_conversion(参见:blender.org/documentation/blender_python_api_2_66a_release/...)转换为openGL空间。 – sarahm 2013-05-13 18:49:17