2010-09-20 2 views
0

Я новичок в графике. Я экспериментирую с OpenGL/JOGL.3D-графика: как думать о позиции модели

У меня есть .obj-файл, который я рендеринга. Мне трудно помещать его именно там, где я хочу этого в мире. У меня есть самолет, на котором я хочу, чтобы он опирался, принимая во внимание размер времени выполнения модели. Просто сделать трансформацию недостаточно, потому что мне нужно учитывать размеры модели.

Даже тогда я не уверен, как перевести 0 в систему координат .obj в мировой системе координат.

Что такое идиоматический шаблон для борьбы с этим?

ответ

0

Вы должны установить происхождение вашей модели под ногами и прибл. под его гравитационным центром. Таким образом, при масштабировании его положение (относительно земли) не изменится.

Затем просто переведите его туда, где вы хотите его, затем поверните, затем масштабируйте (в этом порядке) - все готово.

1

Для простого перевода (ступенчато):

Возьмите позицию происхождения объекта в мировой системе координат и создать матрицу перевода из этого, первого умножения координат на -1:

1 0 0 -xo 
0 1 0 -yo 
0 0 1 -zo 
0 0 0 1 

Это приведет к перемещению объекта, чтобы его происхождение совпадало с мировым происхождением. Так возьмите у значения плоскости вы хотите, чтобы объект почивать на (при условии, что у является «вверх») и добавить, что к вектору вычисленного выше, так что вашим матриц становится:

1 0 0 -xo 
0 1 0 (-yo + yp) 
0 0 1 -zo 
0 0 0 1 

Это будет означать, что плоскость пересекает объект (предполагая, что происхождение находится где-то внутри объекта). Теперь найти ограничительную рамку объекта и принять минимальное значение у от начала координат объекта:

+------+ ymax 
|  | 
|  | 
| o | 
|  | 
+------+ ymin 

где «о» происхождение.

Включите эту опцию в матрице:

1 0 0 -xo 
0 1 0 (-yo + yp + (yo - min)) 
0 0 1 -zo 
0 0 0 1 

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

Смежные вопросы