Aspose.3D FOSS untuk .NET mendukung tujuh format file 3D: OBJ, STL, glTF, GLB, FBX, Collada, dan 3MF. Posting ini adalah panduan praktis, format demi format, yang menunjukkan cara memuat dan menyimpan masing‑masing, opsi apa yang tersedia, dan cara mengonversi di antara mereka.
Semua contoh menggunakan Aspose.ThreeD namespace:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
Paket NuGet:
dotnet add package Aspose.3D --version 26.1.0
OBJ (Wavefront)
OBJ adalah format berbasis teks yang didukung secara luas untuk geometri mesh. Aspose.3D FOSS memuat file OBJ bersama dengan file .mtl material.
Memuat OBJ
var scene = new Scene();
scene.Open("model.obj");
Console.WriteLine("Nodes: " + scene.RootNode.ChildNodes.Count);
Memuat 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 Penyimpanan
var opts = new ObjSaveOptions();
scene.Save("output.obj", opts);
STL (Stereolithography)
STL adalah format standar untuk pencetakan 3D. Ia menyimpan geometri segitiga mentah tanpa material atau hierarki. Aspose.3D FOSS mendukung STL baik dalam bentuk biner maupun ASCII.
Memuat 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 Penyimpanan
var opts = new StlSaveOptions();
// Control binary mode, scale, and coordinate flipping
scene.Save("output.stl", opts);
STL Round-Trip
// 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 3D waktu nyata. Ia mendukung material PBR, hierarki adegan lengkap, dan pengemasan biner yang efisien (GLB).
Memuat glTF
var scene = new Scene();
scene.Open("model.gltf");
Memuat 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 binary yang berdiri sendiri .glb file, simpan dengan .glb ekstensi. Perpustakaan menginferensikan format binary glTF 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 dalam mode ASCII maupun binary.
Memuat FBX
var scene = new Scene();
scene.Open("model.fbx");
Memuat dengan Opsi
var opts = new FbxLoadOptions();
var scene = new Scene();
scene.Open("model.fbx", opts);
Menyimpan sebagai 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);
Menyimpan sebagai 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.
Memuat 3MF
var scene = new Scene();
scene.Open("model.3mf");
Memuat 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 Opsi
var opts = new TmfSaveOptions();
scene.Save("output.3mf", opts);
I/O Berbasis Stream
Semua format mendukung pemuatan dari dan penyimpanan 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 secara otomatis mendeteksi format dari ekstensi file atau konten stream:
// 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 mengonversi beberapa file, iterasi melalui direktori dan konversi 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
| Fitur | OBJ | STL | glTF | FBX | 3MF |
|---|---|---|---|---|---|
| Material | MTL | Tidak | PBR | Ya | Ya |
| Hirarki adegan | Tidak | Tidak | Ya | Ya | Ya |
| Stub animasi | Tidak | Tidak | Ya | Ya | Tidak |
| Mode biner | Tidak | Ya | GLB | Ya | ZIP |
| 3D printing ready | Terbatas | Ya | Tidak | Tidak | Ya |
| Pengiriman web | Tidak | Tidak | Ya | Tidak | Tidak |
Ringkasan
Aspose.3D FOSS untuk .NET memberi Anda satu API yang konsisten untuk bekerja dengan semua format file 3D utama. Polanya selalu sama: buat sebuah Scene, panggil Open() untuk memuat, secara opsional mengonfigurasi opsi khusus format, dan panggil Save() untuk mengekspor. Deteksi format, I/O berbasis aliran, dan konversi batch memudahkan integrasi ke dalam pipeline .NET apa pun.
Untuk informasi lebih lanjut:
- Referensi API – dokumentasi kelas dan metode yang terperinci.
- Basis Pengetahuan – artikel cara praktis.
- GitHub – kode sumber dan pelacak masalah.