Получение модели майя в iPhone - PullRequest
3 голосов
/ 13 января 2011

Каков наилучший способ сделать это?Поиск в Google показал мне множество способов, но какой из них лучше?Я был бы достаточно счастлив, чтобы просто экспортировать модель из Maya и отображать ее на экране iPhone, но я бы рад, если бы был способ ее рендеринга, а затем поддерживал бы масштабирование и т.д.Большое спасибо, только что закончил мой первый урок 3D-моделирования сегодня, и я в восторге!

Ответы [ 4 ]

5 голосов
/ 25 февраля 2011

Я только что закончил писать полнофункциональный просмотрщик моделей и манипулятор для iPhone и iPad. По сути, я просто написал свой собственный анализатор файлов, который будет хранить массивы вершин, затем в цикле рендеринга я просто рендеринг массивов. Это довольно просто сделать, хотя бинарные файлы читаются намного быстрее, чем файлы .obj. Таким образом, вы можете открыть любой файл, а не только тот, который вы «обрабатываете». В интернете также есть много примеров.

EDIT:

Просто поместите ваши вершины в плотно упакованный массив:

vertexX, vertexY, vertexZ, normalX, normalY, normalZ

Так что у вас есть одномерный массив с плавающей точкой, но он отображается как выше. Если у вас есть массив с плавающей точкой, его легко отобразить.

glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);

glVertexPointer(3, GL_FLOAT, sizeof(vertices[0])*6, &vertices[0]);
glNormalPointer(GL_FLOAT, sizeof(vertices[0])*6, &vertices[3]);

glColor4f(R, G, B, 1); //range 0-1
glDrawArrays(GL_TRIANGLES, 0, numVertices); //number of floats in array divided by 6

glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);

Затем просто поместите это в свой цикл рендеринга OpenGL-ES 1.1. Дайте мне знать, если это поможет вам.

EDIT2:

Просто уточняю, если вы открываете файл OBJ в текстовом редакторе, он выглядит так:

list of vertices
list of texture coordinates
list of normals
list of faces

и список лиц ссылается на индексы в трех других списках в том же порядке. Например, одна строка может выглядеть так:

f 16/4/1  4/4/4  1/1/1

означает, что первая вершина грани ссылается на индекс 16 вершин, индекс 4 текстур и индекс 1 нормалей. Второй индекс ссылается на индекс 4 вершин, индекс 4 текстур и индекс 4 нормалей и т. Д. Затем вам просто нужно проанализировать грани и извлечь правильные значения из разных массивов в один массив с плавающей точкой, содержащий вершины и нормали на основе индексы лица.

1 голос
/ 13 января 2011

Проверьте книгу от парней Пангеи. Ссылка здесь . Я не помню, показывает ли он [Мозг] код для чтения Майя или Псевдоним. В любом случае, это необходимо прочитать.

[править] он показывает, как читать файлы майя в главе 13

0 голосов
/ 12 июля 2013

Вы также можете использовать unity3d и cocos3d , а также

0 голосов
/ 13 января 2011

Ну, если у кого-то нет лучшего пути, я следую за этим постом: http://heikobehrens.net/2009/08/27/obj2opengl/.Он включает в себя экспорт модели в формате .obj, а затем запуск ее через скрипт Perl для преобразования ее в .h структур C.

...