2017-04-09 2 views
0

Gibt es eine Möglichkeit zum Speichern und Laden von Stringed-Objekten mit three.js?Speichern und Laden von Dateien mit three.js

Ich fand dies: https://github.com/josdirksen/learning-threejs/blob/master/chapter-08/03-load-save-json-object.html

aber sie verwenden localstorage zu speichern und zu laden, die zwischen den Sitzungen oder verschiedenen Computern wird nicht funktionieren.

Gibt es eine Möglichkeit, Dateien genauso zu laden, wie das Modell geladen ist? Dies sollte wie das Laden von Datendateien für ein Spiel sein.

Ich betreibe den Webgl-Client mit Autodesk Viewer lokal mit http-server.

+0

Sie können mit der Datei-API Dateien speichern/lesen, aber der Benutzer wird immer dazu aufgefordert, wo er für jede Speicherung gespeichert wird. Um außerhalb von verschiedenen lokalen Speichern zu speichern, benötigen Sie einen Server. [Siehe diesen Artikel] (https://games.greggman.com/game/saving-and-loading-files-in-a-web-page/), um zu erfahren, wie man einen solchen Server schreibt – gman

+0

Aber es gibt schon einen Server das dient den Modelldateien, warum kann ich das nicht benutzen? @ gman – shinzou

+0

Vielleicht können Sie, aber Sie müssen Funktionen und Routen zum Laden und Speichern hinzufügen. Das Speichern von Dateien ist im Allgemeinen keine Standard-Serverfunktion, sondern eine Funktion, die Sie hinzufügen, um die Anforderungen Ihres Projekts zu erfüllen. – gman

Antwort

1

Wenn das Objekt in localstorage geschrieben werden kann, kann es genauso gut als Datei exportiert werden. Sie können sie an einen Server senden und dort speichern (vielleicht wäre hier etwas wie Firebase nützlich), oder Sie können einen "Download" direkt aus dem Browser starten. Dies wird in Create a file in memory for user to download, not through server erklärt.

Zum Laden einer Datei können Sie die Datei-api verwenden, die hier gezeigt wird: How to open a local disk file with Javascript?.

Sie müssen nur die lokalen Storage-Teile in Ihrem Beispiel entsprechend ersetzen.

+0

Warum kann ich nicht denselben Server verwenden, der die Modelldateien bereitstellt? – shinzou

+0

Sicher, Sie können das auch tun. Sie haben jedoch angegeben, dass Sie http-server verwenden, wobei afaik keine PUT- oder POST-Anfragen zum Speichern von Dateien auf dem Server unterstützt. Deshalb habe ich einige Möglichkeiten gegeben, dies mit einem reinen statischen Server zu tun. –

1

Der Autodesk Viewer fügt zu Martin's answer Dateien hinzu, die von Model Derivative API übersetzt und gehostet werden. Es ist möglich, mehrere Dateien in derselben Szene anzuzeigen. Der Viewer ist schreibgeschützt. Es gibt eine getState- und eine loadState-Funktion, um die Objekte zu erhalten, die die aktuellen Zoom/explodieren/anzeigen-Informationen darstellen und die serialisiert und irgendwo gespeichert werden können.

Es gibt some samples, die zeigen, wie eine Geometrie auf dem Modell verschoben wird, z. B. die Geometrie einer Wand (aus einem Gebäudemodell). Dies ist jedoch nicht persistent, dh Sie müssen eine JavaScript- (Client) + Back-End-Infrastruktur implementieren, um diese Transformationen zu speichern und wiederherzustellen.