Cookies für Statistik und Werbung
Wir setzen Cookies für Statistik und Werbung ein, beides geht an Google. Wenn du ablehnst, ändert sich für dich sichtbar nichts.Zur Datenschutzseite
PLY kannst du hier kostenlos und ohne Konto in GLTF umwandeln: Datei oben ablegen, und ein, zwei Sekunden später steht das Ergebnis zum Herunterladen bereit. Die Umwandlung läuft in deinem eigenen Browser, die Datei wird also nie hochgeladen — das klappt unter Windows, macOS und Linux ebenso wie auf iPhone und Android, und es funktioniert selbst dann noch, wenn du das Netz abschaltest.
Bis zu 100 Dateien auf einmal. Gemischte Formate sind kein Problem.
Sie werden nacheinander umgewandelt und kommen zusammen als ZIP zurück.
PLY in GLTF
Deutsche Museen und Archive digitalisieren zunehmend eigene Bestände als 3D-Scan — ein Exponat, das nicht ausgeliehen werden kann, eine archäologische Fundstelle, ein Objekt, das im Depot liegt und online zugänglich gemacht werden soll. Der Scan liegt danach fast immer als PLY vor, weil das Format genau das speichert, was ein Scanner ausgibt: Punkte oder Dreiecke mit einer Farbe je Punkt.
Ein Browser öffnet diese Datei nicht. Es gibt kein HTML-Element, keinen eingebauten Betrachter, der eine PLY-Datei anzeigt — der Aufruf lädt sie höchstens herunter. glTF ist das Format, auf das sich das Web für 3D geeinigt hat: three.js, Babylon.js und das `<model-viewer>`-Element laden es als erste Wahl. Ein Scan vor Besucherinnen und Besuchern auf einer Webseite zu zeigen bedeutet deshalb zuerst, ihn umzuwandeln.
Das muss zuerst gesagt werden, weil es darüber entscheidet, ob sich der nächste Schritt überhaupt lohnt. Ein photogrammetrischer oder strukturbasierter Scan wird meist deshalb als PLY gespeichert, weil das Format „red", „green" und „blue" als Eigenschaft an jedem Vertex trägt — genau so speichert ein Scan seine Erscheinung, ohne eine Texturatlas-Struktur zu brauchen. Der Leser hier nimmt x, y und z und ignoriert jede andere Eigenschaft, der Schreiber schreibt ausschließlich Positionen und Indizes.
Ein Scan einer bemalten Keramik erscheint im Betrachter also als texturloses Grau. Für einen geometrischen Scan — ein Ersatzteil, eine Gussform, eine Maßprüfung — ist das genau richtig, nichts geht dabei verloren. Für ein Museumsobjekt oder ein bemaltes Exponat war die Farbe der eigentliche Sinn der Digitalisierung, und diese Umwandlung liefert dann etwas, das in genau dem Punkt schlechter ist, den das Publikum wahrnimmt. In diesem Fall führt der Weg über einen Export mit gebackener Textur aus der Scansoftware oder aus MeshLab, nicht über eine reine Geometrieumwandlung.
Scanner erzeugen zuerst Punkte, erst danach eine Oberfläche, und eine PLY-Datei mit Vertices ohne Flächenelement ist eine Punktwolke. Die Umwandlung bricht dann mit einer klaren Begründung ab: Das ist eine Punktwolke, sie enthält Punkte, aber keine Flächen, und aus Punkten eine Oberfläche zu machen ist Rekonstruktion, keine Umwandlung, und braucht ein Modellierungswerkzeug.
Das ist eine bewusste Verweigerung und keine Fehlfunktion — Rekonstruktion trifft Entscheidungen über Glättung, Tiefe und das Schließen von Löchern, die das Ergebnis erheblich verändern, und kein Konverter sollte das stillschweigend übernehmen. MeshLabs Screened-Poisson-Oberflächenrekonstruktion ist der übliche Weg und braucht wenige Minuten; die meisten Scananwendungen exportieren auf Wunsch auch direkt ein rekonstruiertes Mesh. Genau dieses Ergebnis lässt sich dann hier umwandeln.
Rohe Scans sind naturgemäß dicht: Ein handgeführter Scanner erzeugt für ein schuhgroßes Objekt routinemäßig ein bis fünf Millionen Dreiecke, weil sich das Mesh aus der Abtastrate ergibt und nicht aus dem, was die Form eigentlich braucht. Eine Webseite hat ein völlig anderes Budget — ein Modell, das auf einem Mittelklasse-Telefon flüssig lädt, bewegt sich im Bereich von Zehntausenden Dreiecken, nicht Millionen.
Vereinfachen vor der Umwandlung, nicht danach. MeshLabs Quadric Edge Collapse Decimation mit einer Zieldreieckszahl oder Blenders Decimate-Modifikator erhalten beide die Silhouette gut und laufen in einem Durchgang. Am besten an der Größe orientieren, in der das Modell tatsächlich erscheinen wird — ein um fünfundneunzig Prozent reduzierter Scan ist bei 600 Pixeln Breite häufig nicht zu unterscheiden. Das macht auch jeden folgenden Schritt schneller, diesen hier eingeschlossen.
Ein Mesh, eine Primitive, Modus 4. Die Positionen werden zu einem VEC3-Fließkommazugriff, die Indizes zu einem ganzzahligen SCALAR-Zugriff, mit je einer Pufferansicht und einem gemeinsamen Puffer für beide. Der Positionszugriff trägt min und max, was die Spezifikation verlangt und was Betrachter nutzen, um das Modell einzurahmen — eine Datei ohne diese Werte öffnet in manchen Betrachtern auf nichts herangezoomt.
Diese sechs Grenzwerte sind auch die schnellste Kontrolle überhaupt. Die JSON-Datei öffnen, min und max am Positionszugriff ablesen, und schon steht die Bounding Box in den Einheiten der Quelle da, ohne dass irgendetwas geladen werden muss. Ist das Modell tausendmal größer oder kleiner als erwartet, oder liegt es weit vom Ursprung entfernt, zeigt sich das genau hier.
Diese Umwandlung erzeugt eine einzelne, in sich geschlossene Datei, weil eine Umwandlung einen Download ergibt und eine .gltf-Datei mit separater .bin-Datei daneben zwei wären. Die Vertexdaten werden deshalb als Base64 in eine Data-URI im Puffer kodiert, und Base64 kostet vier Zeichen für je drei Byte — rund dreiunddreißig Prozent mehr — zusätzlich zum eingerückten JSON.
Für eine Datei, die in einem Editor geöffnet wird, ist das ein fairer Preis. Für eine Datei, die eine Besucherin herunterlädt, ist es das nicht — die GLB-Umwandlung liefert dieselbe Geometrie als eine einzelne Binärdatei ohne diesen Kodierungsaufschlag. glTF eignet sich zum Lesen der Zugriffe, zum Validieren des Dokuments oder zur Weitergabe an `gltf-transform`; GLB gehört auf die Webseite.
Manche Quellformate hier werden beim Einlesen verschweißt — eine STL-Datei speichert drei unverbundene Vertices je Dreieck und würde ohne diesen Schritt eine viermal größere Datei ergeben als nötig. Eine PLY-Datei speichert bereits eine indizierte Vertexliste, Positionen und Flächen werden deshalb unverändert übernommen.
Die Vertexzahl im glTF stimmt damit exakt mit der Zahl im PLY-Kopfbereich überein, was die Umwandlung leicht überprüfbar macht. Das bedeutet auch, dass etwaige Duplikate aus dem Scanner oder der Rekonstruktion unverändert erhalten bleiben. Flächen mit mehr als drei Ecken werden fächerförmig trianguliert, was für die konvexen Vierecke aus einer Rekonstruktion korrekt ist und bei einem konkaven Vieleck aus einer Modellierungssoftware zu Fehlern führen kann.
Eine PLY-Datei kennt keine Einheit und keine Ausrichtung. glTF kennt ebenfalls keine Einheit, obwohl sein gesamtes Ökosystem stillschweigend einen Meter als Einheit voraussetzt und jeder Betrachter Y-oben erwartet. Scansoftware ist dabei nicht einheitlich — Millimeter kommen häufig vor, Z-oben ebenfalls, und manche Programme zentrieren das Modell, während andere es dort belassen, wo der Scan zufällig stattfand.
Nach dem Laden ist deshalb mit Drehen und Skalieren zu rechnen, am besten in der Szene des Betrachters und nicht durch Bearbeiten der Datei — das hält die Quelle unverändert. In `<model-viewer>` erledigen ein `orientation`-Attribut und ein `scale`-Attribut das in zwei Zeilen; in three.js sind es zwei Aufrufe am geladenen Objekt. Die Werte einmal an einem in der Quelle nachprüfbaren Maß bestimmen und notieren — jeder weitere Scan desselben Geräts braucht dasselbe Paar.
Weil das glTF kein Material trägt, kommt alles, was Besucherinnen und Besucher sehen, aus der Beleuchtung des Betrachters. Flaches Grau unter einem einzelnen Licht wirkt wie ein Klumpen; dasselbe Mesh unter einer Umgebungskarte mit etwas Ambient Occlusion wirkt wie ein plastisches Objekt — der Unterschied liegt vollständig in der Seite, nicht in der Datei.
`<model-viewer>` bringt neutrale Umgebungsbeleuchtung mit, und ein `shadow-intensity`-Attribut kostet eine Zeile und erledigt den Großteil der Arbeit. In three.js entspricht das einer Umgebungskarte plus einem Hemisphere-Licht. Weil das umgewandelte Mesh keine Vertexnormalen trägt, berechnet der Betrachter sie selbst, was bei einem vereinfachten Scan eine facettierte Schattierung ergibt — meist erwünscht, weil sie die Oberfläche zeigt, aber in der Beleuchtungseinstellung des Betrachters lässt sich auch weiche Schattierung erzwingen.
In genau diesem Browser-Tab, mit gewöhnlichem JavaScript. Es wird kein WebAssembly-Modul geladen, nichts hochgeladen, es gibt kein Konto und kein Tageskontingent. Die Netzwerkansicht der Entwicklertools während einer Umwandlung zeigt das eher als dieser Satz.
Scans sind eine besonders sensible Kategorie von Daten. Der Scan eines Museumsobjekts liegt häufig unter einer Vereinbarung darüber, wohin die Daten gelangen dürfen, der Scan einer Person ist in fast jeder Hinsicht ein biometrisches Merkmal, und der Scan eines Bauteils ist fremdes geistiges Eigentum. Die kostenlose Grenze liegt bei 100 MB je Datei — ein Grund mehr, vor der Umwandlung zu vereinfachen statt danach.
| PLY | GLTF | |
|---|---|---|
| Vollständiger Name | Polygon File Format | GL Transmission Format |
| Dateiendung | .ply | .gltf |
| Medientyp | model/ply | model/gltf+json |
| Erstmals veröffentlicht | 1994 | 2015 |
| Herausgegeben von | Stanford University | Khronos Group |
| Spezifikation | — | glTF 2.0 |
| Lizenzlage | Offener Standard | Offener Standard |
| Heutiger Stand | Aktuell | Aktuell |
| Öffnet im Browser | Kein Browser | Kein Browser |
| Stattdessen erwogen | OBJ, STL | GLB, OBJ |
Blender liest sowohl PLY als auch GLTF — du kannst das Ergebnis also gegen das Original prüfen, ohne ein zweites Programm zu brauchen.
Die beiden zielen auf verschiedene Arbeit: PLY auf das Scannen und den Austausch zwischen Programmen, GLTF auf das Web und die Weitergabe fertiger Dateien. Das lohnt sich vorher abzuwägen — der Grund, aus dem es das eine gibt, ist meist der Grund, aus dem das andere unpraktisch ist.
GLTF kommt von Khronos Group und stammt aus 2015, festgehalten in glTF 2.0. Blender, three.js und Babylon.js lesen das Format.
PLY wurde 1994 veröffentlicht, GLTF 2015. Das ältere ist in der Regel die sicherere Datei zum Weitergeben, das jüngere erledigt dieselbe Aufgabe mit weniger Bytes.
Nein. Diese Umwandlung läuft vollständig in deinem Browser, die Datei verlässt dein Gerät also nicht. Du kannst das selbst nachprüfen: Öffne den Netzwerk-Tab der Entwicklerwerkzeuge und wandle etwas um. Zu sehen sind die Seite selbst und die Statistik- und Werbeanfragen, mit denen dieser Dienst bezahlt wird — und keine einzige, die deine Datei trägt.
Ja. Kein Konto, kein Wasserzeichen und kein Tageskontingent, das sich verbraucht — es läuft auf deinem eigenen Rechner, du darfst also so oft wiederkommen, wie du willst. Dateien bis 100 MB verarbeitet der Browser, 100 auf einmal.
PLY und GLTF beschreiben Inhalte auf grundverschiedene Weise. Die Umwandlung ist deshalb ein Nachbau und keine Kopie: originalgetreu, aber nicht Byte für Byte dasselbe. Nur die Geometrie. Materialien, Farben, Texturen und Animation kommen nicht mit, und ein mehrfach platziertes Modell kommt so zurück, dass jede Kopie fest an ihrer eigenen Position sitzt.
Für die Umwandlung selbst nicht — sie läuft in dem Browser, den du ohnehin offen hast. Zum Öffnen brauchst du danach das Programm, das auf deinem Gerät üblicherweise GL Transmission Format anzeigt.