1. Home
  2.   Drako
  3.   FileFormat.Drako für .NET
FileFormat.Drako für .NET

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.

Previous Next

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.GetNamedAttributeund wandeln Sie seinen Inhalt in Span<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.MappedIndexdem 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 PointAttributeumschließen.
  • Fügen Sie das PointAttributezu DracoMeshhinzu.
  • Fügen Sie die Dreiecksindizes hinzu.
  • Erstellen Sie ein DracoEncodeOptions-Objekt mit den angegebenen Codierungsparametern.
  • Kodieren Sie das Netz mit Draco.Encodein 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

 Deutsch