Aspose.3D FOSS pour Java prend en charge cinq formats de fichiers 3D: OBJ, STL, GTTF, GLB,et FBX Ce post est un guide pratique, format-by-format qui montre comment charger et sauvegarder chacun, quelles options sont disponibles, et comment convertir entre eux.
Tous les exemples utilisent le com.aspose.threed.* Le paquet :
import com.aspose.threed.*;
La dépendance du Maven :
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.5.0</version>
</dependency>Formation du paysage
Avant de s’enfoncer, voici une vue d’ensemble rapide des quatre formats soutenus et leurs cas d’utilisation typiques.
| Formats | Extension | Importation | Exportation | Support matériel | La hiérarchie scène |
|---|---|---|---|---|---|
| OBJ | .obj | Oui | Oui | Fichiers de base (Fichières MTL) | Plateur |
| STL | .stl | Oui | Oui | Nulle | Plateur |
| GST 2.0 | .gltf | Oui | Oui | PBR | Plongée |
| GLB | .glb | Oui | Oui | PBR | Plongée |
| FBX | .fbx | Oui | Non pas | Riche | Plongée |
OBJ, STL, glTF et GLB soutiennent les importations et exportations. FBX est soutenu pour Importation uniquement.GLB (glTF binaire) est produit par le biais de la GltfSaveOptions avec setContentType(FileContentType.BINARY).
Objet : objet de l’onde
OBJ est l’un des formats de mesh 3D les plus largement supportés. Il stocke la géométrie en tant que texte plain, avec un format optionnel .mtl Fiche de compagnie pour les matériaux.
Carte des fichiers OBJ
La méthode la plus simple est de passer le chemin du fichier directement :
Scene scene = Scene.fromFile("model.obj");
Pour plus de contrôle, utilisez ObjLoadOptions:
ObjLoadOptions opts = new ObjLoadOptions();
Scene scene = Scene.fromFile("model.obj", opts);
Lorsque le fichier OBJ fait référence à un fichie MTL (via un mtllib la directive), la bibliothèque tente de charger automatiquement les définitions du matériel. le fichier MTL doit être dans le même catalogue que le fichiers OBJ ou sur le chemin spécifié dans la direction.
Économiser comme OBJ
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.obj");
OBJ utilisant les cas
- Échangez des données mesh entre différents outils 3D.
- Importer des modèles de bibliothèques d’actifs qui distribuent en format OBJ.
- Inspection rapide de la géométrie sans hiérarchies complexes.
Étiquette : Stereolithographie
STL est le format standard pour l’impression 3D. Il représente la géométrie triangulée sans matériaux, couleurs ou hiérarchie scène. Les fichiers ST L sont présentés en deux variantes: ASCII (légible à l’homme) et binaire (compact).
Télécharger les fichiers STL
// Simple load
Scene scene = Scene.fromFile("part.stl");
// With explicit options
StlLoadOptions opts = new StlLoadOptions();
Scene scene = Scene.fromFile("part.stl", opts);
Économiser comme STL
Scene scene = Scene.fromFile("model.obj");
scene.save("output.stl");
Pour contrôler la production, utilisez StlSaveOptions:
StlSaveOptions opts = new StlSaveOptions();
scene.save("output.stl", opts);
Les considérations STL
- STL ne stocke que la géométrie triangulaire. les matériaux, textures et hiérarchie de scène ne sont pas soutenus et sont jetés sur l’exportation.
- L’exportation est pas non triangulate automatiquement. STL binaire n’écrit que les 3 premiers vertices de chaque face polygone; les visages quad et n-gon sont silencieusement troncés. ASCII ST L écrit tous les indices vertiques par visage, produisant des résultats malformés pour les faces non triángules. Toujours utiliser des meshées pré-triangulaires (faces tout triângles) lors d’exportation à STl.
- Le STL binaire est significativement plus petit que le ASCII STl pour les grands modèles.
- STL est le format de choix lorsque l’objectif est un imprimante 3D ou un logiciel slicer.
GTTF : le format de transmission GL
glTF est un format moderne conçu pour la transmission et le chargement efficaces de contenu 3D, en particulier sur le web et dans les applications en temps réel. Il soutient les matériaux PBR, les hiérarchies scénariales et les animations.
Carte des fichiers glTF
Scene scene = Scene.fromFile("scene.gltf");
// With options
GltfLoadOptions opts = new GltfLoadOptions();
Scene scene = Scene.fromFile("scene.gltf", opts);
Économiser en tant que glTF
Le sauvetage de base utilise l’extension de fichier pour déterminer le format :
scene.save("output.gltf");
Pour un contrôle détaillé, utilisation GltfSaveOptions:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
GSTF Options détails
| méthode | Objectif |
|---|---|
setFlipCoordinateSystem(boolean) | Flip l’axe du système de coordination pendant l’exportation. Utile lors de la conversion de Y-up à Z-Up ou vice versa. |
setPrettyPrint(boolean) | Formatez la sortie JSON avec indentation pour lecture. false Pour une petite taille de fichier en production. |
GST utilisation des cas
- Les visuels 3D basés sur le Web (three.js, Babylon.js).
- Applications en temps réel et moteurs de jeu.
- Conserver les définitions de matériel PBR partout dans les outils.
FBX : Filmbox (Importation seulement)
FBX est un format propriétaire d’Autodesk qui est largement utilisé dans le développement de jeux et la création de contenu numérique. Aspose.3D FOSS pour Java soutient FBx pour Importation uniquement - l’exportation à FBX n’est pas disponible.
Un fbx binaire. Le fbx importateur ne lit que les fichiers FBX binaires. Passant un fichier ASCII fbbx jette
ImportException("ASCII FBX format not yet supported - only binary FBX is supported"). la hiérarchie des nuages et l’extraction de matériaux à partir de FBX ne sont pas entièrement vérifiées ; les scènes complexes de fbx peuvent ne pas être totalement chargées.
Réserver les fbx
Scene scene = Scene.fromFile("character.fbx");
// With options
FbxLoadOptions opts = new FbxLoadOptions();
Scene scene = Scene.fromFile("character.fbx", opts);
Convertir FBX dans d’autres formats
Comme l’exportation FBX n’est pas soutenue, convertir les scènes importées FBx en glTF, GLB, OBJ ou STL:
Scene scene = Scene.fromFile("character.fbx");
// Save as GLB
GltfSaveOptions opts = new GltfSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("character.glb", opts);
FBX utilisant les cas
- Importer des actifs de mesh statiques à partir d’outils Autodesk (Maya, 3ds Max) et convertir dans d’autres formats.
- Carrier de la géométrie binaire FBX et réexportation à glTF/GLB, OBJ ou STL.
Conversion Batch
Un flux de travail commun est la conversion d’un catalogue complet des fichiers d’un format à un autre. Voici un modèle pour la convergence du groupe:
import com.aspose.threed.*;
import java.io.File;
public class BatchConvert {
public static void main(String[] args) throws Exception {
File inputDir = new File("models/obj");
File outputDir = new File("models/gltf");
outputDir.mkdirs();
GltfSaveOptions saveOpts = new GltfSaveOptions();
saveOpts.setPrettyPrint(true);
File[] objFiles = inputDir.listFiles(
(dir, name) -> name.toLowerCase().endsWith(".obj")
);
if (objFiles == null) return;
for (File objFile : objFiles) {
String baseName = objFile.getName()
.replaceFirst("\\.obj$", "");
Scene scene = Scene.fromFile(objFile.getAbsolutePath());
String outPath = new File(outputDir, baseName + ".gltf")
.getAbsolutePath();
scene.save(outPath, saveOpts);
System.out.println("Converted: " + objFile.getName()
+ " -> " + baseName + ".gltf");
}
}
}
Ceci charge tous les .obj fichiers dans un catalogue, convertit chacun en glTF avec une sortie bien imprimée, et sauvegarde les résultats. Vous pouvez adapter ce modèle pour toute combinaison de format source et cible.
Conversion de référence cross-format
La table ci-dessous montre ce qu’il faut attendre lors de la conversion entre les formats.
| de | à | Géométrie | Matériaux | Hierarchie | Notes |
|---|---|---|---|---|---|
| OBJ | STL | conservé | perdue | N/A | L’AFP n’a pas de support matériel |
| OBJ | GST / GLB | conservé | Convertir à PBR | Plateur | Les matériaux MTL cartographiés où possible |
| STL | OBJ | conservé | Nulle | N/A | Pas de matériel dans la source |
| STL | GST / GLB | conservé | Défaut | Plateur | Matériaux défectueux appliqués |
| GTTF | OBJ | conservé | simplifié | Flatteur | PBR à matériau de base |
| GTTF | STL | conservé | perdue | Flatteur | Geométrie seulement |
| FBX | OBJ | conservé | simplifié | Flatteur | Réduction matérielle |
| FBX | STL | conservé | perdue | Flatteur | Geométrie seulement |
| FBX | GST / GLB | conservé | Convertir à PBR | conservé | Bonne fidélité |
Les lignes directrices de conversion générales
- Géométrie est généralement conservé parmi les paires de format, avec une exception importante: lors d’exportation à STL, les meshées doivent consister entièrement des visages triangles. Binaire ST L silencieusement troncera les quad et n-gon visage dans leurs 3 premiers vertices; ASCII STl produit la sortie malformée pour les visions non triangielles.
- Matériaux survivre le mieux entre les scènes importées de glTF et FBX qui comprennent des données matérielles. Convertir à STL cesse toujours de se dégager des matériaux.Converter à OBJ simplifie les matériaaux au modèle MTL de base.
- La hiérarchie scène est conservé entre les fichiers de format glTF. OBJ et STL produisent des structures plates. la hiérarchie FBX et l’extraction du matériel ne sont pas entièrement vérifiées dans cette version.
mettre tout ensemble
Voici un exemple complet qui charge un fichier OBJ, inspecte ses nœuds et exporte à la fois glTF et GLB:
import com.aspose.threed.*;
public class FormatWorkflow {
public static void main(String[] args) throws Exception {
// Load
Scene scene = Scene.fromFile("input.obj");
// Inspect
System.out.println("Nodes in scene:");
for (Node child : scene.getRootNode().getChildNodes()) {
System.out.println(" " + child.getName());
Transform t = child.getTransform();
System.out.println(" Translation: "
+ t.getTranslation());
}
// Export to glTF with options
GltfSaveOptions gltfOpts = new GltfSaveOptions();
gltfOpts.setPrettyPrint(true);
scene.save("output.gltf", gltfOpts);
// Export to GLB (binary glTF)
GltfSaveOptions glbOpts = new GltfSaveOptions();
glbOpts.setContentType(FileContentType.BINARY);
scene.save("output.glb", glbOpts);
System.out.println("Export complete.");
}
}
Résumé
Aspose.3D FOSS pour Java vous donne une API cohérente dans plusieurs formats.:
- OBJ - un simple échange de mesquettes avec les matériaux de base.
- STL - format de géométrie uniquement pour les pipelines d’impression 3D.
- GST / GLB - le format PBR moderne pour l’utilisation web et en temps réel.
GltfSaveOptionsavecsetContentType(FileContentType.BINARY)pour la production de GLB. - FBX - importation uniquement; format riche pour les actifs de chargement des moteurs de jeu et outils DCC.
Utilisez des formats spécifiques à la charge et enregistrez les classes d’options (ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptionsLorsque vous avez besoin de contrôle finement grain sur le processus d’importation ou d’exportation.
Pour plus de détails, visitez le Les documents 3D ou sur la source de GitHub.