1. Home
  2.   Drako
  3.   FileFormat.Drako pour Java
FileFormat.Drako pour Java

FileFormat.Drako pour Java

 
 

Simplifiez le processus de lecture et d'écriture des fichiers Google Draco à l'aide de l'API Java

Modifiez sans effort les fichiers DRC compressés avec FileFormat.Drako, une API Java légère et open-source, qui rationalise la conversion et l'automatisation des fichiers Draco

FileFormat.Drako pour Java révolutionne votre expérience de traitement de fichiers Draco. Dans ce guide complet, nous explorons les fonctionnalités et les avantages de l'utilisation de FileFormat.Drako, une API Java open source légère, pour gérer facilement les fichiers Draco.

Draco est une bibliothèque de compression open source développée par Google spécialisée dans la compression et la décompression de maillages géométriques 3D et de nuages ​​de points. En réduisant considérablement la taille des fichiers graphiques 3D, Draco permet une transmission plus rapide et réduit les besoins de stockage tout en conservant la qualité visuelle. Il prend en charge diverses applications 3D, notamment les plateformes Web et mobiles, garantissant une gestion efficace des données 3D complexes. Draco est largement utilisé dans des secteurs tels que les jeux, la réalité virtuelle et la visualisation 3D pour optimiser les performances et améliorer l'expérience utilisateur.

FileFormat.Drako apparaît comme une solution puissante pour lire et écrire de manière transparente des fichiers Draco. Cette API Java open source légère simplifie les opérations sur les images Draco, offrant aux développeurs et aux utilisateurs une interface conviviale pour gérer les fichiers Draco sans effort.

FileFormat.Drako est disponible sous MIT License.

Principales caractéristiques et avantages

  • Taux de compression élevés : Draco parvient à réduire considérablement la taille des fichiers, les réduisant souvent jusqu'à 90 % sans perte notable de la qualité visuelle. Cela le rend idéal pour les applications où la bande passante et le stockage sont limités.
  • Prise en charge de divers types de données : Draco prend en charge la compression d'un large éventail de types de données 3D, notamment les maillages géométriques et les nuages ​​de points. Il peut gérer efficacement les positions des sommets, les couleurs, les normales et d'autres attributs.
  • Compression et décompression rapides : la bibliothèque est conçue pour offrir une compression et une décompression à grande vitesse, ce qui la rend adaptée aux applications en temps réel telles que les visionneuses 3D sur le Web et les expériences de réalité virtuelle.
  • Open Source et gratuit : profitez des avantages d'une solution open source sans frais de licence, la rendant accessible aux développeurs et aux utilisateurs de tous niveaux.
  • Intégration transparente avec les applications Java : IntégrezFileFormat.Drako sans effort dans vos applications Java, permettant une gestion transparente des fichiers Draco dans vos flux de travail existants.

Previous Next

Comment démarrer avec FileFormat.Drako pour Java

Démarrer avec FileFormat.Drako est simple et rapide. Suivez simplement ces étapes :

  • InstallFileFormat.Drako : installez le package FileFormat.Drako via Maven ou Gradle.
  • Démarrer la conversion : utilisez l'API simple fournie par FileFormat.Drako pour lire et écrire des fichiers Draco.

La méthode recommandée pour installerFileFormat.Drako pour Java consiste à utiliser maven. Veuillez utiliser l'extrait de dépendance pom suivant pour une installation fluide.

Extrait POM


<dependency>
  <groupId>dev.fileformat</groupId>
  <artifactId>drako</artifactId>
  <version>1.4.1</version>
</dependency>
 
Vous pouvez également le télécharger directement depuis GitHub.

Lire le fichier Draco dans DracoMesh en Java

Cet extrait de code charge efficacement un fichier Draco et le stocke dans une instance DracoMesh pour les opérations ultérieures.

  • Ouvrez le fichier DRC nommé "cube.drc" à l'aide de Files.readAllBytes.
  • Chargez le maillage 3D à partir des octets dans un objet DracoMesh.

Copiez et collez l'extrait de code ci-dessous dans votre fichier principal et exécutez le programme.

Lire le fichier .drc dans l'instance DracoMesh

 
    byte[] cube = Files.readAllBytes(Paths.get("cube.drc"));
    DracoMesh dm = (DracoMesh)Draco.decode(cube);

Lire le fichier Draco et écrire dans Wavefront OBJ en Java

Le code suivant illustre comment ouvrir un fichier Draco 3D existant et l'écrire au format obj pour un traitement ultérieur :

  • Ouvrez le fichier Draco nommé "input.drc" en utilisant Files.readAllBytes.
  • Chargez le maillage Draco à partir des octets dans un objet DracoMesh.
  • Trouvez l'attribut de position à l'aide de DracoMesh.getNamedAttributeet transformez son contenu en FloatSpan.
  • Écrivez les points de contrôle à afficher au format OBJ.
  • Lisez chaque coin de visage à l'aide de DracoMesh.readFace
  • Mappez les coins des faces sur l'index des points de contrôle à l'aide de PointAttribute.mappedIndex.
  • Écrivez les visages à afficher au format OBJ.

Copiez et collez l'extrait de code ci-dessous dans votre fichier principal et exécutez le programme.

Lire le fichier .drc dans DracoMesh et l'exporter vers wavefront obj

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

Encoder les points de contrôle et les triangles dans le fichier Draco par programmation en Java

Le code fourni montre comment créer par programme un fichier Draco à partir de points de contrôle et de triangles, et l'enregistrer sous "output.drc" à l'aide de Java. Voici un aperçu des étapes :

  • Créez une instance DracoMesh.
  • Enrouler les points de contrôle dans PointAttribute.
  • Ajoutez le PointAttributeà DracoMesh.
  • Ajoutez les indices triangulaires.
  • Créez un objet DracoEncodeOptionsavec les paramètres d'encodage spécifiés.
  • Encodez le maillage en octets à l'aide de Draco.encode.

Copiez et collez l'extrait de code ci-dessous dans votre fichier principal et exécutez le programme.

Encoder les vecteurs et les faces dans un fichier .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 offre une API intuitive, une prise en charge complète des formats et une intégration transparente avec les applications Java, permettant aux développeurs et aux utilisateurs de gérer sans effort les fichiers Draco. Que vous convertissiez des fichiers Draco en d'autres fichiers ou que vous chargiez Draco pour le rendu, FileFormat.Drako simplifie le processus, garantissant une efficacité et une qualité optimales à chaque étape.

Explorez notre référentiel GitHub pour contribuer, suggérer des améliorations et améliorer cette API Open Source : FileFormat.Drako- pour-Java

 Français