Característiques i funcionalitats
Característiques i funcionalitats
Aquesta pàgina cobreix cada àrea de funcionalitat principal de aspose-3d-foss 26.1.0 amb exemples Java funcionals.
Càrrega i desament d’escenes
scene.open() carrega un fitxer; scene.save() l’exporta:
import com.aspose.threed.Scene;
Scene scene = new Scene();
scene.open("input.obj");
scene.save("output.glb");Alternativa de fàbrica estàtica:
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.stl");Opcions específiques del format
Passa LoadOptions o SaveOptions subclasses per a un control detallat:
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 només és compatible per a importació; l’exportació de FBX no està implementada a la versió FOSS. Només FBX binari es suporten fitxers per a la importació — ASCII FBX falla ImportException.
Construint un graf d’escena
Crea nodes i adjunta entitats:
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);Operacions de malla
Crea un Mesh programàticament amb punts de control i polígons:
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);Transformacions
Cada Node porta un Transform:
Node node = scene.getRootNode().createChildNode("moved", new Mesh());
node.getTransform().setTranslation(10, 0, 5);
node.getTransform().setScale(2, 2, 2);Llegeix l’espai mundial via node.getGlobalTransform().getMatrix().
Materials
Assigna materials als nodes:
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);Tipus de material: Material (base), PbrMaterial (PBR metallic-roughness).
Consells i bones pràctiques
- Utilitza
Scene.fromFile()per a càrregues d’una sola línia quan no es necessiten opcions personalitzades - Construeix malles programàticament amb
createPolygon()per a geometria personalitzada - Utilitza
.glbextensió per a una sortida binària compacta de glTF - Comprova
node.getEntity() != nullabans del casting - L’exportació STL fa no triangula les cares del polígon automàticament. L’exportació STL binària escriu només els tres primers vèrtexs de cada cara del polígon — les cares de quad o n-gon es truncen silenciosament. L’exportació STL ASCII escriu tots els índexs de vèrtex, cosa que produeix blocs de facetes mal formats per a cares que no són triangles. Sempre passa malles pre-triangulades (totes les cares en triangle) a l’exportació STL per evitar pèrdua de dades o sortida invàlida.
Problemes comuns
| Incidència | Causa | Arregla |
|---|---|---|
| Excepció en carregar | Fitxer no compatible o corrupte | Comproveu que el fitxer s’obre en un visualitzador 3D |
| Materials desapareguts després de carregar l’OBJ | .mtl fitxer no trobat | Col·loca .mtl al costat de .obj; assegureu-vos que els materials estan activats |
| Desajust d’escala després de la importació | Sistemes d’unitats diferents | Aplica una Transform escala després de carregar |
FAQ
Com puc detectar el format d’un fitxer?
FileFormat format = FileFormat.detect("unknown.bin");
System.out.println(format.getExtension());Puc carregar des d’un flux?
Sí. scene.open() accepta un InputStream.
Quins formats admeten tant importació com exportació?
OBJ, STL i glTF/GLB admeten ambdues direccions. FBX només és d’importació; l’exportació no està implementada a la versió FOSS.
Resum de la referència de l’API
| Classe / Mètode | Descripció |
|---|---|
Scene | Contenidor d’escena 3D de nivell superior |
scene.open() | Carrega un fitxer 3D per ruta o flux |
scene.save() | Exporta l’escena a fitxer o flux |
Scene.fromFile() | Fàbrica estàtica per carregar i retornar una Scene |
Node | Node de jerarquia d’escena |
node.createChildNode() | Crea i adjunta un node fill |
Mesh | Malla de polígons amb punts de control i llistes de cares |
mesh.createPolygon() | Defineix una cara de polígon |
Mesh.toMesh() | Converteix o clona la geometria de la malla |
Transform | Traducció, rotació i escala locals |
FileFormat | Registre i detector per a formats |