3D フォーマットサポート
Aspose.3D FOSS for TypeScript は、7つの主要な3Dファイルフォーマットの読み書きを行います。ロード時のフォーマット検出は自動です。ライブラリはバイナリのマジックナンバーを検査するため、ソースフォーマットを指定する必要はありません。フォーマット固有のオプションクラスは、パッケージのサブパスからインポートされます。 @aspose/3d パッケージ。.
サポートされているフォーマット
| フォーマット | 拡張子 | 読み取り | 書き込み | フォーマットクラス | 備考 |
|---|---|---|---|---|---|
| Wavefront OBJ | .obj | はい | はい | ObjFormat | 読み込み .mtl マテリアル; 書き込み .mtl 並行して .obj |
| glTF 2.0 | .gltf | はい | はい | GltfFormat | JSON テキスト + .bin サイドカー |
| GLB | .glb | はい | はい | GltfFormat | Binary glTF; 設定 binaryMode = true |
| STL | .stl | はい | はい | StlFormat | バイナリモードとASCIIモード |
| 3MF | .3mf | はい | はい | ThreeMfFormat | 3D Manufacturing Format |
| FBX | .fbx | いいえ* | いいえ* | FbxFormat | Importer/exporter は存在しますが、フォーマットの自動検出は未実装です;via では使用できません scene.open() |
| COLLADA | .dae | はい | はい | ColladaFormat | 必要 xmldom (自動インストール) |
OBJ(Wavefront)
OBJ はインポートとエクスポートの両方をサポートします @aspose/3d. OBJ として保存する場合、マテリアルライブラリ(.mtl)は自動的に隣接する .obj ファイル。使用 ObjLoadOptions マテリアルの読み込みと座標系の動作を制御します。.
主要オプション ObjLoadOptions:
| オプション | タイプ | デフォルト | 効果 |
|---|---|---|---|
enableMaterials | boolean | true | 解析する .mtl 参照されるファイル mtllib |
flipCoordinateSystem | boolean | false | 右手系に合わせるために Y/Z 軸を反転する |
scale | number | 1.0 | ロード時にすべての頂点に均一スケールを適用する |
normalizeNormal | boolean | true | 頂点法線を単位長さに正規化する |
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 の座標正規化など、フォーマット固有の動作を有効にできます。. xmldomCOLLADA には必須です: 自動的にインストールされます。追加しないでくださいpeerDependenciesまたは削除しようとしないでください; COLLADA リーダーが直接呼び出します。.
一般的な問題
| 症状 | 考えられる原因 | 修正 |
|---|---|---|
| OBJ のマテリアルはロード後に空です | enableMaterials 未設定 | パス ObjLoadOptions と enableMaterials = true |
GLB は生成します .bin サイドカー | binaryMode デフォルトで false | 設定 opts.binaryMode = true で GltfSaveOptions |
scene.open() “unsupported format” をスローします | ファイル拡張子が認識されません | 一致するものを渡す *LoadOptions クラスまたは使用 openFromBuffer() |
| COLLADA の読み込みが XML エラーで失敗する | xmldom 欠落または不一致 | 実行 npm install @aspose/3d 再度; xmldom は直接の依存関係です |
| ASCII エクスポートで STL の法線が失われる | ASCII STL が面ごとの法線を削除する | 使用 binaryMode = true 法線保持出力用 |
関連項目
- 機能と特徴: シーングラフ、メッシュ、マテリアル、アニメーション、そして数学 API。.
- シーングラフ: ノードツリーの構築と走査。.
- プログラムで3D Meshを構築する方法