Suntem încântați să anunțăm disponibilitatea Aspose.3D FOSS for .NET – o bibliotecă gratuită, open-source pentru lucrul cu formate de fișiere 3D în aplicații .NET. Construită ca o soluție pură C# fără dependențe native, biblioteca vizează .NET 10.0 și versiunile ulterioare, făcând-o accesibilă pentru o gamă largă de proiecte și medii.
Acest articol parcurge ce oferă biblioteca, cum să începi și unde să mergi de aici.
Ce este Aspose.3D FOSS for .NET?
Aspose.3D FOSS for .NET este o bibliotecă ușoară de procesare a fișierelor 3D publicată sub MIT license. Oferă o API de tip scene-graph care vă permite să încărcați, inspectați, transformați și salvați modele 3D în mai multe formate larg utilizate. Biblioteca este scrisă în întregime în C# și nu necesită binare native externe sau configurații specifice platformei.
Codul sursă este disponibil pe GitHub: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
Aspecte cheie
- C# pur – fără P/Invoke, fără biblioteci native, fără restricții de platformă.
- .NET 10.0+ compatibilă.
- Licențiat sub MIT – folosește-l în proiecte personale, comerciale sau proprietare fără restricții.
- Arhitectură de graf de scenă – un arbore familiar de noduri, mesh-uri, camere și materiale.
- Suport multi-format – citește și scrie fișiere OBJ, STL, glTF 2.0, GLB, FBX, Collada și 3MF.
Început rapid
Instalare NuGet
Adaugă pachetul NuGet în proiectul tău:
dotnet add package Aspose.3D --version 26.1.0
Prima ta conversie
Cel mai simplu caz de utilizare este încărcarea unui fișier 3D într-un format și salvarea lui într-altul. Iată o conversie în două linii de la OBJ la STL:
using Aspose.ThreeD;
var scene = new Scene();
scene.Open("cube.obj");
scene.Save("output.stl");
Clasa Scene este punctul central de intrare. Apelează scene.Open() cu o cale de fișier pentru a încărca un model, apoi apelează Save() cu calea țintă. Biblioteca deduce formatul din extensia fișierului.
Construirea unei scene de la zero
Poți, de asemenea, să construiești scene programatic:
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");
Aceasta creează o scenă nouă, adaugă o primitive de tip cutie ca nod copil sub rădăcină, o poziționează la coordonatele (1, 2, 3) și exportă rezultatul ca fișier glTF.
Încărcarea cu opțiuni specifice formatului
Când ai nevoie de un control mai fin asupra procesului de încărcare, fiecare format oferă o clasă de opțiuni dedicată. De exemplu, încărcarea unui fișier STL cu opțiuni explicite:
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");
Aceasta scene.Open() metoda acceptă oricare dintre tipurile de opțiuni de încărcare: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, FbxLoadOptions, sau TmfLoadOptions.
Parcurgerea graficului scenei
După ce o scenă este încărcată, poți parcurge arborele de noduri pentru a inspecta sau modifica conținutul său:
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);
}
}
Acest model este util pentru depanare, generarea de rapoarte despre conținutul modelului sau modificarea selectivă a părților unei scene înainte de reexportare.
Aplicarea transformărilor
Poziționarea nodurilor în spațiul 3D se realizează prin Transform proprietatea fiecărui 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");
Transformările urmează modelul standard de moștenire părinte-copil: poziția în spațiul mondial a unui copil este combinația transformării locale și a tuturor transformărilor ale strămoșilor până la rădăcină.
Ce este inclus
Biblioteca este livrată cu un set concentrat de capabilități concepute în jurul modelului de graf al scenei 3D.
Graf de scenă
Graful de scenă este coloana vertebrală a API-ului. Fiecare fișier 3D este reprezentat ca o structură arbore:
| Clasă | Rol |
|---|---|
Scene | Container de nivel superior; rădăcina graficului de scenă |
Node | O poziție numită în arbore; conține transformări și noduri copil |
Entity | Bază abstractă pentru obiecte vizuale atașate nodurilor |
Mesh | Geometrie poligonală – vârfuri, fețe, normale |
Camera | Definiție de cameră virtuală |
Transform | Translație, rotație și scară locală pentru un nod |
GlobalTransform | Transformare în spațiul lumii calculată |
Primitive încorporate
Ediția .NET include clase de forme parametrice care pot fi atașate direct nodurilor sau convertite în Mesh:
- Cub – cutie aliniată pe axe cu lățime, înălțime și adâncime configurabile.
- Sferă – sferă parametrică cu rază configurabilă.
- Cilindru – cilindru parametric cu raze și înălțime configurabile.
var sphere = new Sphere(1);
var mesh = sphere.ToMesh();
Console.WriteLine("Vertices: " + mesh.ControlPoints.Count);
Materiale
Biblioteca oferă multiple tipuri de materiale:
- LambertMaterial – material clasic doar difuz cu componente de culoare ambientale, difuze, emise și reflectante.
- PhongMaterial – extinde Lambert cu reflexii speculare și luciu.
- PbrMaterial – material de redare bazat pe fizică cu culoare de bază, metalic, rugozitate, ocluzie și sloturi de texturi.
Utilitare Matematice
The Aspose.ThreeD spațiul de nume include primitive matematice esențiale:
- FVector3 – vector cu precizie simplă de 3 componente pentru poziții, direcții și scară. Folosit de
Transform.TranslationșiTransform.Scale. - Vector4 – vector cu precizie simplă de 4 componente pentru puncte de control și normale.
- Matrix4 – matrice de transformare 4x4.
- Quaternion – reprezentare a rotației. Folosit de
Transform.Rotation. - BoundingBox – cutie de delimitare aliniată pe axe pentru interogări spațiale.
var a = new FVector3(1, 0, 0);
var b = new FVector3(0, 1, 0);
// Vector operations for spatial computations
Opțiuni de încărcare și salvare
Fiecare format are clase de opțiuni dedicate care vă permit să controlați comportamentul de import și export:
| Format | Opțiuni de încărcare | Opțiuni de salvare |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| glTF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | FbxSaveOptions |
| 3MF | TmfLoadOptions | TmfSaveOptions |
De exemplu, pentru a încărca un fișier OBJ cu inversarea coordonatelor și normalizarea normalelor:
var opts = new ObjLoadOptions();
opts.FlipCoordinateSystem = true;
opts.NormalizeNormal = true;
scene.Open("model.obj", opts);
Formate suportate
Tabelul de mai jos rezumă formatele pe care Aspose.3D FOSS pentru .NET le poate citi și scrie.
| Format | Extensie | Import | Export | Note |
|---|---|---|---|---|
| OBJ | .obj | Da | Da | Cu materiale MTL |
| STL | .stl | Da | Da | Binare + ASCII |
| glTF 2.0 | .gltf | Da | Da | format JSON |
| GLB | .glb | Da | Da | glTF binar |
| FBX | .fbx | Da | Da | moduri ASCII și binare |
| Collada | .dae | Da | Da | |
| 3MF | .3mf | Da | Da | format de fabricație 3D bazat pe ZIP |
Ghid de selecție a formatelor
Alegerea formatului potrivit depinde de cazul de utilizare:
- OBJ este ideal când aveți nevoie de compatibilitate maximă între instrumentele 3D. Aproape fiecare aplicație de modelare poate citi și scrie OBJ. Funcționează bine pentru schimbul de date de tip mesh, dar transportă doar informații de bază despre materiale prin fișierele MTL însoțitoare.
- STL este formatul preferat pentru fluxurile de lucru de imprimare 3D. Stochează geometrie triunghiulară brută fără materiale sau ierarhie de scenă, exact așa cum așteaptă software-ul de feliere.
- glTF este standardul modern pentru web și 3D în timp real. Suportă materiale PBR, ierarhii complete de scenă și este conceput pentru transmisie eficientă. Utilizați glTF când construiți vizualizatoare bazate pe web sau vizați orice pipeline de redare în timp real.
- FBX este profund integrat în fluxurile de lucru de dezvoltare de jocuri și creare de conținut digital. Suportă date de scenă bogate, inclusiv ierarhii și materiale. Aspose.3D FOSS pentru .NET suportă FBX import și export în ambele moduri, ASCII și binar.
- 3MF este un format modern de imprimare 3D care suportă metadate bogate, materiale și scene cu mai multe obiecte într-un singur pachet bazat pe ZIP.
Limitări cunoscute
Scene.Render() este nu este suportat în ediția FOSS. Apelarea acestei metode va genera o NotImplementedException. Biblioteca este concepută pentru procesare 3D bazată pe fișiere – încărcarea, manipularea, transformarea și salvarea modelelor – mai degrabă decât redarea în timp real pe un ecran.
Open Source și licențiere
Aspose.3D FOSS pentru .NET este lansat sub licența MIT License. Aceasta înseamnă că ești liber să:
- Utilizați biblioteca în aplicații comerciale și proprietare.
- Modificați codul sursă pentru a se potrivi nevoilor dumneavoastră.
- Distribuiți biblioteca ca parte a propriului dumneavoastră software.
Nu există taxe de redevență, nu există limite de utilizare și nu există cerințe de atribuire în afara celor specificate de licența MIT.
Codul sursă complet este găzduit pe GitHub, iar contribuțiile sunt binevenite: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
Cerințe de sistem
| Cerință | Detaliu |
|---|---|
| .versiunea .NET | 10.0 or later |
| Dependențe | Niciuna (C# pur) |
| Platforme | Orice platformă care rulează .NET |
| Manager de pachete | NuGet |
Începerea utilizării
Iată resursele care vă vor ajuta să începeți:
- Documentație – ghiduri cuprinzătoare și prezentări ale API-ului sunt disponibile pe Aspose.3D site de documentație.
- Bază de cunoștințe – articole practice de tip „cum să” și sfaturi de depanare în Aspose.3D KB.
- Referință API – referință detaliată a claselor și metodelor la the Referință API Aspose.3D.
- Cod sursă – navigați și contribuiți pe GitHub.
- NuGet – pachetul este publicat ca
Aspose.3Dpe NuGet.
Cazuri de utilizare comune
Iată câteva scenarii practice în care Aspose.3D FOSS pentru .NET se potrivește bine:
Fluxuri de conversie a formatelor
Multe echipe primesc active 3D într-un format, dar au nevoie de ele în altul. O echipă de design ar putea lucra în FBX, în timp ce echipa web are nevoie de glTF. Biblioteca vă permite să construiți conducte de conversie automate:
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
Înainte de a integra un activ 3D în aplicația dumneavoastră, s-ar putea să doriți să validați conținutul său — verificarea numărului de noduri, confirmarea geometriei sau asigurarea că elementele așteptate sunt prezente:
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");
}
}
Asamblarea Scenei
Puteți încărca mai multe modele și le puteți combina într-o singură scenă:
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");
Ce urmează
În postările viitoare, vom acoperi:
- O analiză aprofundată a funcționalităților cheie ale API-ului scene-graph, a materialelor și a utilitarelor matematice.
- Un ghid practic pentru lucrul cu fiecare format 3D suportat — OBJ, STL, glTF, FBX și 3MF — incluzând opțiuni de încărcare/salvare și modele de conversie în lot.
Rămâneți conectați și nu ezitați să explorați biblioteca și să împărtășiți feedback-ul dumneavoastră pe GitHub.