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.
- 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.
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.GetNamedAttribute
y convierta su contenido enSpan<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
PointAttribute
aDracoMesh
. - Agregue los índices del triángulo.
- Cree un objeto
DracoEncodeOptions
con 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