Aspose.3D FOSS za .NET podržava sedam 3D formata datoteka: OBJ, STL, glTF, GLB, FBX, Collada, i 3MF. Ovaj članak je praktični, format-po-format vodič koji pokazuje kako učitati i spremiti svaki od njih, koje su dostupne opcije i kako ih međusobno pretvoriti.
Svi primjeri koriste Aspose.ThreeD imenski prostor:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
NuGet paket:
dotnet add package Aspose.3D --version 26.1.0
OBJ (Wavefront)
OBJ je široko podržani tekstualni format za geometriju mreže. Aspose.3D FOSS učitava OBJ datoteke zajedno s njihovim pratećim .mtl datotekama materijala.
Učitavanje OBJ
var scene = new Scene();
scene.Open("model.obj");
Console.WriteLine("Nodes: " + scene.RootNode.ChildNodes.Count);
Učitavanje s opcijama
var opts = new ObjLoadOptions();
// Configure loading behavior as needed
var scene = new Scene();
scene.Open("model.obj", opts);
Spremanje kao OBJ
var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);
scene.Save("output.obj");
OBJ s opcijama spremanja
var opts = new ObjSaveOptions();
scene.Save("output.obj", opts);
STL (Stereolitografija)
STL je standardni format za 3D ispis. Pohranjuje sirovu trianguliranu geometriju bez materijala ili hijerarhije. Aspose.3D FOSS podržava i binarni i ASCII STL.
Učitavanje STL
var scene = new Scene();
scene.Open("part.stl");
Console.WriteLine("Nodes: " + scene.RootNode.ChildNodes.Count);
Spremanje kao STL
var scene = new Scene();
var sphere = new Entities.Sphere(1);
scene.RootNode.CreateChildNode("SphereNode", sphere);
scene.Save("output.stl");
STL s opcijama spremanja
var opts = new StlSaveOptions();
// Control binary mode, scale, and coordinate flipping
scene.Save("output.stl", opts);
STL povratni put
// 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 i GLB
glTF je moderni standard za web i real‑time 3D. Podržava PBR materijale, potpune hijerarhije scena i učinkovito binarno pakiranje (GLB).
Učitavanje glTF
var scene = new Scene();
scene.Open("model.gltf");
Učitavanje s opcijama
var opts = new GltfLoadOptions();
var scene = new Scene();
scene.Open("model.gltf", opts);
Spremanje kao glTF
var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);
scene.Save("output.gltf");
Spremanje kao GLB (binarni glTF)
Za stvaranje samostalnog binarnog .glb datoteke, spremite s .glb ekstenzijom. Biblioteka zaključuje binarni glTF format iz ekstenzije:
scene.Save("output.glb");
FBX (Filmbox)
FBX se široko koristi u razvoju igara i stvaranju digitalnog sadržaja. Aspose.3D FOSS za .NET podržava FBX uvoz i izvoz u oba ASCII i binarna načina.
Učitavanje FBX
var scene = new Scene();
scene.Open("model.fbx");
Učitavanje s opcijama
var opts = new FbxLoadOptions();
var scene = new Scene();
scene.Open("model.fbx", opts);
Spremanje kao 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);
Spremanje kao 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.
Učitavanje 3MF
var scene = new Scene();
scene.Open("model.3mf");
Učitavanje s opcijama
var opts = new TmfLoadOptions();
var scene = new Scene();
scene.Open("model.3mf", opts);
Spremanje kao 3MF
var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);
scene.Save("output.3mf");
Spremanje s opcijama
var opts = new TmfSaveOptions();
scene.Save("output.3mf", opts);
U/I temeljeno na strujama
Svi formati podržavaju učitavanje iz i spremanje u streamove, što je korisno za web usluge i obradu u oblaku:
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);
Otkrivanje formata
Biblioteka može automatski otkriti formate na temelju ekstenzija datoteka ili sadržaja streama:
// 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
Serijska konverzija
Za konverziju više datoteka, iterirajte kroz direktorij i konvertirajte svaku pojedinačno:
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);
}
Usporedba formata
| Značajka | OBJ | STL | glTF | FBX | 3MF |
|---|---|---|---|---|---|
| Materijali | MTL | Ne | PBR | Da | Da |
| Hijerarhija scene | Ne | Ne | Da | Da | Da |
| Stubovi animacije | Ne | Ne | Da | Da | Ne |
| Binarni način | Ne | Da | GLB | Da | ZIP |
| 3D printing ready | Ograničeno | Da | Ne | Ne | Da |
| Web isporuka | Ne | Ne | Da | Ne | Ne |
Sažetak
Aspose.3D FOSS za .NET daje vam jedinstveno, dosljedno API za rad sa svim glavnim 3D formatima datoteka. Uzorak je uvijek isti: stvorite Scene, pozovite Open() za učitavanje, po želji konfigurirajte opcije specifične za format i pozovite Save() za izvoz. Otkrivanje formata, I/O temeljeno na strujama i grupna konverzija čine jednostavnim integriranje u bilo koji .NET pipeline.
Za više informacija:
- API referenca – detaljna dokumentacija klasa i metoda.
- Baza znanja – praktični vodiči.
- GitHub – izvorni kod i pratitelj problema.