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
.glbestensione per output glTF binario compatto - Verifica
node.getEntity() != nullprima 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
| Problema | Causa | Correzione |
|---|---|---|
| Eccezione durante il caricamento | File non supportato o corrotto | Verifica che il file si apra in un visualizzatore 3D |
| Materiali mancanti dopo il caricamento OBJ | .mtl file non trovato | Posizione .mtl accanto a .obj; assicurati che i materiali siano abilitati |
| Discrepanza di scala dopo l’importazione | Sistemi di unità diversi | Applica 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 / Metodo | Descrizione |
|---|---|
Scene | Contenitore 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 |
Node | Nodo della gerarchia della scena |
node.createChildNode() | Crea e collega un nodo figlio |
Mesh | Mesh poligonale con punti di controllo e liste di facce |
mesh.createPolygon() | Definisci una faccia poligonale |
Mesh.toMesh() | Converti o clona la geometria della mesh |
Transform | Traslazione, rotazione e scala locali |
FileFormat | Registro e rilevatore per i formati |