FileFormat.Drako dla Javy
Uprość proces odczytu i zapisu plików Google Draco za pomocą API Java
Łatwo edytuj skompresowane pliki DRC za pomocą FileFormat.Drako, lekkiego API Java typu open-source, które upraszcza konwersję i automatyzację plików Draco
FileFormat.Drako dla Java rewolucjonizuje przetwarzanie plików Draco. W tym obszernym przewodniku szczegółowo omawiamy funkcje i zalety wykorzystaniaFileFormat.Drako, lekkiego interfejsu API Java 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 Java 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 MIT.. 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 Java: Zintegruj plikFileFormat.Drako bez wysiłku z aplikacjami Java, 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 Java: Zintegruj plikFileFormat.Drako bez wysiłku z aplikacjami Java, umożliwiając bezproblemową obsługę plików Draco w ramach istniejących przepływów pracy.
Jak rozpocząć pracę z FileFormat.Drako dla Java
Rozpoczęcie korzystania z FileFormat.Drako jest szybkie i łatwe. Po prostu wykonaj następujące kroki:
- InstallFileFormat.Drako: zainstaluj pakietFileFormat.Drako za pośrednictwem Mavena lub Gradle.
- Rozpocznij konwersję: wykorzystaj prosty interfejs API udostępniany przezFileFormat.Drako do odczytu i zapisu plików Draco.
Zalecany sposób instalacjiFileFormat.Drako dla Java polega na użyciu mavena. Aby instalacja przebiegła bezproblemowo, użyj poniższego fragmentu zależności pom.
Fragment POM
<dependency>
<groupId>dev.fileformat</groupId>
<artifactId>drako</artifactId>
<version>1.4.1</version>
</dependency>
Możesz go także pobrać bezpośrednio z GitHub.Wczytaj plik Draco do DracoMesh w Javie
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ą
Files.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 = Files.readAllBytes(Paths.get("cube.drc"));
DracoMesh dm = (DracoMesh)Draco.decode(cube);
Odczytaj plik Draco i zapisz w Wavefront OBJ w Javie
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”, używając
Files.readAllBytes
. - Załaduj siatkę Draco z bajtów do obiektu
DracoMesh
. - Znajdź atrybut pozycji za pomocą
DracoMesh.getNamedAttribute
i zamień jego zawartość naFloatSpan
. - 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
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));
}
}
}
Zakoduj punkty kontrolne, trójkąty do pliku Draco Programowo w Javie
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 Java. 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+)
};
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 oferuje intuicyjny interfejs API, kompleksową obsługę formatów i bezproblemową integrację z aplikacjami Java, 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- dla-Java