Uzbuđeni smo što najavljujemo dostupnost Aspose.3D FOSS for .NET – besplatna, open‑source biblioteka za rad sa 3D formatima fajlova u .NET aplikacijama. Izgrađena kao čisto C# rešenje bez nativnih zavisnosti, biblioteka cilja .NET 10.0 i novije, čineći je dostupnom širokom spektru projekata i okruženja.
Ovaj post prikazuje šta biblioteka nudi, kako započeti i kuda dalje.
Šta je Aspose.3D FOSS za .NET?
Aspose.3D FOSS for .NET je lagana biblioteka za obradu 3D fajlova objavljena pod MIT licenca. Pruža API za scene‑graph koji vam omogućava da učitate, pregledate, transformišete i sačuvate 3D modele u više široko korišćenih formata. Biblioteka je u potpunosti napisana u C# i ne zahteva eksterne nativne binarne fajlove niti konfiguracije specifične za platformu.
Izvorni kod je dostupan na GitHub‑u: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
Ključne karakteristike
- Čist C# – nema P/Invoke, nema nativnih biblioteka, nema ograničenja platforme.
- .NET 10.0+ kompatibilan.
- MIT licenciran – koristite ga u ličnim, 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 – čitanje i pisanje OBJ, STL, glTF 2.0, GLB, FBX, Collada i 3MF fajlova.
Brzi početak
Instalacija putem NuGet-a
Dodajte NuGet paket u vaš projekat:
dotnet add package Aspose.3D --version 26.1.0
Vaša prva konverzija
Najjednostavniji slučaj upotrebe je učitavanje 3D fajla u jednom formatu i njegovo čuvanje u drugom. Evo dvostruke konverzije iz OBJ u STL:
using Aspose.ThreeD;
var scene = new Scene();
scene.Open("cube.obj");
scene.Save("output.stl");
The Scene klasa je centralna tačka ulaza. Pozovite scene.Open() sa putanjom do fajla da učitate model, zatim pozovite Save() sa odredišnom putanjom. Biblioteka zaključuje format iz ekstenzije fajla.
Izgradnja scene od nule
Takođe možete programatski konstruisati 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 kreira novu scenu, dodaje primitivni kvadar kao čvor‑dete pod korenom, postavlja ga na koordinate (1, 2, 3) i izveze rezultat kao glTF fajl.
Učitavanje sa opcijama specifičnim za format
Kada vam je potrebna finija kontrola nad procesom učitavanja, svaki format pruža posebnu klasu opcija. Na primer, učitavanje STL fajla sa 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 prihvata bilo koji od tipova opcija za učitavanje: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, FbxLoadOptions, ili TmfLoadOptions.
Prolazak kroz graf scene
Kada je scena učitana, možete preći kroz stablo čvorova da pregledate ili izmenite 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, generisanje izveštaja o sadržaju modela ili selektivno menjanje delova scene pre ponovnog izvoza.
Primena transformacija
Pozicioniranje čvorova u 3D prostoru se vrši 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 prate standardni model nasleđivanja roditelj‑dete: pozicija deteta u svetskom prostoru je kombinacija njegove lokalne transformacije i svih transformacija pretka do korena.
Šta je uključeno
Biblioteka dolazi sa fokusiranim skupom mogućnosti dizajniranih oko modela 3D grafa scene.
Graf scene
Graf scena je kičma API-ja. Svaka 3D datoteka je predstavljena kao struktura stabla:
| Klasa | Uloga |
|---|---|
Scene | Kontejner najvišeg nivoa; koren grafika scene |
Node | Nazvana pozicija u stablu; sadrži transformacije i podređene čvorove |
Entity | Apstraktna baza za vizuelne objekte prikačene na čvorove |
Mesh | Poligonalna geometrija – vrhovi, površine, normale |
Camera | Definicija virtuelne kamere |
Transform | Lokalni pomeraj, rotacija i skaliranje za čvor |
GlobalTransform | Izračunati transform u svetskom prostoru |
Ugrađene primitive
Izdanje .NET uključuje parametarske klase oblika koje se mogu direktno prikačiti čvorovima ili konvertovati u Mesh:
- Kocka – kocka poravnata sa osama sa podesivom širinom, visinom i dubinom.
- Sfera – parametarska sfera sa podesivim radijusom.
- Cilindar – parametarski cilindar sa podesivim radijusima i visinom.
var sphere = new Sphere(1);
var mesh = sphere.ToMesh();
Console.WriteLine("Vertices: " + mesh.ControlPoints.Count);
Materijali
Biblioteka pruža više tipova materijala:
- LambertMaterial – klasični materijal samo difuznog osvetljenja sa komponentama boje ambijenta, difuzne, emisivne i reflektujuće.
- PhongMaterial – proširuje Lambert sa spekularnim odsjajima i sjajnošću.
- PbrMaterial – physically based rendering materijal sa osnovnom bojom, metalnošću, hrapavosti, zaklonom i slotovima za teksture.
Matematički alati
The Aspose.ThreeD namespace uključuje osnovne matematičke primitive:
- FVector3 – vektor od 3 komponente u jednostrukoj preciznosti za pozicije, pravce i skalu. Koristi se u
Transform.TranslationiTransform.Scale. - Vector4 – vektor od 4 komponente u jednostrukoj preciznosti za kontrolne tačke i normale.
- Matrix4 – 4x4 matrica transformacije.
- Quaternion – reprezentacija rotacije. Koristi se u
Transform.Rotation. - BoundingBox – okvir ograničavajući kvadar poravnat sa osama 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 čuvanja
Svaki format ima posvećene klase opcija koje vam omogućavaju da kontrolišete ponašanje uvoza i izvoza:
| Format | Opcije učitavanja | Opcije čuvanja |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| glTF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | FbxSaveOptions |
| 3MF | TmfLoadOptions | TmfSaveOptions |
Na primer, za učitavanje OBJ fajla sa preokretanjem koordinata i normalizacijom normala:
var opts = new ObjLoadOptions();
opts.FlipCoordinateSystem = true;
opts.NormalizeNormal = true;
scene.Open("model.obj", opts);
Podržani formati
Sledeća tabela sumira formate koje Aspose.3D FOSS za .NET može da čita i piše.
| Format | Ekstenzija | Uvoz | Izvoz | Beleške |
|---|---|---|---|---|
| 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 | Binary glTF |
| FBX | .fbx | Da | Da | ASCII i binarni režimi |
| Collada | .dae | Da | Da | |
| 3MF | .3mf | Da | Da | ZIP-bazirani 3D format za proizvodnju |
Vodič za izbor formata
Izbor pravog formata zavisi od vašeg slučaja upotrebe:
- OBJ je idealan kada vam je potrebna maksimalna kompatibilnost između 3D alata. Gotovo svaka aplikacija za modeliranje može čitati i pisati OBJ. Dobro funkcioniše za razmenu mrežnih podataka, ali prenosi samo osnovne informacije o materijalu putem pratećih MTL fajlova.
- STL je format po izboru za radne tokove 3D štampe. Čuva sirovu trianguliranu geometriju bez materijala ili hijerarhije scene, što je tačno ono što softver za sečenje očekuje.
- glTF je moderan standard za web i real‑time 3D. Podržava PBR materijale, potpune hijerarhije scene i dizajniran je za efikasno prenošenje. Koristite glTF kada gradite veb‑bazirane preglednike ili ciljate bilo koji real‑time render pipeline.
- FBX je duboko integrisan u radne tokove razvoja igara i kreiranja digitalnog sadržaja. Podržava bogate podatke o sceni uključujući hijerarhije i materijale. Aspose.3D FOSS za .NET podržava FBX uvoz i izvoz u oba režima, ASCII i binarnom.
- 3MF je moderan format za 3D štampu koji podržava bogate metapodatke, materijale i scene sa više objekata u jednom paketu zasnovanom na ZIP.
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 zasnovanu na fajlovima – učitavanje, manipulaciju, transformaciju i čuvanje modela – umesto real-time renderovanja na ekranu.
Otvoreni kod i licenciranje
Aspose.3D FOSS za .NET je objavljen pod MIT License. Ovo znači da ste slobodni da:
- Koristite biblioteku u komercijalnim i vlasničkim aplikacijama.
- Izmenite izvorni kod da odgovara vašim potrebama.
- Distribuirajte biblioteku kao deo vašeg sopstvenog softvera.
Ne postoje naknade za autorska prava, nema ograničenja upotrebe i nema zahteva za navođenje autora izvan onoga što MIT licenca propisuje.
Puni izvorni kod je hostovan na GitHub-u, a doprinosi su dobrodošli: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
Sistemski zahtevi
| Zahtev | Detalj |
|---|---|
| .NET verzija | 10.0 or later |
| Zavisnosti | Nema (čisti C#) |
| Platforme | Bilo koja platforma koja pokreće .NET |
| Menadžer paketa | NuGet |
Početak rada
Evo resursa koji će vam pomoći da započnete:
- Dokumentacija – sveobuhvatni vodiči i API pregledi su dostupni na Aspose.3D sajt za dokumentaciju.
- Baza znanja – praktični članci u obliku uputstava i saveti za rešavanje problema u Aspose.3D KB.
- API referenca – detaljna referenca klasa i metoda na Aspose.3D API referenca.
- Izvorni kod – pregledajte i doprinesite na GitHub.
- NuGet – paket je objavljen kao
Aspose.3Dna NuGet-u.
Uobičajeni slučajevi upotrebe
Evo nekoliko praktičnih scenarija u kojima se Aspose.3D FOSS za .NET odlično uklapa:
Cevovodi za konverziju formata
Mnogi timovi primaju 3D resurse u jednom formatu, ali im trebaju u drugom. Dizajnerski tim može raditi u FBX, dok web tim treba glTF. Biblioteka vam omogućava da izgradite automatizovane pipeline‑ove 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
Pre nego što integrišete 3D resurs u vašu aplikaciju, možda ćete želeti da validirate njegov sadržaj — proveravajući broj čvorova, verifikujući geometriju ili potvrđujući 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 kombinovati 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");
Šta sledi
U narednim objavama, pokrićemo:
- Detaljno istraživanje ključnih funkcija scene‑graph API‑ja, materijala i matematičkih alata.
- Praktični vodič za rad sa svakim podržanim 3D formatom — OBJ, STL, glTF, FBX i 3MF — uključujući opcije učitavanja/čuvanja i obrasce grupne konverzije.
Ostanite u toku i slobodno istražite biblioteku i podelite svoje povratne informacije na GitHub‑u.