Здравствуйте, Manstopper, Вы писали:
M>Помогите, я уже задолбался, у меня скоро крыша поедет!
M>Пытаюсь делать сабж, все бы здорово, но чего-то я, видимо, туплю.
M>Нужно мне следующее: записанный в файл меш и анимация костей, причем
M>матрицы должны быть уже просчитаны (иерархия мне не нужна). Короче
M>говоря, грузим в движке из файла vertex buffer (вертексы с весами, я
M>юзаю indexed vertex blending), index buffer, и пресловутые матрицы
M>костей, делаем для соответствующей позы что-то типа
M>for(UINT nBone=0; nBone < m_nNumBones; nBone++)
M>lpDevice->SetTransform(D3DTS_WORLDMATRIX(nBone),
M>&m_nBones[nPose][nBone]);
M>и вуаля, на экране должен появится меш в соответствующей позе.
M>Я уже чего только не перепробовал, и все не работает! Как
M>таки-правильно преобразовать матрицы и вершины, чтобы получилось то, о
M>чем я написал выше? Если можно поподробнее, заранее благодарен
M>С меня пиво, если что
M>ЗЫ: Уточняю, использую не physique modifier, а ISkin
Когда пишешь lpDevice->SetTransform(D3DTS_WORLDMATRIX(nBone),&m_nBones[nPose][nBone]);ты только устанавливаешь трансформацию над объектом который будет рисоваться далее, над мешом, а кость это не меш. Все вершины твоего объекта должны содержать информацию о костях к которым они принадлежат и весах. Каждую вершину ты должен трансформировать... вобщем умножить на матрицу кости и на вес этой кости для этой вершины. Посмотри Skinned Mesh в DirectXSDK