2012-02-18 2 views
0

Я работаю над разбором файла майя dae на OpenGL ES на iPhone.Понимание файла матрицы Maya - Преобразование в OpenGL ES iPhone

Я могу получить все объекты для успешной рендеринга на iPhone, однако с одной проблемой - объекты повсюду и не выровнены друг с другом в сцене.

Я понимаю, что это потому, что Майя использует матрицы для описания того, где каждый объект должен находиться в сцене. В файле DAE они выглядят следующим образом:

<node id="objects01-node" name="object01"> 
      <matrix>1 0 0 9983.33 0 0 -1 -8850.6 0 1 0 135036 0 0 0 1</matrix> 
      <instance_geometry url="#object01-mesh"> 

Мой вопрос Кто-нибудь знает, как я могу перевести эту матрицу данных, а затем применить его к модели в моей сцене?

Заранее благодарим за любые предложения!

ответ

1

Здесь у вас есть матрица:

1 0 0 9983.33 
0 0 -1 -8850.6 
0 1 0 135036 
0 0 0 1 

Перевод всегда

(м [12]/м [15], м [13]/м [15], м [14]/м [15])

(где m - ваша матрица). В этом конкретном случае это (9983.33, -8850.6, 135036). Rotation матрица

1 0 0 
0 0 -1 
0 1 0 

Прочитайте эту article on Wikipedia.

Вы можете получить все эти значения или сохранить всю матрицу, а затем просто использовать glMultMatrix перед рендерингом объекта.

+0

Hi Max - что означает m [12]/m [15]? Это позиция. 12 в матрице, деленной на позицию 15? – GuybrushThreepwood

+0

м [15] не является позицией. Это увеличенное значение (обычно называемое w). Нам нужно это, чтобы иметь возможность комбинировать (умножать) матрицы вращения и преобразования. Вы должны прочитать множество однородных координат. W обычно 1. – Max

+0

Спасибо - я рад, что Макс существует. – GuybrushThreepwood