FileFormat.Drako für Java
Vereinfachen Sie den Prozess des Lesens und Schreibens von Google Draco-Dateien mit der Java-API
Bearbeiten Sie komprimierte DRC-Dateien mühelos mit FileFormat.Drako, einer leichten Open-Source-Java-API, die die Konvertierung und Automatisierung von Draco-Dateien optimiert
FileFormat.Drako für Java revolutioniert Ihr Draco-Dateiverarbeitungserlebnis. In diesem umfassenden Leitfaden befassen wir uns mit den Funktionen und Vorteilen der Nutzung von FileFormat.Drako, einer leichten Open-Source-Java-API, um Draco-Dateien mühelos zu verarbeiten.
Draco ist eine von Google entwickelte Open-Source-Komprimierungsbibliothek, die auf die Komprimierung und Dekomprimierung von 3D-geometrischen Netzen und Punktwolken spezialisiert ist. Durch die deutliche Reduzierung der Größe von 3D-Grafikdateien ermöglicht Draco eine schnellere Übertragung und reduziert den Speicherbedarf bei gleichzeitiger Beibehaltung der visuellen Qualität. Es unterstützt verschiedene 3D-Anwendungen, einschließlich webbasierter und mobiler Plattformen, und gewährleistet so eine effiziente Handhabung komplexer 3D-Daten. Draco wird häufig in Branchen wie Gaming, Virtual Reality und 3D-Visualisierung eingesetzt, um die Leistung zu optimieren und das Benutzererlebnis zu verbessern.
FileFormat.Drako erweist sich als leistungsstarke Lösung zum nahtlosen Lesen und Schreiben von Draco-Dateien. Diese leichte Open-Source-Java-API vereinfacht Draco-Bildoperationen und bietet Entwicklern und Benutzern eine benutzerfreundliche Oberfläche für die mühelose Handhabung von Draco-Dateien.
FileFormat.Drako ist unter der Openize-Lizenz verfügbar.
Hauptfunktionen und Vorteile- Hohe Komprimierungsraten: Draco erreicht eine erhebliche Reduzierung der Dateigrößen, oft um bis zu 90 % ohne merklichen Verlust an visueller Qualität. Dies macht es ideal für Anwendungen, bei denen Bandbreite und Speicher begrenzt sind.
- Unterstützung für verschiedene Datentypen: Draco unterstützt die Komprimierung für eine Vielzahl von 3D-Datentypen, einschließlich Geometrienetzen und Punktwolken. Es kann Scheitelpunktpositionen, Farben, Normalen und andere Attribute effizient verarbeiten.
- Schnelle Komprimierung und Dekomprimierung: Die Bibliothek ist für eine schnelle Komprimierung und Dekomprimierung konzipiert und eignet sich daher für Echtzeitanwendungen wie webbasierte 3D-Viewer und Virtual-Reality-Erlebnisse.
- Open Source und kostenlos: Genießen Sie die Vorteile einer Open-Source-Lösung ohne Lizenzgebühren und machen Sie sie für Entwickler und Benutzer aller Ebenen zugänglich.
- Nahtlose Integration mit Java-Anwendungen: Integrieren Sie FileFormat.Drako mühelos in Ihre Java-Anwendungen und ermöglichen Sie so eine nahtlose Draco-Dateiverarbeitung innerhalb Ihrer bestehenden Arbeitsabläufe.
- Hohe Komprimierungsraten: Draco erreicht eine erhebliche Reduzierung der Dateigrößen, oft um bis zu 90 % ohne merklichen Verlust an visueller Qualität. Dies macht es ideal für Anwendungen, bei denen Bandbreite und Speicher begrenzt sind.
- Unterstützung für verschiedene Datentypen: Draco unterstützt die Komprimierung für eine Vielzahl von 3D-Datentypen, einschließlich Geometrienetzen und Punktwolken. Es kann Scheitelpunktpositionen, Farben, Normalen und andere Attribute effizient verarbeiten.
- Schnelle Komprimierung und Dekomprimierung: Die Bibliothek ist für eine schnelle Komprimierung und Dekomprimierung konzipiert und eignet sich daher für Echtzeitanwendungen wie webbasierte 3D-Viewer und Virtual-Reality-Erlebnisse.
- Open Source und kostenlos: Genießen Sie die Vorteile einer Open-Source-Lösung ohne Lizenzgebühren und machen Sie sie für Entwickler und Benutzer aller Ebenen zugänglich.
- Nahtlose Integration mit Java-Anwendungen: Integrieren Sie FileFormat.Drako mühelos in Ihre Java-Anwendungen und ermöglichen Sie so eine nahtlose Draco-Dateiverarbeitung innerhalb Ihrer bestehenden Arbeitsabläufe.
Erste Schritte mit FileFormat.Drako für Java
Der Einstieg in FileFormat.Drako ist schnell und einfach. Befolgen Sie einfach diese Schritte:
- InstallFileFormat.Drako: Installieren Sie das FileFormat.Drako-Paket über Maven oder Gradle.
- Konvertierung starten: Nutzen Sie die einfache API von FileFormat.Drako, um Draco-Dateien zu lesen und zu schreiben.
Die empfohlene Methode zur Installation von FileFormat.Drako für Java ist die Verwendung von Maven. Bitte verwenden Sie für eine reibungslose Installation das folgende POM-Abhängigkeits-Snippet.
POM-Snippet
<dependency>
<groupId>org.openize</groupId>
<artifactId>drako</artifactId>
<version>1.4.0</version>
</dependency>
Sie können es auch direkt von GitHub herunterladen.Draco-Datei in DracoMesh in Java einlesen
Dieses Code-Snippet lädt effizient eine Draco-Datei und speichert sie für nachfolgende Vorgänge in einer DracoMesh-Instanz.
- Öffnen Sie die DRC-Datei mit dem Namen „cube.drc“ mit
Files.readAllBytes
. - Laden Sie das 3D-Netz aus den Bytes in ein
DracoMesh
-Objekt.
Kopieren Sie den folgenden Codeausschnitt, fügen Sie ihn in Ihre Hauptdatei ein und führen Sie das Programm aus.
DRC-Datei in DracoMesh-Instanz lesen
byte[] cube = Files.readAllBytes(Paths.get("cube.drc"));
DracoMesh dm = (DracoMesh)Draco.decode(cube);
Draco-Datei lesen und in Wavefront OBJ in Java schreiben
Der folgende Code veranschaulicht, wie eine vorhandene 3D-Draco-Datei geöffnet und zur weiteren Verarbeitung in das OBJ-Format geschrieben wird:
- Öffnen Sie die Draco-Datei mit dem Namen „input.drc“ mit
Files.readAllBytes
. - Laden Sie das Draco-Mesh aus den Bytes in ein
DracoMesh
-Objekt. - Suchen Sie das Positionsattribut mit
DracoMesh.getNamedAttribute
und wandeln Sie seinen Inhalt inFloatSpan
um. - Schreiben Sie Kontrollpunkte im OBJ-Format in die Ausgabe.
- Lesen Sie die Ecken jeder Fläche mit
DracoMesh.readFace
- Ordnen Sie die Gesichtsecken mit
PointAttribute.mappedIndex
dem Index der Kontrollpunkte zu. - Schreiben Sie Gesichter im OBJ-Format in die Ausgabe.
Kopieren Sie den folgenden Codeausschnitt, fügen Sie ihn in Ihre Hauptdatei ein und führen Sie das Programm aus.
DRC-Datei in DracoMesh lesen und in Wavefront-Objekt exportieren
//load draco file
byte[] bytes = Files.readAllBytes(Paths.get("input.drc"));
DracoMesh mesh = (DracoMesh)Draco.decode(bytes);
if (mesh == null)
throw new IllegalStateException("Input file is not a valid draco file.");
PointAttribute attrPos = mesh.getNamedAttribute(AttributeType.POSITION);
FloatSpan points = attrPos.getBuffer().asSpan().asFloatSpan();
try(FileOutputStream fos = new FileOutputStream("output.obj", false)) {
try (OutputStreamWriter writer = new OutputStreamWriter(fos)) {
for (int i = 0; i < points.size(); i += 3) {
writer.write(String.format("v %f %f %f\n", points.get(i), points.get(i + 1), points.get(i + 2)));
}
int[] face = new int[3];
for (int i = 0; i < mesh.getNumFaces(); i++) {
mesh.readFace(i, face);
int a = attrPos.mappedIndex(face[0]) + 1;
int b = attrPos.mappedIndex(face[1]) + 1;
int c = attrPos.mappedIndex(face[2]) + 1;
writer.write(String.format("f %d %d %d\n", a, b, c));
}
}
}
Kontrollpunkte und Dreiecke programmgesteuert in Java in eine Draco-Datei kodieren
Der bereitgestellte Code zeigt, wie man programmgesteuert eine Draco-Datei aus Kontrollpunkten und Dreiecken erstellt und diese mit Java als „output.drc“ speichert. Hier ist eine Aufschlüsselung der Schritte:
- Erstellen Sie eine
DracoMesh
-Instanz. - Kontrollpunkte in
PointAttribute
umschließen. - Fügen Sie das
PointAttribute
zuDracoMesh
hinzu. - Fügen Sie die Dreiecksindizes hinzu.
- Erstellen Sie ein
DracoEncodeOptions
-Objekt mit den angegebenen Codierungsparametern. - Kodieren Sie das Netz mit
Draco.encode
in Bytes.
Kopieren Sie den folgenden Codeausschnitt, fügen Sie ihn in Ihre Hauptdatei ein und führen Sie das Programm aus.
Vektoren und Flächen in eine .drc-Datei kodieren
Vector3[] controlPoints = new Vector3[]
{
new Vector3( -5, 0, 5.0f),
new Vector3( 5, 0, 5.0f),
new Vector3( 5, 10, 5.0f),
new Vector3( -5, 10, 5.0f),
new Vector3( -5, 0, -5.0f),
new Vector3( 5, 0, -5.0f),
new Vector3( 5, 10, -5.0f),
new Vector3( -5, 10, -5.0f)
};
int[] indices = new int[]
{
0,1,2, 0, 2, 3, // Front face (Z+)
1,5,6, 1, 6, 2, // Right side (X+)
5,4,7, 5, 7, 6, // Back face (Z-)
4,0,3, 4, 3, 7, // Left side (X-)
0,4,5, 0, 5, 1, // Bottom face (Y-)
3,2,6, 3, 6, 7 // Top face (Y+)
};
DracoMesh mesh = new DracoMesh();
PointAttribute attrPos = PointAttribute.wrap(AttributeType.POSITION, controlPoints);
mesh.addAttribute(attrPos);
//add triangle indices
mesh.getIndices().addRange(indices);
//number of the control points, it's required for the encoder to produce correct result.
mesh.setNumPoints(8);
//You can also use following methods to deduplicate the attributes to reduce the file size
//mesh.deduplicateAttributeValues();
//mesh.deduplicatePointIds();
DracoEncodeOptions opt = new DracoEncodeOptions();
byte[] drcBytes = Draco.encode(mesh, opt);
Files.write(Paths.get("output.drc"), drcBytes);
FileFormat.Drako bietet eine intuitive API, umfassende Formatunterstützung und nahtlose Integration mit Java-Anwendungen und ermöglicht Entwicklern und Benutzern gleichermaßen die mühelose Verwaltung von Draco-Dateien. Egal, ob Sie Draco-Dateien in andere Dateien konvertieren oder Draco zum Rendern laden, FileFormat.Drako vereinfacht den Prozess und sorgt bei jedem Schritt für optimale Effizienz und Qualität.
Erkunden Sie unser GitHub-Repository, um Beiträge zu leisten, Verbesserungen vorzuschlagen und diese Open-Source-API zu verbessern: FileFormat.Drako- für Java