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:

KlasaUloga
SceneKontejner najviše razine; korijen grafika scene
NodeImenovana pozicija u stablu; sadrži transformacije i podređene čvorove
EntityApstraktna baza za vizualne objekte pričvršćene uz čvorove
MeshPoligonalna geometrija – vrhovi, površine, normale
CameraDefinicija virtualne kamere
TransformLokalni pomak, rotacija i skaliranje za čvor
GlobalTransformIzrač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.Translation i Transform.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:

FormatOpcije učitavanjaOpcije spremanja
OBJObjLoadOptionsObjSaveOptions
STLStlLoadOptionsStlSaveOptions
glTF / GLBGltfLoadOptionsGltfSaveOptions
FBXFbxLoadOptionsFbxSaveOptions
3MFTmfLoadOptionsTmfSaveOptions

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.

FormatEkstenzijaUvozIzvozNapomene
OBJ.objDaDaSa MTL materijalima
STL.stlDaDaBinarni + ASCII
glTF 2.0.gltfDaDaJSON format
GLB.glbDaDaBinarni glTF
FBX.fbxDaDaASCII i binarni načini
Collada.daeDaDa
3MF.3mfDaDaformat 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

ZahtjevDetalj
.verzija .NET10.0 or later
OvisnostiNema (čisti C#)
PlatformeBilo koja platforma koja pokreće .NET
Upravljač paketimaNuGet

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.3D na 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.