Правильные данные костей для экспорта из блендера для просмотра в ogl?

Edit (Исходный пост ниже):

Итак, я придумал следующий код. Я могу экспортировать сетку, структуру костей и анимацию. Я могу оживить простой скелет. Но по какой-то причине, если я анимирую более одной кости, что-то пойдет не так, и рука будет двигаться не в том направлении.

Мой код cpp находится здесь: http://kyuu.co.uk/so/main.cpp

Мой код экспорта Python находится здесь: http://kyuu.co.uk/ so / test.py

Не могли бы вы сказать мне, что я делаю не так? Думаю, это может быть связано с рулетом из кости в блендере. Я видел много сообщений об этом.

Спасибо.

(Исходное сообщение:)

Я работаю над этой проблемой некоторое время и до сих пор не могу понять, что мне не хватает, поэтому я надеюсь, что кто-нибудь kind мне поможет: 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 с помощью:

world_bind_pose = bone.parent.world_bind_pose * local_bind_pose
inv_bind_pose = world_bind_pose.inverse()

Я знаю, что bind_pose должен относиться к родительской кости.

Я знаю, что блендер z = up, и я использую y = up.

Но я не могу экспортировать эту информацию из блендера. Я использую версию 2.56.3.

Будет ли поворотная часть матрицы bone.matrix_local ? Будет ли часть перевода bone.tail () - bone.head () ?

А как насчет кости? Похоже, это действительно влияет на результат.

Некоторые ссылки:

http://www.gamedev.net/topic/571044-skeletal-animation-bonespace

http://blenderartists.org/forum/showthread .php? 209221-вычислить-расположение-кости-вращение-из-fcurve-animation-data

http://www.blender.org/development/release-logs/blender-240/how-armatures-work

http://code.google.com/p/gamekit/source/browse/trunk/Engine/Loaders/Blender/gkSkeletonLoader.cpp?spec=svn482&r=482

Большое спасибо!

12
задан ashleysmithgpu 28 June 2011 в 20:35
поделиться