Aspose.3D FOSS for .NET поддерживает семь 3D форматов файлов: OBJ, STL, glTF, GLB, FBX, Collada и 3MF. Эта статья представляет собой практическое руководство по каждому формату, показывающее, как загрузить и сохранить каждый из них, какие доступны параметры и как выполнять конвертацию между ними.

Все примеры используют пространство имён Aspose.ThreeD:

using Aspose.ThreeD;
using Aspose.ThreeD.Formats;

Пакет NuGet:

dotnet add package Aspose.3D --version 26.1.0

OBJ (Wavefront)

OBJ — это широко поддерживаемый текстовый формат для геометрии сетки. Aspose.3D FOSS загружает файлы OBJ вместе с их сопутствующими .mtl файлами материалов.

Загрузка OBJ

var scene = new Scene();
scene.Open("model.obj");

Console.WriteLine("Nodes: " + scene.RootNode.ChildNodes.Count);

Загрузка с параметрами

var opts = new ObjLoadOptions();
// Configure loading behavior as needed
var scene = new Scene();
scene.Open("model.obj", opts);

Сохранение в формате OBJ

var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);

scene.Save("output.obj");

OBJ с параметрами сохранения

var opts = new ObjSaveOptions();
scene.Save("output.obj", opts);

STL (Стереолитография)

STL — это стандартный формат для 3D‑печати. Он хранит необработанную триангулированную геометрию без материалов и иерархии. Aspose.3D FOSS поддерживает как бинарный, так и ASCII STL.

Загрузка STL

var scene = new Scene();
scene.Open("part.stl");

Console.WriteLine("Nodes: " + scene.RootNode.ChildNodes.Count);

Сохранение в STL

var scene = new Scene();
var sphere = new Entities.Sphere(1);
scene.RootNode.CreateChildNode("SphereNode", sphere);

scene.Save("output.stl");

STL с параметрами сохранения

var opts = new StlSaveOptions();
// Control binary mode, scale, and coordinate flipping
scene.Save("output.stl", opts);

STL обратный проход

// Load an STL file and re-save it -- geometry is preserved
var scene = new Scene();
scene.Open("original.stl");
scene.Save("copy.stl");

glTF 2.0 и GLB

glTF — современный стандарт для веба и 3D в реальном времени. Он поддерживает материалы PBR, полные иерархии сцен и эффективную бинарную упаковку (GLB).

Загрузка glTF

var scene = new Scene();
scene.Open("model.gltf");

Загрузка с параметрами

var opts = new GltfLoadOptions();
var scene = new Scene();
scene.Open("model.gltf", opts);

Сохранение в формате glTF

var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);

scene.Save("output.gltf");

Сохранение в формате GLB (Binary glTF)

Чтобы создать самодостаточный бинарный файл .glb, сохраните его с расширением .glb. Библиотека выводит бинарный формат glTF из расширения:

scene.Save("output.glb");

FBX (Filmbox)

FBX широко используется в разработке игр и создании цифрового контента. Aspose.3D FOSS для .NET поддерживает FBX импорт и экспорт. Экспорт создает бинарный FBX; код экспорта ASCII FBX существует в исходном коде, но не вызывается экспортным путем в этой версии. Класс FbxSaveOptions предоставляет настройки по умолчанию.

Загрузка FBX

var scene = new Scene();
scene.Open("model.fbx");

Загрузка с параметрами

var opts = new FbxLoadOptions();
var scene = new Scene();
scene.Open("model.fbx", opts);

Сохранение в FBX

var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);

// FBX export always produces binary FBX output
scene.Save("output.fbx");

Сохранение с параметрами

// Use FbxSaveOptions for format-specific defaults
var opts = new FbxSaveOptions();
scene.Save("output.fbx", opts);

3MF (формат 3D Manufacturing)

3MF — современный формат 3D‑печати, разработанный консорциумом 3MF. Он поддерживает богатые метаданные, материалы и сцены с несколькими объектами в едином пакете на основе ZIP.

Загрузка 3MF

var scene = new Scene();
scene.Open("model.3mf");

Загрузка с параметрами

var opts = new TmfLoadOptions();
var scene = new Scene();
scene.Open("model.3mf", opts);

Сохранение в формате 3MF

var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);

scene.Save("output.3mf");

Сохранение с параметрами

var opts = new TmfSaveOptions();
scene.Save("output.3mf", opts);

Ввод/вывод на основе потоков

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

using var stream = File.OpenRead("model.obj");
var scene = new Scene();
var opts = new ObjLoadOptions();
scene.Open(stream, opts);

// Save to a memory stream
using var output = new MemoryStream();
var saveOpts = new GltfSaveOptions();
scene.Save(output, saveOpts);

Обнаружение формата

Библиотека может автоматически определять форматы по расширениям файлов или содержимому потока:

// Auto-detect from extension
var scene = new Scene();
scene.Open("model.obj");  // Detects OBJ from .obj extension

// Auto-detect from stream content
using var stream = File.OpenRead("model.obj");
scene.Open(stream);  // Inspects stream content to determine format

Пакетное преобразование

Для преобразования нескольких файлов пройдите по каталогу и преобразуйте каждый файл:

using Aspose.ThreeD;
using Aspose.ThreeD.Formats;

var inputDir = "assets/";
var outputDir = "converted/";

foreach (var file in Directory.GetFiles(inputDir, "*.fbx"))
{
    var scene = new Scene();
    scene.Open(file);

    var outputPath = Path.Combine(outputDir,
        Path.GetFileNameWithoutExtension(file) + ".glb");

    scene.Save(outputPath);
    Console.WriteLine("Converted: " + file);
}

Сравнение форматов

FeatureOBJSTLglTFFBX3MF
МатериалыMTLНетPBRДаДа
Иерархия сценыНетНетДаДаДа
Заглушки анимацииНетНетДаДаНет
Двоичный режимНетДаGLBДаZIP
Готово к 3D‑печатиОграниченоДаНетНетДа
Веб‑доставкаНетНетДаНетНет

Краткое содержание

Aspose.3D FOSS for .NET предоставляет единый, последовательный API для работы со всеми основными форматами 3D‑файлов. Шаблон всегда один и тот же: создайте Scene, вызовите Open() для загрузки, при необходимости настройте параметры, специфичные для формата, и вызовите Save() для экспорта. Обнаружение формата, ввод‑вывод на основе потоков и пакетное преобразование делают интеграцию в любой .NET‑конвейер простой.

Для получения дополнительной информации:

  • API Reference – подробная документация классов и методов.
  • Knowledge Base – практические статьи «как сделать».
  • GitHub – исходный код и система отслеживания проблем.