Kami teruja untuk mengumumkan ketersediaan Aspose.3D FOSS for .NET – sebuah perpustakaan percuma, sumber terbuka untuk bekerja dengan format fail 3D dalam aplikasi .NET. Dibina sebagai penyelesaian C# tulen tanpa kebergantungan natif, perpustakaan ini menyasarkan .NET 10.0 dan ke atas, menjadikannya dapat diakses oleh pelbagai projek dan persekitaran.

Pos ini membimbing anda melalui apa yang ditawarkan oleh perpustakaan, cara memulakan, dan ke mana harus pergi seterusnya.

Apakah Aspose.3D FOSS untuk .NET?

Aspose.3D FOSS for .NET adalah perpustakaan pemprosesan fail 3D ringan yang diterbitkan di bawah MIT license. Ia menyediakan API graf-seni yang membolehkan anda memuat naik, memeriksa, menukar, dan menyimpan model 3D merentasi beberapa format yang banyak digunakan. Perpustakaan ini ditulis sepenuhnya dalam C# dan tidak memerlukan binari natif luaran atau konfigurasi khusus platform.

Kod sumber tersedia di GitHub: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET

Penekanan utama

  • C# Tulen – tiada P/Invoke, tiada perpustakaan natif, tiada sekatan platform.
  • .NET 10.0+ serasi.
  • dilisensikan MIT – gunakan ia dalam projek peribadi, komersial, atau proprietari tanpa sekatan.
  • Senibina graf-skena – pokok yang dikenali mengandungi nod, mesh, kamera, dan bahan.
  • Sokongan berbilang format – baca dan tulis fail OBJ, STL, glTF 2.0, GLB, FBX, Collada, dan 3MF.

Permulaan Cepat

Pemasangan NuGet

Tambah pakej NuGet ke projek anda:

dotnet add package Aspose.3D.Converter --version 1.0.0

Penukaran Pertama Anda

Kes penggunaan paling mudah ialah memuatkan fail 3D dalam satu format dan menyimpannya dalam format lain. Berikut ialah penukaran dua baris dari OBJ ke STL:

using Aspose.ThreeD;

var scene = new Scene();
scene.Open("cube.obj");
scene.Save("output.stl");

The Scene kelas adalah titik masuk utama. Panggil scene.Open() dengan laluan fail untuk memuatkan model, kemudian panggil Save() dengan laluan sasaran. Perpustakaan mengesan format daripada sambungan fail.

Membina Scene dari Awal

Anda juga boleh membina scene secara programatik:

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 mencipta scene baru, menambah primitif kotak sebagai nod anak di bawah root, meletakkannya pada koordinat (1, 2, 3), dan mengeksport hasilnya sebagai fail glTF.

Memuat dengan Pilihan Khusus Format

Apabila anda memerlukan kawalan yang lebih halus ke atas proses pemuatan, setiap format menyediakan kelas pilihan khusus. Sebagai contoh, memuat fail 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");

The scene.Open() kaedah menerima mana-mana jenis pilihan muat: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, FbxLoadOptions, atau TmfLoadOptions.

Menelusuri Graf Scene

Setelah scene dimuat, anda boleh menelusuri pokok nod untuk memeriksa atau mengubah kandungannya:

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

Corak ini berguna untuk penyahpepijatan, menjana laporan tentang kandungan model, atau mengubah bahagian scene secara terpilih sebelum dieksport semula.

Menerapkan Transformasi

Penempatan nod dalam ruang 3D dilakukan melalui Transform sifat 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 ibu-bapa-anak standard: kedudukan ruang-dunia anak adalah gabungan transformasi setempatnya dan semua transformasi nenek moyang sehingga ke root.

Apa yang Termasuk

Perpustakaan ini disertakan dengan set keupayaan terfokus yang direka sekitar model graf scene 3D.

Graf Adegan

Graf adegan adalah tulang belakang API. Setiap fail 3D diwakili sebagai struktur pokok:

KelasPeranan
SceneBekas peringkat atas; akar graf adegan
NodeKedudukan bernama dalam pokok; menyimpan transformasi dan nod anak
EntityAsas abstrak untuk objek visual yang dilampirkan pada nod
MeshGeometri poligon – titik sudut, muka, normal
CameraDefinisi kamera maya
TransformTerjemahan, putaran, dan skala setempat untuk satu nod
GlobalTransformTransformasi ruang-dunia yang dikira

Primitif Bawaan

Edisi .NET termasuk kelas bentuk parametrik yang boleh dilampirkan secara langsung kepada nod atau ditukar kepada Mesh:

  • Kotak – kotak selari paksi dengan lebar, tinggi, dan kedalaman yang boleh dikonfigurasi.
  • Sfera – sfera parametrik dengan jejari yang boleh dikonfigurasi.
  • Silinder – silinder parametrik dengan jejari dan ketinggian yang boleh dikonfigurasi.
var sphere = new Sphere(1);
var mesh = sphere.ToMesh();
Console.WriteLine("Vertices: " + mesh.ControlPoints.Count);

Bahan

Pustaka menyediakan pelbagai jenis bahan:

  • LambertMaterial – bahan klasik hanya difus dengan komponen warna ambient, difus, emisif, dan reflektif.
  • PhongMaterial – meluaskan Lambert dengan sorotan spekular dan kilauan.
  • PbrMaterial – bahan rendering berasaskan fizikal dengan warna asas, logam, kekasaran, okklusi, dan slot tekstur.

Utiliti Matematik

The Aspose.ThreeD ruang nama termasuk primitif matematik penting:

  • FVector3 – vektor 3-komponen dengan ketepatan tunggal untuk kedudukan, arah, dan skala. Digunakan oleh Transform.Translation dan Transform.Scale.
  • Vector4 – vektor 4-komponen dengan ketepatan tunggal untuk titik kawalan dan normal.
  • Matrix4 – matriks transformasi 4x4.
  • Quaternion – representasi putaran. Digunakan oleh Transform.Rotation.
  • BoundingBox – kotak sempadan selari paksi untuk pertanyaan spasial.
var a = new FVector3(1, 0, 0);
var b = new FVector3(0, 1, 0);
// Vector operations for spatial computations

Pilihan Muat dan Simpan

Setiap format mempunyai kelas pilihan khusus yang membolehkan anda mengawal tingkah laku import dan eksport:

FormatPilihan MuatPilihan Simpan
OBJObjLoadOptionsObjSaveOptions
STLStlLoadOptionsStlSaveOptions
glTF / GLBGltfLoadOptionsGltfSaveOptions
FBXFbxLoadOptionsFbxSaveOptions
3MFTmfLoadOptionsTmfSaveOptions

Sebagai contoh, untuk memuatkan fail OBJ dengan pembalikan koordinat dan penormalan normal:

var opts = new ObjLoadOptions();
opts.FlipCoordinateSystem = true;
opts.NormalizeNormal = true;

scene.Open("model.obj", opts);

Format yang Disokong

Jadual berikut merangkum format yang Aspose.3D FOSS untuk .NET boleh baca dan tulis.

FormatSambunganImportEksportNota
OBJ.objYaYaDengan bahan MTL
STL.stlYaYaBinari + ASCII
glTF 2.0.gltfYaYaformat JSON
GLB.glbYaYaBinary glTF
FBX.fbxYaYamod ASCII dan binari
Collada.daeYaYa
3MF.3mfYaYaformat pembuatan 3D berasaskan ZIP

Panduan Pemilihan Format

Memilih format yang tepat bergantung pada kes penggunaan anda:

  • OBJ adalah ideal apabila anda memerlukan keserasian maksimum merentasi alat 3D. Hampir setiap aplikasi pemodelan dapat membaca dan menulis OBJ. Ia berfungsi dengan baik untuk pertukaran data mesh tetapi hanya membawa maklumat bahan asas melalui fail MTL yang mengiringi.
  • STL adalah format pilihan untuk aliran kerja pencetakan 3D. Ia menyimpan geometri segitiga mentah tanpa bahan atau hierarki adegan, yang tepat apa yang dijangka oleh perisian pemotong.
  • glTF adalah piawaian moden untuk 3D web dan masa nyata. Ia menyokong bahan PBR, hierarki adegan penuh, dan direka untuk penghantaran yang cekap. Gunakan glTF apabila membina penonton berasaskan web atau menyasarkan mana-mana paip rendering masa nyata.
  • FBX terintegrasi secara mendalam dalam aliran kerja pembangunan permainan dan penciptaan kandungan digital. Ia menyokong data adegan yang kaya termasuk hierarki dan bahan. Aspose.3D FOSS untuk .NET menyokong FBX import dan eksport dalam kedua-dua mod ASCII dan binari.
  • 3MF adalah format pencetakan 3D moden yang menyokong metadata yang kaya, bahan, dan adegan berbilang objek dalam satu pakej berasaskan ZIP.

Keterbatasan yang Diketahui

Scene.Render() adalah tidak disokong dalam edisi FOSS. Memanggil kaedah ini akan menimbulkan satu NotImplementedException. Perpustakaan ini direka untuk pemprosesan 3D berasaskan fail – memuatkan, memanipulasi, menukar, dan menyimpan model – bukannya rendering masa nyata ke paparan.

Sumber Terbuka dan Pelesenan

Aspose.3D FOSS untuk .NET dikeluarkan di bawah Lesen MIT. Ini bermakna anda bebas untuk:

  • Gunakan perpustakaan dalam aplikasi komersial dan proprietari.
  • Ubah suai kod sumber mengikut keperluan anda.
  • Edarkan perpustakaan sebagai sebahagian daripada perisian anda.

Tiada yuran royalti, tiada had penggunaan, dan tiada keperluan atribusi selain apa yang ditetapkan oleh lesen MIT.

Kod sumber penuh dihoskan di GitHub, dan sumbangan dialu‑alukan: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET

Keperluan Sistem

KeperluanButiran
.versi .NET10.0 or later
KebergantunganTiada (C# tulen)
PlatformMana-mana platform yang menjalankan .NET
Pengurus pakejNuGet

Mula Menggunakan

Berikut ialah sumber-sumber untuk membantu anda memulakan dan menjalankan:

  • Dokumentasi – panduan komprehensif dan tutorial API tersedia di laman dokumentasi Aspose.3D.
  • Pangkalan Pengetahuan – artikel cara-cara praktikal dan tip penyelesaian masalah dalam Aspose.3D KB.
  • Rujukan API – rujukan kelas dan kaedah terperinci di Aspose.3D Rujukan API.
  • Kod Sumber – layari dan sumbangkan di GitHub.
  • NuGet – pakej ini diterbitkan sebagai Aspose.3D.Converter di NuGet.

Kes Penggunaan Biasa

Berikut ialah beberapa senario praktikal di mana Aspose.3D FOSS untuk .NET sesuai:

Saluran Penukaran Format

Banyak pasukan menerima aset 3D dalam satu format tetapi memerlukannya dalam format lain. Pasukan reka bentuk mungkin bekerja dalam FBX manakala pasukan web memerlukan glTF. Perpustakaan ini membolehkan anda membina saluran penukaran automatik:

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 mengesahkan kandungannya – memeriksa bilangan nod, mengesahkan geometri, atau memastikan elemen yang dijangka 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");
    }
}

Penyusunan Adegan

Anda boleh memuatkan pelbagai 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 Seterusnya

Dalam kiriman akan datang, kami akan membincangkan:

  • Penjelajahan mendalam mengenai ciri utama API graf adegan, bahan, dan utiliti matematik.
  • Panduan praktikal untuk bekerja dengan setiap format 3D yang disokong – OBJ, STL, glTF, FBX, dan 3MF – termasuk pilihan muat naik/simpan dan corak penukaran pukal.

Terus ikuti, dan jangan ragu untuk meneroka perpustakaan serta berkongsi maklum balas anda di GitHub.