Импортировать модель из 3dStudioMax в THREE.js - PullRequest
13 голосов
/ 28 октября 2011

Я знаю, что THREE.js имеет импортеров из различных форматов 3D-графики.

Есть ли импортер, подходящий для отображения модели, созданной в 3dStudioMax? И если его нет, есть ли способ конвертировать модель 3dStudioMax во что-то, что можно импортировать в THREE.js?

Ответы [ 5 ]

18 голосов
/ 23 декабря 2011

У вас есть два варианта:

1) Используйте ThreeJSExporter.ms, но учтите, что он больше не поддерживается:

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

2) (рекомендуется) Использование опции экспорта OBJ в 3DS Max. Затем используйте скрипт convert_obj_three.py, доступный здесь:

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

Более подробная информация в моем выпуске о Three.js's Github:

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

6 голосов
/ 30 октября 2011

Ниже приведен скрипт MAXScript, который преобразует сетку выбранного объекта в JSON. На момент написания этой статьи она была доступна в SVN сообщества разработчиков на хостинге кода 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 голосов
/ 29 октября 2011

Я давно не использовал three.js, но я знаю, что он импортирует OBJ, который 3dsmax может легко экспортировать, и есть скрипт на python, который преобразует .obj в сетку three.js .json.1002 * Я заметил, что в последней ревизии есть MaxScript Exporter прямо в формат json, так что начните с этого.Он должен сгенерировать файл .js на основе выбранной сетки, но в данный момент не может получить доступ к ПК для тестирования.

1 голос
/ 23 декабря 2013

Вы можете сохранить максимальный файл, используя формат файла 3ds. Открытая 3ds модель с A3dsViewer . Нажмите Экспорт в HTML5 на панели инструментов и Вы сможете просмотреть модель в браузере.

0 голосов
/ 29 ноября 2018

Сейчас в 2018 году у нас есть glTF и очень хороший экспортер для 3ds max, разработанный и активно поддерживаемый вавилонским сообществом:

enter image description here

Описание и порядок установки подробно описаны здесь:

https://doc.babylonjs.com/resources/3dsmax_to_gltf

Затем можно легко использовать модели gltf в three.js, см. Некоторые примеры:

https://threejs.org/examples/webgl_loader_gltf.html

https://threejs.org/examples/#misc_exporter_gltf

Наслаждайтесь!

...