Сохраняйте и загружайте файлы с помощью three.js

Есть ли способ сохранять и загружать строковые объекты с помощью three.js?

Я нашел это: https://github.com/josdirksen/learning-threejs/blob/master/chapter-08/03-load-save-json-object.html

но они используют localstorage для сохранения и загрузки, что не работает между сеансами или разными компьютерами.

Есть ли способ загрузить файлы так же, как загружается модель? Это должно быть похоже на загрузку файлов данных для игры.

Я запускаю клиент webgl со средством просмотра Autodesk локально с помощью http-server.


person shinzou    schedule 09.04.2017    source источник
comment
Вы можете сохранять/читать из файлов с помощью File API, но пользователю всегда будет предлагаться, куда сохранять для каждого сохранения. Для сохранения вне различных локальных хранилищ вам нужен сервер. см. эту статью, чтобы узнать, как чтобы начать писать такой сервер   -  person gman    schedule 10.04.2017
comment
Но уже есть сервер, который обслуживает файлы модели, почему я не могу его использовать? @gman   -  person shinzou    schedule 10.04.2017
comment
Возможно, вы можете, но вам нужно будет добавить функции и маршруты для загрузки и сохранения. Сохранение файлов, как правило, не является стандартной функцией сервера, это функция, которую вы добавляете для удовлетворения потребностей вашего проекта.   -  person gman    schedule 10.04.2017


Ответы (2)


Если объект можно записать в локальное хранилище, его также можно экспортировать в виде файла. Вы можете отправить их на сервер и сохранить там (может быть, здесь будет полезно что-то вроде firebase), или вы можете инициировать «загрузку» прямо из браузера. Это объясняется в Создайте файл в память для загрузки пользователем, а не через сервер.

Для загрузки файла вы можете использовать файловый API, который показан здесь: Как открыть файл на локальном диске с помощью Javascript?.

Вам просто нужно заменить части localstorage в вашем примере соответствующим образом.

person Martin Schuhfuß    schedule 09.04.2017
comment
Почему я не могу использовать тот же сервер, который обслуживает файлы моделей? - person shinzou; 10.04.2017
comment
Конечно, вы тоже можете это сделать. Но вы заявили, что используете http-сервер, который на самом деле не поддерживает PUT или POST-запросы для хранения файлов на сервере. Вот почему я дал несколько вариантов того, как это сделать с чистым статическим сервером. - person Martin Schuhfuß; 11.04.2017

В дополнение к ответу Мартина Autodesk Viewer использует файлы, переведенные и размещенные API производной модели. Можно показать несколько файлов в одной и той же сцене. Средство просмотра доступно только для чтения. Существуют функции getState и loadState для получения объектов, представляющих текущую информацию о масштабировании/расширении/просмотре, которые можно сериализовать и где-то хранить.

Есть несколько примеров показывая, как перемещать геометрию на модели, например, перемещать геометрию стены (из модели здания). Но это не является постоянным, а это означает, что вам нужно реализовать JavaScript (клиент) + внутреннюю инфраструктуру для сохранения и восстановления этих преобразований.

person Augusto Goncalves    schedule 10.04.2017