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:

RazredUloga
SceneTop-level kontejner; korijen grafikona scene
NodeNazvana pozicija u drvetu; sadrži transformate i dječje čvorove.
EntityAbstraktna baza za vizualne objekte priključene na čvorove
MeshPoligonalna geometrija – vrhovi, lica, normalne vrijednosti
CameraDefiniranje virtuelne kamere
TransformLokalni prevod, rotacija i skala za čvor
GlobalTransformRač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.Translation i 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.ControlPoints koristi 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ćenjaShrani opcije
OBJObjLoadOptionsObjSaveOptions
STLStlLoadOptionsStlSaveOptions
Iznos od:GltfLoadOptionsGltfSaveOptions
FBXFbxLoadOptionsFbxSaveOptions
3MFTmfLoadOptionsTmfSaveOptions

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 sredstvaUvozIzvozUpis:
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 odobrenjuDetaljnije informacije
.NET verzija10.0 or later
OdvisnostiNijedna (čisti C#)
Platforme za upravljanjeSvaka platforma koja radi na .NET-u.
Upravitelj paketaNuGet

Početak

Evo resursa koji će vam pomoći da počnete raditi:

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.