2011-10-28 20 views
12

Sé que THREE.js tiene importadores de varios formatos de gráficos 3D.Importar modelo desde 3dStudioMax a THREE.js

¿Hay un importador adecuado para mostrar un modelo creado en 3dStudioMax? Y si no hay uno, ¿hay alguna forma de convertir un modelo 3DStudioMax en algo que pueda importarse en THREE.js?

+0

Por cierto, esta sería una excelente pregunta para el stackexchange 3D propuesto en http://area51.stackexchange.com/proposals/5022/3d-graphics-modeling-applications. – cdiggins

Respuesta

6

A continuación se muestra una secuencia de comandos MAXScript que convertirá la malla de un objeto seleccionado en JSON. En el momento de esta publicación, estaba disponible en el SVN de 3ds Max developer community en el alojamiento de código de Google.

tmesh = snapshotAsMesh selection[1] 
out_file = createfile "$scripts\\output.json 

num_faces = tmesh.numfaces 
num_verts = tmesh.numverts 

fn PrintPoint pt = (
format "%, %, %, " pt.x pt.y pt.z to:out_file 
) 

fn PrintPointUV pt = (
format "%, %, " pt.x pt.y to:out_file 
) 

fn PrintPointInt pt = (
    x = int(pt.x) - 1 
    y = int(pt.y) - 1 
    z = int(pt.z) - 1 
    format "%, %, %, " x y z to:out_file 
) 

format "{\n" to:out_file 

-- Vertex Positions 
-- format " \"vertexPositions\" : [" to:out_file 
format " positions : [" to:out_file 
for i = 1 to num_verts do 
(
vert = getVert tmesh i 
PrintPoint vert 
) 
format "],\n" to:out_file 

-- Vertex Normals 
-- format " \"vertexNormals\" : [" to:out_file 
format " normals : [" to:out_file 
for i = 1 to num_verts do 
(
    vert = getNormal tmesh i 
    PrintPoint vert 
) 
format "],\n" to:out_file 

-- Vertex Texture Coordinates 
-- format " \"vertexTextureCoords\" : [" to:out_file 
format " uv : [" to:out_file 
for i = 1 to num_faces do 
(
    -- Iterate over faces 
    tvface = getTVFace tmesh i 
    for j = 1 to 3 do (
     -- Get a specific texture vertex 
     tvert = getTVert tmesh tvface[j]   
     PrintPointUV tvert 
    ) 
) 
format "],\n" to:out_file 

-- Face Indexes 
-- format " \"indices\" : [" to:out_file 
format " indices : [" to:out_file 
for f = 1 to num_faces do 
(
    face = getFace tmesh f 
    PrintPointInt face 
) 
format "],\n" to:out_file 

format "}" to:out_file 

close out_file 
delete tmesh 
edit out_name 
2

No he usado three.js por un tiempo, pero sé que importa OBJ que 3dsmax puede exportar fácilmente y hay un script de python que convierte un .obj en una malla de tres.js .json.

Noté que en la última revisión hay un MaxScript Exporter directo al formato json, así que empiece con eso. Debería generar un archivo .js basado en la malla seleccionada, pero no puede acceder a una PC en el momento de la prueba.

17

tiene dos opciones:

1) el uso ThreeJSExporter.ms pero tome en cuenta que ya no es mantenida:

https://github.com/mrdoob/three.js/tree/master/utils/exporters/max

2) (recomendado) Uso OBJ opción del exportador en 3DS Max. A continuación, utilice la escritura convert_obj_three.py disponible aquí:

https://github.com/mrdoob/three.js/blob/master/utils/converters/obj/convert_obj_three.py

información más detallada en mi tema en Github de Three.js:

https://github.com/mrdoob/three.js/issues/893

1

Puede guardar el archivo como máximo con el formato de archivo 3DS. Abra 3ds modelo con el A3dsViewer. Haga clic en Exportar a HTML5 en la barra de herramientas y podrá obtener una vista previa del modelo en el navegador.