编辑(原文如下):
所以我想出了下面的代码。我可以导出网格,骨骼结构和动画。我可以制作一个简单骨架的动画。但由于某些原因,如果我设置多个骨骼的动画,就会出现问题,手臂将沿错误的轴移动。在
我的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;
}
即简单的骨骼层次结构。在
我相信我可以用以下方法计算出inv_bind_pose
:
我知道bind_pose
一定是相对于父骨骼的。在
我知道搅拌机是z=up,我用的是y=up。在
但我无法从blender导出这些信息。我使用的是版本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
非常感谢你!在
这看起来很复杂。我想你很容易搞乱矩阵变换的顺序。试着从一个非常简单的系统开始,你可以把所有的东西都记在脑子里。在
相关问题 更多 >
编程相关推荐