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 に変換し、結果を保存します。このパターンは任意のソースとターゲット形式の組み合わせに適用できます。.
クロスフォーマット変換リファレンス
以下の表は、フォーマット間の変換時に期待できる内容を示しています。.
| から | へ | ジオメトリ | 材料 | 階層 | 注釈 |
|---|---|---|---|---|---|
| OBJ | STL | 保存済み | 失われた | N/A | STL にはマテリアルサポートがありません |
| OBJ | glTF/GLB | 保存済み | PBRに変換済み | フラット | 可能な限りMTLマテリアルをマッピング |
| STL | OBJ | 保存済み | なし | N/A | ソースにマテリアルがありません |
| STL | glTF/GLB | 保存済み | デフォルト | フラット | デフォルトマテリアルが適用されました |
| glTF | OBJ | 保存された | 簡略化された | フラット化 | PBR からベーシックマテリアルへ |
| glTF | STL | 保持 | 失われた | フラット化 | ジオメトリのみ |
| FBX | OBJ | 保持 | 簡略化 | フラット化 | 素材の簡略化 |
| FBX | STL | 保存済み | 失われた | 平坦化された | ジオメトリのみ |
| FBX | glTF/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 対応フォーマットです。使用
GltfSaveOptionsとsetContentType(FileContentType.BINARY)GLB 出力用。. - FBX – インポート専用;ゲームエンジンや DCC ツールからアセットを読み込むためのリッチフォーマット。.
フォーマット固有のロードおよびセーブオプションクラスを使用してください(ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptions)インポートまたはエクスポートプロセスを細かく制御する必要がある場合。.
詳細については、こちらをご覧ください Aspose.3D ドキュメント またはソースを閲覧してください GitHub.