Aspose.3D FOSS für .NET unterstützt sieben 3D-Dateiformate: OBJ, STL, GFT-Systeme, GLB, FBX, Schnupfen,und . 3MF.Dieser Beitrag ist eine praktische, Format-für-Format-Anleitung, die zeigt, wie man jedes laden und speichern kann, welche Optionen verfügbar sind und wie zwischen ihnen umgewandelt werden kann.

Alle Beispiele verwenden die Aspose.ThreeD Namensraum:

using Aspose.ThreeD;
using Aspose.ThreeD.Formats;

NuGet-Verpackung:

dotnet add package Aspose.3D.FOSS

OBJ (Wellenfront)

OBJ ist ein weit verbreitetes textbasiertes Format für die Maschengeometrie. Aspose.3D FOSS lädt OB J-Dateien zusammen mit ihrem Begleiter auf. .mtl Materialdateien.

Beförderung von OBJ-Ladungen

var scene = new Scene();
scene.Open("model.obj");

Console.WriteLine("Nodes: " + scene.RootNode.ChildNodes.Count);

Aufladen mit Optionen

var opts = new ObjLoadOptions();
// Configure loading behavior as needed
var scene = new Scene();
scene.Open("model.obj", opts);

Speicherung als OBJ

var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);

scene.Save("output.obj");

OBJ mit Speicheroptionen

var opts = new ObjSaveOptions();
scene.Save("output.obj", opts);

STL (Stereolithographie)

STL ist das Standardformat für den 3D-Druck. Es speichert die unentdeckte triangulierte Geometrie ohne Materialien oder Hierarchie. Aspose.3D FOSS unterstützt sowohl binäre als auch ASCII ST L.

Ladezeit STL

var scene = new Scene();
scene.Open("part.stl");

Console.WriteLine("Nodes: " + scene.RootNode.ChildNodes.Count);

Speicherung als STL

var scene = new Scene();
var sphere = new Entities.Sphere(1);
scene.RootNode.CreateChildNode("SphereNode", sphere);

scene.Save("output.stl");

STL mit Speicheroptionen

var opts = new StlSaveOptions();
// Control binary mode, scale, and coordinate flipping
scene.Save("output.stl", opts);

STL Rundfahrt

// 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 und GLB

glTF ist der moderne Standard für Web- und Echtzeit-3D. Es unterstützt PBR-Materialien, vollständige Szenenhierarchien und effizientes binäres Verpacken (GLB).

Lade-GFT

var scene = new Scene();
scene.Open("model.gltf");

Aufladen mit Optionen

var opts = new GltfLoadOptions();
var scene = new Scene();
scene.Open("model.gltf", opts);

Einsparung als glTF

var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);

scene.Save("output.gltf");

Einsparungen als GLB (binärer glTF)

Die Erstellung einer eigenständigen Binärform. .glb Datei, mit einem .glb Die Bibliothek zieht das binäre glTF-Format aus der Erweiterung ab:

scene.Save("output.glb");

FBX (Filmbox)

FBX wird in der Spieleentwicklung und bei der Erstellung digitaler Inhalte weit verbreitet. Aspose.3D FOSS für .NET unterstützt FBx. Einfuhr und Ausfuhr.Export erzeugt binäre FBX; ASCII-FBX-Exportcode existiert in der Quelle, wird aber nicht durch den Exportraditionsablauf in dieser Version aufgerufen. FbxSaveOptions Die Standard-Einstellungen werden durch die Klasse bereitgestellt.

FBX laden

var scene = new Scene();
scene.Open("model.fbx");

Aufladen mit Optionen

var opts = new FbxLoadOptions();
var scene = new Scene();
scene.Open("model.fbx", opts);

Speichern als 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");

Sparen mit Optionen

// Use FbxSaveOptions for format-specific defaults
var opts = new FbxSaveOptions();
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.

Beförderung 3MF

var scene = new Scene();
scene.Open("model.3mf");

Aufladen mit Optionen

var opts = new TmfLoadOptions();
var scene = new Scene();
scene.Open("model.3mf", opts);

Einsparung als 3MF

var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);

scene.Save("output.3mf");

Sparen mit Optionen

var opts = new TmfSaveOptions();
scene.Save("output.3mf", opts);

Strömungsbasierte E/A-Daten

Alle Formate unterstützen das Laden von und Speichern in Streams, was für Webservices und Cloud-Verarbeitung nützlich ist:

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);

Formaterkennung

Die Bibliothek kann Formate von Dateierweiterungen oder Streaming-Inhalten automatisch erkennen:

// 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

Batch-Umwandlung

Für die Konvertierung mehrerer Dateien, Iteration über ein Verzeichnis und konvertieren Sie jede einzelne:

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);
}

Formatvergleich

MerkmaleOBJSTLGFT-SystemeFBX3MF
MaterialienMTL- Nein .PBR- Ja , das ist gut .- Ja , das ist gut .
Hierarchie der Szenen- Nein .- Nein .- Ja , das ist gut .- Ja , das ist gut .- Ja , das ist gut .
Animationsstücke- Nein .- Nein .- Ja , das ist gut .- Ja , das ist gut .- Nein .
Binärmodus- Nein .- Ja , das ist gut .GLB- Ja , das ist gut .ZIP
3D printing readyBegrenzt- Ja , das ist gut .- Nein .- Nein .- Ja , das ist gut .
Web-Auslieferung- Nein .- Nein .- Ja , das ist gut .- Nein .- Nein .

Zusammenfassung der Ergebnisse

3D FOSS für .NET bietet Ihnen eine einheitliche, konsistente API zum Arbeiten mit allen wichtigen 3d-Dateiformaten. Das Muster ist immer das gleiche: Erstellen Sie einen Scene,- Ich rufe . Open() die Optionen für das Format und den Aufruf laden, konfigurieren oder nicht. Save() Die Formaterkennung, die streambasierte E/A und die Batch-Konvertierung machen es einfach in jede .NET-Pipeline zu integrieren.

Weitere Informationen: