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
.glbextensión para salida binaria compacta de glTF - Verifica
node.getEntity() != nullantes 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
| Problema | Causa | Corregir |
|---|---|---|
| Excepción al cargar | Archivo no compatible o corrupto | Verifique que el archivo se abra en un visor 3D |
| Faltan materiales después de cargar OBJ | .mtl archivo no encontrado | Colocar .mtl junto a .obj; asegúrese de que los materiales estén habilitados |
| Desajuste de escala después de la importación | Sistemas de unidades diferentes | Aplicar 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étodo | Descripción |
|---|---|
Scene | Contenedor 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 |
Node | Nodo de jerarquía de escena |
node.createChildNode() | Crear y adjuntar un nodo hijo |
Mesh | Malla 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 |
Transform | Traslación, rotación y escala locales |
FileFormat | Registro y detector de formatos |