2011-10-09 15 views
9

Motivo
Estoy tratando de crear una pequeña aplicación de demostración con WebGL. Elegí usar SceneJS, porque parecía un marco fácil y sería más que suficiente para este propósito.Convertir el modelo 3D a SceneJS JSON, incluida la textura

He descargado un par de modelos .blend (Amy Rose, entre otros) y los exporté como un archivo Collada (.dae) usando Blender. Luego usé scenejs-pycollada para convertirlos a un modelo json.

Acabo de pasar un par de horas para que el convertidor scenejs-pycollada funcione. Aparentemente conseguir que esas dependencias de Python funcionen en Windows no es tan fácil si nunca antes has usado Python. ;)

Problema
Pero ahora estoy atascado (de nuevo). Mi problema es que los modelos no tienen texturas o materiales.

Utilicé el Seymour Plane Example de SceneJS. El modelo que convertí es apenas visible. Es negro y no parece responder a la iluminación de la escena. Si cargo el avión y el modelo juntos, puedo ver que el modelo está cargado, porque sus brazos y piernas sobresalen del avión.

Ahora seguí un par de tutoriales que me permitían exportar la textura como una imagen PNG. Luego modifiqué el nombre del archivo de textura en el modelo JSON para que coincida con el nombre del archivo, pero no ayuda.

Así que espero que alguien me ayude a encontrar una forma de exportar los modelos de Blender (u otros modelos 3D comunes) al formato JSON utilizado por SceneJS, incluidas las texturas.

Cualquier otro método de carga de modelos en SceneJS también lo hará, siempre que funcione.

Si tiene un enlace a descargas gratuitas de modelos cuerpo/figura JSON, eso sería útil por ahora, pero prefiero saber cómo funciona. :)

estoy usando

  • Windows 7 Home Premium de 64 bits
  • Python 2.7 (Windows 32 bits)
    Elegí la versión de 32 bits, debido aparentemente mejor soporte para las bibliotecas, y más instaladores disponibles. Al principio mezclé 32 y 64 bit y me causó problemas, pero ahora todo parece funcionar (excepto por las texturas, eso es).
  • Blender 2.59
  • SceneJS 0.8.0

Mi flujo de trabajo
En Blender Puedo exportar los modelos a Collada (*) .dae archivos, y luego convertirlos a Raw JSON usando scenejs- pycollada. Esto me da un archivo JSON con dos objetos. El primero parece ser la escena, el segundo el modelo. Guardo el segundo y lo pongo en una variable de Javascript que se usa en el código del ejemplo de SceneJS. El modelo termina con las propiedades , "type": "library", "parent": "Scene" que necesito eliminar del código para que se cargue.

Respuesta

7

Soy el autor de scenejs-pycollada.A ver si te puedo ayudar :)

Veo que está utilizando la versión 0.8 de SceneJS ... Las cosas han sido más bien en proceso de cambio, por lo que en realidad podría más fácil de tirar de la 2.0 branch of SceneJS from github y scenejs-pycollada de mi personal repo . Básicamente tenía como objetivo SceneJS 0.9 para el primer lanzamiento de scenejs-pycollada, pero esa versión nunca se lanzó oficialmente. Además, a la larga no tendrás que volver a escribir todo si cambias ahora ...

La compilación problemática de Windows también es una gran espina, realmente me gustaría que los desarrolladores numpy lo arreglaran para ti windows gente. Una vez que se publique SceneJS 2.0, lanzaré una versión oficial de scenejs-pycollada que viene con todas las dependencias necesarias para Windows.

Así que no dude en comentar esta pregunta o en actualizar su pregunta. Trataré de vigilarlo.

P.S. Alternativamente, si está realmente frustrado, en realidad tengo un segundo exportador de licuadora al https://github.com/rehno-lindeque/Blender-WebGL-exporter, pero no recomiendo usar este - está muy desactualizado. El único exportador de scenejs collada quedó en desuso hace mucho tiempo.

P.P.S. También hay ejemplos y algunos modelos de prueba en scenejs-pycollada. Si solo quieres un modelo rápido para jugar, echa un vistazo a https://github.com/rehno-lindeque/scenejs-pycollada/tree/master/example aunque no es el modelo más bonito de la historia.

P.P.P.S. En realidad, una de las razones por las que el modelo de Amy Rose no le funcionaba bien es porque scenejs-pycollada aún no era compatible con varios materiales. Estoy agregando rápidamente algo de apoyo para esto esta noche.

+0

¡Gracias! Parece que funciona con su versión scenejs-pycollada y SceneJS 2.0. No necesitó recompilar nada tampoco, así que está bien. ;) No culpo mucho a los chicos de Numpy, fue un gran error por mi parte instalar versiones incompatibles de las distintas bibliotecas. En este momento estoy probando GLGE, que alguien me recomendó. (carga archivos .dae sin tener que convertirlos). Por ahora necesito que mi demostración funcione, pero espero encontrar pronto tiempo para reinvestigar SceneJS. Gracias de nuevo. – GolezTrol

+0

No hay problema, más errores me avisan :) –

Cuestiones relacionadas