2014-02-03 5 views
0

Я создаю 3D-игру с XNA, и я застреваю, когда пытаюсь правильно прикрепить оружие к кости. Вы можете увидеть результат ниже:Нарисуйте модель, модифицирующую ее центр масс

The Image

Таким образом, оружие следовать за правую руку, мне просто нужно найти хороший поворот, но это не моя проблема. Моя проблема: когда я уменьшаю мачете, его значение Y уменьшается ... Действительно, я думаю, что XNA устанавливает положение благодаря центру масс сетки ... Я хотел знать, можно ли изменить этот центр масс? нарисовать мачете из дескриптора (я не знаю, можем ли мы сказать это в этом контексте). Надеюсь, вы поймете, в чем моя проблема :) Приносим извинения за мой плохой английский, увидимся :)

+0

Вы уверены, что исходная точка модели не является центром масс. Я не уверен, как вы его настроили, но я знаю, что я переделаю вершины модели, чтобы происхождение было где-то рядом с дескриптором. – Loothelion

ответ

0

При рисовании оружия вы должны сделать несколько матричных мультипликаций. 1) ставит лезвие в центральное начало 2) изменяет его размеры 3) вращает его против локальной оси 4) размещает лезвие в нужном месте. Порядок умножения! Множественность в другом порядке приведет к анонимным результатам и смещениям модели. Матричное преобразование = fixPosMat * Matrix.Scale (1.5f) * rotationMat * PositionMat;

+0

Хорошо, извините! Я понял! : D Я думаю, все в порядке. Большое вам спасибо, увидимся, парень –

0

Я не уверен, чтобы понять ... я рисую свои модели благодаря этой матрице:

  boneLocal = Matrix.Invert(skinnedModel.SkeletonBones[index].InverseBindPoseTransform) 
         * animationController.SkinnedBoneTransforms[index] 
         * Matrix.CreateScale(scale) 
         * _rotation 
         * Matrix.CreateTranslation(_position); 
Смежные вопросы