Recursos e Funcionalidades

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 .glb extensão para saída compacta binária glTF
  • Verifique node.getEntity() != null antes 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

ProblemaCausaCorrigir
Exceção ao carregarArquivo não suportado ou corrompidoVerifique se o arquivo abre em um visualizador 3D
Materiais ausentes após carregamento de OBJ.mtl arquivo não encontradoPosicionar .mtl ao lado de .obj; certifique-se de que os materiais estejam habilitados
Descompasso de escala após importaçãoSistemas de unidades diferentesAplicar 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étodoDescrição
SceneContê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
NodeNó da hierarquia de cena
node.createChildNode()Criar e anexar um nó filho
MeshMalha poligonal com pontos de controle e listas de faces
mesh.createPolygon()Definir uma face poligonal
Mesh.toMesh()Converter ou clonar a geometria da malha
TransformTranslação, rotação e escala locais
FileFormatRegistro e detector de formatos
 Português