FileFormat.Drako para .NET
Simplifique o processo de leitura e escrita de arquivos Google Draco usando a API .NET
Edite facilmente arquivos DRC compactados com FileFormat.Drako, uma API .NET leve e de código aberto, que simplifica a conversão e a automação de arquivos Draco
FileFormat.Drako for .NET revoluciona sua experiência de processamento de arquivos Draco. Neste guia abrangente, nos aprofundamos nas funcionalidades e nos benefícios de aproveitar o FileFormat.Drako, uma API .NET leve e de código aberto, para lidar com arquivos Draco sem esforço e com facilidade.
Draco é uma biblioteca de compactação de código aberto desenvolvida pelo Google especializada em compactar e descompactar malhas geométricas 3D e nuvens de pontos. Ao reduzir significativamente o tamanho dos arquivos gráficos 3D, o Draco permite uma transmissão mais rápida e reduz os requisitos de armazenamento, mantendo a qualidade visual. Ele oferece suporte a vários aplicativos 3D, incluindo plataformas móveis e baseadas na Web, garantindo o manuseio eficiente de dados 3D complexos. Draco é amplamente utilizado em setores como jogos, realidade virtual e visualização 3D para otimizar o desempenho e aprimorar a experiência do usuário.
FileFormat.Drako surge como uma solução poderosa para ler e gravar arquivos Draco perfeitamente. Essa API .NET leve e de código aberto simplifica as operações de imagem do Draco, oferecendo aos desenvolvedores e usuários uma interface amigável para lidar com arquivos Draco sem esforço.
FileFormat.Drako está disponível sob a Licença Openize.< /p>
Principais recursos e benefícios- Altas taxas de compactação: o Draco consegue uma redução significativa no tamanho dos arquivos, muitas vezes reduzindo-os em até 90% sem perda perceptível na qualidade visual. Isso o torna ideal para aplicações onde a largura de banda e o armazenamento são limitados.
- Suporte para vários tipos de dados: Draco suporta compactação para uma ampla variedade de tipos de dados 3D, incluindo malhas geométricas e nuvens de pontos. Ele pode lidar com posições de vértices, cores, normais e outros atributos de forma eficiente.
- Compactação e descompactação rápidas: a biblioteca foi projetada para oferecer compactação e descompactação de alta velocidade, tornando-a adequada para aplicativos em tempo real, como visualizadores 3D baseados na Web e experiências de realidade virtual.
- Código aberto e gratuito: Aproveite os benefícios de uma solução de código aberto sem taxas de licenciamento, tornando-a acessível a desenvolvedores e usuários de todos os níveis.
- Integração perfeita com aplicativos C#: IntegreFileFormat.Drako facilmente em seus aplicativos C#, permitindo a manipulação perfeita de arquivos Draco em seus fluxos de trabalho existentes.
- Altas taxas de compactação: o Draco consegue uma redução significativa no tamanho dos arquivos, muitas vezes reduzindo-os em até 90% sem perda perceptível na qualidade visual. Isso o torna ideal para aplicações onde a largura de banda e o armazenamento são limitados.
- Suporte para vários tipos de dados: Draco suporta compactação para uma ampla variedade de tipos de dados 3D, incluindo malhas geométricas e nuvens de pontos. Ele pode lidar com posições de vértices, cores, normais e outros atributos de forma eficiente.
- Compactação e descompactação rápidas: a biblioteca foi projetada para oferecer compactação e descompactação de alta velocidade, tornando-a adequada para aplicativos em tempo real, como visualizadores 3D baseados na Web e experiências de realidade virtual.
- Código aberto e gratuito: Aproveite os benefícios de uma solução de código aberto sem taxas de licenciamento, tornando-a acessível a desenvolvedores e usuários de todos os níveis.
- Integração perfeita com aplicativos C#: IntegreFileFormat.Drako facilmente em seus aplicativos C#, permitindo a manipulação perfeita de arquivos Draco em seus fluxos de trabalho existentes.
Como começar a usarFileFormat.Drako para .NET
Começar a usar FileFormat.Drako é rápido e fácil. Basta seguir estas etapas:
- InstallFileFormat.Drako: instale o pacote FileFormat.Drako por meio do NuGet Package Manager ou da CLI do .NET.
- Integre-se ao seu projeto: faça referência à biblioteca FileFormat.Drako no seu projeto C#.
- Comece a converter: Utilize a API simples fornecida porFileFormat.Drako para ler e gravar arquivos Draco.
A maneira recomendada de instalarFileFormat.Drako para .NET é usar NuGet. Use o seguinte comando para uma instalação tranquila.
InstallFileFormat.Drako para .NET via NuGet
NuGet> Install-PackageFileFormat.Drako
Você também pode baixá-lo diretamente do GitHub.Leia o arquivo Draco no DracoMesh em C#
Este trecho de código carrega com eficiência um arquivo Draco e o armazena em uma instância DracoMesh para operações subsequentes.
- Abra o arquivo DRC chamado "cube.drc" usando
File.ReadAllBytes
. - Carregue a malha 3D dos bytes em um objeto
DracoMesh
.
Copie e cole o trecho de código abaixo em seu arquivo principal e execute o programa.
Leia o arquivo .drc para a instância DracoMesh
byte[] cube = File.ReadAllBytes("cube.drc");
DracoMesh dm = (DracoMesh)Draco.Decode(cube);
Leia o arquivo Draco e grave no Wavefront OBJ em C#
O código a seguir ilustra como abrir um arquivo 3D Draco existente e gravar no formato obj para processamento adicional:
- Abra o arquivo Draco chamado "input.drc" usando
File.ReadAllBytes
. - Carregue a malha Draco dos bytes em um objeto
DracoMesh
. - Encontre o atributo de posição usando
DracoMesh.GetNamedAttribute
e transforme seu conteúdo emSpan<float>
. - Grave pontos de controle na saída usando o formato OBJ.
- Leia os cantos de cada face usando
DracoMesh.ReadFace
- Mapeie os cantos da face para o índice de pontos de controle usando
PointAttribute.MappedIndex
. - Escreva faces na saída usando o formato OBJ.
Copie e cole o trecho de código abaixo em seu arquivo principal e execute o programa.
Leia o arquivo .drc para DracoMesh e exporte para 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());
Codifique pontos de controle e triângulos no arquivo Draco Programaticamente em C#
O código fornecido demonstra como criar programaticamente um arquivo Draco a partir de pontos de controle e triângulos e salvá-lo como "output.drc" usando C#. Aqui está um detalhamento das etapas:
- Crie uma instância
DracoMesh
. - Envolva os pontos de controle em
PointAttribute
. - Adicione o
PointAttribute
aoDracoMesh
. - Adicione os índices triangulares.
- Crie um objeto
DracoEncodeOptions
com os parâmetros de codificação especificados. - Codifique a malha em bytes usando
Draco.Encode
.
Copie e cole o trecho de código abaixo em seu arquivo principal e execute o programa.
Codificar vetores e faces em arquivo .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 oferece uma API intuitiva, suporte abrangente a formatos e integração perfeita com aplicativos C#, capacitando desenvolvedores e usuários a gerenciar arquivos Draco sem esforço. Esteja você convertendo arquivos draco em outros arquivos ou carregando draco para renderização, o FileFormat.Drako simplifica o processo, garantindo eficiência e qualidade ideais em cada etapa.
Explore nosso repositório GitHub para contribuir, sugerir melhorias e aprimorar esta API de código aberto: FileFormat.Drako -para-.NET