Я создал модель в Google SketchUp
и хочу экспортировать ее в three.js
, чтобы сэкономить время. Поскольку я думаю, что использовать SketchUp
проще, чем three.js
. Тогда может кто-нибудь сказать мне, как это сделать? Большое спасибо!
Как экспортировать модели SketchUp в файл three.js?
Ответы:
Вы можете экспортировать колладу (.DAE) из SketcUp. Затем используйте Three.js ColladaLoader. Я думаю, что бесплатная версия SketchUp может не поддерживать экспорт коллады, но в любом случае вы можете экспортировать в Google Earth (.KMZ), переименовать его в .ZIP, открыть его в любой программе архивации, вы должны найти там .DAE.
Это не пуленепробиваемый, но в основном работает. Некоторые советы:
В настройках экспорта оставьте триангуляцию граней включенной. Двусторонние лица обычно лучше, но иногда вы можете отказаться от этого.
После этого вам может понадобиться изменить размер файлов текстур, чтобы они были не в степени двойки (например, 256x512).
Рекомендуется взорвать/разгруппировать ВСЕ ваши компоненты и группы, чтобы избежать проблем с ColladaLoader. Выделить все (Ctrl+A), взорвать из контекстного меню. Повторяйте до тех пор, пока взрываться нечему. Или используйте для этого подключаемый модуль, например https://www.smustard.com/script/Bomb. У самого SketchUp есть проблемы. взрывает очень сложные модели и может казаться зависшим. Это очень прискорбно, и вы мало что можете сделать, кроме как удалить более сложные части из вашей модели. Или подождите, это может занять от 1 секунды до нескольких дней.
На стороне Three.js вы МОЖЕТЕ захотеть пройтись по импортированному объекту и установить материалы на DoubleSide.
SketchUp использует дюймовые единицы измерения при экспорте (даже если пользовательский интерфейс или проект настроен на метрический масштаб), поэтому вы можете соответствующим образом масштабировать импортированную модель. Three.js не имеет такого предопределенного масштаба, но, например, если вы считаете, что 1,0 Three.js составляет 1,0 метр, вам нужно установить obj.scale.x = obj.scale.y = obj.scale.z = 0,02539999969303608;
в threejs, если вы хотите поместить объект, загруженный из файловой коллады, в определенную точку, вы должны правильно преобразовать смещение в единицы, например:
Я хочу разместить объект в (600, 1800, 0) мм, а файл экспортируется в дюймах
var dae;
dae = collada.scene;
...
...
var x = 600;
var y = 1800;
var z = 0;
convertedX var = x * 0.0393700787 * dae.scale.x;
convertedY var = y * 0.0393700787 * dae.scale.y;
convertedZ var = z * 0.0393700787 * dae.scale.z;
dae.position.set (convertedX, convertedY, convertedZ);