Aspose.3D FOSS for Java は5つの3Dファイル形式をサポートしています: OBJ, STL, glTF, GLB,、および FBX (インポートのみ)。.

すべての例は com.aspose.threed.* パッケージ:

import com.aspose.threed.*;

Maven 依存関係::

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-3d-foss</artifactId>
    <version>26.1.0</version>
</dependency>

フォーマット概要

本題に入る前に、サポートされている4つのフォーマットとそれぞれの典型的な使用例を簡単にご紹介します。.

フォーマット拡張子インポートエクスポートマテリアルサポートシーン階層
OBJ.objはいはい基本 (MTL ファイル)フラット
STL.stlはいはいなしフラット
glTF 2.0.gltfはいはいPBRフル
GLB.glbはいはいPBRフル
FBX.fbxはいいいえリッチフル

OBJ、STL、glTF、そして GLB はインポートとエクスポートの両方をサポートしています。FBX は インポートのみ. GLB (binary glTF) は以下によって生成されます GltfSaveOptions 使用して setContentType(FileContentType.BINARY).

OBJ:Wavefront Object

OBJ は最も広くサポートされている 3D メッシュ形式のひとつです。ジオメトリはプレーンテキストとして保存され、オプションの .mtl マテリアル用の companion ファイルです。.

OBJ ファイルの読み込み

最も簡単な方法は、ファイルパスを直接渡すことです::

Scene scene = Scene.fromFile("model.obj");

より細かく制御するには、次を使用してください ObjLoadOptions:

ObjLoadOptions opts = new ObjLoadOptions();
Scene scene = Scene.fromFile("model.obj", opts);

OBJ ファイルが MTL ファイルを参照する場合( mtllib ディレクティブ)、ライブラリは自動的にそこからマテリアル定義を読み込もうとします。MTL ファイルは OBJ ファイルと同じディレクトリにあるか、ディレクティブで指定されたパスに配置してください。.

OBJ形式で保存

Scene scene = Scene.fromFile("input.fbx");
scene.save("output.obj");

OBJの使用例

  • 異なる3Dツール間でメッシュデータをやり取りする。.
  • OBJ形式で配布されているアセットライブラリからモデルをインポートする。.
  • 複雑なシーン階層なしでジオメトリを迅速に検査する。.

STL:ステレオリソグラフィー

STLは3Dプリンティングの標準フォーマットです。素材、色、シーン階層を持たない生の三角形ジオメトリを表現します。STLファイルは2つのバリエーションがあります:ASCII(人間が読める)とバイナリ(コンパクト)。.

STLファイルの読み込み

// Simple load
Scene scene = Scene.fromFile("part.stl");

// With explicit options
StlLoadOptions opts = new StlLoadOptions();
Scene scene = Scene.fromFile("part.stl", opts);

STLとして保存

Scene scene = Scene.fromFile("model.obj");
scene.save("output.stl");

出力を制御するには、次を使用してください StlSaveOptions:

StlSaveOptions opts = new StlSaveOptions();
scene.save("output.stl", opts);

STLに関する考慮事項

  • STL ファイルには三角形化されたジオメトリのみが含まれます。マテリアル、テクスチャ、シーン階層はエクスポート時に失われます。.
  • バイナリ STL は、大規模モデルにおいて ASCII STL よりもかなり小さくなります。.
  • STL は、対象が 3D プリンタやスライサーソフトウェアの場合に選択されるフォーマットです。.

glTF: GL Transmission Format

glTF は、特にウェブやリアルタイムアプリケーションにおける 3D コンテンツの効率的な転送とロードを目的とした最新のフォーマットです。PBR マテリアル、シーン階層、アニメーションをサポートします。.

glTF ファイルの読み込み

Scene scene = Scene.fromFile("scene.gltf");

// With options
GltfLoadOptions opts = new GltfLoadOptions();
Scene scene = Scene.fromFile("scene.gltf", opts);

glTF として保存

基本的な保存は、ファイル拡張子で形式を判定します:

scene.save("output.gltf");

詳細な制御を行うには、使用してください GltfSaveOptions:

GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);

scene.save("output.gltf", opts);

GltfSaveOptions の詳細

メソッド目的
setFlipCoordinateSystem(boolean)エクスポート時に座標系の軸を反転します。Y-up から Z-up へ、またはその逆に変換する際に便利です。.
setPrettyPrint(boolean)出力 JSON をインデント付きで整形し、可読性を向上させます。設定は false 本番環境でファイルサイズを小さくするために.

glTF の使用例

  • Web ベースの 3D ビューア(three.js、Babylon.js)。.
  • リアルタイムアプリケーションやゲームエンジン。.
  • ツール間でPBRマテリアル定義を保持する。.

FBX: Filmbox(インポートのみ)

FBX は Autodesk が提供する独自フォーマットで、ゲーム開発やデジタルコンテンツ制作で広く使用されています。豊富なシーン階層、マテリアル、アニメーションをサポートします。Aspose.3D FOSS for Java は FBX をサポートしています インポートのみ – FBX へのエクスポートは利用できません。.

FBX ファイルの読み込み

Scene scene = Scene.fromFile("character.fbx");

// With options
FbxLoadOptions opts = new FbxLoadOptions();
Scene scene = Scene.fromFile("character.fbx", opts);

FBX を他のフォーマットに変換する

FBX のエクスポートがサポートされていないため、インポートした FBX シーンを glTF、GLB、OBJ、または STL に変換してください::

Scene scene = Scene.fromFile("character.fbx");

// Save as GLB
GltfSaveOptions opts = new GltfSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("character.glb", opts);

FBX の使用例

  • Autodesk ツール(Maya、3ds Max)からアセットをインポートし、他のフォーマットに変換する。.
  • リギングされたキャラクターとアニメーションシーンを glTF/GLB に再エクスポートするために読み込んでいます。.

バッチ変換

一般的なワークフローは、ディレクトリ全体のファイルをあるフォーマットから別のフォーマットへ変換することです。以下はバッチ変換のパターンです::

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");
        }
    }
}

これはすべての .obj ディレクトリ内のファイルを読み込み、各ファイルを整形された出力で glTF に変換し、結果を保存します。このパターンは任意のソースとターゲット形式の組み合わせに適用できます。.

クロスフォーマット変換リファレンス

以下の表は、フォーマット間の変換時に期待できる内容を示しています。.

からジオメトリ材料階層注釈
OBJSTL保存済み失われたN/ASTL にはマテリアルサポートがありません
OBJglTF/GLB保存済みPBRに変換済みフラット可能な限りMTLマテリアルをマッピング
STLOBJ保存済みなしN/Aソースにマテリアルがありません
STLglTF/GLB保存済みデフォルトフラットデフォルトマテリアルが適用されました
glTFOBJ保存された簡略化されたフラット化PBR からベーシックマテリアルへ
glTFSTL保持失われたフラット化ジオメトリのみ
FBXOBJ保持簡略化フラット化素材の簡略化
FBXSTL保存済み失われた平坦化されたジオメトリのみ
FBXglTF/GLB保存済みPBRに変換済み保存済み高い忠実度

一般的な変換ガイドライン

  • ジオメトリ すべてのフォーマットペア間で常に保持されます。.
  • マテリアル glTF と FBX の間で最もよく保持されます。どちらもリッチなマテリアルモデルをサポートしています。STL に変換すると常にマテリアルが失われます。OBJ に変換するとマテリアルは基本的な MTL モデルに簡略化されます。.
  • シーン階層 glTF と FBX の間で保持されます。OBJ と STL はフラットな構造を生成します。.

すべてをまとめて

以下は、OBJ ファイルを読み込み、ノードを検査し、glTF と 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.");
    }
}

概要

Aspose.3D FOSS for Java は、複数のフォーマットにわたって一貫した API を提供します。主なポイントは次のとおりです::

  • OBJ – 基本的なマテリアルを使用したシンプルなメッシュ交換。.
  • STL – 3D プリントパイプライン向けのジオメトリのみのフォーマット。.
  • glTF / GLB – Web とリアルタイム使用向けの最新 PBR 対応フォーマットです。使用 GltfSaveOptionssetContentType(FileContentType.BINARY) GLB 出力用。.
  • FBX – インポート専用;ゲームエンジンや DCC ツールからアセットを読み込むためのリッチフォーマット。.

フォーマット固有のロードおよびセーブオプションクラスを使用してください(ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptions)インポートまたはエクスポートプロセスを細かく制御する必要がある場合。.

詳細については、こちらをご覧ください Aspose.3D ドキュメント またはソースを閲覧してください GitHub.