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.
- 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.
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.GetNamedAttribute
et transformez son contenu enSpan<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
DracoEncodeOptions
avec 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