Aspose.3D FOSS pro .NET podporuje sedm 3D formátů souborů: OBJ, STL, glTF, GLB, FBX, Collada, a 3MF. Tento příspěvek je praktickým, formát po formátu, průvodcem, který ukazuje, jak načíst a uložit každý z nich, jaké možnosti jsou k dispozici a jak mezi nimi převádět.
Všechny příklady používají Aspose.ThreeD jmenný prostor:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
Balíček NuGet:
dotnet add package Aspose.3D --version 26.1.0
OBJ (Wavefront)
OBJ je široce podporovaný textový formát pro geometrii sítí. Aspose.3D FOSS načítá soubory OBJ spolu s jejich doprovodnými .mtl souborů materiálů.
Načítání OBJ
var scene = new Scene();
scene.Open("model.obj");
Console.WriteLine("Nodes: " + scene.RootNode.ChildNodes.Count);
Načítání s možnostmi
var opts = new ObjLoadOptions();
// Configure loading behavior as needed
var scene = new Scene();
scene.Open("model.obj", opts);
Ukládání jako OBJ
var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);
scene.Save("output.obj");
OBJ s možnostmi ukládání
var opts = new ObjSaveOptions();
scene.Save("output.obj", opts);
STL (Stereolitografie)
STL je standardní formát pro 3D tisk. Ukládá surovou triangulovanou geometrii bez materiálů nebo hierarchie. Aspose.3D FOSS podporuje jak binární, tak ASCII STL.
Načítání STL
var scene = new Scene();
scene.Open("part.stl");
Console.WriteLine("Nodes: " + scene.RootNode.ChildNodes.Count);
Ukládání jako STL
var scene = new Scene();
var sphere = new Entities.Sphere(1);
scene.RootNode.CreateChildNode("SphereNode", sphere);
scene.Save("output.stl");
STL s možnostmi ukládání
var opts = new StlSaveOptions();
// Control binary mode, scale, and coordinate flipping
scene.Save("output.stl", opts);
STL zpětný průchod
// 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 a GLB
glTF je moderní standard pro web a real-time 3D. Podporuje PBR materiály, kompletní hierarchie scén a efektivní binární balení (GLB).
Načítání glTF
var scene = new Scene();
scene.Open("model.gltf");
Načítání s možnostmi
var opts = new GltfLoadOptions();
var scene = new Scene();
scene.Open("model.gltf", opts);
Ukládání jako glTF
var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);
scene.Save("output.gltf");
Ukládání jako GLB (binární glTF)
Pro vytvoření samostatného binárního .glb souboru, uložte s .glb příponou. Knihovna odvozuje binární formát glTF z přípony:
scene.Save("output.glb");
FBX (Filmbox)
FBX je široce používán ve vývoji her a tvorbě digitálního obsahu. Aspose.3D FOSS pro .NET podporuje FBX import a export v režimech ASCII i binárním.
Načítání FBX
var scene = new Scene();
scene.Open("model.fbx");
Načítání s možnostmi
var opts = new FbxLoadOptions();
var scene = new Scene();
scene.Open("model.fbx", opts);
Ukládání jako 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);
Ukládání jako 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.
Načítání 3MF
var scene = new Scene();
scene.Open("model.3mf");
Načítání s možnostmi
var opts = new TmfLoadOptions();
var scene = new Scene();
scene.Open("model.3mf", opts);
Ukládání jako 3MF
var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);
scene.Save("output.3mf");
Ukládání s možnostmi
var opts = new TmfSaveOptions();
scene.Save("output.3mf", opts);
Vstup/Výstup založený na streamu
Všechny formáty podporují načítání ze streamů i ukládání do streamů, což je užitečné pro webové služby a cloudové zpracování:
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);
Detekce formátu
Knihovna dokáže automaticky detekovat formáty podle přípon souborů nebo obsahu streamu:
// 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
Dávková konverze
Pro konverzi více souborů projděte adresář a každý soubor převedete:
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);
}
Porovnání formátů
| Funkce | OBJ | STL | glTF | FBX | 3MF |
|---|---|---|---|---|---|
| Materiály | MTL | Ne | PBR | Ano | Ano |
| Hierarchie scén | Ne | Ne | Ano | Ano | Ano |
| Základní kostry animace | Ne | Ne | Ano | Ano | Ne |
| Binární režim | Ne | Ano | GLB | Ano | ZIP |
| 3D printing ready | Omezený | Ano | Ne | Ne | Ano |
| Webové doručení | Ne | Ne | Ano | Ne | Ne |
Shrnutí
Aspose.3D FOSS pro .NET vám poskytuje jednotné, konzistentní API pro práci se všemi hlavními 3D formáty souborů. Vzor je vždy stejný: vytvořte Scene, zavolejte Open() na načtení, volitelně nakonfigurujte formátově specifické možnosti a zavolejte Save() na export. Detekce formátu, streamové I/O a hromadná konverze usnadňují integraci do jakéhokoli .NET pipeline.
Pro více informací:
- Reference API – podrobná dokumentace tříd a metod.
- Znalostní báze – praktické návody.
- GitHub – zdrojový kód a sledování problémů.