Kami dengan senang hati mengumumkan ketersediaan Aspose.3D FOSS for .NET – sebuah perpustakaan gratis, sumber terbuka untuk bekerja dengan format file 3D dalam aplikasi .NET. Dibangun sebagai solusi C# murni tanpa ketergantungan native, perpustakaan ini menargetkan .NET 10.0 dan yang lebih baru, menjadikannya dapat diakses oleh berbagai proyek dan lingkungan.
Posting ini menjelaskan apa yang ditawarkan perpustakaan, cara memulai, dan langkah selanjutnya.
Apa Itu Aspose.3D FOSS untuk .NET?
Aspose.3D FOSS for .NET adalah perpustakaan pemrosesan file 3D ringan yang dipublikasikan di bawah lisensi MIT. Ia menyediakan API scene-graph yang memungkinkan Anda memuat, memeriksa, mengubah, dan menyimpan model 3D dalam berbagai format yang banyak digunakan. Perpustakaan ini sepenuhnya ditulis dalam C# dan tidak memerlukan binari native eksternal atau konfigurasi khusus platform.
Kode sumber tersedia di GitHub: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
Sorotan Utama
- C# murni – tanpa P/Invoke, tanpa perpustakaan native, tanpa batasan platform.
- .NET 10.0+ kompatibel.
- berlisensi MIT – gunakan dalam proyek pribadi, komersial, atau proprietari tanpa batasan.
- Arsitektur scene-graph – sebuah pohon yang familiar berisi node, mesh, kamera, dan material.
- Dukungan multi-format – membaca dan menulis file OBJ, STL, glTF 2.0, GLB, FBX, Collada, dan 3MF.
Mulai Cepat
Instalasi NuGet
Tambahkan paket NuGet ke proyek Anda:
dotnet add package Aspose.3D --version 26.1.0
Konversi Pertama Anda
Kasus penggunaan paling sederhana adalah memuat file 3D dalam satu format dan menyimpannya dalam format lain. Berikut adalah konversi dua baris dari OBJ ke STL:
using Aspose.ThreeD;
var scene = new Scene();
scene.Open("cube.obj");
scene.Save("output.stl");
The Scene class adalah titik masuk utama. Panggil scene.Open() dengan jalur file untuk memuat model, lalu panggil Save() dengan jalur target. Perpustakaan mengidentifikasi format dari ekstensi file.
Membangun Scene dari Awal
Anda juga dapat membuat scene secara programatis:
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
var scene = new Scene();
var box = new Box(2, 2, 2);
var node = scene.RootNode.CreateChildNode("Box", box);
node.Transform.Translation = new FVector3(1, 2, 3);
scene.Save("scene.gltf");
Ini membuat scene baru, menambahkan primitif kotak sebagai node anak di bawah root, menempatkannya pada koordinat (1, 2, 3), dan mengekspor hasilnya sebagai file glTF.
Memuat dengan Opsi Spesifik Format
Ketika Anda memerlukan kontrol yang lebih halus atas proses pemuatan, setiap format menyediakan kelas opsi khusus. Misalnya, memuat file STL dengan opsi eksplisit:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
var scene = new Scene();
var opts = new StlLoadOptions();
scene.Open("part.stl", opts);
// Inspect the loaded scene
Console.WriteLine("Root children: " + scene.RootNode.ChildNodes.Count);
// Re-export as OBJ
scene.Save("part.obj");
The scene.Open() metode menerima salah satu tipe opsi muat: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, FbxLoadOptions, atau TmfLoadOptions.
Menelusuri Graph Scene
Setelah scene dimuat, Anda dapat menelusuri pohon node untuk memeriksa atau memodifikasi isinya:
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
var scene = new Scene();
scene.Open("model.gltf");
foreach (var child in scene.RootNode.ChildNodes)
{
Console.WriteLine("Node: " + child.Name);
Console.WriteLine(" Translation: " + child.Transform.Translation);
if (child.Entity is Mesh mesh)
{
Console.WriteLine(" Vertices: " + mesh.ControlPoints.Count);
}
}
Pola ini berguna untuk debugging, menghasilkan laporan tentang isi model, atau memodifikasi bagian tertentu dari scene secara selektif sebelum mengekspor ulang.
Menerapkan Transformasi
Penempatan node dalam ruang 3D dilakukan melalui Transform properti pada setiap Node:
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
var scene = new Scene();
var parent = scene.RootNode.CreateChildNode("Parent");
parent.Transform.Translation = new FVector3(10, 0, 0);
var child = parent.CreateChildNode("Child");
child.Transform.Translation = new FVector3(5, 0, 0);
child.Transform.Scale = new FVector3(2, 2, 2);
// Child's world position is (15, 0, 0) due to
// parent-child transform inheritance
scene.Save("transformed.gltf");
Transformasi mengikuti model pewarisan standar orang tua‑anak: posisi ruang dunia anak adalah kombinasi dari transformasi lokalnya dan semua transformasi leluhur hingga root.
Apa yang Disertakan
Perpustakaan ini dilengkapi dengan seperangkat kemampuan terfokus yang dirancang di sekitar model graph scene 3D.
Graph Scene
Grafis adegan adalah tulang punggung API. Setiap file 3D direpresentasikan sebagai struktur pohon:
| Kelas | Peran |
|---|---|
Scene | Kontainer tingkat atas; akar dari grafik adegan |
Node | Posisi bernama dalam pohon; menyimpan transformasi dan node anak |
Entity | Basis abstrak untuk objek visual yang terpasang pada node |
Mesh | Geometri poligonal – titik, muka, normal |
Camera | Definisi kamera virtual |
Transform | Translasi, rotasi, dan skala lokal untuk sebuah node |
GlobalTransform | Transformasi ruang-dunia yang dihitung |
Primitif Bawaan
Edisi .NET mencakup kelas bentuk parametrik yang dapat dipasang langsung ke node atau dikonversi menjadi Mesh:
- Kotak – kotak sejajar sumbu dengan lebar, tinggi, dan kedalaman yang dapat dikonfigurasi.
- Bola – bola parametrik dengan jari-jari yang dapat dikonfigurasi.
- Silinder – silinder parametrik dengan jari-jari dan tinggi yang dapat dikonfigurasi.
var sphere = new Sphere(1);
var mesh = sphere.ToMesh();
Console.WriteLine("Vertices: " + mesh.ControlPoints.Count);
Material
Pustaka menyediakan beberapa tipe material:
- LambertMaterial – material klasik hanya difus dengan komponen warna ambient, diffuse, emissive, dan reflective.
- PhongMaterial – memperluas Lambert dengan sorotan specular dan shininess.
- PbrMaterial – material rendering berbasis fisik dengan warna dasar, metallic, roughness, occlusion, dan slot tekstur.
Utilitas Matematika
The Aspose.ThreeD namespace mencakup primitif matematika penting:
- FVector3 – vektor 3-komponen presisi tunggal untuk posisi, arah, dan skala. Digunakan oleh
Transform.TranslationdanTransform.Scale. - Vector4 – vektor 4-komponen presisi tunggal untuk titik kontrol dan normal.
- Matrix4 – matriks transformasi 4x4.
- Quaternion – representasi rotasi. Digunakan oleh
Transform.Rotation. - BoundingBox – kotak pembatas berorientasi sumbu untuk kueri spasial.
var a = new FVector3(1, 0, 0);
var b = new FVector3(0, 1, 0);
// Vector operations for spatial computations
Opsi Muat dan Simpan
Setiap format memiliki kelas opsi khusus yang memungkinkan Anda mengontrol perilaku impor dan ekspor:
| Format | Opsi Muat | Opsi Simpan |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| glTF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | FbxSaveOptions |
| 3MF | TmfLoadOptions | TmfSaveOptions |
Sebagai contoh, untuk memuat file OBJ dengan pembalikan koordinat dan normalisasi normal:
var opts = new ObjLoadOptions();
opts.FlipCoordinateSystem = true;
opts.NormalizeNormal = true;
scene.Open("model.obj", opts);
Format yang Didukung
Tabel berikut merangkum format yang dapat dibaca dan ditulis oleh Aspose.3D FOSS untuk .NET.
| Format | Ekstensi | Impor | Ekspor | Catatan |
|---|---|---|---|---|
| OBJ | .obj | Ya | Ya | Dengan material MTL |
| STL | .stl | Ya | Ya | Biner + ASCII |
| glTF 2.0 | .gltf | Ya | Ya | format JSON |
| GLB | .glb | Ya | Ya | Binary glTF |
| FBX | .fbx | Ya | Ya | mode ASCII dan biner |
| Collada | .dae | Ya | Ya | |
| 3MF | .3mf | Ya | Ya | format manufaktur 3D berbasis ZIP |
Panduan Pemilihan Format
Memilih format yang tepat tergantung pada kasus penggunaan Anda:
- OBJ ideal ketika Anda membutuhkan kompatibilitas maksimum di seluruh alat 3D. Hampir setiap aplikasi pemodelan dapat membaca dan menulis OBJ. Ini bekerja dengan baik untuk pertukaran data mesh tetapi hanya membawa informasi material dasar melalui file MTL pendamping.
- STL adalah format pilihan untuk alur kerja pencetakan 3D. Ia menyimpan geometri triangulasi mentah tanpa material atau hierarki adegan, yang persis seperti yang diharapkan perangkat lunak slicer.
- glTF adalah standar modern untuk web dan 3D waktu nyata. Ia mendukung material PBR, hierarki adegan lengkap, dan dirancang untuk transmisi yang efisien. Gunakan glTF saat membangun penampil berbasis web atau menargetkan pipeline rendering waktu nyata apa pun.
- FBX sangat terintegrasi dalam alur kerja pengembangan game dan pembuatan konten digital. Ia mendukung data adegan kaya termasuk hierarki dan material. Aspose.3D FOSS untuk .NET mendukung FBX impor dan ekspor dalam mode ASCII dan biner.
- 3MF adalah format pencetakan 3D modern yang mendukung metadata kaya, material, dan adegan multi-objek dalam satu paket berbasis ZIP.
Keterbatasan yang Diketahui
Scene.Render() adalah tidak didukung di edisi FOSS. Memanggil metode ini akan melempar sebuah NotImplementedException. Perpustakaan ini dirancang untuk pemrosesan 3D berbasis file – memuat, memanipulasi, mentransformasi, dan menyimpan model – bukan untuk rendering waktu nyata ke tampilan.
Sumber Terbuka dan Lisensi
Aspose.3D FOSS untuk .NET dirilis di bawah MIT License. Ini berarti Anda bebas untuk:
- Menggunakan perpustakaan dalam aplikasi komersial dan proprietari.
- Modifikasi kode sumber agar sesuai dengan kebutuhan Anda.
- Distribusikan perpustakaan sebagai bagian dari perangkat lunak Anda sendiri.
Tidak ada biaya royalti, tidak ada batasan penggunaan, dan tidak ada persyaratan atribusi selain yang ditentukan dalam lisensi MIT.
Kode sumber lengkap dihosting di GitHub, dan kontribusi dipersilakan: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
Persyaratan Sistem
| Persyaratan | Rincian |
|---|---|
| .NET versi | 10.0 or later |
| Ketergantungan | Tidak ada (C# murni) |
| Platform | Platform apa pun yang menjalankan .NET |
| Manajer paket | NuGet |
Memulai
Berikut adalah sumber daya untuk membantu Anda memulai:
- Dokumentasi – panduan komprehensif dan penjelasan API tersedia di situs dokumentasi Aspose.3D.
- Basis Pengetahuan – artikel cara praktis dan tips pemecahan masalah dalam Aspose.3D KB.
- Referensi API – referensi kelas dan metode terperinci pada Aspose.3D Referensi API.
- Kode Sumber – jelajahi dan berkontribusi di GitHub.
- NuGet – paket ini dipublikasikan sebagai
Aspose.3Ddi NuGet.
Kasus Penggunaan Umum
Berikut beberapa skenario praktis di mana Aspose.3D FOSS untuk .NET sangat cocok:
Pipeline Konversi Format
Banyak tim menerima aset 3D dalam satu format tetapi membutuhkannya dalam format lain. Tim desain mungkin bekerja dengan FBX sementara tim web membutuhkan glTF. Perpustakaan ini memungkinkan Anda membangun pipeline konversi otomatis:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
// Convert all incoming FBX assets to GLB for the web team
var scene = new Scene();
scene.Open("asset.fbx");
scene.Save("asset.glb");
3D Model Inspection and Validation
Sebelum mengintegrasikan aset 3D ke dalam aplikasi Anda, Anda mungkin ingin memvalidasi isinya — memeriksa jumlah node, memverifikasi geometri, atau memastikan bahwa elemen yang diharapkan ada:
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
var scene = new Scene();
scene.Open("model.obj");
int nodeCount = scene.RootNode.ChildNodes.Count;
Console.WriteLine("Top-level nodes: " + nodeCount);
foreach (var child in scene.RootNode.ChildNodes)
{
if (child.Entity is Mesh mesh)
{
Console.WriteLine(child.Name + ": "
+ mesh.ControlPoints.Count + " vertices");
}
}
Perakitan Adegan
Anda dapat memuat beberapa model dan menggabungkannya menjadi satu adegan:
using Aspose.ThreeD;
var scene = new Scene();
var part1 = new Scene();
part1.Open("chassis.obj");
var part2 = new Scene();
part2.Open("wheels.obj");
// Add nodes from each part into the combined scene
foreach (var child in part1.RootNode.ChildNodes)
{
scene.RootNode.ChildNodes.Add(child);
}
foreach (var child in part2.RootNode.ChildNodes)
{
scene.RootNode.ChildNodes.Add(child);
}
scene.Save("assembled.gltf");
Apa Selanjutnya
Dalam postingan mendatang, kami akan membahas:
- Penjelajahan mendalam tentang fitur utama API scene-graph, material, dan utilitas matematika.
- Panduan praktis untuk bekerja dengan setiap format 3D yang didukung — OBJ, STL, glTF, FBX, dan 3MF — termasuk opsi muat/simpan dan pola konversi batch.
Pantau terus, dan silakan menjelajahi perpustakaan serta membagikan umpan balik Anda di GitHub.