1. Home
  2.   Drako
  3.   FileFormat.Drako dla .NET
FileFormat.Drako dla .NET

FileFormat.Drako dla .NET

 
 

Uprość proces odczytu i zapisu plików Google Draco za pomocą API .NET

Łatwo edytuj skompresowane pliki DRC za pomocą FileFormat.Drako, lekkiego API .NET typu open-source, które upraszcza konwersję i automatyzację plików Draco

FileFormat.Drako dla .NET rewolucjonizuje przetwarzanie plików Draco. W tym obszernym przewodniku szczegółowo omawiamy funkcje i zalety wykorzystaniaFileFormat.Drako, lekkiego interfejsu API .NET typu open source, umożliwiającego bezproblemową i łatwą obsługę plików Draco.

Draco to biblioteka kompresji typu open source opracowana przez Google, która specjalizuje się w kompresji i dekompresji siatek geometrycznych 3D i chmur punktów. Znacząco zmniejszając rozmiar plików grafiki 3D, Draco umożliwia szybszą transmisję i zmniejsza wymagania dotyczące pamięci masowej, zachowując jednocześnie jakość wizualną. Obsługuje różne aplikacje 3D, w tym platformy internetowe i mobilne, zapewniając wydajną obsługę złożonych danych 3D. Draco jest szeroko stosowany w branżach takich jak gry, rzeczywistość wirtualna i wizualizacja 3D w celu optymalizacji wydajności i poprawy komfortu użytkownika.

FileFormat.Drako jawi się jako potężne rozwiązanie do płynnego odczytu i zapisu plików Draco. Ten lekki interfejs API .NET typu open source upraszcza operacje na obrazach Draco, oferując programistom i użytkownikom przyjazny interfejs do łatwej obsługi plików Draco.

FileFormat.Drako jest dostępny na podstawie Licencji Openize.< /p>

Kluczowe funkcje i zalety

  • Wysokie współczynniki kompresji: Draco osiąga znaczną redukcję rozmiarów plików, często zmniejszając je nawet o 90% bez zauważalnej utraty jakości wizualnej. Dzięki temu idealnie nadaje się do zastosowań, w których przepustowość i pamięć są ograniczone.
  • Obsługa różnych typów danych: Draco obsługuje kompresję szerokiego zakresu typów danych 3D, w tym siatek geometrycznych i chmur punktów. Potrafi skutecznie obsługiwać pozycje wierzchołków, kolory, normalne i inne atrybuty.
  • Szybka kompresja i dekompresja: biblioteka została zaprojektowana tak, aby oferować szybką kompresję i dekompresję, dzięki czemu nadaje się do zastosowań w czasie rzeczywistym, takich jak internetowe przeglądarki 3D i doświadczenia w rzeczywistości wirtualnej.
  • Otwarte i bezpłatne: ciesz się korzyściami z rozwiązania typu open source bez opłat licencyjnych, dzięki czemu będzie ono dostępne dla programistów i użytkowników na wszystkich poziomach.
  • Bezproblemowa integracja z aplikacjami C#: Zintegruj FileFormat.Drako bez wysiłku z aplikacjami C#, umożliwiając bezproblemową obsługę plików Draco w ramach istniejących przepływów pracy.

Previous Next

Jak rozpocząć korzystanie zFileFormat.Drako dla .NET

Rozpoczęcie korzystania z FileFormat.Drako jest szybkie i łatwe. Po prostu wykonaj następujące kroki:

  • InstallFileFormat.Drako: zainstaluj pakietFileFormat.Drako za pomocą Menedżera pakietów NuGet lub interfejsu wiersza polecenia .NET.
  • Integracja ze swoim projektem: odwołaj się do biblioteki FileFormat.Drako w swoim projekcie C#.
  • Rozpocznij konwersję: wykorzystaj prosty interfejs API udostępniany przezFileFormat.Drako do odczytu i zapisu plików Draco.

Zalecany sposób instalacjiFileFormat.Drako dla .NET polega na użyciu NuGet. Aby instalacja przebiegła bezproblemowo, użyj poniższego polecenia.

InstallFileFormat.Drako dla .NET poprzez NuGet

NuGet> Install-PackageFileFormat.Drako 
Możesz go także pobrać bezpośrednio z GitHub.

Wczytaj plik Draco do DracoMesh w C#

Ten fragment kodu skutecznie ładuje plik Draco i przechowuje go w instancji DracoMesh do późniejszych operacji.

  • Otwórz plik DRC o nazwie „cube.drc” za pomocą File.ReadAllBytes.
  • Załaduj siatkę 3D z bajtów do obiektu DracoMesh.

Skopiuj i wklej poniższy fragment kodu do głównego pliku i uruchom program.

Odczytaj plik .drc do instancji DracoMesh

 
    byte[] cube = File.ReadAllBytes("cube.drc");
    DracoMesh dm = (DracoMesh)Draco.Decode(cube);

Odczytaj plik Draco i zapisz do Wavefront OBJ w języku C#

Poniższy kod ilustruje, jak otworzyć istniejący plik 3D Draco i zapisać go w formacie obj w celu dalszego przetwarzania:

  • Otwórz plik Draco o nazwie „input.drc” za pomocą File.ReadAllBytes.
  • Załaduj siatkę Draco z bajtów do obiektu DracoMesh.
  • Znajdź atrybut pozycji za pomocą DracoMesh.GetNamedAttributei zamień jego zawartość na Span<float>.
  • Zapisz punkty kontrolne na wyjściu, używając formatu OBJ.
  • Odczytaj rogi każdej ściany za pomocą DracoMesh.ReadFace
  • Zamapuj rogi ścian na indeks punktów kontrolnych za pomocą PointAttribute.MappedIndex.
  • Zapisz twarze na wyjściu, używając formatu OBJ.

Skopiuj i wklej poniższy fragment kodu do głównego pliku i uruchom program.

Odczytaj plik .drc do DracoMesh i wyeksportuj do obiektu Wavefront

 
    //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());

Zakoduj punkty kontrolne, trójkąty do pliku Draco Programowo w C#

Dostarczony kod demonstruje, jak programowo utworzyć plik Draco z punktów kontrolnych i trójkątów i zapisać go jako „output.drc” przy użyciu języka C#. Oto opis poszczególnych kroków:

  • Utwórz instancję DracoMesh.
  • Zawijaj punkty kontrolne do PointAttribute.
  • Dodaj PointAttributedo DracoMesh.
  • Dodaj indeksy trójkątów.
  • Utwórz obiekt DracoEncodeOptionsz określonymi parametrami kodowania.
  • Zakoduj siatkę w bajtach za pomocą Draco.Encode.

Skopiuj i wklej poniższy fragment kodu do głównego pliku i uruchom program.

Zakoduj wektory i twarze do pliku .drc

 
  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 oferuje intuicyjny interfejs API, kompleksową obsługę formatów i bezproblemową integrację z aplikacjami C#, umożliwiając programistom i użytkownikom łatwe zarządzanie plikami Draco. Niezależnie od tego, czy konwertujesz pliki Draco na inne pliki, czy ładujesz Draco do renderowania, FileFormat.Drako upraszcza proces, zapewniając optymalną wydajność i jakość na każdym kroku.

Przejrzyj nasze repozytorium GitHub, aby wnieść swój wkład, zasugerować ulepszenia i ulepszyć interfejs API Open Source: FileFormat.Drako -for-.NET

 Polish