Введение
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 – ссылка по классам, со подписчиками метода и данными о свойствах.