Есть ли способ импортировать 3D-модель в Android?

Можно ли создать простую 3D-модель (например, в 3DS MAX), а затем импортировать ее в Android?

57
0
64 416
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Точно не уверен в Android, но, вообще говоря, вам нужен скрипт в 3DS Max, который вручную записывает нужное вам форматирование из модели.

Что касается того, существует ли он для Android, я не знаю.

Это должно быть возможно. У вас может быть файл как файл данных с вашей программой (и как таковой он будет загружен в эмулятор и упакован для установки на фактическое устройство). Затем вы можете написать загрузчик и средство просмотра модели на java, используя библиотеки Android и GLES для отображения модели.

Однако конкретные ресурсы по этому вопросу, вероятно, ограничены. 3ds является проприетарным форматом, поэтому сторонних загрузчиков не хватает, и они в основном подвергаются обратному проектированию. Другие форматы (такие как blender или milkshape) более открыты, и вы сможете довольно легко найти подробную информацию о написании загрузчика для них на java.

вы можете экспортировать его в формат ASE. из ASE, вы можете преобразовать его в свой код вручную или программно. Вам понадобится вершина для массива вершин и грани для индексов в Android. не забывай, ты должен установить

gl.glFrontFace(GL10.GL_CCW);

потому что 3ds max по умолчанию - против часовой стрелки.

Спасибо, это очень похоже на то, что я сделал - вместо этого я использовал OFF и Blonder.

Maciej Gryka 12.04.2009 21:38
Ответ принят как подходящий

Вот куда я попал:

  • Я использовал APIDemos от Google в качестве отправной точки - там есть вращающиеся кубы, каждый из которых задан двумя массивами: вершинами и индексами.
  • Я построил свою модель с помощью Blender и экспортировал ее как файл OFF - это текстовый файл, в котором перечислены все вершины, а затем грани с точки зрения этих вершин (индексированная геометрия).
  • Затем я создал простое приложение на C++, которое отключает это и записывает его в виде двух XML-файлов, содержащих массивы (один для вершин и один для индексов).
  • Затем эти XML-файлы копируются в res / values, и таким образом я могу назначать данные, которые они содержат, таким массивам, как это:
    int vertices[] = context.getResources().getIntArray(R.array.vertices);
  • Мне также нужно вручную изменить количество лиц, которые будут отображаться здесь: gl.glDrawElements(GL10.GL_TRIANGLES, 212*6, GL10.GL_UNSIGNED_SHORT, mIndexBuffer); - вы можете найти это число (в данном случае 212) поверх файла OFF.

Здесь вы можете найти страницу моего проекта, в котором используется это решение: Проект Github> vsiogap3d

Вы пробовали min3d для android? Он поддерживает модели 3ds max, obj и md2.

Хороший учебник по этой библиотеке: mat-d.com/site/…

Ievgen Naida 27.09.2012 02:34

Вы также можете преобразовать модель 3DS MAX с помощью Конвертер 3D-объектов

http://web.t-online.hu/karpo/

Этот инструмент может преобразовать объект 3ds в формат text \ xml или код c. Обратите внимание, что инструмент платный. Вы можете попробовать 30-дневный пробный период. Доступны "C" -код и конвертеры XML.

'c' Пример вывода OpenGL:

glDisable(GL_TEXTURE_2D);
glEnable(GL_LIGHTING);
glEnable(GL_NORMALIZE);

GLfloat Material_1[] = { 0.498039f, 0.498039f, 0.498039f, 1.000000f };

glBegin(GL_TRIANGLES);

  glMaterialfv(GL_FRONT,GL_DIFFUSE,Material_1
  glNormal3d(0.452267,0.000000,0.891883);
  glVertex3d(5.108326,1.737655,2.650969);
  glVertex3d(9.124107,-0.002484,0.614596);
  glVertex3d(9.124107,4.039649,0.614596);

glEnd();

Или прямой вывод c:

Point3 Object1_vertex[] = {
       {5.108326,1.737655,2.650969},
       {9.124107,-0.002484,0.614596},
       {9.124107,4.039649,0.614596}};
long Object1_face[] = {
       3,0,1,2,
       3,3,4,5
       3,6,3,5};

Вы можете перенести в свой код Java не только эти коллекции объектов.

Другие вопросы по теме