Введение

3D FOSS - бесплатная библиотека с открытым исходным кодом .NET для работы с форматами файлов в 3Д. Она предоставляет комплексный набор классов утилит, которые выходят за рамки простой конверсии файла, позволяя разработчикам манипулировать сетками, преобразовывать и генерировать примитивную геометрию программно. Библиотека выпускается под лицензией MIT, что делает ее подходящей как для личных, так и коммерческих проектов без ограничений.

В этом посте рассматриваются возможности утилиты в библиотеке: классы и методы, к которым вы прибегаете, когда вам нужно триангулировать сетку, поэтапно создавать матрицу трансформации или создать параметрическую геометрию. Эти строительные блоки дополняют основной рабочий процесс загрузки сцены и сохранения сцен, рассмотренный в вступительном посте.

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


Что входит в него?

Работа с сеткой

В связи с этим Mesh Вы можете создавать полигоны из индексов вершин, запросить размеры многоугольников, триангулировать лица и оптимизировать данные вершинок. ControlPoints свойство обеспечивает прямой доступ к позициям вершин, в то время как Polygons раскрывает массивы индекса лица.

using Aspose.3D.Converter;

var scene = new Scene();
var mesh = new Mesh("CustomMesh");

// Add control points (vertices)
mesh.ControlPoints.Add(new Vector4(0, 0, 0));
mesh.ControlPoints.Add(new Vector4(10, 0, 0));
mesh.ControlPoints.Add(new Vector4(10, 10, 0));
mesh.ControlPoints.Add(new Vector4(0, 10, 0));

// Create a quad polygon from four vertices
mesh.CreatePolygon(0, 1, 2, 3);

// Triangulate all polygons in the mesh
mesh.Triangulate();

Трансформер-строитель.

В связи с этим TransformBuilder class обеспечивает плавный интерфейс для построения матриц трансформации через последовательность операций перевод, вращение и масштабирование. Вы управляете порядком композиции (присоединяйте или предварительно присоедините) и можете сбросить конструктор, чтобы начать новую цепь.

using Aspose.3D.Converter;

var builder = new TransformBuilder(ComposeOrder.Append);

// Build a combined transform: translate, then rotate, then scale
builder.Translate(5, 0, 3);
builder.RotateDegree(45, new Vector3(0, 1, 0));
builder.Scale(2, 2, 2);

// Retrieve the composed 4x4 matrix
Matrix4 result = builder.Matrix;

Модификатор многоугольника

В связи с этим PolygonModifier класс предлагает статические методы утилиты для обработки сетки. Triangulate метод преобразует любую n-гранную сетку из многоугольника в геометрию только треуглых, что является необходимым значением для большинства моторов рендеринга и физических симуляций.

using Aspose.3D.Converter;

var scene = new Scene();
var box = new Box(2, 2, 2);
Mesh boxMesh = box.ToMesh();

// Convert all polygons to triangles
Mesh triangulated = PolygonModifier.Triangulate(boxMesh);

Первобытное поколение геометрии

Библиотека включает в себя такие классы параметрической геометрии, как: Box, Sphere, и Cylinder.Каждый примитивный может быть сконфигурирован с размерами и количеством сегментов, а затем преобразован в Mesh через ToMesh() метод дальнейшей переработки или экспорта.

using Aspose.3D.Converter;

// Create a parameterized sphere
var sphere = new Sphere(5.0, 32, 16);
Mesh sphereMesh = sphere.ToMesh();

// Create a cylinder (cone when one radius is zero)
var cone = new Cylinder(0, 3.0, 6.0);
Mesh coneMesh = cone.ToMesh();

Расчет с ограниченными рамками

Каждый . Entity Подкласс выявляет a GetBoundingBox() метод, который возвращает выровненный по оси граничный ящик геометрии. BoundingBox Структура обеспечивает: Minimum и в том числе: Maximum угловые векторы, полезные для пространственных запросов и настройки камеры.

using Aspose.3D.Converter;

var box = new Box(4, 2, 6);
BoundingBox bounds = box.GetBoundingBox();

FVector3 min = bounds.Minimum;
FVector3 max = bounds.Maximum;

Быстрый старт .

Установка пакета из NuGet:

dotnet add package Aspose.3D.FOSS

Загрузить файл, триангулировать каждую сетку и сохранить результат:

using Aspose.3D.Converter;

// Load a scene from an OBJ file
var scene = new Scene();
scene.Open("input.obj");

// Walk child nodes and triangulate each mesh entity
foreach (var node in scene.RootNode.ChildNodes)
{
    foreach (var entity in node.Entities)
    {
        if (entity is Mesh mesh)
        {
            mesh.Triangulate();
        }
    }
}

// Save the triangulated scene as glTF
scene.Save("output.glb");

Поддерживаемые форматы

Формат:РасширениеЧитайте .Написать .
Кольда.- Да, да. Я не знаю.Да , я знаю .Да , я знаю .
FBX.fbx (всего в строке)Да , я знаю .Да , я знаю .
ГЛФ / ГГБ.gltf / .GLBДа , я знаю .Да , я знаю .
3MF.3мфДа , я знаю .Нет , нет .
Волновой фронт OBJ.obj (независимо от вида)Да , я знаю .Да , я знаю .
PLY.пластДа , я знаю .Нет , нет .
STL.stl - в строке “Сталь”Да , я знаю .Да , я знаю .
TMF.tmfНет , нет .Да , я знаю .

Открытый исходный код и лицензирование

3D FOSS выпущен под лицензией MIT. Вы можете использовать, модифицировать и перераспределять библиотеку как в открытых источниках, так и в частных проектах. Полный исходный код доступен на GitHub по адресу: http://www.github.com/index.php?id=3dFOSs&oldid="212618875" /> aspose-3d-foss/Aspose.3D-FOSS-for-.NET (последнее название).


Начинать

  • Руководство разработчиков – полная документация, охватывающая управление сценой, варианты формата и расширенные функции.
  • База знаний - статья о том, как это делать и часто задаваемые вопросы.
  • Ссылка на API – ссылка по классам, со подписчиками метода и данными о свойствах.