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

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.

Previous Next

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.GetNamedAttributee transforme seu conteúdo em Span<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 PointAttributeao DracoMesh.
  • Adicione os índices triangulares.
  • Crie um objeto DracoEncodeOptionscom 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

 Português