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
SceneContainer de nivel superior; rădăcina graficului de scenă
NodeO poziție numită în arbore; conține transformări și noduri copil
EntityBază abstractă pentru obiecte vizuale atașate nodurilor
MeshGeometrie poligonală – vârfuri, fețe, normale
CameraDefiniție de cameră virtuală
TransformTranslație, rotație și scară locală pentru un nod
GlobalTransformTransformare î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 și Transform.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:

FormatOpțiuni de încărcareOpțiuni de salvare
OBJObjLoadOptionsObjSaveOptions
STLStlLoadOptionsStlSaveOptions
glTF / GLBGltfLoadOptionsGltfSaveOptions
FBXFbxLoadOptionsFbxSaveOptions
3MFTmfLoadOptionsTmfSaveOptions

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.

FormatExtensieImportExportNote
OBJ.objDaDaCu materiale MTL
STL.stlDaDaBinare + ASCII
glTF 2.0.gltfDaDaformat JSON
GLB.glbDaDaglTF binar
FBX.fbxDaDamoduri ASCII și binare
Collada.daeDaDa
3MF.3mfDaDaformat 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 .NET10.0 or later
DependențeNiciuna (C# pur)
PlatformeOrice platformă care rulează .NET
Manager de pacheteNuGet

Î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.3D pe 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.