Uzbuđeni smo što možemo najaviti dostupnost… 3D FOSS za .NET Izgrađena kao čisto C# rješenje bez izvornih ovisnosti, knjižnica je usmjerena na .NET 10.0 i kasnije, što ga čini dostupnim širokom rasponu projekata i okruženja.
Ovaj post vodi kroz ono što biblioteka nudi, kako početi i gdje ići odavde.
Što je Aspose.3D FOSS za .NET?
Aspose.3D FOSS za .NET je lagan 3D knjižnica obrade datoteka objavljena pod MIT-ova licenca. Obezbeđuje API za grafičke scene koji vam omogućuje učitavanje, pregledanje, pretvaranje i pohranjivanje 3D modela u nekoliko široko korištenih formata. Biblioteka je u potpunosti napisana na C # i ne zahtijeva vanjske izvorne binarne datoteke ili konfiguracije specifične za platformu.
Izvorni kod je dostupan na GitHub-u: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
Glavne točke
- Čisti C# – bez P/Invoke, nema izvornih knjižnica, ni ograničenja platforme.
- .NET 10.0+ kompatibilni.
- MIT licenciran – koristiti u osobnim, komercijalnim ili vlasničkim projektima bez ograničenja.
- Arhitektura scenografa – poznato stablo čvorova, mreža, kamera i materijala.
- Podrška za više formata – čitati i pisati OBJ, STL, glTF 2.0, GLB, FBX, Collada i 3MF datoteke.
Brzi početak
NuGet Instalacija
Dodajte paket NuGet u svoj projekt:
dotnet add package Aspose.3D --version 26.1.0
Tvoje prvo obraćanje
Najjednostavniji slučaj je učitavanje 3D datoteke u jednom formatu i čuvanje u drugom. Evo dvorezorske konverzije od OBJ-a na STL:
using Aspose.ThreeD;
var scene = new Scene();
scene.Open("cube.obj");
scene.Save("output.stl");
U skladu s člankom 1. Scene Klasa je centralna ulazna točka. scene.Open() s putanjom datoteke za učitavanje modela, zatim nazvati Save() Biblioteka zaključuje format iz proširenja datoteke.
Izgradnja scene od nule
Možete također programirati konstrukciju scena:
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");
To stvara novu scenu, dodaje primitivnu kutiju kao dječji čvor ispod korijena, pozicionira je na koordinatama (1, 2, 3) i izvozi rezultat kao glTF datoteku.
Upisivanje s opcijama specifičnim za oblikovanje
Kada je potrebno bolje kontrolirati proces učitavanja, svaki format pruža posebnu klasu opcija. Na primjer, učitavajući STL datoteku 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");
U skladu s člankom 1. scene.Open() Metode za preuzimanje: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, FbxLoadOptions,ili TmfLoadOptions.
Preko grafa prizora
Nakon što je scena učita, možete hodati kroz stablo čvorova kako biste pregledali ili izmijenili 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 debugging, generiranje izvješća o sadržaju modela ili selektivno mijenjanje dijelova scene prije ponovnog izvoza.
Primjena transformacija
Postavljanje čvorova u 3D prostoru se radi kroz Transform imovina na svakih 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");
Transformiranje slijedi standardni model nasljeđivanja roditelja i djeteta: položaj djetetova u svemiru je kombinacija njegove lokalne transformacije, a sve pretke se transformišu do korijena.
Što je uključeno u to?
Biblioteka dolazi s fokusiranim skupom mogućnosti dizajniranih oko 3D scenografskih modela.
Scenografija
Scenografski grafikon je kičma API-ja.Svaka 3D datoteka predstavlja strukturu stabla:
| Razred | Uloga |
|---|---|
Scene | Top-level kontejner; korijen grafikona scene |
Node | Nazvana pozicija u drvetu; sadrži transformate i dječje čvorove. |
Entity | Abstraktna baza za vizualne objekte priključene na čvorove |
Mesh | Poligonalna geometrija – vrhovi, lica, normalne vrijednosti |
Camera | Definiranje virtuelne kamere |
Transform | Lokalni prevod, rotacija i skala za čvor |
GlobalTransform | Računovodstvena svetsko-prostorska transformacija |
Primitivni ljudi
.NET izdanje uključuje parametričke klase oblika koje se mogu direktno priključiti čvorovima ili pretvoriti u: Mesh:
- Sljedeći članak: – okružena polja s konfiguracijom širine, visine i dubine.
- Sfera – parametrična sfera s konfiguracijskim polukom.
- Sljedeći članak – parametrični cilindar s konfiguracijskim polumjerima 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 koji se samo difuzira s ambientnim, difusnim i reflektorskim bojnim komponentama.
- PhongMaterial – produžava Lambert sa zrcalnim osvijetljenjima i sjajom.
- PbrMaterial – materijal za fizičko renderiranje s osnovnom bojom, metalnim, grubošću, okluzijom i teksturama.
Matematičke aplikacije
U skladu s člankom 1. Aspose.ThreeD namespace uključuje osnovne matematičke primitive:
- FVektor3 – jednostavan 3-komponentni plovišni vektor (
X,Y,Z). Koristi:Transform.Translationi u članku 1.Transform.Scale. - Vektor 4 (
Aspose.ThreeD.Utilities) – dvostruko precizan 4-komponentni vektor (x,y,z,wU ovom slučaju, u skladu s člankom 73. stavkom 1. točka (a) Uredbe (EZ) br.Aspose.ThreeD.Vector4(plov, velika slova polja) također postoji;Mesh.ControlPointskoristi dvostruku preciznost varijante Utilities. - Matrica 4 – 4x4 transformativna matrica.
- Četiriona – rotacijska reprezentacija. Koristi se od strane
Transform.Rotation. - BoundingBox – okruženje u smjeru osi za prostorne upite.
var a = new FVector3(1, 0, 0);
var b = new FVector3(0, 1, 0);
// Vector operations for spatial computations
Opcije za učitavanje i pohranjivanje
Svaki format ima namjenske opcije klase koje vam omogućavaju kontrolu ponašanja uvoza i izvoza:
| Format: | Opcije opterećenja | Shrani opcije |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| Iznos od: | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | FbxSaveOptions |
| 3MF | TmfLoadOptions | TmfSaveOptions |
Na primjer, za učitavanje OBJ datoteke s preokretom koordinata i normalnom normalizacijom:
var opts = new ObjLoadOptions();
opts.FlipCoordinateSystem = true;
opts.NormalizeNormal = true;
scene.Open("model.obj", opts);
Podržani formati
Sljedeća tabela sažima formate koje Aspose.3D FOSS za .NET može čitati i pisati.
| Format: | Proračunska sredstva | Uvoz | Izvoz | Upis: |
|---|---|---|---|---|
| OBJ | .obj | - Da, u redu. | - Da, u redu. | S materijalima MTL-a |
| STL | .stl | - Da, u redu. | - Da, u redu. | Binarni + ASCII |
| GTF-a | .gltf, .glb | - Da, u redu. | - Da, u redu. | JSON format; .glb je samostalna binarna varijanta |
| FBX | .fbx | - Da, u redu. | - Da, u redu. | U ovom slučaju, ako je to moguće, primjenjuje se sljedeća pravila: |
| COLLADA | .dae | - Da, u redu. | - Da, u redu. | |
| 3MF | .3mf | - Da, u redu. | - Da, u redu. | 3D proizvodni format zasnovan na ZIP-u |
Vodič za odabir formata
Izbor odgovarajućeg formata ovisi o slučaju korištenja:
- OBJ To je idealno kada trebate maksimalnu kompatibilnost između 3D alata. Gotovo svaka aplikacija za modeliranje može čitati i pisati OBJ-ove. Dobro radi za razmjenu mrežnih podataka, ali nosi samo osnovne informacije o materijalu putem pratećih MTL datoteka.
- STL U njemu se čuva sirova triangulacijska geometrija bez materijala ili hijerarhije scene, što je upravo ono što slicer softver očekuje.
- GTF-a Glitch je moderni standard za web i 3D prikaz u realnom vremenu. Podržava PBR materijale, hijerarhije punih scena i dizajniran je za učinkovitu prijenosnu mrežu. Koristite glTF kada gradite gledalace na webu ili ciljate bilo koji rendering cijev u stvarnom času.
- FBX je duboko integriran u razvoj igara i radne tokove za stvaranje digitalnog sadržaja. Podržava bogate podatke o sceni, uključujući hijerarhiju i materijale. Aspose.3D FOSS za .NET podržavaju FBX uvoz i izvoz.Napomena: izvoz proizvodi samo binarni FBX ASCII FBx kod izvoza postoji u izvornom kodu, ali nije povezan s putanjom izvoze u ovoj verziji.
- 3MF je moderni 3D format štampanja koji podržava bogate metapodatke, materijale i multi-objektne scene u jednom paketu zasnovanom na ZIP-u.
Poznata ograničenja
Scene.Render() je: ne podržava se Naziv ovog metoda će baciti na FOSS izdanje. NotImplementedException.Biblioteka je dizajnirana za 3D obradu na bazi datoteke – učitavanje, manipulacija, transformacija i čuvanje modela - umjesto renderinga u stvarnom vremenu na ekran.
Otvoreni izvor i licenciranje
3D FOSS za .NET objavljen je pod pokroviteljstvom MIT licenca.To znači da ste slobodni:
- Koristite knjižnicu u komercijalnim i vlasničkim aplikacijama.
- Modificirajte izvorni kod kako bi odgovarao vašim potrebama.
- Distribuirajte knjižnicu kao dio svog softvera.
Ne postoje naknade za autorske prava, ograničenja korištenja i zahtjevi za atribuciju izvan onoga što je određeno MIT licencom.
Potpuni izvorni kod je smješten na GitHub-u, a doprinosi su dobrodošli: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
U ovom slučaju, sustavni zahtjevi:
| Odluka o odobrenju | Detaljnije informacije |
|---|---|
| .NET verzija | 10.0 or later |
| Odvisnosti | Nijedna (čisti C#) |
| Platforme za upravljanje | Svaka platforma koja radi na .NET-u. |
| Upravitelj paketa | NuGet |
Početak
Evo resursa koji će vam pomoći da počnete raditi:
- Izvršenje – sveobuhvatni vodiči i API-ovi dostupni su na stranici: http://www.europa.eu/environmental_information/index.html; 3D dokumentacija.
- Osnova znanja – praktični članci o tome kako i savjeti za rješavanje problema u 3D KB.
- Odgovor na API – detaljna referenca za razred i metodu na U ovom slučaju, u skladu s člankom 21. stavkom 1. točkom (a) ovog članka..
- Izvorni kod – pretraživati i doprinositi na: GitHub.
- NuGet – paketa je objavljena kao:
Aspose.3Dna NuGet.
Obični slučajevi upotrebe
Evo nekoliko praktičnih scenarija u kojima se Aspose.3D FOSS za .NET dobro uklapa:
Format konverzije cijevi
Mnogi timovi primaju 3D sredstva u jednom formatu, ali ih trebaju u drugom. Dizajnski tim može raditi u FBX-u dok web tim treba glTF. Biblioteka vam omogućuje izgradnju automatiziranih konverzijskih cijevi:
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 sredstvo u svoju aplikaciju, možda želite potvrditi njegov sadržaj – provjeravanje broja čvorova, verifikacija geometrije ili potvrđivanje 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");
}
}
Scenografski skup
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 je sljedeće?
U sljedećim postovima ćemo pokriti:
- Duboko ronjenje u ključne značajke scene-graf API, materijala i matematičke korisnosti.
- Praktičan vodič za rad s svakom podržanom 3D formatom – OBJ, STL, glTF, FBX i 3MF – uključujući opcije učitavanja/spoštovanja i uzorke konverzije serija.
Ostanite na stranici i slobodno istražite biblioteku i podijelite svoje povratne informacije na GitHub-u.