Сложный объект в 3d opengl Android - PullRequest
0 голосов
/ 28 апреля 2011

Мне дано задание сделать несколько сложных трехмерных объектов в opengl android. Раньше я работал только над примитивными объектами opengl, используя nehe руководства. Я гуглил и обнаружил, что Blender используется для создания 3D-объектов, а затем он импортируется в Android-проект. Но я не могу получить КАК?

Ответы [ 3 ]

2 голосов
/ 28 апреля 2011

Один из простых способов сделать это - экспортировать ваши объекты в формате OBJ (он описывает вершины объекта).Затем вы можете легко создать собственный OBJ-ридер (или использовать существующий) и передать вершины OpenGL.

Иначе, не изобретайте колесо и используйте библиотеку, которая уже делает это для вас (libgdxэкземпляр).

0 голосов
/ 02 мая 2011

Вам нужен массив с плавающей точкой, представляющий ваши вершины / нормали, например:

float [ ]  vertices = {
VertexX, VertexY, VertexZ, NormalX, NormalY, NormalZ,
VertexX, VertexY, VertexZ, NormalX, NormalY, NormalZ,
VertexX, VertexY, VertexZ, NormalX, NormalY, NormalZ,
VertexX, VertexY, VertexZ, NormalX, NormalY, NormalZ,
..., ..., ..., ..., ..., ...,
};

Где каждая грань имеет три уникальные линии вершин, связанные с ней.Как только вы построите этот массив из файла OBJ или любого другого формата, используя код, который вам придется выяснить, вы можете отобразить его, выполнив следующие действия:

glVertexPointer(3, GL_FLOAT, sizeof(vertices[0])*6, &vertices[0]);
glNormalPoitner(GL_FLOAT, sizeof(vertices[0])*6, &vertices[3]);
glDrawArrays(GL_TRIANGLES, 0, numVertices);

См. Это Страница Википедии в формате OBJ для справки о том, как выложен файл obj.Анализ файла довольно прост, если вы понимаете формат.

0 голосов
/ 28 апреля 2011

... затем он импортируется в проект Android

На самом деле это обычно не импорт , а просто загрузка из файла целевым приложением.Есть несколько экспортных скриптов для Blender, которые генерируют код на C или даже записывают вызовы OpenGL;НЕ используйте их, они просто испортят вашу программу.

Есть несколько хороших библиотек для хранения 3D-объектов, таких как OpenCTM

...