Импортируйте модель из 3dStudioMax в THREE.js

#3d #three.js #3dsmax

#3D #three.js #3dsmax

Вопрос:

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

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

Комментарии:

1. Кстати, это был бы отличный вопрос для предлагаемого 3d stackexchange в area51.stackexchange.com/proposals/5022 /.

Ответ №1:

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

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

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

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

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

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

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

Ответ №2:

Ниже приведен скрипт MAXScript, который преобразует сетку выбранного объекта в JSON. На момент написания этого поста он был доступен в SVN сообщества разработчиков 3ds Max на хостинге Google code.

 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
 

Ответ №3:

Я еще не использовал three.js через некоторое время, но я знаю, что он импортирует OBJ, который 3dsmax может легко экспортировать, и есть скрипт python, который преобразует .obj в three.js .сетка json.

Я заметил, что в последней редакции есть экспортер MAXScript прямо в формат json, так что начните с этого. Он должен сгенерировать файл .js на основе выбранной сетки, но в данный момент не может получить доступ к компьютеру для тестирования.

Ответ №4:

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

Ответ №5:

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

введите описание изображения здесь

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

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

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