1. Home
  2.   Drako
  3.   Formato de archivo.Drako para .NET
FileFormat.Drako para .NET

Formato de archivo.Drako para .NET

 
 

Simplifique el proceso de lectura y escritura de archivos Google Draco utilizando la API de .NET

Edite fácilmente archivos DRC comprimidos con FileFormat.Drako, una API de .NET liviana y de código abierto, que simplifica la conversión y automatización de archivos Draco

FileFormat.Drako para .NET revoluciona su experiencia de procesamiento de archivos Draco. En esta guía completa, profundizamos en las funcionalidades y beneficios de aprovechar FileFormat.Drako, una API .NET liviana de código abierto, para manejar archivos Draco con facilidad y sin esfuerzo.

Draco es una biblioteca de compresión de código abierto desarrollada por Google que se especializa en comprimir y descomprimir mallas geométricas 3D y nubes de puntos. Al reducir significativamente el tamaño de los archivos de gráficos 3D, Draco permite una transmisión más rápida y reduce los requisitos de almacenamiento manteniendo la calidad visual. Admite varias aplicaciones 3D, incluidas plataformas móviles y basadas en web, lo que garantiza un manejo eficiente de datos 3D complejos. Draco se utiliza ampliamente en industrias como la de juegos, realidad virtual y visualización 3D para optimizar el rendimiento y mejorar la experiencia del usuario.

FileFormat.Drako surge como una poderosa solución para leer y escribir archivos Draco sin problemas. Esta API .NET liviana de código abierto simplifica las operaciones de imágenes de Draco y ofrece a los desarrolladores y usuarios una interfaz fácil de usar para manejar archivos de Draco sin esfuerzo.

FileFormat.Drako está disponible en Openize License.< /p>

Características y beneficios clave

  • Altos índices de compresión: Draco logra una reducción significativa en el tamaño de los archivos, a menudo reduciéndolos hasta en un 90% sin una pérdida notable en la calidad visual. Esto lo hace ideal para aplicaciones donde el ancho de banda y el almacenamiento son limitados.
  • Compatibilidad con varios tipos de datos: Draco admite la compresión para una amplia gama de tipos de datos 3D, incluidas mallas geométricas y nubes de puntos. Puede manejar posiciones de vértices, colores, normales y otros atributos de manera eficiente.
  • Compresión y descompresión rápidas: la biblioteca está diseñada para ofrecer compresión y descompresión de alta velocidad, lo que la hace adecuada para aplicaciones en tiempo real, como visores 3D basados ​​en web y experiencias de realidad virtual. li>
  • Código abierto y gratuito: disfrute de los beneficios de una solución de código abierto sin tarifas de licencia, haciéndola accesible para desarrolladores y usuarios de todos los niveles.
  • Integración perfecta con aplicaciones C#: IntegreFileFormat.Drako sin esfuerzo en sus aplicaciones C#, lo que permite una gestión perfecta de archivos Draco dentro de sus flujos de trabajo existentes.

Previous Next

Cómo empezar con FileFormat.Drako para .NET

Comenzar a utilizar FileFormat.Drako es rápido y fácil. Simplemente sigue estos pasos:

  • InstallFileFormat.Drako: instale el paquete FileFormat.Drako a través del Administrador de paquetes NuGet o .NET CLI.
  • Integre con su proyecto: haga referencia a la biblioteca FileFormat.Drako en su proyecto C#.
  • Comience a convertir: utilice la API simple proporcionada por FileFormat.Drako para leer y escribir archivos Draco.

La forma recomendada de instalar FileFormat.Drako para .NET es utilizar NuGet. Utilice el siguiente comando para una instalación sin problemas.

InstallFileFormat.Drako para .NET mediante NuGet

NuGet> Install-PackageFileFormat.Drako 
También puedes descargarlo directamente desde GitHub.

Leer el archivo Draco en DracoMesh en C#

Este fragmento de código carga eficientemente un archivo Draco y lo almacena en una instancia de DracoMesh para operaciones posteriores.

  • Abra el archivo DRC llamado "cube.drc" usando File.ReadAllBytes.
  • Cargue la malla 3D de los bytes en un objeto DracoMesh.

Copie y pegue el siguiente fragmento de código en su archivo principal y ejecute el programa.

Leer el archivo .drc en la instancia de DracoMesh

 
    byte[] cube = File.ReadAllBytes("cube.drc");
    DracoMesh dm = (DracoMesh)Draco.Decode(cube);

Leer el archivo Draco y escribir en Wavefront OBJ en C#

El siguiente código ilustra cómo abrir un archivo Draco 3D existente y escribirlo en formato obj para su posterior procesamiento:

  • Abra el archivo Draco llamado "input.drc" usando File.ReadAllBytes.
  • Cargue la malla Draco desde los bytes en un objeto DracoMesh.
  • Encuentre el atributo de posición usando DracoMesh.GetNamedAttributey convierta su contenido en Span<float>.
  • Escribir puntos de control en la salida usando el formato OBJ.
  • Lea las esquinas de cada cara usando DracoMesh.ReadFace
  • Asigne las esquinas de la cara al índice de puntos de control usando PointAttribute.MappedIndex.
  • Escribe caras en la salida usando el formato OBJ.

Copie y pegue el siguiente fragmento de código en su archivo principal y ejecute el programa.

Leer el archivo .drc en DracoMesh y exportarlo a 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());

Codificar puntos de control y triángulos en un archivo Draco de forma programática en C#

El código proporcionado demuestra cómo crear mediante programación un archivo Draco a partir de puntos de control y triángulos, y guardarlo como "output.drc" usando C#. Aquí hay un desglose de los pasos:

  • Crea una instancia de DracoMesh.
  • Ajustar puntos de control a PointAttribute.
  • Agregue el PointAttributea DracoMesh.
  • Agregue los índices del triángulo.
  • Cree un objeto DracoEncodeOptionscon los parámetros de codificación especificados.
  • Codifique la malla en bytes usando Draco.Encode.

Copie y pegue el siguiente fragmento de código en su archivo principal y ejecute el programa.

Codificar vectores y caras en un archivo .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 ofrece una API intuitiva, compatibilidad integral con formatos e integración perfecta con aplicaciones C#, lo que permite a los desarrolladores y usuarios administrar archivos Draco sin esfuerzo. Ya sea que esté convirtiendo archivos draco en otros archivos o cargando draco para renderizar, FileFormat.Drako simplifica el proceso y garantiza una eficiencia y calidad óptimas en cada paso.

Explore nuestro repositorio de GitHub para contribuir, sugerir mejoras y mejorar esta API de código abierto: FileFormat.Drako -para-.NET

 Español