Сравнительно недавно я решил написать загрузчик (с анимацией) моделей из файла 3DS. Сначала это казалось достаточно простым делом, однако затем (как всегда) возникли непредвиденные
трудности. Дело в том, что если при создании модели в 3DStudio Max (вер. 5.0) поизвращаться с её позицией/поворотами + позицией/поворотами Pivot point (точка определяющая локальную
систему координат объекта и являющаяся по совместительству центром вращения объекта), то корректная загрузка на этом прекращается.
Изучение доков по данной проблеме показало, в том числе, важность для решения этой проблемы блоков:
0x4160 (Локальная система координат + вектор переноса) - матрица 4x3
0xb013 (Pivot point)
???
Однако, всякие манипуляции с данными из них не дали однозначного рез-та (кое-что грузмться верно, а кое-что нет и наоборот). Как именно с ними работать инфы нет, а метод проб и ошибок, к
сожалению, на этот раз что-то затянулся...
Я пытался реализовать следующую последовательность действий:
0)гружу кучу всего, в том числе:
1) гружу вершины и данные о гранях объекта
2)гружу 0x4160
3)гружу 0xb013
4).......
4) осуществляю обратный сдвиг вершин объекта по вектору переноса и умножаю вершины на лок.сист.коорд (ЛСК)
5)сдвигаю вершины на позицию из 0-го кадра анимации
6)поворачиваю объект на данные 0-го кадра анимации
(делаю именно нулевой кадр анимации, т.к. пока я просто добиваюсь нормального исходного отображения объекта, а прочая анимация для меня в данное время не важна)
7)??????????????? что надо делать еще - без понятия
Может, кто-нибудь имеющий опыт загрузки моделей из файла 3ds поделится своими соображениями по данной теме? Заранее благодарен.
P.S. пишу на C++, OpenGL
трудности. Дело в том, что если при создании модели в 3DStudio Max (вер. 5.0) поизвращаться с её позицией/поворотами + позицией/поворотами Pivot point (точка определяющая локальную
систему координат объекта и являющаяся по совместительству центром вращения объекта), то корректная загрузка на этом прекращается.
Изучение доков по данной проблеме показало, в том числе, важность для решения этой проблемы блоков:
0x4160 (Локальная система координат + вектор переноса) - матрица 4x3
0xb013 (Pivot point)
???
Однако, всякие манипуляции с данными из них не дали однозначного рез-та (кое-что грузмться верно, а кое-что нет и наоборот). Как именно с ними работать инфы нет, а метод проб и ошибок, к
сожалению, на этот раз что-то затянулся...
Я пытался реализовать следующую последовательность действий:
0)гружу кучу всего, в том числе:
1) гружу вершины и данные о гранях объекта
2)гружу 0x4160
3)гружу 0xb013
4).......
4) осуществляю обратный сдвиг вершин объекта по вектору переноса и умножаю вершины на лок.сист.коорд (ЛСК)
5)сдвигаю вершины на позицию из 0-го кадра анимации
6)поворачиваю объект на данные 0-го кадра анимации
(делаю именно нулевой кадр анимации, т.к. пока я просто добиваюсь нормального исходного отображения объекта, а прочая анимация для меня в данное время не важна)
7)??????????????? что надо делать еще - без понятия
Может, кто-нибудь имеющий опыт загрузки моделей из файла 3ds поделится своими соображениями по данной теме? Заранее благодарен.
P.S. пишу на C++, OpenGL