Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > 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 файлов довольно таки навороченная и чтобы файл загрузить надо написать достаточно большое кол-во кода. Я бы тебе предложил найти что-нибудь готовое и посмотреть на это и если все еще останется желание заниматья этим то пожалуйста. У меня оно быстро отпало, когда я увидел сколько там всего понаписано. ![]() |
Автор: zb8194 18.7.2004, 23:22 |
Велосипед велосипедом, конечно, однако просто неохота останавливаться на достигнутом (так как оно, в своем теперешнем состоянии меня не удовлетворяет). К слову говоря, методом обнуления различных блоков 3DS файла, я выяснил, что для корректного отобьражения объекта в нулевом кадре анимация вообще не важна. Важны только блоки: 0x4160 и 0xb013 (см выше). Как их надо соотносить между собой, правда, для меня пока загадка. Надо как-то комбинировать умножение прямой и обратной маттрицы, что в 0x4160, а также что-то замутить в промежутке с 0xb013, но что?????? |
Автор: cardinal 19.7.2004, 16:37 |
Качай тут: http://www.levp.de/3d/ Изучай как этот чувак все сделал и проводи параллели ![]() Там помоему до фига информации... |
Автор: 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 - такая скотина - одни файлы грузятся нормально, другие нет... Слишком много факторов на это влияет. Хотя определенный прогресс был буквально сегодня достигнут. У меня стали вроде нормально корректно грузиться даже самые мудреные файлы, но без масштабирования и иерархии пока. Надеюсь так же будет и дальше (теперь дорогу видно, надеюсь). И кстати - насчет:
это я погорячился.Бывает. Еще как необходимы! |
Автор: 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 |
Может байты перевернуты? |