S veseljem najavljujemo dostupnost Aspose.3D FOSS for .NET – besplatna, open‑source biblioteka za rad s 3D formatima datoteka u .NET aplikacijama. Izgrađena kao čisto C# rješenje bez izvornih ovisnosti, biblioteka cilja .NET 10.0 i novije, čineći je dostupnom širokom rasponu projekata i okruženja.
Ovaj post prolazi kroz ono što biblioteka nudi, kako započeti i kamo dalje.
Što je Aspose.3D FOSS za .NET?
Aspose.3D FOSS for .NET je lagana biblioteka za obradu 3D datoteka objavljena pod MIT licenca. Pruža API za scene‑graph koji vam omogućuje učitavanje, pregled, transformaciju i spremanje 3D modela kroz nekoliko široko korištenih formata. Biblioteka je u potpunosti napisana u C# i ne zahtijeva vanjske izvorne binarne datoteke niti konfiguracije specifične za platformu.
Izvorni kod dostupan je na GitHubu: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
Ključne značajke
- Čisto C# – bez P/Invoke, bez izvornih biblioteka, bez ograničenja platforme.
- .NET 10.0+ kompatibilno.
- MIT licencirano – koristite ga u osobnim, komercijalnim ili vlasničkim projektima bez ograničenja.
- Arhitektura scene‑graph – poznato stablo čvorova, mreža, kamera i materijala.
- Podrška za više formata – čitaj i piši OBJ, STL, glTF 2.0, GLB, FBX, Collada i 3MF datoteke.
Brzi početak
NuGet instalacija
Dodajte NuGet paket u svoj projekt:
dotnet add package Aspose.3D --version 26.1.0
Vaša prva konverzija
Najjednostavniji slučaj upotrebe je učitavanje 3D datoteke u jednom formatu i spremanje u drugi. Evo dvoredne konverzije iz OBJ u STL:
using Aspose.ThreeD;
var scene = new Scene();
scene.Open("cube.obj");
scene.Save("output.stl");
The Scene klasa je središnja ulazna točka. Pozovite scene.Open() s putanjom do datoteke za učitavanje modela, zatim pozovite Save() s ciljanom putanjom. Biblioteka zaključuje format iz ekstenzije datoteke.
Izgradnja scene od nule
Možete također programatski konstruirati scene:
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");
Ovo stvara novu scenu, dodaje primitivni kutijasti oblik kao dijete čvor pod korijenom, postavlja ga na koordinate (1, 2, 3) i izvozi rezultat kao glTF datoteku.
Učitavanje s opcijama specifičnim za format
Kada trebate finiju kontrolu nad procesom učitavanja, svaki format pruža posebnu klasu opcija. Na primjer, učitavanje STL datoteke s eksplicitnim opcijama:
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() metoda prihvaća bilo koju od vrsta opcija učitavanja: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, FbxLoadOptions, ili TmfLoadOptions.
Prolazak kroz graf scene
Nakon što je scena učitana, možete proći kroz stablo čvorova kako biste pregledali ili modificirali njegov sadržaj:
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);
}
}
Ovaj obrazac je koristan za otklanjanje grešaka, generiranje izvješća o sadržaju modela ili selektivno modificiranje dijelova scene prije ponovnog izvoza.
Primjena transformacija
Pozicioniranje čvorova u 3D prostoru vrši se putem Transform svojstva na svakom 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");
Transformacije slijede standardni model nasljeđivanja roditelj‑dijete: položaj djeteta u svjetskom prostoru je kombinacija njegove lokalne transformacije i svih transformacija pretka do korijena.
Što je uključeno
Biblioteka dolazi s fokusiranim skupom mogućnosti dizajniranih oko 3D modela grafa scene.
Graf scene
Graf scena je temelj API-ja. Svaka 3D datoteka prikazana je kao struktura stabla:
| Klasa | Uloga |
|---|---|
Scene | Kontejner najviše razine; korijen grafika scene |
Node | Imenovana pozicija u stablu; sadrži transformacije i podređene čvorove |
Entity | Apstraktna baza za vizualne objekte pričvršćene uz čvorove |
Mesh | Poligonalna geometrija – vrhovi, površine, normale |
Camera | Definicija virtualne kamere |
Transform | Lokalni pomak, rotacija i skaliranje za čvor |
GlobalTransform | Izračunata transformacija u svjetskom prostoru |
Ugrađene primitive
Izdanju .NET uključuje parametrijske klase oblika koje se mogu izravno pričvrstiti uz čvorove ili pretvoriti u Mesh:
- Kutija – kutija poravnata s osima s podesivom širinom, visinom i dubinom.
- Kugla – parametrijska kugla s podesivim radijusom.
- Cilindar – parametarski cilindar s konfigurabilnim radijusima i visinom.
var sphere = new Sphere(1);
var mesh = sphere.ToMesh();
Console.WriteLine("Vertices: " + mesh.ControlPoints.Count);
Materijali
Biblioteka pruža više vrsta materijala:
- LambertMaterial – klasični materijal samo s difuzom s komponentama boje: ambient, diffuse, emissive i reflective.
- PhongMaterial – proširuje Lambert s specular highlights i shininess.
- PbrMaterial – materijal za fizički temeljeno renderiranje s base color, metallic, roughness, occlusion i texture slotovima.
Matematički alati
The Aspose.ThreeD namespace uključuje osnovne matematičke primitive:
- FVector3 – single-precision 3-komponentni vektor za pozicije, smjerove i skalu. Koristi se u
Transform.TranslationiTransform.Scale. - Vector4 – single-precision 4-komponentni vektor za kontrolne točke i normale.
- Matrix4 – 4x4 matrica transformacije.
- Quaternion – reprezentacija rotacije. Koristi se u
Transform.Rotation. - BoundingBox – axis-aligned bounding box za prostorne upite.
var a = new FVector3(1, 0, 0);
var b = new FVector3(0, 1, 0);
// Vector operations for spatial computations
Opcije učitavanja i spremanja
Svaki format ima posebne klase opcija koje vam omogućuju kontrolu ponašanja uvoza i izvoza:
| Format | Opcije učitavanja | Opcije spremanja |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| glTF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | FbxSaveOptions |
| 3MF | TmfLoadOptions | TmfSaveOptions |
Na primjer, za učitavanje OBJ datoteke s preokretanjem koordinata i normalizacijom normala:
var opts = new ObjLoadOptions();
opts.FlipCoordinateSystem = true;
opts.NormalizeNormal = true;
scene.Open("model.obj", opts);
Podržani formati
Sljedeća tablica sažima formate koje Aspose.3D FOSS za .NET može čitati i pisati.
| Format | Ekstenzija | Uvoz | Izvoz | Napomene |
|---|---|---|---|---|
| OBJ | .obj | Da | Da | Sa MTL materijalima |
| STL | .stl | Da | Da | Binarni + ASCII |
| glTF 2.0 | .gltf | Da | Da | JSON format |
| GLB | .glb | Da | Da | Binarni glTF |
| FBX | .fbx | Da | Da | ASCII i binarni načini |
| Collada | .dae | Da | Da | |
| 3MF | .3mf | Da | Da | format za 3D proizvodnju temeljen na ZIP |
Vodič za odabir formata
Odabir pravog formata ovisi o vašem slučaju upotrebe:
- OBJ idealno je kada trebate maksimalnu kompatibilnost među 3D alatima. Gotovo svaka aplikacija za modeliranje može čitati i pisati OBJ. Dobra je za razmjenu mrežnih podataka, ali prenosi samo osnovne informacije o materijalima putem pratećih MTL datoteka.
- STL je format po izboru za radne tokove 3D ispisa. Pohranjuje sirovu trianguliranu geometriju bez materijala ili hijerarhije scene, što je upravo ono što softver za rezanje očekuje.
- glTF je moderan standard za web i real-time 3D. Podržava PBR materijale, potpune hijerarhije scene i dizajniran je za učinkovitu transmisiju. Koristite glTF pri izgradnji web‑baziranih preglednika ili ciljanju bilo kojeg real‑time renderiranja.
- FBX je duboko integriran u radne tokove razvoja igara i stvaranja digitalnog sadržaja. Podržava bogate podatke scene uključujući hijerarhije i materijale. Aspose.3D FOSS za .NET podržava FBX uvoz i izvoz u oba ASCII i binarna načina.
- 3MF je moderan format za 3D ispis koji podržava bogate metapodatke, materijale i scene s više objekata u jednom ZIP-temeljenom paketu.
Poznata ograničenja
Scene.Render() je nije podržano u FOSS izdanju. Pozivanje ove metode će baciti NotImplementedException. Biblioteka je dizajnirana za obradu 3D podataka temeljenu na datotekama – učitavanje, manipuliranje, transformiranje i spremanje modela – umjesto real-time renderiranja na zaslon.
Open source i licenciranje
Aspose.3D FOSS za .NET objavljen je pod MIT License. Ovo znači da ste slobodni:
- Koristiti biblioteku u komercijalnim i vlasničkim aplikacijama.
- Izmijenite izvorni kod kako bi odgovarao vašim potrebama.
- Distribuirajte biblioteku kao dio vlastitog softvera.
Ne postoje nikakve royalty naknade, ograničenja korištenja niti zahtjevi za atribuciju izvan onoga što MIT licenca specificira.
Cijeli izvorni kod je smješten na GitHubu, a doprinosi su dobrodošli: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
Zahtjevi sustava
| Zahtjev | Detalj |
|---|---|
| .verzija .NET | 10.0 or later |
| Ovisnosti | Nema (čisti C#) |
| Platforme | Bilo koja platforma koja pokreće .NET |
| Upravljač paketima | NuGet |
Početak rada
Evo resursa koji će vam pomoći da započnete:
- Dokumentacija – sveobuhvatni vodiči i API preglednici dostupni su na web-mjesto dokumentacije Aspose.3D.
- Baza znanja – praktični članci s uputama i savjeti za rješavanje problema u Aspose.3D KB.
- API referenca – detaljni referentni opis klasa i metoda na Aspose.3D API referenca.
- Izvorni kod – pregledajte i doprinesite na GitHub.
- NuGet – paket je objavljen kao
Aspose.3Dna NuGetu.
Uobičajeni slučajevi upotrebe
Evo nekoliko praktičnih scenarija u kojima se Aspose.3D FOSS za .NET odlično uklapa:
Cjevovodi za konverziju formata
Mnogi timovi primaju 3D resurse u jednom formatu, ali im trebaju u drugom. Dizajnerski tim može raditi u FBX-u, dok web tim treba glTF. Biblioteka vam omogućuje izgradnju automatiziranih cjevovoda za konverziju:
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
Prije nego što integrirate 3D resurs u svoju aplikaciju, možda ćete željeti provjeriti njegov sadržaj – provjerom broja čvorova, verifikacijom geometrije ili potvrđivanjem da su očekivani elementi prisutni:
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");
}
}
Sastavljanje scene
Možete učitati više modela i kombinirati ih u jednu scenu:
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");
Što slijedi
U nadolazećim objavama pokriti ćemo:
- Detaljno istraživanje ključnih značajki API-ja za graf scenske strukture, materijala i matematičkih alata.
- Praktični vodič za rad s svakim podržanim 3D formatom – OBJ, STL, glTF, FBX i 3MF – uključujući opcije učitavanja/spremanja i obrasce grupne konverzije.
Ostanite u toku i slobodno istražite biblioteku te podijelite svoje povratne informacije na GitHubu.