Recursos e Funcionalidades
Recursos e Funcionalidades
Esta página cobre todas as principais áreas de recurso de aspose-3d-foss 26.1.0 com exemplos Java funcionais.
Carregando e Salvando Cenas
scene.open() carrega um arquivo; scene.save() exporta-o:
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");Opções Específicas de Formato
Pass LoadOptions ou SaveOptions subclasses para controle refinado:
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 é suportado apenas para importação; a exportação de FBX não está implementada na versão FOSS. Apenas FBX binário arquivos são suportados para importação — ASCII FBX gera erro ImportException.
Construindo um Grafo de Cena
Crie nós e anexe 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);Operações de Malha
Crie um Mesh programaticamente com pontos de controle e 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);Transformações
Cada Node carrega um Transform:
Node node = scene.getRootNode().createChildNode("moved", new Mesh());
node.getTransform().setTranslation(10, 0, 5);
node.getTransform().setScale(2, 2, 2);Leia o espaço mundial via node.getGlobalTransform().getMatrix().
Materiais
Atribua materiais aos nós:
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).
Dicas e Melhores Práticas
- Use
Scene.fromFile()para carregamentos de linha única quando opções personalizadas não são necessárias - Crie malhas programaticamente com
createPolygon()para geometria personalizada - Use
.glbextensão para saída compacta binária glTF - Verifique
node.getEntity() != nullantes de converter - A exportação STL não triangular faces de polígonos automaticamente. A exportação Binary STL grava apenas os três primeiros vértices de cada face de polígonos — faces quadrangulares ou n‑gonos são truncadas silenciosamente. A exportação ASCII STL grava todos os índices de vértice, o que produz blocos de facetas malformados para faces que não são triângulos. Sempre forneça malhas pré-trianguladas (faces totalmente triangulares) à exportação STL para evitar perda de dados ou saída inválida.
Problemas Comuns
| Problema | Causa | Corrigir |
|---|---|---|
| Exceção ao carregar | Arquivo não suportado ou corrompido | Verifique se o arquivo abre em um visualizador 3D |
| Materiais ausentes após carregamento de OBJ | .mtl arquivo não encontrado | Posicionar .mtl ao lado de .obj; certifique-se de que os materiais estejam habilitados |
| Descompasso de escala após importação | Sistemas de unidades diferentes | Aplicar um Transform escala após o carregamento |
FAQ
Como detectar o formato de um arquivo?
FileFormat format = FileFormat.detect("unknown.bin");
System.out.println(format.getExtension());Posso carregar a partir de um stream?
Sim. scene.open() aceita um InputStream.
Quais formatos suportam importação e exportação?
OBJ, STL e glTF/GLB suportam ambas as direções. FBX é apenas de importação; a exportação não está implementada na versão FOSS.
Resumo da Referência da API
| Classe / Método | Descrição |
|---|---|
Scene | Contêiner de cena 3D de nível superior |
scene.open() | Carregar um arquivo 3D por caminho ou fluxo |
scene.save() | Exportar cena para arquivo ou fluxo |
Scene.fromFile() | Fábrica estática para carregar e retornar um Scene |
Node | Nó da hierarquia de cena |
node.createChildNode() | Criar e anexar um nó filho |
Mesh | Malha poligonal com pontos de controle e listas de faces |
mesh.createPolygon() | Definir uma face poligonal |
Mesh.toMesh() | Converter ou clonar a geometria da malha |
Transform | Translação, rotação e escala locais |
FileFormat | Registro e detector de formatos |