Aspose.3D FOSS for .NET は、7 つの 3D ファイル形式をサポートしています: OBJ, STL, glTF, GLB, FBX, Collada, 3MF。この記事は、各形式をロードおよび保存する方法、利用可能なオプション、そしてそれらの間の変換方法を示す、実践的な形式別ガイドです。

すべての例は Aspose.ThreeD 名前空間を使用します:

using Aspose.ThreeD;
using Aspose.ThreeD.Formats;

NuGet パッケージ:

dotnet add package Aspose.3D --version 26.1.0

OBJ (Wavefront)

OBJ は、メッシュジオメトリ用の広くサポートされているテキストベースのフォーマットです。Aspose.3D FOSS は、OBJ ファイルとそれに付随する .mtl マテリアルファイルをロードします。

OBJ の読み込み

var scene = new Scene();
scene.Open("model.obj");

Console.WriteLine("Nodes: " + scene.RootNode.ChildNodes.Count);

オプション付きのロード

var opts = new ObjLoadOptions();
// Configure loading behavior as needed
var scene = new Scene();
scene.Open("model.obj", opts);

OBJとして保存

var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);

scene.Save("output.obj");

OBJ と保存オプション

var opts = new ObjSaveOptions();
scene.Save("output.obj", opts);

STL (ステレオリソグラフィ)

STL は 3D プリントの標準フォーマットです。材料や階層なしで、生の三角形ジオメトリを保存します。Aspose.3D FOSS はバイナリと ASCII の両方の STL をサポートしています。

STL の読み込み

var scene = new Scene();
scene.Open("part.stl");

Console.WriteLine("Nodes: " + scene.RootNode.ChildNodes.Count);

STLとして保存

var scene = new Scene();
var sphere = new Entities.Sphere(1);
scene.RootNode.CreateChildNode("SphereNode", sphere);

scene.Save("output.stl");

保存オプション付き STL

var opts = new StlSaveOptions();
// Control binary mode, scale, and coordinate flipping
scene.Save("output.stl", opts);

STL ラウンドトリップ

// Load an STL file and re-save it -- geometry is preserved
var scene = new Scene();
scene.Open("original.stl");
scene.Save("copy.stl");

glTF 2.0 と GLB

glTF は Web とリアルタイム 3D の最新標準です。PBR マテリアル、完全なシーン階層、そして効率的なバイナリ パッキング(GLB)をサポートします。

glTF の読み込み

var scene = new Scene();
scene.Open("model.gltf");

オプション付きのロード

var opts = new GltfLoadOptions();
var scene = new Scene();
scene.Open("model.gltf", opts);

glTFとして保存

var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);

scene.Save("output.gltf");

GLB(バイナリ glTF)として保存

自己完結型のバイナリ .glb ファイルを作成するには、.glb 拡張子で保存してください。ライブラリは拡張子からバイナリ glTF フォーマットを推測します。

scene.Save("output.glb");

FBX (Filmbox)

FBXはゲーム開発やデジタルコンテンツ制作で広く使用されています。Aspose.3D FOSS for .NETはFBXのインポートとエクスポートをサポートしています。エクスポートはバイナリFBXを生成します;ASCII FBXエクスポートコードはソースに存在しますが、このバージョンのエクスポートパスでは呼び出されません。FbxSaveOptionsクラスはデフォルト設定を提供します。

FBX の読み込み

var scene = new Scene();
scene.Open("model.fbx");

オプション付きのロード

var opts = new FbxLoadOptions();
var scene = new Scene();
scene.Open("model.fbx", opts);

FBXとして保存

var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);

// FBX export always produces binary FBX output
scene.Save("output.fbx");

オプションで保存

// Use FbxSaveOptions for format-specific defaults
var opts = new FbxSaveOptions();
scene.Save("output.fbx", opts);

3MF(3D 製造フォーマット)

3MFは、3MFコンソーシアムが開発した最新の3D印刷フォーマットです。単一のZIPベースのパッケージ内で、豊富なメタデータ、マテリアル、マルチオブジェクトシーンをサポートします。

3MF の読み込み

var scene = new Scene();
scene.Open("model.3mf");

オプション付きのロード

var opts = new TmfLoadOptions();
var scene = new Scene();
scene.Open("model.3mf", opts);

3MFとして保存

var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);

scene.Save("output.3mf");

オプションで保存

var opts = new TmfSaveOptions();
scene.Save("output.3mf", opts);

ストリームベース I/O

すべての形式はストリームからの読み込みとストリームへの保存をサポートしており、Web サービスやクラウド処理に便利です:

using var stream = File.OpenRead("model.obj");
var scene = new Scene();
var opts = new ObjLoadOptions();
scene.Open(stream, opts);

// Save to a memory stream
using var output = new MemoryStream();
var saveOpts = new GltfSaveOptions();
scene.Save(output, saveOpts);

フォーマット検出

このライブラリは、ファイル拡張子またはストリームの内容から形式を自動検出できます:

// Auto-detect from extension
var scene = new Scene();
scene.Open("model.obj");  // Detects OBJ from .obj extension

// Auto-detect from stream content
using var stream = File.OpenRead("model.obj");
scene.Open(stream);  // Inspects stream content to determine format

バッチ変換

複数のファイルを変換するには、ディレクトリを反復処理して各ファイルを変換します:

using Aspose.ThreeD;
using Aspose.ThreeD.Formats;

var inputDir = "assets/";
var outputDir = "converted/";

foreach (var file in Directory.GetFiles(inputDir, "*.fbx"))
{
    var scene = new Scene();
    scene.Open(file);

    var outputPath = Path.Combine(outputDir,
        Path.GetFileNameWithoutExtension(file) + ".glb");

    scene.Save(outputPath);
    Console.WriteLine("Converted: " + file);
}

フォーマット比較

機能OBJSTLglTFFBX3MF
マテリアルMTLいいえPBRはいはい
シーン階層いいえいいえはいはいはい
アニメーションスタブいいえいいえはいはいいいえ
バイナリモードいいえはいGLBはいZIP
3D印刷対応制限ありはいいいえいいえはい
Web配信いいえいいえはいいいえいいえ

概要

Aspose.3D FOSS for .NET は、すべての主要な 3D ファイル形式を扱うための単一で一貫した API を提供します。パターンは常に同じです: Scene を作成し、Open() を呼び出してロードし、必要に応じてフォーマット固有のオプションを設定し、Save() を呼び出してエクスポートします。フォーマット検出、ストリームベースの I/O、バッチ変換により、任意の .NET パイプラインへの統合が簡単になります。

詳細については:

  • API Reference – 詳細なクラスおよびメソッドのドキュメント。
  • Knowledge Base – 実用的なハウツー記事。
  • GitHub – ソースコードとイシュー トラッカー。