Estamos entusiasmados em anunciar a disponibilidade de Aspose.3D FOSS for Java – uma biblioteca gratuita e de código aberto para trabalhar com formatos de arquivos 3D em aplicações Java. Construída como uma solução Java pura sem dependências nativas, a biblioteca funciona no Java 21 e posteriores, tornando-a acessível a uma ampla variedade de projetos e ambientes.
Este post apresenta o que a biblioteca oferece, como começar e para onde ir a partir daqui.
O que é Aspose.3D FOSS para Java?
Aspose.3D FOSS for Java é uma biblioteca leve de processamento de arquivos 3D publicada sob a licença MIT. Ela fornece uma API de grafo de cena que permite carregar, inspecionar, transformar e salvar modelos 3D em vários formatos amplamente usados. A biblioteca é totalmente escrita em Java e não requer binários nativos externos ou configurações específicas de plataforma.
O código-fonte está disponível no GitHub: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Principais Destaques
- Puro Java – sem JNI, sem bibliotecas nativas, sem restrições de plataforma.
- Java 21+ compatível.
- licenciado sob a licença MIT – use-o em projetos pessoais, comerciais ou proprietários sem restrições.
- Arquitetura de grafo de cena – uma árvore familiar de nós, malhas, câmeras e materiais.
- Suporte a múltiplos formatos – ler e gravar arquivos OBJ, STL, glTF 2.0 e GLB; ler arquivos FBX.
Início Rápido
Instalação do Maven
Adicione a seguinte dependência ao seu pom.xml:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>
Sua Primeira Conversão
O caso de uso mais simples é carregar um arquivo 3D em um formato e salvá‑lo em outro. Aqui está uma conversão de duas linhas de OBJ para STL:
import com.aspose.threed.*;
public class QuickConvert {
public static void main(String[] args) throws Exception {
Scene scene = Scene.fromFile("cube.obj");
scene.save("output.stl");
}
}
O Scene classe é o ponto de entrada central. Chame Scene.fromFile() com um caminho de arquivo para carregar um modelo, então chame save() com o caminho de destino. A biblioteca infere o formato a partir da extensão do arquivo.
Construindo uma Cena do Zero
Você também pode construir cenas programaticamente:
import com.aspose.threed.*;
public class BuildScene {
public static void main(String[] args) throws Exception {
Scene scene = new Scene();
Node node = scene.getRootNode().createChildNode("Box");
Transform t = node.getTransform();
t.setTranslation(1, 2, 3);
scene.save("scene.gltf");
}
}
Isso cria uma nova cena, adiciona um nó filho chamado “Box” sob a raiz, posiciona‑o nas coordenadas (1, 2, 3) e exporta o resultado como um arquivo glTF.
Carregando com Opções Específicas de Formato
Quando você precisa de um controle mais fino sobre o processo de carregamento, cada formato fornece uma classe de opções dedicada. Por exemplo, carregando um arquivo STL com opções explícitas:
import com.aspose.threed.*;
public class LoadWithOptions {
public static void main(String[] args) throws Exception {
StlLoadOptions opts = new StlLoadOptions();
Scene scene = Scene.fromFile("part.stl", opts);
// Inspect the loaded scene
System.out.println("Root children: "
+ scene.getRootNode().getChildNodes().size());
// Re-export as OBJ
scene.save("part.obj");
}
}
O Scene.fromFile() O método estático aceita qualquer um dos tipos de opção de carregamento: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, ou FbxLoadOptions.
Percorrendo o Grafo da Cena
Depois que uma cena é carregada, você pode percorrer a árvore de nós para inspecionar ou modificar seu conteúdo:
import com.aspose.threed.*;
public class TraverseScene {
public static void main(String[] args) throws Exception {
Scene scene = Scene.fromFile("model.gltf");
for (Node child : scene.getRootNode().getChildNodes()) {
System.out.println("Node: " + child.getName());
Transform t = child.getTransform();
System.out.println(" Translation: " + t.getTranslation());
Entity entity = child.getEntity();
if (entity instanceof Mesh) {
Mesh mesh = (Mesh) entity;
System.out.println(" Vertices: "
+ mesh.getControlPoints().size());
}
}
}
}
Esse padrão é útil para depuração, geração de relatórios sobre o conteúdo do modelo ou modificação seletiva de partes de uma cena antes de reexportar.
Aplicando Transformações
O posicionamento de nós no espaço 3D é feito através do Transform objeto em cada Node:
import com.aspose.threed.*;
public class TransformExample {
public static void main(String[] args) throws Exception {
Scene scene = new Scene();
Node parent = scene.getRootNode().createChildNode("Parent");
parent.getTransform().setTranslation(10, 0, 0);
Node child = parent.createChildNode("Child");
child.getTransform().setTranslation(5, 0, 0);
child.getTransform().setScale(2, 2, 2);
// Child's world position is (15, 0, 0) due to
// parent-child transform inheritance
scene.save("transformed.gltf");
}
}
As transformações seguem o modelo padrão de herança pai‑filho: a posição em espaço mundial de um filho é a combinação de sua transformação local e de todas as transformações dos ancestrais até a raiz.
O que está incluído
A biblioteca vem com um conjunto focado de recursos projetados em torno do modelo de grafo de cena 3D.
Grafo de Cena
O grafo de cena é a espinha dorsal da API. Cada arquivo 3D é representado como uma estrutura em árvore:
| Classe | Função |
|---|---|
Scene | Contêiner de nível superior; a raiz do grafo de cena |
Node | Uma posição nomeada na árvore; contém transformações e nós filhos |
Entity | Base abstrata para objetos visuais anexados a nós |
Mesh | Geometria poligonal – vértices, faces, normais |
Camera | Definição de câmera virtual |
Transform | Translação, rotação e escala locais de um nó |
GlobalTransform | Transformação no espaço mundial calculada |
Materiais
A biblioteca fornece um modelo de material PBR (Physically Based Rendering):
- PbrMaterial – material de renderização baseada em física com albedo, metalness, roughness, cor emissiva e transparência. Esta é a única classe de material concreta disponível na edição Java.
Utilitários Matemáticos
O com.aspose.threed pacote inclui primitivas matemáticas essenciais:
- Vector3 – vetor de 3 componentes para posições, direções e cores.
- Matrix4 – matriz de transformação 4x4.
- Quaternion – representação de rotação.
- BoundingBox – caixa delimitadora alinhada ao eixo para consultas espaciais.
Vector3 a = new Vector3(1, 0, 0);
Vector3 b = new Vector3(0, 1, 0);
Vector3 c = Vector3.add(a, b); // (1, 1, 0)
Opções de Carregamento e Salvamento
Cada formato possui classes de opções dedicadas que permitem controlar o comportamento de importação e exportação:
| Formato | Opções de Carregamento | Opções de Salvamento |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| glTF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | – (apenas importação) |
Por exemplo, para exportar glTF com JSON formatado de forma legível e um sistema de coordenadas invertido:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
Formatos Suportados
A tabela a seguir resume os formatos que Aspose.3D FOSS para Java pode ler e gravar.
| Formato | Extensão | Importar | Exportar | Notas |
|---|---|---|---|---|
| OBJ | .obj | Sim | Sim | Com materiais MTL |
| STL | .stl | Sim | Sim | Binário + ASCII |
| glTF 2.0 | .gltf | Sim | Sim | Formato JSON |
| GLB | .glb | Sim | Sim | glTF binário via GltfSaveOptions |
| FBX | .fbx | Sim | Não | Somente importação |
OBJ, STL, glTF e GLB suportam tanto carregamento quanto gravação. FBX é suportado apenas para importação.
Guia de Seleção de Formato
Escolher o formato correto depende do seu caso de uso:
- OBJ é ideal quando você precisa da máxima compatibilidade entre ferramentas 3D. Quase todo aplicativo de modelagem pode ler e gravar OBJ. Funciona bem para a troca de dados de malha, mas transporta apenas informações básicas de material por meio de arquivos MTL complementares.
- STL é o formato preferido para fluxos de trabalho de impressão 3D. Ele armazena geometria triangulada bruta sem materiais ou hierarquia de cena, que é exatamente o que o software de fatiamento espera. Se o seu pipeline termina em uma impressora 3D, STL é a escolha mais direta.
- glTF é o padrão moderno para web e 3D em tempo real. Ele suporta materiais PBR, hierarquias completas de cena e foi projetado para transmissão eficiente. Use glTF ao criar visualizadores baseados na web, trabalhar com three.js ou Babylon.js, ou direcionar qualquer pipeline de renderização em tempo real.
- FBX está profundamente integrado aos fluxos de trabalho de desenvolvimento de jogos e criação de conteúdo digital. Ele suporta dados de cena ricos, incluindo hierarquias e materiais. Aspose. 3D FOSS for Java suporta FBX apenas importação – use-o para carregar ativos FBX e convertê-los para outros formatos.
Limitações Conhecidas
É importante notar que Scene.render() é não suportado na edição FOSS. Chamar este método lançará um UnsupportedOperationException. A biblioteca foi projetada para processamento 3D baseado em arquivos – carregamento, manipulação, transformação e salvamento de modelos – em vez de renderização em tempo real para um display.
Código Aberto e Licenciamento
Aspose.3D FOSS for Java é lançado sob a MIT License. Isso significa que você está livre para:
- Usar a biblioteca em aplicações comerciais e proprietárias.
- Modificar o código-fonte para atender às suas necessidades.
- Distribua a biblioteca como parte do seu próprio software.
Não há taxas de royalties, limites de uso ou requisitos de atribuição além do que a licença MIT especifica.
O código-fonte completo está hospedado no GitHub, e contribuições são bem-vindas: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Requisitos do Sistema
| Requisito | Detalhe |
|---|---|
| Java versão | 21 or later |
| Dependências | Nenhum (puro Java) |
| Plataformas | Qualquer plataforma que execute uma JVM |
| Ferramenta de build | Maven (recomendado) |
Começando
Aqui estão os recursos para ajudá-lo a começar:
- Documentação – guias abrangentes e tutoriais de API estão disponíveis no Aspose.3D site de documentação.
- Base de Conhecimento – artigos práticos de como‑fazer e dicas de solução de problemas na Aspose.3D KB.
- Referência da API – referência detalhada de classes e métodos no Aspose.3D Referência da API.
- Código-fonte – navegue e contribua em GitHub.
- Maven Central – o pacote é publicado como
com.aspose:aspose-3d-fossno Maven Central.
Casos de Uso Comuns
Aqui estão alguns cenários práticos onde Aspose.3D FOSS para Java se encaixa bem:
Pipelines de Conversão de Formato
Muitas equipes recebem ativos 3D em um formato, mas precisam deles em outro. Uma equipe de design pode trabalhar em FBX enquanto a equipe web precisa de glTF. A biblioteca permite que você crie pipelines de conversão automatizados:
// Convert all incoming FBX assets to GLB for the web team
Scene scene = Scene.fromFile("asset.fbx");
GltfSaveOptions opts = new GltfSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("asset.glb", opts);
3D Model Inspection and Validation
Antes de integrar um ativo 3D em sua aplicação, você pode querer validar seu conteúdo – verificando a contagem de nós, confirmando a geometria ou assegurando que os elementos esperados estejam presentes:
Scene scene = Scene.fromFile("model.obj");
int nodeCount = scene.getRootNode().getChildNodes().size();
System.out.println("Top-level nodes: " + nodeCount);
for (Node child : scene.getRootNode().getChildNodes()) {
if (child.getEntity() instanceof Mesh) {
Mesh mesh = (Mesh) child.getEntity();
System.out.println(child.getName() + ": "
+ mesh.getControlPoints().size() + " vertices");
}
}
Montagem da Cena
Você pode carregar vários modelos e combiná-los em uma única cena:
Scene scene = new Scene();
Scene part1 = Scene.fromFile("chassis.obj");
Scene part2 = Scene.fromFile("wheels.obj");
// Add nodes from each part into the combined scene
for (Node child : part1.getRootNode().getChildNodes()) {
scene.getRootNode().getChildNodes().add(child);
}
for (Node child : part2.getRootNode().getChildNodes()) {
scene.getRootNode().getChildNodes().add(child);
}
scene.save("assembled.gltf");
Próximos passos
Nos próximos posts, abordaremos:
- Uma análise aprofundada dos recursos principais da API de grafo de cena, materiais e utilitários matemáticos.
- Um guia prático para trabalhar com cada formato 3D suportado – OBJ, STL, glTF e FBX – incluindo opções de carregamento/salvamento e padrões de conversão em lote.
Fique ligado, e sinta-se à vontade para explorar a biblioteca e compartilhar seu feedback no GitHub.