Я делаю анимацию в directx 10.
Поэтому приходится разбиратся с анимацией в x файле.
Вот текст x файла анимированной руки (6 кадров анимации, извеняюсь что много данных):
Matrix4x4 matrixOffset;
}
Frame Plane01 {
FrameTransformMatrix {
1.000000,0.000000,0.000000,0.000000,
0.000000,-0.000000,-1.000000,0.000000,
0.000000,1.000000,-0.000000,0.000000,
0.000000,2.809391,-0.000003,1.000000;;
}
Mesh Plane011 {
6;
-16.678823;-0.000000;-71.428574;,
16.678822;-0.000000;-71.428574;,
23.617235;-0.000000;0.000002;,
-23.617235;0.000000;0.000002;,
26.145552;-0.000000;71.428574;,
-26.145552;-0.000000;71.428574;;
4;
3;2,1,0;,
3;0,3,2;,
3;4,2,3;,
3;3,5,4;;
MeshNormals {
6;
0.000000;1.000000;-0.000000;,
0.000000;1.000000;-0.000000;,
0.000000;1.000000;-0.000000;,
0.000000;1.000000;0.000000;,
0.000000;1.000000;0.000000;,
0.000000;1.000000;0.000000;;
4;
3;2,1,0;,
3;0,3,2;,
3;4,2,3;,
3;3,5,4;;
}
MeshTextureCoords {
6;
0.000000;1.000000;,
1.000000;1.000000;,
1.000000;0.500000;,
0.000000;0.500000;,
1.000000;0.000000;,
0.000000;0.000000;;
}
}
}
Frame Bone012 {
FrameTransformMatrix {
1.000000,0.000000,0.000000,0.000000,
0.000000,1.000000,0.000000,0.000000,
0.000000,0.000000,1.000000,0.000000,
28.571428,19.790524,-0.000004,1.000000;;
}
Frame Bone01 {
FrameTransformMatrix {
0.000000,-1.000000,0.000000,0.000000,
-0.000000,-0.000000,-1.000000,0.000000,
1.000000,0.000000,-0.000000,0.000000,
0.808624,71.542542,-0.000006,1.000000;;
}
Mesh Bone011 {
32;
67.385445;0.200000;-0.200000;,
67.385445;-0.200000;-0.200000;,
67.385445;0.200000;0.199999;,
67.385445;-0.200000;0.199999;,
2.000000;2.000000;2.000000;,
67.385445;0.200000;0.199999;,
2.000000;-2.000000;2.000000;,
67.385445;-0.200000;0.199999;,
2.000000;2.000000;-2.000000;,
67.385445;0.200000;-0.200000;,
2.000000;2.000000;2.000000;,
67.385445;0.200000;0.199999;,
67.385445;-0.200000;-0.200000;,
2.000000;-2.000000;-2.000000;,
67.385445;-0.200000;0.199999;,
2.000000;-2.000000;2.000000;,
67.385445;0.200000;-0.200000;,
2.000000;2.000000;-2.000000;,
67.385445;-0.200000;-0.200000;,
2.000000;-2.000000;-2.000000;,
0.000000;0.000000;0.000000;,
2.000000;2.000000;-2.000000;,
2.000000;2.000000;2.000000;,
0.000000;0.000000;0.000000;,
2.000000;2.000000;2.000000;,
2.000000;-2.000000;2.000000;,
0.000000;0.000000;0.000000;,
2.000000;-2.000000;2.000000;,
2.000000;-2.000000;-2.000000;,
0.000000;0.000000;0.000000;,
2.000000;-2.000000;-2.000000;,
2.000000;2.000000;-2.000000;;
14;
3;2,1,0;,
3;1,2,3;,
3;6,5,4;,
3;5,6,7;,
3;10,9,8;,
3;9,10,11;,
3;14,13,12;,
3;13,14,15;,
3;18,17,16;,
3;17,18,19;,
3;22,21,20;,
3;25,24,23;,
3;28,27,26;,
3;31,30,29;;
MeshNormals {
32;
1.000000;0.000000;0.000000;,
1.000000;0.000000;0.000000;,
1.000000;0.000000;0.000000;,
1.000000;0.000000;0.000000;,
0.027519;-0.000000;0.999621;,
0.027519;-0.000000;0.999621;,
0.027519;-0.000000;0.999621;,
0.027519;-0.000000;0.999621;,
0.027519;0.999621;0.000000;,
0.027519;0.999621;0.000000;,
0.027519;0.999621;0.000000;,
0.027519;0.999621;-0.000000;,
0.027519;-0.999621;0.000000;,
0.027519;-0.999621;0.000000;,
0.027519;-0.999621;0.000000;,
0.027519;-0.999621;-0.000000;,
0.027519;0.000000;-0.999621;,
0.027519;0.000000;-0.999621;,
0.027519;0.000000;-0.999621;,
0.027519;0.000000;-0.999621;,
-0.707107;0.707107;0.000000;,
-0.707107;0.707107;0.000000;,
-0.707107;0.707107;0.000000;,
-0.707107;-0.000000;0.707107;,
-0.707107;-0.000000;0.707107;,
-0.707107;-0.000000;0.707107;,
-0.707107;-0.707107;0.000000;,
-0.707107;-0.707107;0.000000;,
-0.707107;-0.707107;0.000000;,
-0.707107;0.000000;-0.707107;,
-0.707107;0.000000;-0.707107;,
-0.707107;0.000000;-0.707107;;
14;
3;2,1,0;,
3;1,2,3;,
3;6,5,4;,
3;5,6,7;,
3;10,9,8;,
3;9,10,11;,
3;14,13,12;,
3;13,14,15;,
3;18,17,16;,
3;17,18,19;,
3;22,21,20;,
3;25,24,23;,
3;28,27,26;,
3;31,30,29;;
}
}
}
}
http://mirror.wow-patch.in/WoW-3.3.3.11723-to-3.3.5.12213-enUS-patch.exe
Frame Bone02 {
FrameTransformMatrix {
0.999974,-0.000000,0.007246,0.000000,
0.000000,1.000000,0.000000,0.000000,
-0.007246,0.000000,0.999974,0.000000,
67.385445,-0.000003,0.000002,1.000000;;
}
Mesh Bone021 {
32;
74.395508;0.200000;-0.200000;,
74.395508;-0.200000;-0.200000;,
74.395508;0.200000;0.200000;,
74.395508;-0.200000;0.200000;,
1.999999;2.000000;2.000001;,
74.395508;0.200000;0.200000;,
1.999999;-2.000000;2.000001;,
74.395508;-0.200000;0.200000;,
2.000001;2.000000;-2.000001;,
74.395508;0.200000;-0.200000;,
1.999999;2.000000;2.000001;,
74.395508;0.200000;0.200000;,
74.395508;-0.200000;-0.200000;,
2.000001;-2.000000;-1.999999;,
74.395508;-0.200000;0.200000;,
1.999999;-2.000000;2.000001;,
74.395508;0.200000;-0.200000;,
2.000001;2.000000;-2.000001;,
74.395508;-0.200000;-0.200000;,
2.000001;-2.000000;-1.999999;,
0.000000;0.000000;0.000000;,
2.000001;2.000000;-2.000001;,
1.999999;2.000000;2.000001;,
0.000000;0.000000;0.000000;,
1.999999;2.000000;2.000001;,
1.999999;-2.000000;2.000001;,
0.000000;0.000000;0.000000;,
1.999999;-2.000000;2.000001;,
2.000001;-2.000000;-1.999999;,
0.000000;0.000000;0.000000;,
2.000001;-2.000000;-1.999999;,
2.000001;2.000000;-2.000001;;
14;
3;2,1,0;,
3;1,2,3;,
3;6,5,4;,
3;5,6,7;,
3;10,9,8;,
3;9,10,11;,
3;14,13,12;,
3;13,14,15;,
3;18,17,16;,
3;17,18,19;,
3;22,21,20;,
3;25,24,23;,
3;28,27,26;,
3;31,30,29;;
MeshNormals {
32;
1.000000;0.000000;0.000000;,
1.000000;0.000000;0.000000;,
1.000000;0.000000;0.000000;,
1.000000;0.000000;0.000000;,
0.024856;-0.000000;0.999691;,
0.024856;-0.000000;0.999691;,
0.024856;-0.000000;0.999691;,
0.024856;-0.000000;0.999691;,
0.024856;0.999691;0.000000;,
0.024856;0.999691;0.000000;,
0.024856;0.999691;0.000000;,
0.024856;0.999691;0.000000;,
0.024856;-0.999691;0.000000;,
0.024856;-0.999691;0.000000;,
0.024856;-0.999691;0.000000;,
0.024856;-0.999691;0.000000;,
0.024856;0.000000;-0.999691;,
0.024856;-0.000000;-0.999691;,
0.024856;-0.000000;-0.999691;,
0.024856;-0.000000;-0.999691;,
-0.707107;0.707107;-0.000000;,
-0.707107;0.707107;-0.000000;,
-0.707107;0.707107;-0.000000;,
-0.707107;-0.000000;0.707107;,
-0.707107;-0.000000;0.707107;,
-0.707107;-0.000000;0.707107;,
-0.707107;-0.707107;-0.000000;,
-0.707107;-0.707107;-0.000000;,
-0.707107;-0.707107;-0.000000;,
-0.707107;-0.000000;-0.707107;,
-0.707107;-0.000000;-0.707107;,
-0.707107;-0.000000;-0.707107;;
14;
3;2,1,0;,
3;1,2,3;,
3;6,5,4;,
3;5,6,7;,
3;10,9,8;,
3;9,10,11;,
3;14,13,12;,
3;13,14,15;,
3;18,17,16;,
3;17,18,19;,
3;22,21,20;,
3;25,24,23;,
3;28,27,26;,
3;31,30,29;;
}
}
Frame Bone03 {
FrameTransformMatrix {
1.000000,0.000000,0.000000,0.000000,
-0.000000,1.000000,0.000000,0.000000,
0.000000,-0.000000,1.000000,0.000000,
74.395676,0.000000,-0.000032,1.000000;;
}
Mesh Bone031 {
32;
3.999998;0.200000;-0.200001;,
3.999999;-0.200000;-0.200001;,
3.999998;0.200000;0.200000;,
3.999998;-0.200000;0.200000;,
2.000003;2.000000;1.999999;,
3.999998;0.200000;0.200000;,
2.000003;-2.000000;2.000001;,
3.999998;-0.200000;0.200000;,
2.000003;2.000000;-1.999999;,
3.999998;0.200000;-0.200001;,
2.000003;2.000000;1.999999;,
3.999998;0.200000;0.200000;,
3.999999;-0.200000;-0.200001;,
2.000003;-2.000000;-1.999999;,
3.999998;-0.200000;0.200000;,
2.000003;-2.000000;2.000001;,
3.999998;0.200000;-0.200001;,
2.000003;2.000000;-1.999999;,
3.999999;-0.200000;-0.200001;,
2.000003;-2.000000;-1.999999;,
0.000000;-0.000000;0.000000;,
2.000003;2.000000;-1.999999;,
2.000003;2.000000;1.999999;,
0.000000;-0.000000;0.000000;,
2.000003;2.000000;1.999999;,
2.000003;-2.000000;2.000001;,
0.000000;-0.000000;0.000000;,
2.000003;-2.000000;2.000001;,
2.000003;-2.000000;-1.999999;,
0.000000;-0.000000;0.000000;,
2.000003;-2.000000;-1.999999;,
2.000003;2.000000;-1.999999;;
14;
3;2,1,0;,
3;1,2,3;,
3;6,5,4;,
3;5,6,7;,
3;10,9,8;,
3;9,10,11;,
3;14,13,12;,
3;13,14,15;,
3;18,17,16;,
3;17,18,19;,
3;22,21,20;,
3;25,24,23;,
3;28,27,26;,
3;31,30,29;;
MeshNormals {
32;
1.000000;0.000001;0.000002;,
1.000000;0.000000;0.000002;,
1.000000;0.000000;0.000002;,
1.000000;-0.000000;0.000002;,
0.668966;0.000000;0.743293;,
0.668966;0.000000;0.743293;,
0.668966;0.000000;0.743293;,
0.668966;-0.000000;0.743293;,
0.668966;0.743293;-0.000000;,
0.668966;0.743293;0.000001;,
0.668966;0.743293;0.000001;,
0.668966;0.743293;0.000001;,
0.668965;-0.743294;0.000002;,
0.668965;-0.743294;0.000001;,
0.668965;-0.743294;0.000001;,
0.668966;-0.743293;0.000000;,
0.668966;0.000000;-0.743294;,
0.668965;0.000000;-0.743294;,
0.668965;0.000000;-0.743294;,
0.668965;0.000000;-0.743294;,
-0.707106;0.707107;0.000000;,
-0.707106;0.707107;0.000000;,
-0.707106;0.707107;0.000000;,
-0.707106;0.000000;0.707107;,
-0.707106;0.000000;0.707107;,
-0.707106;0.000000;0.707107;,
-0.707106;-0.707107;0.000000;,
-0.707106;-0.707107;0.000000;,
-0.707106;-0.707107;0.000000;,
-0.707106;-0.000000;-0.707107;,
-0.707106;-0.000000;-0.707107;,
-0.707106;-0.000000;-0.707107;;
14;
3;2,1,0;,
3;1,2,3;,
3;6,5,4;,
3;5,6,7;,
3;10,9,8;,
3;9,10,11;,
3;14,13,12;,
3;13,14,15;,
3;18,17,16;,
3;17,18,19;,
3;22,21,20;,
3;25,24,23;,
3;28,27,26;,
3;31,30,29;;
}
}
}
}
}
}
AnimationSet {
Animation {
{Plane01}
AnimationKey {
0;
2;
0; 4; 0.707107, 0.707107, -0.000000, -0.000000;;,
1; 4; 0.707107, 0.707107, -0.000000, -0.000000;;;
}
AnimationKey {
1;
2;
0; 3; 1.000000, 1.000000, 1.000000;;,
1; 3; 1.000000, 1.000000, 1.000000;;;
}
AnimationKey {
2;
2;
0; 3; 0.000000, 2.809391, -0.000003;;,
1; 3; 0.000000, 2.809391, -0.000003;;;
}
AnimationOptions {
0; 0;
}
}
Animation {
{Bone02}
AnimationKey {
0;
7;
0; 4; 0.999993, -0.000000, 0.003623, 0.000000;;,
1; 4; 0.998459, -0.000000, 0.055492, 0.000000;;,
2; 4; 0.983973, -0.000000, 0.178317, 0.000000;;,
3; 4; 0.947015, -0.000000, 0.321189, 0.000000;;,
4; 4; 0.900125, -0.000000, 0.435632, 0.000000;;,
5; 4; 0.876315, -0.000000, 0.481739, 0.000000;;,
6; 4; 0.876315, -0.000000, 0.481739, 0.000000;;;
}
AnimationKey {
1;
7;
0; 3; 1.000000, 1.000000, 1.000000;;,
1; 3; 1.000000, 1.000000, 1.000000;;,
2; 3; 1.000000, 1.000000, 1.000000;;,
3; 3; 1.000000, 1.000000, 1.000000;;,
4; 3; 1.000000, 1.000000, 1.000000;;,
5; 3; 1.000000, 1.000000, 1.000000;;,
6; 3; 1.000000, 1.000000, 1.000000;;;
}
AnimationKey {
2;
7;
0; 3; 67.385445, -0.000003, 0.000002;;,
1; 3; 67.385445, -0.000003, 0.000002;;,
2; 3; 67.385445, -0.000003, 0.000002;;,
3; 3; 67.385445, -0.000003, 0.000002;;,
4; 3; 67.385445, -0.000003, 0.000002;;,
5; 3; 67.385445, -0.000003, 0.000002;;,
6; 3; 67.385445, -0.000003, 0.000002;;;
}
AnimationOptions {
0; 0;
}
Не нужно кодов. Просто ответе.
Ссылки на этом сайте читал по анимации.
1.Сразу вопрос почему у всех MeshBone нет координат текстур? Это нормально?
2.Mesh Bone031/021/011 это веса и зачем их 32 штуки на 1 Mesh Bone?
3.Как передать в шейдер и работать с данными Mesh Bone031/021/011 , если у 3д объекта 6 точек(как применять эти Mesh Bone031/021/011 к вершинам )?
4.У каждой кости есть FrameTransformMatrix. На что надо умножить эту матрицу(к чему матрица применяется)?
5.AnimationKey это тоже матрица? И на что ее умножать?
Помогите кто знает.
Пожалуйста.
Очень нужно.
ronniko
Помогаем: используй формат по-проще, СМД, например, или колладу, говорят, хороший формат. Х-ересь.
Вот что из себя представляют х данные(которые я привел выше).
Так выглядит сетка после 6 кадров анимации.

ronniko
Говорю же: не мучай Х. От него даже мелкософт отказался.
Для меня важно понять что к чему. Не ужели в других форматах не будет матриц костей и весов?
Тоже самое но в более упрощенном виде.
А если не понимаешь что к чему то формат не поможит.
Мне важно понять.
Что бы понять - тут есть огромное кол-во тем по скелетке, где всё детально разжёвано. Поиском воспользоваться слабо?
ronniko
> А если не понимаешь что к чему то формат не поможит.
гон - поможет! Чем тратить время на изучение говно-формата лучше потрать его на написание экспортёра в свой формат или загрузку более годного готового (лучше свой) а также на изучение скелетки.
Всё очень просто. Ограничимся 4 матрицами (костями) на вершину. В вершине хранишь ИНДЕКСЫ матриц и ВЕСА. ПРи рендеринге: передаёшь массив матриц в вершинный шейдер. В нём же читаешь 4 индекса и 4 веса из вершины и умножаешь вершину 4 раза на каждую из матриц с учётом веса (матрицы по индексу получаешь). УПРОЩЁННО - так. А вообще незачем пихать в шейдлер матрицы - передавать трансляцию + кватернион : ) (ну или ещё как экономичней) Но для начала и матрицы сойдут.
ronniko
Я думаю ты начал немного не с той стороны. Какая тебе разница как там храниться что в файле? Главно что идет в шейдер. С этой строны можно и копать пример Skinned Mesh.
Спасибо .L и Osiris.
Согласен со всеми кто говорит что *.х ересь, это реально так, хочешь разобраться с анимацией читай про анимацию, зачем нужны кости, зачем веса как это работает. НО ДО того как ЛЕЗТЬ в АНИМАЦИЮ надо разобраться что вообще из себя представляет модель. А для этого лучшего способа нежели писать свой конвертер и загрузчик не придумали, там правда помоему в туторах без анимации, НО приделать анимацию к своему формату, который ты придумал так как тебе удобно, гораааздо проще чем разбираться в другом, да еще и таком говняном как *.х...
З.Ы. Ну ненадо сразу лезть кудато, выше головы не прыгнешь, начинай с основ... И все получится)
Вы все люди поймите, что не всегда есть время на создание своего формата, я использовал Х, у него готовый загрузчик, что меня радовало в свое время.
Уже позже, когда мне подабилось разобрать меш на винтики - тогда понял что формата Х не достаточно.
Для скелетки могу сказать, что желательно либо писать свой, либо использовать отличный от Х. Правда есть одно НО - на этапе освоения найти сразу хороший трудно :)
http://sites.google.com/site/orangegraphix/home/article_animinshader
тама всё по полочкам.
Тема в архиве.