#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:
Ответ №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
Наслаждайтесь!