Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Photoshop, Illustrator, Corel и т.п. > Корректная загрузка файла 3DS


Автор: zb8194 17.7.2004, 23:32
Сравнительно недавно я решил написать загрузчик (с анимацией) моделей из файла 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

Автор: cardinal 18.7.2004, 01:49
Я думаю, что ты велосипед изобретаешь. Дело в том, что уже давным давно написаны всякие разные 3ds loader'ы. У меня например есть 3ds importer, который написал Lev Povalahev.
Структура этих 3ds файлов довольно таки навороченная и чтобы файл загрузить надо написать достаточно большое кол-во кода.
Я бы тебе предложил найти что-нибудь готовое и посмотреть на это и если все еще останется желание заниматья этим то пожалуйста. У меня оно быстро отпало, когда я увидел сколько там всего понаписано. smile.gif

Автор: zb8194 18.7.2004, 23:22
Велосипед велосипедом, конечно, однако просто неохота останавливаться на достигнутом (так как оно, в своем теперешнем состоянии меня не удовлетворяет).
К слову говоря, методом обнуления различных блоков 3DS файла, я выяснил, что для корректного отобьражения объекта в нулевом кадре анимация вообще не важна. Важны только блоки:

0x4160 и 0xb013 (см выше).

Как их надо соотносить между собой, правда, для меня пока загадка. Надо как-то комбинировать умножение прямой и обратной маттрицы, что в 0x4160, а также что-то замутить в промежутке с 0xb013, но что??????

Автор: cardinal 19.7.2004, 16:37
Качай тут:
http://www.levp.de/3d/
Изучай как этот чувак все сделал и проводи параллели thumbs-up.gif

Там помоему до фига информации...

Автор: zb8194 19.7.2004, 23:51
К сожалению упомянутый выше загрузчик оказался не в состоянии решить проблему злосчастного pivot point. Картина, выдаваеваемая им в окне визуализации 100% соответствует моей - т.е. она также некорректна. Увы....

Развивая тему - конечно, если этот нехороший pivot не трогать, а оставлять в 3DS Max по умолчанию, то, в принципе, жить можно, однако тяжко. Ибо значительно сужаются горизонты применения проги - использовать её будет можно с несамыми хилыми оговорками... В любом случае спасибо за помощь. Ну а вообще, как говаривал один персонаж - будем искать.

Автор: WolfON 20.7.2004, 12:38
качни GlScene на glscene.org, покапайся в срцах, там хороший алгоритм =)

Автор: zb8194 20.7.2004, 23:35
Понемногу продвигаюсь самостоятельно. Теперь уже многое стало яснее (хотя и не все). Насчет glscene.org - посмотрю, хотя не уверен. Этот 3DS - такая скотина - одни файлы грузятся нормально, другие нет... Слишком много факторов на это влияет. Хотя определенный прогресс был буквально сегодня достигнут. У меня стали вроде нормально корректно грузиться даже самые мудреные файлы, но без масштабирования и иерархии пока. Надеюсь так же будет и дальше (теперь дорогу видно, надеюсь).

И кстати - насчет:

Цитата
К слову говоря, методом обнуления различных блоков 3DS файла, я выяснил, что для корректного отобьражения объекта в нулевом кадре анимация вообще не важна. Важны только блоки:
0x4160 и 0xb013 (см выше).


это я погорячился.Бывает. Еще как необходимы!

Автор: zb8194 20.7.2004, 23:36
Цитата
Еще как необходимы!


Это я насчет блоков анимации, масштабирования и пр.

Автор: yurgen20 21.7.2004, 14:41
Слушай, а исходники выкинуть не жалко будет? Хотя бы недоделанные. Очень уж интересная тема.

Автор: ver01 14.4.2005, 18:52
что за бред,почему блок TRACKPIVOT,который 0xb013,хранит неправильные координаты???мне нужно знать координаты центра объекта.помогите!

Автор: cardinal 14.4.2005, 21:31
Может байты перевернуты?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)