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