2013-03-03 2 views
1

Так что всякий раз, когда я загружаю 3D-модель (.3ds, .obj и т. Д.) В свою программу openGL, они либо помещаются в случайное местоположение, либо ориентируются в не идеальной позиции. Есть ли простой способ сделать это так, что когда я импортирую модель, она переходит к местоположению, которое я указываю? Я думаю, что это можно было бы обработать с помощью вершинного шейдера и перевести входное местоположение с помощью некоторого добавления векторов, но для этого потребовалось бы знать, где оно должно появиться в первую очередь, чтобы знать, как его перевести.Расположение импортированных 3D-моделей

ответ

1

Трудно понять, что такое «правильная ориентация». Когда вы видите чайник, должна ли его ручка находиться слева или справа?

Однако правильное местоположение может быть немного легче отрегулировано.

Давайте предположим, что вы хотите, чтобы ваш загруженный объект, чтобы показать на (Lx, Ly, Lz)

Во-первых, вычислить центроид вершин (Cx, Cy, Cz) путем добавления каждой координате и усредняя его. Например: для 3 точек (1,0,1), (0,1,1) и (0,0,1) центроид равен (1/3, 1/3, 1).

Теперь смещаем каждую вершину на (Lx-Cx, Ly-Cy, Lz-Cz), и ваша геометрия должна быть «центрирована» вокруг местоположения (Lx, Ly, Lz).

Примечание: Это хорошо работает для довольно симметричных моделей (например, людей, существ, автомобилей и т. Д.).

+0

Спасибо! Я обязательно попробую. – user1782677

1

Это полностью зависит от преобразований, применяемых к вашей 3D-модели, или системы координат, используемой в вашем пакете 3D-моделирования. Я бы сказал, что вы приближаетесь к этому с неправильного конца. Если вы хотите, чтобы ваши данные были согласованными, убедитесь, что они экспортированы таким образом, который вы ожидаете от своего пакета 3D-моделирования.

+0

Поскольку я получаю большинство своих моделей с таких сайтов, как turbosquid или Google 3D-склад, я не уверен, можно ли проверить систему координат, используемую конкретной моделью. – user1782677

+0

Я не знаю, есть ли на сайте какие-либо указания на это или вы можете вывести его из пакета, в котором он был создан. Но если нет, я просто возьму модель в ваш любимый пакет и исправлю его там. Я бы не хотел идти по пути, чтобы вывести ориентацию/перевод, а затем автоматически его исправить. Пусть ваш ввод будет согласованным. – Bart