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

FileFormat.Drako pour .NET

 
 

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

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

FileFormat.Drako pour .NET 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 .NET 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 .NET 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 Openize License.< /p>

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 C# : intégrez FileFormat.Drako sans effort dans vos applications C#, permettant une gestion transparente des fichiers Draco au sein de vos flux de travail existants.

Previous Next

Comment démarrer avec FileFormat.Drako pour .NET

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

  • InstallFileFormat.Drako : installez le package FileFormat.Drako via NuGet Package Manager ou .NET CLI.
  • Intégrez-vous à votre projet : référencez la bibliothèque FileFormat.Drako dans votre projet C#.
  • 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 installer FileFormat.Drako pour .NET consiste à utiliser NuGet. Veuillez utiliser la commande suivante pour une installation fluide.

InstallFileFormat.Drako pour .NET via NuGet

NuGet> Install-PackageFileFormat.Drako 
Vous pouvez également le télécharger directement depuis GitHub.

Lire le fichier Draco dans DracoMesh en C#

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 File.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 = File.ReadAllBytes("cube.drc");
    DracoMesh dm = (DracoMesh)Draco.Decode(cube);

Lire le fichier Draco et écrire dans Wavefront OBJ en C#

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 File.ReadAllBytes.
  • Chargez le maillage Draco à partir des octets dans un objet DracoMesh.
  • Recherchez l'attribut de position à l'aide de DracoMesh.GetNamedAttributeet transformez son contenu en Span<float>.
  • É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
    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());

Encoder les points de contrôle et les triangles dans le fichier Draco par programme en C#

Le code fourni montre comment créer par programmation un fichier Draco à partir de points de contrôle et de triangles, et l'enregistrer sous "output.drc" en utilisant C#. 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+)
  };

  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 offre une API intuitive, une prise en charge complète des formats et une intégration transparente avec les applications C#, 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-.NET

 Français