Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Что я добрался до:

  • Я использовал APIDemos Google в качестве отправной точки - там есть вращающиеся кубики, каждый из которых задан двумя массивами: вершинами и индексами.
  • Я построил свою модель с помощью Blender и экспортировал ее как файл OFF - это текстовый файл, в котором перечислены все вершины, а затем грани в терминах этих вершин (индексированная геометрия)
  • Затем я создал простое приложение на С++, которое принимает этот ВЫКЛ и записывает его как два 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

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

http://code.google.com/p/vsiogap3d/

Ответ 2

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

gl.glFrontFace(GL10.GL_CCW);

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

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

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

Ответ 6

Вы можете сделать это также с помощью 3D Object Converter

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

Этот инструмент может преобразовать объект 3ds в текстовый\xml-формат или c-код.

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

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-код.

P.s. Этот инструмент не является бесплатным, и вы можете использовать его только в течение 30-дневного пробного периода. Но 'c' код и xml-конвертеры доступны для этого периода.