FileFormat.Drako für .NET
Vereinfachen Sie den Prozess des Lesens und Schreibens von Google Draco-Dateien mit der .NET-API
Bearbeiten Sie komprimierte DRC-Dateien mühelos mit FileFormat.Drako, einer leichten Open-Source .NET-API, die die Konvertierung und Automatisierung von Draco-Dateien optimiert
FileFormat.Drako für .NET 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-.NET-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-.NET-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.< /p>
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 C#-Anwendungen: Integrieren Sie FileFormat.Drako mühelos in Ihre C#-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 C#-Anwendungen: Integrieren Sie FileFormat.Drako mühelos in Ihre C#-Anwendungen und ermöglichen Sie so eine nahtlose Draco-Dateiverarbeitung innerhalb Ihrer bestehenden Arbeitsabläufe.
Erste Schritte mit FileFormat.Drako für .NET
Der Einstieg in FileFormat.Drako ist schnell und einfach. Befolgen Sie einfach diese Schritte:
- InstallFileFormat.Drako: Installieren Sie das FileFormat.Drako-Paket über NuGet Package Manager oder .NET CLI.
- In Ihr Projekt integrieren: Verweisen Sie auf die FileFormat.Drako-Bibliothek in Ihrem C#-Projekt.
- 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 .NET ist die Verwendung von NuGet. Für eine reibungslose Installation verwenden Sie bitte den folgenden Befehl.
InstallFileFormat.Drako für .NET über NuGet
NuGet> Install-PackageFileFormat.Drako
Sie können es auch direkt von GitHub herunterladen.Draco-Datei in DracoMesh in C# 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
File.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 = File.ReadAllBytes("cube.drc");
DracoMesh dm = (DracoMesh)Draco.Decode(cube);
Draco-Datei lesen und in Wavefront OBJ in C# 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
File.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 inSpan<float>
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
var bytes = File.ReadAllBytes("input.drc");
var mesh = Draco.Decode(bytes) as DracoMesh;
if (mesh == null)
throw new InvalidDataException("Input file is not a valid draco file.");
var attrPos = mesh.GetNamedAttribute(AttributeType.Position);
var points = MemoryMarshal.Cast(attrPos.Buffer.AsSpan());
var sb = new StringBuilder();
for (int i = 0; i < points.Length; i += 3)
{
sb.AppendLine($"v {points[i]} {points[i + 1]} {points[i + 2]}");
}
Span face = stackalloc int[3];
for (int i = 0; i < mesh.NumFaces; i++)
{
mesh.ReadFace(i, face);
var a = attrPos.MappedIndex(face[0]) + 1;
var b = attrPos.MappedIndex(face[1]) + 1;
var c = attrPos.MappedIndex(face[2]) + 1;
sb.AppendLine($"f {a} {b} {c}");
}
File.WriteAllText("output.obj", sb.ToString());
Kontrollpunkte und Dreiecke programmgesteuert in C# in eine Draco-Datei kodieren
Der bereitgestellte Code zeigt, wie man programmgesteuert eine Draco-Datei aus Kontrollpunkten und Dreiecken erstellt und diese mit C# 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+)
};
var mesh = new DracoMesh();
//construct an attribute for position, with type float[3],
var attrPos = PointAttribute.Wrap(AttributeType.Position, controlPoints);
mesh.AddAttribute(attrPos);
//add triangle indices
mesh.Indices.AddRange(indices);
//number of the control points, it's required for the encoder to produce correct result.
mesh.NumPoints = 8;
//You can also use following methods to deduplicate the attributes to reduce the file size
//mesh.DeduplicateAttributeValues();
//mesh.DeduplicatePointIds();
var opt = new DracoEncodeOptions();
var drcBytes = Draco.Encode(mesh, opt);
File.WriteAllBytes("output.drc", drcBytes);
FileFormat.Drako bietet eine intuitive API, umfassende Formatunterstützung und nahtlose Integration mit C#-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 -for-.NET