1. Home
  2.   Drako
  3.   FileFormat.Drako dla Javy
FileFormat.Drako dla Java

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.

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 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.

Previous Next

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.getNamedAttributei zamień jego zawartość na FloatSpan.
  • 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 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+)
  };

  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

 Polish