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() за експортиране. Откриването на формати, I/O базиран на потоци и пакетното конвертиране правят интегрирането в който и да е .NET конвейер лесно.
За повече информация:
- API справка – подробна документация за класове и методи.
- База от знания – практични статии с инструкции.
- GitHub – изходен код и система за проследяване на проблеми.