Aspose.3D FOSS для .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 (Stereolithography)
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 (бінарний glTF)
Щоб створити самодостатній бінарний .glb файл, збережіть з .glb розширенням. Бібліотека визначає бінарний формат glTF за розширенням:
scene.Save("output.glb");
FBX (Filmbox)
FBX широко використовується у розробці ігор та створенні цифрового контенту. Aspose.3D FOSS для .NET підтримує FBX імпорт та експорт в обох режимах: ASCII та бінарному.
Завантаження FBX
var scene = new Scene();
scene.Open("model.fbx");
Завантаження з параметрами
var opts = new FbxLoadOptions();
var scene = new Scene();
scene.Open("model.fbx", opts);
Збереження у форматі FBX ASCII
var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);
var opts = new FbxSaveOptions() { IsAscii = true };
scene.Save("output.fbx", opts);
Збереження у форматі FBX Binary
var opts = new FbxSaveOptions() { IsAscii = false };
scene.Save("output.fbx", opts);
3MF (3D Manufacturing Format)
3MF is a modern 3D printing format developed by the 3MF Consortium. It supports rich metadata, materials, and multi-object scenes in a single ZIP-based package.
Завантаження 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);
}
Порівняння форматів
| Функція | OBJ | STL | glTF | FBX | 3MF |
|---|---|---|---|---|---|
| Матеріали | MTL | Ні | PBR | Так | Так |
| Ієрархія сцени | Ні | Ні | Так | Так | Так |
| Заглушки анімації | Ні | Ні | Так | Так | Ні |
| Бінарний режим | Ні | Так | GLB | Так | ZIP |
| 3D printing ready | Обмежений | Так | Ні | Ні | Так |
| Веб-доставка | Ні | Ні | Так | Ні | Ні |
Підсумок
Aspose.3D FOSS для .NET надає вам єдиний, послідовний API для роботи з усіма основними 3D форматами файлів. Шаблон завжди один і той самий: створити Scene, викликати Open() для завантаження, за потреби налаштувати параметри, специфічні для формату, і викликати Save() для експорту. Виявлення формату, потоковий ввід/вивід та пакетне перетворення роблять інтеграцію в будь‑який .NET конвеєр простою.
Для отримання додаткової інформації:
- Документація API – докладна документація класів і методів.
- База знань – практичні статті‑покрокові інструкції.
- GitHub – вихідний код і трекер проблем.