Доброго времени суток!
По сабжу
3D-конструктор помещения. Three.js r73. Сохранение и соответственно загрузка проекта.
Объекты на сцене содержат кастомные свойства/методы, которых по умолчанию нет. В итоге объект приводится к подобному виду:
Сохранение
Первое что советуют - использовать
SceneExporter.js +
SceneLoader.js, но в этом случае експортер выбрасывает исключение типа
m.ambient.getHEX() is not a function, что странно, поскольку я даже не представляю откуда он должен взяться. И даже если игнорировать этот факт, и вручную прописать предположительное значение, которое должна вернут эта функция, то в итоге получаем JSON, который выглядит так:
подобным образом выглядит и scene.toJSON()
что совсем отличается от того представления, с которым идет работа в браузере. Отсюда несколько вопросов:
- При таковой структуре, каким образом могут быть связаны отдельно геометрия и материалы (да и вообще все что лежит в JSON'е) и как из этого получить вразумительные мэши?
- Так как большая часть свойств кастомная, то каким образом их сохранять?
- Я начинаю присматриваться к варианту полного сохранения js-объектов в таком виде, как они есть в памяти, не смотря даже на то что результат может быть весом в 50 мегабайт. Но в таком случае из-за ссылок внутри объектов я получаю TypeError: Converting circular structure to JSON
Соответственно нужно найти способ сохранить объекты как уже созданные меши, чтобы не испытывать проблем с загрузкой, ведь
scene.add() и
scene.remove() куда проще велосипедов. Кто что может предложить?
Спасибо!
UPD:
пока писал это, вернулся к загружаемому объекту и понял, что есть вариант перебирать geometries, но массивы разной длинны и связываться с соответствующими текстурами и материалами просто так не получится.