Aspose.3D FOSS untuk .NET mendukung tujuh format file 3D: OBJ, STL, glTF (Penggunaan), GLB, FBX, Kollada, dan 3MF. Pos ini adalah panduan praktis, format demi format yang menunjukkan cara memuat dan menyimpan masing-masing, opsi apa yang tersedia, dan bagaimana mengonversi di antara mereka.

Semua contoh menggunakan Aspose.ThreeD ruang nama:

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

Paket NuGet:

dotnet add package Aspose.3D.FOSS

OBJ (Wavefront)

OBJ adalah format berbasis teks yang didukung secara luas untuk geometri mesh. Aspose.3D FOSS memuat file OB J bersama dengan pendamping mereka. .mtl file materi.

Pemasangan OBJ

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

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

Pemasangan dengan Opsi

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

Menyimpan sebagai OBJ

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

scene.Save("output.obj");

OBJ dengan opsi Simpan

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

STL (Stereolitografi)

STL adalah format standar untuk pencetakan 3D. Ini menyimpan geometri triangulasi mentah tanpa bahan atau hierarki. Aspose.3D FOSS mendukung baik biner dan ASCII ST L .

Pemasangan STL

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

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

Menyimpan sebagai STL

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

scene.Save("output.stl");

STL dengan opsi Simpan

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

STL Perjalanan pulang-pergi

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

glTF adalah standar modern untuk web dan real-time 3D. Ini mendukung bahan PBR, hierarki adegan penuh, dan packing biner yang efisien (GLB).

Pemuatan glTF

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

Pemasangan dengan Opsi

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

Menyimpan sebagai glTF

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

scene.Save("output.gltf");

Menyimpan sebagai GLB (Binary glTF)

Untuk menghasilkan biner mandiri .glb file, menyimpan dengan a .glb Perpustakaan menyimpulkan format glTF biner dari ekstensi:

scene.Save("output.glb");

FBX (Filmbox)

FBX banyak digunakan dalam pengembangan game dan pembuatan konten digital. Aspose.3D FOSS untuk .NET mendukung FBx. impor dan ekspor.Ekspor menghasilkan FBX biner; kode ekspor ASCII FBx ada di sumber tetapi tidak dipanggil oleh jalur ekspor dalam versi ini. FbxSaveOptions class menyediakan pengaturan default.

Mengisi FBX

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

Pemasangan dengan Opsi

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

Menyimpan sebagai 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");

Menyimpan dengan Pilihan

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

Pemuatan 3MF

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

Pemasangan dengan Opsi

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

Menyimpan sebagai 3MF

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

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

Menyimpan dengan Pilihan

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

I/O berbasis aliran

Semua format mendukung loading dari dan menyimpan ke stream, yang berguna untuk layanan web dan pemrosesan cloud:

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

Deteksi Format

Perpustakaan dapat mendeteksi format secara otomatis dari ekstensi file atau konten streaming:

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

Konversi Batch

Untuk mengkonversi beberapa file, iterasi di atas direktori dan mengubah masing-masing:

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

Perbandingan Format

FiturnyaOBJSTLglTF (Penggunaan)FBX3MF
Bahan-bahanMTLTidak ada.PBRYa, aku tahu.Ya, aku tahu.
Hierarki adeganTidak ada.Tidak ada.Ya, aku tahu.Ya, aku tahu.Ya, aku tahu.
Bagian animasiTidak ada.Tidak ada.Ya, aku tahu.Ya, aku tahu.Tidak ada.
Mode binerTidak ada.Ya, aku tahu.GLBYa, aku tahu.ZIP
3D printing readyTerbatasYa, aku tahu.Tidak ada.Tidak ada.Ya, aku tahu.
Pengiriman webTidak ada.Tidak ada.Ya, aku tahu.Tidak ada.Tidak ada.

Ringkasan

3D FOSS untuk .NET memberi Anda API tunggal dan konsisten untuk bekerja dengan semua format file 3d utama. Pola selalu sama: membuat sebuah Scene, telepon Open() untuk memuat, secara opsional mengkonfigurasi opsi khusus format, dan memanggil Save() untuk mengekspor. Deteksi format, I/O berbasis stream, dan konversi batch membuatnya mudah diintegrasikan ke dalam pipa .NET apa pun.

Untuk informasi lebih lanjut: