Можно ли создать простую 3D-модель (например, в 3DS MAX), а затем импортировать ее на Android?
Есть ли способ импортировать 3D-модель в Android?
Ответ 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
Здесь вы можете найти мою страницу проекта, которая использует это решение:
Ответ 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
Этот инструмент может преобразовать объект 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-конвертеры доступны для этого периода.