1. Home
  2.   Drako
  3.   FileFormat.Drako для .NET
FileFormat.Drako для .NET

FileFormat.Drako для .NET

 
 

Упростите процесс чтения и записи файлов Google Draco с помощью API .NET

Легко редактируйте сжатые файлы DRC с помощью FileFormat.Drako, легкого API .NET с открытым исходным кодом, упрощающего конвертацию и автоматизацию файлов Draco

FileFormat.Drako для .NET революционизирует ваш опыт обработки файлов Draco. В этом подробном руководстве мы рассмотрим функциональные возможности и преимущества использования FileFormat.Drako, легкого .NET API с открытым исходным кодом, позволяющего легко и просто обрабатывать файлы Draco.

Draco — это библиотека сжатия с открытым исходным кодом, разработанная Google и специализирующаяся на сжатии и распаковке трехмерных геометрических сеток и облаков точек. Значительно уменьшая размер файлов 3D-графики, Draco обеспечивает более быструю передачу и снижает требования к хранению, сохраняя при этом качество изображения. Он поддерживает различные 3D-приложения, в том числе веб-платформы и мобильные платформы, обеспечивая эффективную обработку сложных 3D-данных. Draco широко используется в таких отраслях, как игры, виртуальная реальность и 3D-визуализация, для оптимизации производительности и улучшения пользовательского опыта.

FileFormat.Drako представляет собой мощное решение для удобного чтения и записи файлов Draco. Этот легкий API .NET с открытым исходным кодом упрощает операции с изображениями Draco, предлагая разработчикам и пользователям удобный интерфейс для легкой обработки файлов Draco.

FileFormat.Drako доступен по открытой лицензии.< /п>

Основные особенности и преимущества

  • Высокая степень сжатия. Draco обеспечивает значительное уменьшение размеров файлов, часто уменьшая их до 90 % без заметной потери визуального качества. Это делает его идеальным для приложений, где пропускная способность и объем памяти ограничены.
  • Поддержка различных типов данных. Draco поддерживает сжатие широкого спектра типов 3D-данных, включая геометрические сетки и облака точек. Он может эффективно обрабатывать позиции вершин, цвета, нормали и другие атрибуты.
  • Быстрое сжатие и распаковка. Библиотека предназначена для обеспечения высокоскоростного сжатия и распаковки, что делает ее подходящей для приложений реального времени, таких как веб-средства просмотра 3D-изображений и виртуальная реальность.
  • Быстрое сжатие и распаковка. ли>
  • Открытый исходный код и бесплатно. Воспользуйтесь преимуществами решения с открытым исходным кодом без лицензионных сборов, что делает его доступным для разработчиков и пользователей всех уровней.
  • Бесшовная интеграция с приложениями C#: легко интегрируйте FileFormat.Drako в ваши приложения C#, обеспечивая беспрепятственную обработку файлов Draco в существующих рабочих процессах.

Previous Next

Как начать работу с FileFormat.Drako для .NET

Начать работу с FileFormat.Drako можно быстро и легко. Просто выполните следующие действия:

  • InstallFileFormat.Drako: установите пакет FileFormat.Drako через диспетчер пакетов NuGet или .NET CLI.
  • Интеграция с вашим проектом: используйте библиотеку FileFormat.Drako в своем проекте C#.
  • Начать преобразование. Используйте простой API, предоставляемый FileFormat.Drako, для чтения и записи файлов Draco.

Рекомендуемый способ установкиFileFormat.Drako для .NET — использование NuGet. Пожалуйста, используйте следующую команду для беспрепятственной установки.

InstallFileFormat.Drako для .NET через NuGet

NuGet> Install-PackageFileFormat.Drako 
Вы также можете загрузить его непосредственно с GitHub.

Чтение файла Draco в DracoMesh на C#

Этот фрагмент кода эффективно загружает файл Draco и сохраняет его в экземпляре DracoMesh для последующих операций.

  • Откройте файл DRC с именем «cube.drc», используя File.ReadAllBytes.
  • Загрузите 3D-сетку из байтов в объект DracoMesh.

Скопируйте и вставьте приведенный ниже фрагмент кода в основной файл и запустите программу.

Чтение файла .drc в экземпляре DracoMesh

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

Чтение файла Draco и запись в Wavefront OBJ на C#

Следующий код показывает, как открыть существующий файл 3D Draco и записать его в формат obj для дальнейшей обработки:

  • Откройте файл Draco с именем «input.drc», используя File.ReadAllBytes.
  • Загрузите сетку Draco из байтов в объект DracoMesh.
  • Найдите атрибут позиции с помощью DracoMesh.GetNamedAttributeи преобразуйте его содержимое в Span<float>.
  • Запишите контрольные точки для вывода, используя формат OBJ.
  • Прочитайте углы каждой грани, используя DracoMesh.ReadFace
  • Сопоставьте углы грани с индексами контрольных точек, используя PointAttribute.MappedIndex.
  • Запишите лица на вывод, используя формат OBJ.

Скопируйте и вставьте приведенный ниже фрагмент кода в основной файл и запустите программу.

Читать файл .drc в DracoMesh и экспортировать в объект wavefront

 
    //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());

Кодировать контрольные точки и треугольники в файл Draco программно на C#

Приведенный код демонстрирует, как программно создать файл Draco из контрольных точек и треугольников и сохранить его как «output.drc» с помощью C#. Вот разбивка шагов:

  • Создайте экземпляр DracoMesh.
  • Обернуть контрольные точки в PointAttribute.
  • Добавьте PointAttributeв DracoMesh.
  • Добавьте индексы треугольников.
  • Создайте объект DracoEncodeOptionsс указанными параметрами кодирования.
  • Закодируйте сетку в байты, используя Draco.Encode.

Скопируйте и вставьте приведенный ниже фрагмент кода в основной файл и запустите программу.

Закодировать векторы и грани в файл .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 предлагает интуитивно понятный API, комплексную поддержку форматов и полную интеграцию с приложениями C#, что позволяет разработчикам и пользователям легко управлять файлами Draco. Независимо от того, конвертируете ли вы файлы draco в другие файлы или загружаете draco для рендеринга, FileFormat.Drako упрощает процесс, обеспечивая оптимальную эффективность и качество на каждом этапе.

Изучите наш репозиторий GitHub, чтобы внести свой вклад, предложить улучшения и улучшить этот API с открытым исходным кодом: FileFormat.Drako -для-.NET

 Русский