Caratteristiche e funzionalità

Caratteristiche e funzionalità

Caratteristiche e funzionalità

Questa pagina copre ogni area funzionale principale di aspose-3d-foss 26.1.0 con esempi Java funzionanti.


Caricamento e salvataggio delle scene

scene.open() carica un file; scene.save() lo esporta:

import com.aspose.threed.Scene;

Scene scene = new Scene();
scene.open("input.obj");
scene.save("output.glb");

Alternativa di factory statica:

Scene scene = Scene.fromFile("input.fbx");
scene.save("output.stl");

Opzioni specifiche del formato

Pass LoadOptions oppure SaveOptions sottoclassi per un controllo fine:

import com.aspose.threed.*;

Scene scene = new Scene();
ObjLoadOptions opts = new ObjLoadOptions();
opts.setFlipCoordinateSystem(true);
scene.open("model.obj", opts);

GltfSaveOptions saveOpts = new GltfSaveOptions();
saveOpts.setFlipCoordinateSystem(true);
scene.save("model.glb", saveOpts);

Nota: FBX è supportato solo per l’importazione; l’esportazione FBX non è implementata nella versione FOSS. Solo binary FBX i file sono supportati per l’importazione — ASCII FBX genera ImportException.


Costruzione di un grafo della scena

Crea nodi e collega entità:

Scene scene = new Scene();
Node root = scene.getRootNode();

Mesh mesh = new Mesh("myMesh");
mesh.getControlPoints().add(new Vector4(0, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 10, 0));
mesh.createPolygon(0, 1, 2);

Node meshNode = root.createChildNode("triangle", mesh);

Operazioni su Mesh

Crea un Mesh programmaticamente con punti di controllo e poligoni:

Mesh mesh = new Mesh("custom");
mesh.getControlPoints().add(new Vector4(0, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 10, 0));
mesh.getControlPoints().add(new Vector4(0, 10, 0));
mesh.createPolygon(0, 1, 2, 3);

Trasformazioni

Ogni Node contiene un Transform:

Node node = scene.getRootNode().createChildNode("moved", new Mesh());
node.getTransform().setTranslation(10, 0, 5);
node.getTransform().setScale(2, 2, 2);

Leggi lo spazio mondo tramite node.getGlobalTransform().getMatrix().


Materiali

Assegna i materiali ai nodi:

PbrMaterial mat = new PbrMaterial("shiny");
mat.setAlbedo(new Vector4(0.8, 0.2, 0.2, 1.0));
mat.setMetallicFactor(0.5);
mat.setRoughnessFactor(0.3);

scene.getRootNode().createChildNode("red_mesh", mesh, mat);

Tipi di materiale: Material (base), PbrMaterial (PBR metallic-roughness).


Suggerimenti e migliori pratiche

  • Usa Scene.fromFile() per caricamenti in una riga quando non sono necessarie opzioni personalizzate
  • Crea mesh programmaticamente con createPolygon() per geometria personalizzata
  • Usa .glb estensione per output glTF binario compatto
  • Verifica node.getEntity() != null prima del casting
  • L’esportazione STL non triangolare automaticamente le facce dei poligoni. L’esportazione STL binaria scrive solo i primi 3 vertici di ogni faccia del poligono — le facce quad o n‑gon vengono silenziosamente troncate. L’esportazione STL ASCII scrive tutti gli indici dei vertici, il che produce blocchi di faccette malformati per le facce non triangolari. Passa sempre mesh pre‑triangolate (tutte le facce triangolari) all’esportazione STL per evitare perdita di dati o output non valido.

Problemi comuni

ProblemaCausaCorrezione
Eccezione durante il caricamentoFile non supportato o corrottoVerifica che il file si apra in un visualizzatore 3D
Materiali mancanti dopo il caricamento OBJ.mtl file non trovatoPosizione .mtl accanto a .obj; assicurati che i materiali siano abilitati
Discrepanza di scala dopo l’importazioneSistemi di unità diversiApplica un Transform scala dopo il caricamento

FAQ

Come posso rilevare il formato di un file?

FileFormat format = FileFormat.detect("unknown.bin");
System.out.println(format.getExtension());

Posso caricare da uno stream?

Sì. scene.open() accetta un InputStream.

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

OBJ, STL e glTF/GLB supportano entrambe le direzioni. FBX è solo importazione; l’esportazione non è implementata nella versione FOSS.


Sommario del Riferimento API

Classe / MetodoDescrizione
SceneContenitore della scena 3D di livello superiore
scene.open()Carica un file 3D per percorso o stream
scene.save()Esporta la scena su file o stream
Scene.fromFile()Static factory per caricare e restituire un Scene
NodeNodo della gerarchia della scena
node.createChildNode()Crea e collega un nodo figlio
MeshMesh poligonale con punti di controllo e liste di facce
mesh.createPolygon()Definisci una faccia poligonale
Mesh.toMesh()Converti o clona la geometria della mesh
TransformTraslazione, rotazione e scala locali
FileFormatRegistro e rilevatore per i formati
 Italiano