Kami senang mengumumkan ketersediaan Aspose3D FOSS untuk .NET – sebuah perpustakaan open-source gratis untuk bekerja dengan format file 3D dalam aplikasi .NET. Dibangun sebagai solusi C# murni tanpa ketergantungan asli, perpustakaannya menargetkan .Net 10.0 dan lebih baru, membuatnya dapat diakses oleh berbagai proyek dan lingkungan.
Posting ini menelusuri apa yang ditawarkan perpustakaan, bagaimana memulai dan ke mana harus pergi dari sini.
Apa itu Aspose.3D FOSS untuk .NET?
Aspose.3D FOSS for .NET adalah perpustakaan pemrosesan file 3D ringan yang diterbitkan di bawah Lisensi MIT. Ini menyediakan API grafik adegan yang memungkinkan Anda memuat, memeriksa, mengubah, dan menyimpan model 3D di beberapa format yang banyak digunakan. Perpustakaan ini sepenuhnya ditulis dalam C # dan tidak memerlukan biner asli eksternal atau konfigurasi khusus platform.
Kode sumbernya tersedia di GitHub: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
Penjelasan Utama
- C# murni – tidak ada P/Invoke, tidak terdapat perpustakaan asli, dan tak ada pembatasan platform.
- .NET 10.0+ kompatibel.
- MIT dilisensikan – gunakan dalam proyek pribadi, komersial atau proprietary tanpa batasan.
- Arsitektur grafik adegan – pohon yang akrab dari node, mesh, kamera dan bahan.
- Dukungan multi-format – membaca dan menulis OBJ, STL, glTF 2.0, GLB, FBX, Collada, dan 3MF file.
Memulai dengan cepat
Instalasi NuGet
Tambahkan paket NuGet ke proyek Anda:
dotnet add package Aspose.3D.FOSSPemeluk Pertama Anda
Kasus penggunaan paling sederhana adalah memuat file 3D dalam satu format dan menyimpannya di format lain. Berikut ini konversi dua baris dari OBJ ke STL:
using Aspose.ThreeD;
var scene = new Scene();
scene.Open("cube.obj");
scene.Save("output.stl");
Pengelolaan Scene kelas adalah titik masuk pusat. scene.Open() dengan jalur file untuk memuat model, kemudian memanggil Save() Perpustakaan menyimpulkan format dari ekstensi file.
Membangun Adegan dari Awal
Anda juga dapat membangun adegan secara program:
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 adegan baru, menambahkan kotak primitif sebagai node anak di bawah akar, memposisikan itu pada koordinat (1, 2, 3), dan mengekspor hasilnya sebagai file glTF.
Mengisi dengan opsi khusus format
Ketika Anda membutuhkan kontrol yang lebih halus atas proses pemuatan, setiap format menyediakan kelas opsi khusus. Sebagai contoh, memuat file STL dengan pilihan 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");
Pengelolaan scene.Open() metode menerima salah satu jenis opsi beban: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, FbxLoadOptions, atau TmfLoadOptions.
Menjelajahi Grafik Tampilan
Setelah adegan dimuat, Anda dapat berjalan di 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 konten model, atau secara selektif memodifikasi bagian dari adegan sebelum diekspor kembali.
Menerapkan Transformasi
Posisi node dalam ruang 3D dilakukan melalui Transform properti pada masing-masing 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 warisan orang tua-anak standar: posisi ruang dunia anak adalah kombinasi transformasi lokalnya dan semua transformas nenek moyang sampai akar.
Apa yang Termasuk?
Perpustakaan ini dilengkapi dengan serangkaian kemampuan yang terfokus dan dirancang di sekitar model grafik adegan 3D.
Grafik Adegan
Grafik adegan adalah tulang punggung API. Setiap file 3D direpresentasikan sebagai struktur pohon:
| Kelas | Peran dan peran |
|---|---|
Scene | Kontainer tingkat atas; akar grafik adegan |
Node | Posisi yang diberi nama di pohon; memegang transformasi dan node anak |
Entity | Basis abstrak untuk objek visual yang terpasang pada node |
Mesh | Geometri poligonal – titik, permukaan, normal |
Camera | Definisi kamera virtual |
Transform | Terjemahan lokal, rotasi dan skala untuk node |
GlobalTransform | Transformasi dunia-ruang yang dihitung |
Primitatif yang Terbuat dari Baju
Edisi .NET mencakup kelas bentuk parameter yang dapat dilampirkan ke node secara langsung atau dikonversi menjadi Mesh:
- Kotak – kotak berorientasi sumbu dengan lebar, tinggi dan kedalaman yang dapat dikonfigurasi.
- Sphere (Sfera) – bola parameter dengan radius yang dapat dikonfigurasi.
- Silinder - silinder parameter dengan radius dan tinggi yang dapat dikonfigurasi.
var sphere = new Sphere(1);
var mesh = sphere.ToMesh();
Console.WriteLine("Vertices: " + mesh.ControlPoints.Count);
Bahan-bahan
Perpustakaan menyediakan berbagai jenis materi:
- LambertMaterial – bahan klasik yang hanya difus dengan komponen warna ambient, diffuse, emissive dan reflective.
- PhongMaterial – memperpanjang Lambert dengan sorotan cermin dan bersinar.
- PbrMaterial – bahan rendering berbasis fisik dengan warna dasar, logam, kasar, penutup, dan slot tekstur.
Utilitas Matematika
Pengelolaan Aspose.ThreeD namespace mencakup primitif matematika penting:
- FVektor3 – vektor pengambang 3-komponen presisi tunggal (
X,Y,Z). Digunakan oleh:Transform.Translationdan (b)Transform.Scale. - Vektor4 (
Aspose.ThreeD.Utilities) – vektor 4-komponen presisi ganda (x,y,z,wCatatan: untuk titik kontrol dan norma.Aspose.ThreeD.Vector4(float, bidang huruf besar) juga ada;Mesh.ControlPointsmenggunakan varian Utilities presisi ganda. - Matrix4 – 4x4 transformasi matriks.
- Quaternion (empat) – rotasi representasi. Digunakan oleh
Transform.Rotation. - BoundingBox – kotak batas yang sejajar dengan sumbu untuk pertanyaan spasial.
var a = new FVector3(1, 0, 0);
var b = new FVector3(0, 1, 0);
// Vector operations for spatial computations
Pemasangan dan menyimpan opsi
Setiap format memiliki kelas pilihan khusus yang memungkinkan Anda mengontrol perilaku impor dan ekspor:
| Format (Inggris) | Opsi beban | Simpan Pilihan |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| glTF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | FbxSaveOptions |
| 3MF | TmfLoadOptions | TmfSaveOptions |
Misalnya, untuk memuat file OBJ dengan flipping koordinat dan normalisasi normal:
var opts = new ObjLoadOptions();
opts.FlipCoordinateSystem = true;
opts.NormalizeNormal = true;
scene.Open("model.obj", opts);
Format yang Didhukung
Tabel berikut ini meringkas format yang dapat dibaca dan ditulis oleh Aspose.3D FOSS for .NET.
| Format (Inggris) | Perpanjangan | Impor | Ekspor | Catatan |
|---|---|---|---|---|
| OBJ | .obj | Ya, aku tahu. | Ya, aku tahu. | Dengan bahan MTL |
| STL | .stl | Ya, aku tahu. | Ya, aku tahu. | Binary + ASCII |
| glTF (Penggunaan) | .gltf, .glb | Ya, aku tahu. | Ya, aku tahu. | Format JSON; .glb adalah varian biner mandiri. |
| FBX | .fbx | Ya, aku tahu. | Ya, aku tahu. | Ekspor biner saja; ASCII ekspor dinyatakan tetapi tidak aktif dalam versi ini |
| COLLADA | .dae | Ya, aku tahu. | Ya, aku tahu. | |
| 3MF | .3mf | Ya, aku tahu. | Ya, aku tahu. | Format pembuatan 3D berbasis ZIP |
Panduan Pemilihan Format
Memilih format yang tepat tergantung pada kasus penggunaan Anda:
- OBJ adalah ideal ketika Anda membutuhkan kompatibilitas maksimum di antara alat 3D. Hampir setiap aplikasi pemodelan dapat membaca dan menulis OBJ. Ini bekerja dengan baik untuk pertukaran data mesh tetapi hanya membawa informasi materi dasar melalui file MTL pendamping.
- STL adalah format pilihan untuk alur kerja pencetakan 3D. Ini menyimpan geometri segitiga mentah tanpa bahan atau hierarki adegan, yang persis apa yang diharapkan perangkat lunak pemotong.
- glTF (Penggunaan) adalah standar modern untuk web dan real-time 3D. Ini mendukung bahan PBR, hirarki adegan penuh, dan dirancang untuk transmisi yang efisien. Gunakan glTF saat membangun pemirsa berbasis web atau menargetkan pipa rendering waktu nyata apa pun.
- FBX FOSS sangat terintegrasi ke dalam pengembangan game dan alur kerja pembuatan konten digital. Ini mendukung data adegan kaya termasuk hierarki dan bahan. Aspose.3D Foss untuk .NET mendukung FBX impor dan ekspor.Catatan: ekspor menghasilkan FBX biner hanya Kode ASCII FBx ada di sumber tetapi tidak terhubung ke jalur ekspor dalam versi ini.
- 3MF adalah format pencetakan 3D modern yang mendukung metadata, bahan dan adegan multi-objek kaya dalam satu paket berbasis ZIP.
Keterbatasan yang Diketahui
Scene.Render() adalah: tidak didukung dalam edisi FOSS. Menghubungi metode ini akan melemparkan sebuah NotImplementedException.Perpustakaan ini dirancang untuk pemrosesan 3D berbasis file – memuat, memanipulasi, mengubah, dan menyimpan model– daripada rendering real-time ke layar.
Open Source dan Lisensi
Aspose.3D FOSS untuk .NET dirilis di bawah Lisensi MIT.Ini berarti Anda bebas untuk:
- Gunakan perpustakaan dalam aplikasi komersial dan proprietary.
- Mengubah kode sumber sesuai dengan kebutuhan Anda.
- Mendistribusikan perpustakaan sebagai bagian dari perangkat lunak Anda sendiri.
Tidak ada biaya royalti, tidak ada batasan penggunaan, dan tidak terdapat persyaratan atribusi di luar apa yang ditentukan oleh lisensi MIT.
Kode sumber lengkapnya di-host di GitHub, dan kontribusi yang diterima: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
Persyaratan Sistem
| Persyaratan | Detailnya |
|---|---|
| .Versi .NET | 10.0 or later |
| Ketergantungan | Tidak ada (C# murni) |
| Platform | Platform mana pun yang menjalankan .NET |
| Pengelola paket | NuGet |
Memulai
Berikut adalah sumber daya yang dapat membantu Anda untuk mulai bekerja:
- Dokumentasi – panduan komprehensif dan API walkthrough tersedia di situs web Situs dokumentasi 3D.
- Basis Pengetahuan – artikel praktis dan tips pemecahan masalah di Aspose.3D KB.
- Referensi API – referensi kelas dan metode yang terperinci pada Aspose.3D API Referensi.
- Kode sumber – menelusuri dan berkontribusi pada GitHub.
- NuGet – paket ini dipublikasikan sebagai:
Aspose.3Ddi NuGet.
Kasus Penggunaan Umum
Berikut adalah beberapa skenario praktis di mana Aspose.3D FOSS untuk .NET cocok:
Format Konversi Pipelines
Banyak tim menerima aset 3D dalam satu format tetapi membutuhkannya di format lain. Tim desain mungkin bekerja di FBX sementara tim web memerlukan glTF. Perpustakaan memungkinkan Anda membangun pipa 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 hadir:
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");
}
}
Pertemuan Tampilan
Anda dapat memuat beberapa model dan menggabungkannya ke dalam 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 yang Akan Terjadi Selanjutnya?
Dalam posting mendatang, kami akan membahas:
- Sebuah penyelaman mendalam ke dalam fitur utama API grafik adegan, bahan, dan utilitas matematika.
- Panduan praktis untuk bekerja dengan setiap format 3D yang didukung – OBJ, STL, glTF, FBX, dan 3MF – termasuk opsi loading/save dan pola konversi batch.
Tetaplah mengikuti, dan bebaslah untuk menjelajahi perpustakaan dan berbagi umpan balik Anda di GitHub.