Вступ

Aspose.3D FOSS — це безкоштовна, з відкритим кодом бібліотека .NET для роботи з 3D-форматами файлів. Вона надає комплексний набір утилітних класів, що виходять за межі простого конвертування файлів, дозволяючи розробникам маніпулювати сітками, створювати трансформації та генерувати примітивну геометрію програмно. Бібліотека випущена під ліцензією MIT, що робить її придатною як для особистих, так і для комерційних проєктів без обмежень.

Цей пост зосереджений на можливостях утиліт у бібліотеці: класах і методах, до яких ви звертаєтесь, коли потрібно триангуляти сітку, крок за кроком будувати матрицю трансформації або створювати параметричну геометрію. Ці будівельні блоки доповнюють основний процес завантаження та збереження сцени, розглянутий у вступному пості.

Незалежно від того, чи обробляєте ви 3D-активи у процесі збірки, готуєте геометрію для ігрового движка, чи конвертуєте між форматами, ці утиліти виконують типові завдання, що виникають у реальних 3D-робочих процесах.


Що включено

Операції з сітками

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

using Aspose.ThreeD;
using Aspose.ThreeD.Entities;

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 надає плавний інтерфейс для побудови матриць перетворень за допомогою послідовності операцій переміщення, обертання та масштабування. Ви керуєте порядком композиції (додавання в кінець або на початок) і можете скинути конструктор, щоб розпочати новий ланцюжок.

using Aspose.ThreeD;
using Aspose.ThreeD.Utilities;

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-сторонньої полігональної сітки у геометрію, що складається лише з трикутників. У цій FOSS-версії Triangulate не реалізовано — кожне перевантаження викидає NotImplementedException під час виконання. Для працездатної триангуляції використовуйте Mesh.Triangulate() замість цього, як показано у розділі Операції з сітками вище.

using Aspose.ThreeD;
using Aspose.ThreeD.Entities;

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

Генерація примітивної геометрії

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

using Aspose.ThreeD.Entities;

// 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 відкриває метод GetBoundingBox(), який повертає орієнтовану по осях обмежувальну коробку геометрії. Структура BoundingBox надає вектори кутів Minimum та Maximum, корисні для просторових запитів та кадрування камери.

using Aspose.ThreeD.Entities;
using Aspose.ThreeD.Utilities;

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

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

Швидкий старт

Встановіть пакет з NuGet:

dotnet add package Aspose.3D.FOSS

Завантажте файл, триангуляйте кожну сітку та збережіть результат:

using Aspose.ThreeD;
using Aspose.ThreeD.Entities;

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

Підтримувані формати

ФорматРозширенняЧитатиЗапис
Collada.daeТакТак
FBX.fbxТакТак
glTF / GLB.gltf / .glbТакТак
3MF.3mfТакТак
Wavefront OBJ.objТакТак
PLY.plyТакНі
STL.stlТакТак

Відкритий код та ліцензування

Aspose.3D FOSS випущено під ліцензією MIT. Ви можете використовувати, змінювати та розповсюджувати бібліотеку як в проектах з відкритим кодом, так і в пропрієтарних проектах. Повний вихідний код доступний на GitHub за адресою aspose-3d-foss/Aspose.3D-FOSS-for-.NET.


Початок роботи

  • Developer Guide – повна документація, що охоплює управління сценами, параметри форматів та розширені функції.
  • Knowledge Base – статті «як зробити» та часто задавані питання.
  • API Reference – докладне посилання клас за класом з підписами методів та деталями властивостей.

Пов’язані ресурси