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.
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.
- 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.
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.GetNamedAttribute
i zamień jego zawartość naSpan<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
PointAttribute
doDracoMesh
. - Dodaj indeksy trójkątów.
- Utwórz obiekt
DracoEncodeOptions
z 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