Войти
АртФорумМоделирование

Загрузка объекта из 3ds файла.

#0

Понимаю, что в сотый раз поднимаю данную тему, но у меня возникли проблемы. Главная состоит в том, что у меня не получается корректно загрузить сцену, если в ней множество объектов. Никак не могу разобраться с матрицей трансформации объекта, которая хранится в чанке с номером 0х4160. Помогите. Объясните пожалуйста, что надо делать  с теми данными, которые хранятся в этом чанке.
Вот, что я пробовал:

pObject.pVerts[index].x -= pObject.offset.x;
 pObject.pVerts[index].y -= pObject.offset.y;
 pObject.pVerts[index].z -= pObject.offset.z;

 float x = pObject.pVerts[index].x;
 float y = pObject.pVerts[index].y;
 float z = pObject.pVerts[index].z;

 pObject.pVerts[index].x = pObject.rotationMatrix[0] * x + pObject.rotationMatrix[1] * y + pObject.rotationMatrix[2] * z;
 pObject.pVerts[index].y = pObject.rotationMatrix[3] * x + pObject.rotationMatrix[4] * y + pObject.rotationMatrix[5] * z;
 pObject.pVerts[index].z = pObject.rotationMatrix[6] * x + pObject.rotationMatrix[7] * y + pObject.rotationMatrix[8] * z;
После таких преобразований объект выглядит просто ужасно :-(.

19 дек. 2009

#1

altk
Лично я не использую эти матрицы. Насколько я знаю в 3ds объект хранится уже трансформированный (по матрице 1го кадра анимации). Если хочешь задействовать анимацию, надо прежде применить обратную трансформацию, чтобы получить нетрансформированный 1й кадр

19 дек. 2009

#1

>Главная состоит в том, что у меня не получается корректно загрузить сцену, если в ней множество объектов.
дело может и не в этом, но на всякий случай напомню, что в формате 3ds нельзя сохранять больше 64килоПоли,
а по делу могу предложить выкинуть матрицы, и сохранять в формате уже трансформированные вершины...
Скриншет.

19 дек. 2009

#2

Я делаю дипломный проект. Один из классов отвечает за загрузку модели из 3ds файла. После загрзуки объекта некоторые его части нормально не стыкуются. Т.е. они как-бы расположены не на своём месте. Подскажите, где хранятся данные в файле, которые отвечают за объединение объектов из множества в целое(некоторые преобразования для объекта).
Чтобы было понятнее вот скрин(должен получиться цельный дом, но крыша находится не на своём месте):
Bag | Загрузка объекта из 3ds файла.

21 дек. 2009

#3

* 4160 Local axis

  Local axis info.
  The three first blocks of three floats are the definition
  (in the absolute axis) of the local axis X Y Z of the object.
  And the last block of three floats is the local center of the object.
оно?

4160H  MESH_MATRIX  float matrix[4][3];  - The Labs сайт - возможно там матрица перевернутая не 4 пака по 3 флоата, а 3 пака по 4 флоата.... Надо просто "перевернуть" И не забыть что там у - это не у! Вроде...
Я не помню, но когдато рубал этот формат... Вообще наугад создай бокс 10*10*10 в центре координат... Сохрани. Потом сдвинь этот бокс на 7 по оси Х и сохрани как бох2.3дс - и сравни где-то что-то ж изменится... =))) Брутально, но сработает =)))

21 дек. 2009

#4

Перепробовал много вариантов - пока результата нет. Помогите пожалуйста. Добавил считывание анимации из файла. Вроде стало немного по-лучше, но все равно объект грузиться не правильно. Т.е. геометрия объекта идеальная, а вот как его расположить, чтобы собрать единую модель пока не знаю. Получается так, что все объекты модели стоят в каком-то хаотичном порядке. Вот надо в этот хаос внести постоянство.

21 дек. 2009

#5

Ну вот же решение проблем!. или надо обязательно с матрицами?

21 дек. 2009

#6

Данное решение помогло. Но наилучший вариант был бы, если бы рассказали как использовать матрицы.

21 дек. 2009

АртФорумМоделирование

Тема в архиве.