Introduzione

Aspose.3D FOSS è una libreria .NET gratuita e open-source per lavorare con formati di file 3D. Fornisce un insieme completo di classi di utilità che vanno oltre la semplice conversione dei file, consentendo agli sviluppatori di manipolare mesh, costruire trasformazioni e generare geometria primitiva in modo programmatico. La libreria è rilasciata sotto licenza MIT, rendendola adatta sia a progetti personali che commerciali senza restrizioni.

Questo post si concentra sulle funzionalità di utilità all’interno della libreria: le classi e i metodi a cui ricorri quando devi triangolare una mesh, costruire una matrice di trasformazione passo passo o creare geometria parametrica. Questi blocchi costitutivi completano il flusso di lavoro principale di caricamento e salvataggio delle scene trattato nel post introduttivo.

Che tu stia elaborando asset 3D in una pipeline di build, preparando geometria per un motore di gioco o convertendo tra formati, queste utility gestiscono le attività comuni che si presentano nei flussi di lavoro 3D del mondo reale.


Cosa è incluso

Operazioni su mesh

La classe Mesh rappresenta una geometria basata su poligoni. Puoi creare poligoni a partire dagli indici dei vertici, interrogare le dimensioni dei poligoni, triangolare le facce e ottimizzare i dati dei vertici. La proprietà ControlPoints fornisce accesso diretto alle posizioni dei vertici, mentre Polygons espone gli array di indici delle facce.

using Aspose.ThreeD;
using Aspose.ThreeD.Entities;

var scene = new Scene();
var mesh = new Mesh("CustomMesh");

// Add control points (vertices)
mesh.ControlPoints.Add(new Vector4(0, 0, 0));
mesh.ControlPoints.Add(new Vector4(10, 0, 0));
mesh.ControlPoints.Add(new Vector4(10, 10, 0));
mesh.ControlPoints.Add(new Vector4(0, 10, 0));

// Create a quad polygon from four vertices
mesh.CreatePolygon(0, 1, 2, 3);

// Triangulate all polygons in the mesh
mesh.Triangulate();

Costruttore di Trasformazioni

La classe TransformBuilder fornisce un’interfaccia fluida per costruire matrici di trasformazione attraverso una sequenza di operazioni di translate, rotate e scale. Puoi controllare l’ordine di composizione (append o prepend) e puoi reimpostare il builder per avviare una nuova catena.

using Aspose.ThreeD;
using Aspose.ThreeD.Utilities;

var builder = new TransformBuilder(ComposeOrder.Append);

// Build a combined transform: translate, then rotate, then scale
builder.Translate(5, 0, 3);
builder.RotateDegree(45, new Vector3(0, 1, 0));
builder.Scale(2, 2, 2);

// Retrieve the composed 4x4 matrix
Matrix4 result = builder.Matrix;

Modificatore di Poligoni

La classe PolygonModifier offre metodi statici di utilità per l’elaborazione delle mesh, inclusa un metodo Triangulate destinato a convertire una mesh di poligoni a n lati in geometria composta solo da triangoli. In questa edizione FOSS, Triangulate non è implementato — ogni overload genera NotImplementedException a runtime. Per una triangolazione funzionante, usa Mesh.Triangulate() al suo posto, mostrato nella sezione Operazioni su mesh sopra.

using Aspose.ThreeD;
using Aspose.ThreeD.Entities;

var scene = new Scene();
var box = new Box(2, 2, 2);
Mesh boxMesh = box.ToMesh();

Generazione di Geometria Primitiva

La libreria include classi di geometria parametrica come Box, Sphere e Cylinder. Ogni primitiva può essere configurata con dimensioni e conteggi di segmenti, quindi convertita in un Mesh tramite il metodo ToMesh() per ulteriori elaborazioni o esportazione.

using Aspose.ThreeD.Entities;

// Create a parameterized sphere
var sphere = new Sphere(5.0, 32, 16);
Mesh sphereMesh = sphere.ToMesh();

// Create a cylinder (cone when one radius is zero)
var cone = new Cylinder(0, 3.0, 6.0);
Mesh coneMesh = cone.ToMesh();

Calcolo della Bounding Box

Ogni sottoclasse di Entity espone un metodo GetBoundingBox() che restituisce la bounding box allineata agli assi della geometria. La struct BoundingBox fornisce i vettori d’angolo Minimum e Maximum, utili per query spaziali e inquadramento della telecamera.

using Aspose.ThreeD.Entities;
using Aspose.ThreeD.Utilities;

var box = new Box(4, 2, 6);
BoundingBox bounds = box.GetBoundingBox();

Vector3 min = bounds.Minimum;
Vector3 max = bounds.Maximum;

Avvio rapido

Installa il pacchetto da NuGet:

dotnet add package Aspose.3D.FOSS

Carica un file, triangola ogni mesh e salva il risultato:

using Aspose.ThreeD;
using Aspose.ThreeD.Entities;

// Load a scene from an OBJ file
var scene = new Scene();
scene.Open("input.obj");

// Walk child nodes and triangulate each mesh entity
foreach (var node in scene.RootNode.ChildNodes)
{
    foreach (var entity in node.Entities)
    {
        if (entity is Mesh mesh)
        {
            mesh.Triangulate();
        }
    }
}

// Save the triangulated scene as glTF
scene.Save("output.glb");

Formati supportati

FormatoEstensioneLeggiScrivi
Collada.dae
FBX.fbx
glTF / GLB.gltf / .glb
3MF.3mf
Wavefront OBJ.obj
PLY.plyNo
STL.stl

Open Source e Licenze

Aspose.3D FOSS è rilasciato sotto licenza MIT. Puoi usare, modificare e ridistribuire la libreria sia in progetti open-source sia proprietari. Il codice sorgente completo è disponibile su GitHub a aspose-3d-foss/Aspose.3D-FOSS-for-.NET.


Iniziare

  • Guida per sviluppatori – documentazione completa che copre la gestione delle scene, le opzioni di formato e le funzionalità avanzate.
  • Base di conoscenza – articoli pratici e domande frequenti.
  • API Reference – riferimento classe per classe con firme dei metodi e dettagli delle proprietà.

Risorse correlate