3D フォーマットサポート

Aspose.3D FOSS for TypeScript は、7つの主要な3Dファイルフォーマットの読み書きを行います。ロード時のフォーマット検出は自動です。ライブラリはバイナリのマジックナンバーを検査するため、ソースフォーマットを指定する必要はありません。フォーマット固有のオプションクラスは、パッケージのサブパスからインポートされます。 @aspose/3d パッケージ。.

サポートされているフォーマット

フォーマット拡張子読み取り書き込みフォーマットクラス備考
Wavefront OBJ.objはいはいObjFormat読み込み .mtl マテリアル; 書き込み .mtl 並行して .obj
glTF 2.0.gltfはいはいGltfFormatJSON テキスト + .bin サイドカー
GLB.glbはいはいGltfFormatBinary glTF; 設定 binaryMode = true
STL.stlはいはいStlFormatバイナリモードとASCIIモード
3MF.3mfはいはいThreeMfFormat3D Manufacturing Format
FBX.fbxいいえ*いいえ*FbxFormatImporter/exporter は存在しますが、フォーマットの自動検出は未実装です;via では使用できません scene.open()
COLLADA.daeはいはいColladaFormat必要 xmldom (自動インストール)

OBJ(Wavefront)

OBJ はインポートとエクスポートの両方をサポートします @aspose/3d. OBJ として保存する場合、マテリアルライブラリ(.mtl)は自動的に隣接する .obj ファイル。使用 ObjLoadOptions マテリアルの読み込みと座標系の動作を制御します。.

主要オプション ObjLoadOptions:

オプションタイプデフォルト効果
enableMaterialsbooleantrue解析する .mtl 参照されるファイル mtllib
flipCoordinateSystembooleanfalse右手系に合わせるために Y/Z 軸を反転する
scalenumber1.0ロード時にすべての頂点に均一スケールを適用する
normalizeNormalbooleantrue頂点法線を単位長さに正規化する
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const scene = new Scene();
const opts = new ObjLoadOptions();
opts.enableMaterials = true;
opts.normalizeNormal = true;

scene.open('model.obj', opts);
console.log(`Loaded ${scene.rootNode.childNodes.length} top-level node(s)`);

OBJ を任意の書き込み可能な形式に変換するには、ロードしてから次を呼び出します scene.save() 対象フォーマットクラスを使用して.

glTF と GLB

glTF 2.0 は Web およびゲームエンジンでの使用に推奨される交換フォーマットです。ライブラリは同じ GltfFormat クラスは両方に対して .gltf (JSON + サイドカー) と .glb (バイナリ、自己完結型) 出力。これらを切り替えるには GltfSaveOptions.binaryMode.

glTF または GLB をロード:

import { Scene } from '@aspose/3d';
import { GltfLoadOptions } from '@aspose/3d/formats/gltf';

const scene = new Scene();
scene.open('model.gltf', new GltfLoadOptions());
// or
scene.open('model.glb');  // format detected from magic bytes

JSON glTF としてエクスポート (.gltf + .bin):

import { Scene } from '@aspose/3d';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';

const scene = new Scene();
scene.open('input.fbx');

const opts = new GltfSaveOptions();
opts.binaryMode = false;  // produces output.gltf + output.bin
scene.save('output.gltf', GltfFormat.getInstance(), opts);

バイナリ GLB としてエクスポート (.glb):

import { Scene } from '@aspose/3d';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';

const scene = new Scene();
scene.open('input.obj');

const opts = new GltfSaveOptions();
opts.binaryMode = true;  // single self-contained file
scene.save('output.glb', GltfFormat.getInstance(), opts);

使用 binaryMode = true 本番環境のアセット配信向けに。単一の .glb テキストとバイナリの分割ペアよりも、ブラウザやエンジンでの読み込みが速くなります。.

STL

STL は CAD や 3D プリントで使用される三角形メッシュ形式です。バイナリ STL と ASCII STL の両方が入力および出力でサポートされています。. StlSaveOptions.binaryMode 出力がバイナリ(コンパクト)か ASCII(人間可読)かを制御します。.

import { Scene } from '@aspose/3d';
import { StlLoadOptions, StlSaveOptions } from '@aspose/3d/formats/stl';

const scene = new Scene();
scene.open('model.stl', new StlLoadOptions());

// Export as binary STL (default, compact)
const binaryOpts = new StlSaveOptions();
binaryOpts.binaryMode = true;
scene.save('output_binary.stl', binaryOpts);

// Export as ASCII STL (human-readable)
const asciiOpts = new StlSaveOptions();
asciiOpts.binaryMode = false;
scene.save('output_ascii.stl', asciiOpts);

STL は三角形ジオメトリと頂点法線のみを保存します。マテリアルや UV データは STL では保持されません。.

3MF (3D Manufacturing Format)

3MF is an XML-based format designed for additive manufacturing. It supports color and material metadata alongside geometry. Use it when exchanging files with 3D printing slicers or manufacturing workflows.

import { Scene } from '@aspose/3d';
import { ThreeMfSaveOptions } from '@aspose/3d/formats/3mf';

const scene = new Scene();
scene.open('model.3mf');

// Re-export as 3MF
scene.save('output.3mf', new ThreeMfSaveOptions());

3MF files are ZIP archives internally. The library handles archive creation and extraction automatically.

FBX

警告::FBX インポーターおよびエクスポータークラス (FbxImporter, FbxExporter) はライブラリに存在しますが、FBX フォーマットの自動検出は 接続されていませんscene.open() または scene.save(). 呼び出し scene.open('file.fbx') は FBX インポーターを呼び出さず、ファイルは STL フォールバックにフォールスルーします。呼び出し scene.save('output.fbx', opts) は FBX エクスポーターを呼び出さず。上記のフォーマットサポート表では FBX が No* この理由により。GLB または COLLADA を使用して、完全に機能するインポートとエクスポートを via scene.open() / scene.save().

COLLADA (DAE)

COLLADA は、幅広い DCC ツール(Blender、Maya、Cinema 4D)でサポートされている XML ベースのインターチェンジフォーマットです。ライブラリは xmldom 依存関係を XML パースに使用します; それは自動的に with npm install @aspose/3d.

import { Scene } from '@aspose/3d';
import { ColladaSaveOptions } from '@aspose/3d/formats/collada';

const scene = new Scene();
scene.open('model.dae');

// Re-export as COLLADA
const saveOpts = new ColladaSaveOptions();
scene.save('output.dae', saveOpts);

COLLADA ファイルには単位スケーリングメタデータが含まれることがあります(<unit> 要素)。ライブラリはロード時に単位変換を自動的に適用します。.

フォーマット自動検出

ファイルパスからロードする際、ライブラリはバイナリのマジックナンバーからフォーマット検出を試み、ファイル拡張子にフォールバックします。これにより、GLB ファイルを named .bin または STL ファイル名 .model 形式を明示的に指定せずに。.

ロードする際に Buffer 使用 scene.openFromBuffer(), マジックナンバー検出が主なメカニズムです:

import { Scene } from '@aspose/3d';
import * as fs from 'fs';

const buffer = fs.readFileSync('model.glb');
const scene = new Scene();
scene.openFromBuffer(buffer);  // format detected from magic bytes: 'glTF'

console.log(`Root has ${scene.rootNode.childNodes.length} child node(s)`);

信頼できるマジックナンバーを持つフォーマット: GLB (glTF), STL バイナリ (80 バイトヘッダー + 三角形数), 3MF (ZIP マジック PK). OBJ と COLLADA はテキストベースで、ファイル拡張子または渡すオプションクラスによって検出されます。.

ヒント

  • OBJ はインポートとエクスポートの両方をサポートします::OBJ として保存する際、 .mtl マテリアルファイルは自動的に隣に書き込まれます .obj ファイル。.
  • Web 配信には GLB を使用してください: セルフコンテインドのバイナリ形式は CORS の問題を回避します .bin サイドカーを使用せず、WebGL レンダラでの読み込みが速くなります。.
  • フォーマット固有のオプションを渡す: 汎用 scene.open(path) ほとんどのフォーマットで機能しますが、ローダーオプションクラスを渡すことで OBJ のマテリアル読み込みや STL の座標正規化など、フォーマット固有の動作を有効にできます。.
  • xmldom COLLADA には必須です: 自動的にインストールされます。追加しないでください peerDependencies または削除しようとしないでください; COLLADA リーダーが直接呼び出します。.

一般的な問題

症状考えられる原因修正
OBJ のマテリアルはロード後に空ですenableMaterials 未設定パス ObjLoadOptionsenableMaterials = true
GLB は生成します .bin サイドカーbinaryMode デフォルトで false設定 opts.binaryMode = trueGltfSaveOptions
scene.open() “unsupported format” をスローしますファイル拡張子が認識されません一致するものを渡す *LoadOptions クラスまたは使用 openFromBuffer()
COLLADA の読み込みが XML エラーで失敗するxmldom 欠落または不一致実行 npm install @aspose/3d 再度; xmldom は直接の依存関係です
ASCII エクスポートで STL の法線が失われるASCII STL が面ごとの法線を削除する使用 binaryMode = true 法線保持出力用

関連項目

 日本語