Características y Funcionalidades

Características y Funcionalidades

Características y Funcionalidades

Esta página cubre cada área principal de características de aspose-3d-foss 26.1.0 con ejemplos funcionales de Java.


Cargar y Guardar Escenas

scene.open() carga un archivo; scene.save() lo 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");

Opciones específicas del formato

Pase LoadOptions o SaveOptions subclases para un control fino:

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 es compatible solo para importación; la exportación de FBX no está implementada en la versión FOSS. Solo FBX binario se admiten archivos para importación — ASCII FBX genera un error ImportException.


Construir un grafo de escena

Cree nodos y adjunte entidades:

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);

Operaciones de Mesh

Crear un Mesh programáticamente con puntos de control y polígonos:

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);

Transformaciones

Cada Node contiene un Transform:

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

Leer en espacio mundial a través de node.getGlobalTransform().getMatrix().


Materiales

Asignar materiales a los nodos:

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);

Tipos de material: Material (base), PbrMaterial (PBR metallic-roughness).


Consejos y mejores prácticas

  • Usar Scene.fromFile() para cargas de una sola línea cuando no se necesitan opciones personalizadas
  • Construye mallas programáticamente con createPolygon() para geometría personalizada
  • Usa .glb extensión para salida binaria compacta de glTF
  • Verifica node.getEntity() != null antes de lanzar
  • La exportación STL no triangular automáticamente las caras de polígonos. Binary STL export escribe solo los primeros 3 vértices de cada cara de polígono — las caras quad o n‑gon se truncan silenciosamente. ASCII STL export escribe todos los índices de vértice, lo que produce bloques de facetas malformados para caras que no son triángulos. Siempre pase mallas pre‑trianguladas (caras totalmente triangulares) a STL export para evitar pérdida de datos o salida inválida.

Problemas comunes

ProblemaCausaCorregir
Excepción al cargarArchivo no compatible o corruptoVerifique que el archivo se abra en un visor 3D
Faltan materiales después de cargar OBJ.mtl archivo no encontradoColocar .mtl junto a .obj; asegúrese de que los materiales estén habilitados
Desajuste de escala después de la importaciónSistemas de unidades diferentesAplicar un Transform escala después de cargar

FAQ

¿Cómo detecto el formato de un archivo?

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

¿Puedo cargar desde un flujo?

Sí. scene.open() acepta un InputStream.

¿Qué formatos admiten tanto importación como exportación?

OBJ, STL y glTF/GLB admiten ambas direcciones. FBX es solo de importación; la exportación no está implementada en la versión FOSS.


Resumen de la Referencia de API

Clase / MétodoDescripción
SceneContenedor de escena 3D de nivel superior
scene.open()Cargar un archivo 3D por ruta o flujo
scene.save()Exportar escena a archivo o flujo
Scene.fromFile()Fábrica estática para cargar y devolver un Scene
NodeNodo de jerarquía de escena
node.createChildNode()Crear y adjuntar un nodo hijo
MeshMalla poligonal con puntos de control y listas de caras
mesh.createPolygon()Definir una cara poligonal
Mesh.toMesh()Convertir o clonar la geometría de la malla
TransformTraslación, rotación y escala locales
FileFormatRegistro y detector de formatos
 Español