2011-10-28 10 views
12

Wiem, że THREE.js ma importerów z różnych formatów grafiki 3D.Importuj model z 3dStudioMax do THREE.js

Czy istnieje importer odpowiedni do wyświetlenia modelu utworzonego w 3dStudioMax? A jeśli go nie ma, czy istnieje sposób na przekonwertowanie modelu 3dStudioMax w coś, co można zaimportować w THREE.js?

+0

Przy okazji, byłoby to doskonałe pytanie dla proponowanej trójwymiarowej listy na http://area51.stackexchange.com/proposals/5022/3d-graphics-modeling-applications. – cdiggins

Odpowiedz

6

Poniżej znajduje się skrypt MAXScript, który przekształci siatkę wybranego obiektu w JSON. W czasie tego posta był dostępny w SVN 3ds Max developer community na serwerze 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

Nie używałem pliku three.js od jakiegoś czasu, ale wiem, że importuje on OBJ, który 3dsmax może łatwo eksportować, i istnieje skrypt w języku Python, który konwertuje plik .obj na siatkę .json.

Zauważyłem, że w najnowszej wersji jest MaxScript Exporter prosto do formatu json, więc zacznij od tego. Powinien wygenerować plik .js na podstawie wybranej siatki, ale nie może uzyskać dostępu do komputera w momencie testowania.

17

Masz dwie opcje:

1) Użyj ThreeJSExporter.ms jednak uwzględnić fakt, że nie jest już mantained:

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

2) (zalecane) Zastosowanie OBJ opcja eksportera w 3DS Max. Następnie użyj convert_obj_three.py skryptu dostępnego tutaj:

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

Więcej szczegółowych informacji na temat mojego problemu na Github Three.js męska:

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

1

można zapisać maks plik w formacie pliku 3DS. Otwórz model 3ds z A3dsViewer. Kliknij Eksportuj do HTML5 na pasku narzędzi i , aby wyświetlić podgląd modelu w przeglądarce.