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.

FormatsExtensionImportationExportationSupport matérielLa hiérarchie scène
OBJ.objOuiOuiFichiers de base (Fichières MTL)Plateur
STL.stlOuiOuiNullePlateur
GST 2.0.gltfOuiOuiPBRPlongée
GLB.glbOuiOuiPBRPlongée
FBX.fbxOuiNon pasRichePlongé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éthodeObjectif
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étrieMatériauxHierarchieNotes
OBJSTLconservéperdueN/AL’AFP n’a pas de support matériel
OBJGST / GLBconservéConvertir à PBRPlateurLes matériaux MTL cartographiés où possible
STLOBJconservéNulleN/APas de matériel dans la source
STLGST / GLBconservéDéfautPlateurMatériaux défectueux appliqués
GTTFOBJconservésimplifiéFlatteurPBR à matériau de base
GTTFSTLconservéperdueFlatteurGeométrie seulement
FBXOBJconservésimplifiéFlatteurRéduction matérielle
FBXSTLconservéperdueFlatteurGeométrie seulement
FBXGST / GLBconservéConvertir à PBRconservé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. GltfSaveOptions avec setContentType(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.