Caratteristiche e funzionalità

Caratteristiche e funzionalità

Caratteristiche e funzionalità

Questa pagina copre ogni area funzionale principale di Aspose.3D 26.1.0 con esempi C# funzionanti.


Caricamento e salvataggio delle scene

Scene.Open() carica un file; Scene.Save() lo esporta. Il formato viene rilevato dall’estensione del file:

using Aspose.ThreeD;

var scene = new Scene();
scene.Open("input.obj");
scene.Save("output.glb");

Usa la factory statica Scene.FromFile() come alternativa:

var scene = Scene.FromFile("input.fbx");
scene.Save("output.stl");

Opzioni specifiche del formato

Passa LoadOptions o SaveOptions sottoclassi per un controllo dettagliato:

using Aspose.ThreeD;
using Aspose.ThreeD.Formats;

var scene = new Scene();
scene.Open("model.obj", new ObjLoadOptions { FlipCoordinateSystem = true });
scene.Save("model.fbx");

Classi di opzioni disponibili:

ClasseDirezioneProprietà chiave
ObjLoadOptionsImportaFlipCoordinateSystem, EnableMaterials, Scale
ObjSaveOptionsEsportaFlipCoordinateSystem, EnableMaterials, PointCloud
FbxLoadOptionsImporta(impostazioni predefinite)
GltfLoadOptionsImporta(impostazioni predefinite)
GltfSaveOptionsEsporta(impostazioni predefinite)
StlLoadOptionsImporta(impostazioni predefinite)
StlSaveOptionsEsporta(impostazioni predefinite)
ColladaLoadOptionsImportaFlipCoordinateSystem
ColladaSaveOptionsEsportaIndented, TransformStyle
PlyLoadOptionsImporta(impostazioni predefinite)

Costruzione di un grafo della scena

Crea nodi e allega entità per costruire una gerarchia:

var scene = new Scene();
var root = scene.RootNode;

var boxNode = root.CreateChildNode("box", new Box(5, 5, 5));
var sphereNode = root.CreateChildNode("sphere", new Sphere(3));

Accedi ai figli tramite node.ChildNodes e l’entità allegata tramite node.Entity.


Mesh e Primitive

Crea un Mesh programmaticamente con punti di controllo e poligoni:

// Mesh.ControlPoints uses Aspose.ThreeD.Utilities.Vector4
// (double-precision, lowercase fields: x, y, z, w)
using Aspose.ThreeD.Utilities;

var mesh = new Mesh("custom");
mesh.ControlPoints.Add(new Vector4(0.0, 0.0, 0.0));   // w defaults to 1.0
mesh.ControlPoints.Add(new Vector4(10.0, 0.0, 0.0));
mesh.ControlPoints.Add(new Vector4(10.0, 10.0, 0.0));
mesh.ControlPoints.Add(new Vector4(0.0, 10.0, 0.0));
mesh.CreatePolygon(0, 1, 2, 3);

Primitive integrate (Box, Sphere, Cylinder) possono essere convertite in Mesh:

var box = new Box(10, 10, 10);
Mesh boxMesh = box.ToMesh();

Elementi Vertex

Allega normali, UV e colori dei vertici alla geometria:

var normals = new VertexElementNormal(MappingMode.ControlPoint, ReferenceMode.Direct);
mesh.AddElement(normals);

Tipi di elementi vertice disponibili: VertexElementNormal, VertexElementUV, VertexElementVertexColor, VertexElementBinormal, VertexElementTangent.


Trasformazioni

Ogni Node porta un Transform con Translation, Rotation, e Scale:

var node = scene.RootNode.CreateChildNode("moved", new Box());
node.Transform.Translation = new FVector3(10, 0, 5);
node.Transform.Scale = new FVector3(2, 2, 2);

Leggi la posizione nello spazio globale tramite node.GlobalTransform.Matrix oppure node.EvaluateGlobalTransform().


Materiali

Assegna materiali ai nodi per i dati di ombreggiatura:

var mat = new PhongMaterial("shiny");
mat.Diffuse = new Vector4(0.8, 0.2, 0.2, 1.0);
mat.Specular = new Vector4(1, 1, 1, 1);
mat.Shininess = 32;

scene.RootNode.CreateChildNode("red_box", new Box(), mat);

Tipi di materiale: LambertMaterial, PhongMaterial, PbrMaterial.


Suggerimenti e migliori pratiche

  • Usa Scene.FromFile() per un caricamento in una sola riga quando non hai bisogno di personalizzazioni LoadOptions
  • Converti le primitive in Mesh con ToMesh() prima di aggiungere gli elementi dei vertici
  • Usa GltfSaveOptions con un .glb estensione per output binario compatto
  • Verifica node.Entity per null prima del casting — non tutti i nodi contengono geometria
  • Usa PolygonModifier.Triangulate() per convertire le mesh quad prima dell’esportazione in formati solo a triangoli come STL

Problemi comuni

ProblemaCausaCorrezione
ImportException al caricamentoFile non supportato o danneggiatoVerifica che il file si apra in un visualizzatore 3D; controlla che il formato sia nella lista dei supportati
Materiali mancanti dopo il caricamento OBJ.mtl file non trovatoPosiziona il .mtl file accanto al .obj oppure imposta ObjLoadOptions.EnableMaterials = true
Discrepanza di scala dopo l’importazione FBXSistemi di unità diversiUsa ObjLoadOptions.Scale oppure applica un Transform dopo il caricamento

FAQ

Come posso rilevare il formato di un file sconosciuto?

Usa FileFormat.Detect():

var format = FileFormat.Detect("unknown_file.bin");
Console.WriteLine(format.Extension);

Posso caricare da uno stream invece di un percorso file?

Sì. Scene.Open() accetta un Stream:

using var stream = File.OpenRead("model.glb");
scene.Open(stream);

Quali formati supportano sia l’importazione che l’esportazione?

OBJ, STL, glTF/GLB, FBX, COLLADA e 3MF supportano entrambe le direzioni. PLY supporta solo l’importazione (l’esportatore PLY non è collegato).


Sommario del Riferimento API

Classe / MetodoDescrizione
SceneContenitore della scena 3D di livello superiore
Scene.Open()Carica un file 3D per percorso o flusso
Scene.Save()Esporta la scena su file o flusso
Scene.FromFile()Factory statica per caricare e restituire un Scene
NodeNodo della gerarchia della scena che contiene entità e trasformazioni
Node.CreateChildNode()Crea e collega un nodo figlio
MeshMesh poligonale con punti di controllo e liste di facce
Mesh.CreatePolygon()Definisci una faccia poligonale mediante indici dei vertici
Box / Sphere / CylinderPrimitive parametriche integrate
TransformTraslazione, rotazione e scala locali
FileFormatRegistro e rilevatore per i formati supportati
LambertMaterial / PhongMaterial / PbrMaterialTipi di materiale per l’ombreggiatura
 Italiano