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);
}
Сравнение форматов
| Feature | OBJ | STL | glTF | FBX | 3MF |
|---|---|---|---|---|---|
| Материалы | MTL | Нет | PBR | Да | Да |
| Иерархия сцены | Нет | Нет | Да | Да | Да |
| Заглушки анимации | Нет | Нет | Да | Да | Нет |
| Двоичный режим | Нет | Да | GLB | Да | ZIP |
| Готово к 3D‑печати | Ограничено | Да | Нет | Нет | Да |
| Веб‑доставка | Нет | Нет | Да | Нет | Нет |
Краткое содержание
Aspose.3D FOSS for .NET предоставляет единый, последовательный API для работы со всеми основными форматами 3D‑файлов. Шаблон всегда один и тот же: создайте Scene, вызовите Open() для загрузки, при необходимости настройте параметры, специфичные для формата, и вызовите Save() для экспорта. Обнаружение формата, ввод‑вывод на основе потоков и пакетное преобразование делают интеграцию в любой .NET‑конвейер простой.
Для получения дополнительной информации:
- API Reference – подробная документация классов и методов.
- Knowledge Base – практические статьи «как сделать».
- GitHub – исходный код и система отслеживания проблем.