Pergunta

É possível criar um modelo 3D simples (por exemplo, em 3DS MAX) e, em seguida, importá-lo para Android?

Foi útil?

Solução

Isso é onde eu tenho que:

  • Eu usei APIDemos do Google como um ponto de partida - há rotativas cubos de lá, cada um especificado por duas matrizes:. Vértices e índices
  • Eu tenho construir meu modelo usando Blender e exportados como um arquivo OFF - é um arquivo de texto que lista todos os vértices e, em seguida, enfrenta em termos dessas vértices (geometria indexada)
  • Em seguida, eu criei um aplicativo simples C ++ que leva que OFF e escreve-lo como dois XMLs contendo matrizes (um para vértices e um para índices)
  • Esses arquivos XML são copiados para res / valores e desta forma eu posso atribuir os dados que eles contêm a matrizes como este:
    int vertices[] = context.getResources().getIntArray(R.array.vertices);
  • Eu também preciso alterar manualmente o número de faces a ser desenhado aqui: gl.glDrawElements(GL10.GL_TRIANGLES, 212*6, GL10.GL_UNSIGNED_SHORT, mIndexBuffer); - você pode encontrar esse número (212 neste caso) na parte superior do arquivo OFF

Aqui você pode encontrar minha página do projeto, que utiliza esta solução: projeto Github> vsiogap3d

Outras dicas

Você pode exportá-lo para o formato ASE. da ASE, você pode convertê-lo em seu código manualmente ou programaticamente. Você vai precisar de vértice de gama vértices e rostos para índices em Android. não se esqueça que você tem que definir

gl.glFrontFace(GL10.GL_CCW);

porque 3ds max padrão é anti-horário.

Deve ser possível. Você pode ter o arquivo como um arquivo de dados com o seu programa (e, como tal, será empurrado para o emulador e embalados para instalação em um dispositivo real). Em seguida, você pode escrever um carregador de modelo e espectador em java usando os Android e GLES bibliotecas para exibir o modelo.

recursos específicos sobre este são provavelmente limitada embora. 3DS é um formato de modo proprietry 3rd carregadoras partido são em quantidade muito baixo e na maior parte de engenharia inversa. Outros formatos (como liquidificador ou MilkShape) são mais abertos e você deve ser capaz de encontrar detalhes sobre como escrever um carregador para eles em java com bastante facilidade.

Você já tentou min3d para o Android? Ele suporta 3ds max, obj e MD2 modelos.

Não tenho certeza Android especificamente, mas em geral você precisa de um script em 3DS Max que escreve manualmente a formatação que você precisa a partir do modelo.

Quanto a saber se existir alguma para Android ou não, eu não sei.

Você pode fazer isso também com Objeto 3D Converter

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

Esta ferramenta pode converter 3ds objeto para texto \ formato XML ou código c.

Exemplo de gl aberto saída '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();

ou 'c' output

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};

Em seguida, você pode simplesmente substituir as peças deste código por código java.

P.S. Esta ferramenta não é gratuito e você pode usá-lo apenas por um período experimental de 30 dias. Mas 'c' código e conversores XML está disponível para este período.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top