Característiques i funcionalitats

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 .glb extensió per a una sortida binària compacta de glTF
  • Comprova node.getEntity() != null abans 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ènciaCausaArregla
Excepció en carregarFitxer no compatible o corrupteComproveu que el fitxer s’obre en un visualitzador 3D
Materials desapareguts després de carregar l’OBJ.mtl fitxer no trobatCol·loca .mtl al costat de .obj; assegureu-vos que els materials estan activats
Desajust d’escala després de la importacióSistemes d’unitats diferentsAplica 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ètodeDescripció
SceneContenidor 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
NodeNode de jerarquia d’escena
node.createChildNode()Crea i adjunta un node fill
MeshMalla 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
TransformTraducció, rotació i escala locals
FileFormatRegistre i detector per a formats
 Català