シーンのレンダリングとエクスポート

シーンのレンダリングとエクスポート

@aspose/3d は処理および変換ライブラリであり、GPU レンダリングを実行したり画像ファイルを生成したりしません。このライブラリにおける「レンダリング」とは は、シーンを下流のレンダラー、ゲームエンジン、またはビューアが利用できる形式にエクスポートすることです.

このページでは、すべてのエクスポートパス(ファイル保存、インメモリバッファ出力、フォーマット固有のオプション)と、一般的な下流ターゲット(Three.js、Babylon.js、モデルビューア、ゲームエンジン)向けにシーンを準備する方法を網羅しています。.

基本エクスポート

呼び出し scene.save() にファイルパスを指定します。ライブラリはファイル拡張子から出力形式を推測します::

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

const scene = new Scene();
scene.open('input.obj');  // use a supported format (OBJ, glTF, GLB, STL, 3MF, COLLADA)

scene.save('output.glb');    // GLB (binary glTF)
scene.save('output.stl');    // STL
scene.save('output.dae');    // COLLADA
scene.save('output.3mf');    // 3MF

GLB へのエクスポート(Web とゲーム向けに推奨)

GLB(バイナリ glTF 2.0)は、すべてのメッシュデータ、マテリアル、テクスチャを埋め込んだ単一の自己完結型ファイルです。Web ビューア(Three.js、Babylon.js、model‑viewer)やゲームエンジン(Godot、Unity のインポーター経由)向けに推奨される出力フォーマットです::

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

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

const opts = new GltfSaveOptions();
opts.binaryMode = true;    // produce .glb instead of .gltf + .bin

scene.save('output.glb', opts);
console.log('GLB export complete');

設定 binaryMode = true は、自己完結型の GLB ファイルを生成します。When false,、出力は .gltf は、別々の .bin バッファサイドカーです。.

glTF へのエクスポート(検査用 JSON フォーマット)

JSON バリアント (.gltf + .bin) は、JSON が人間に読みやすいため、開発中に便利です::

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

const scene = new Scene();
scene.open('input.dae');  // COLLADA is fully supported; FBX is not wired into scene.open()

const opts = new GltfSaveOptions();
opts.binaryMode = false;  // JSON + .bin sidecar

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

STL へのエクスポート(3D プリントワークフロー)

STL はジオメトリのみ(マテリアルやアニメーションは含まれません)。3D プリント用スライサーの標準交換フォーマットです::

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

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

const opts = new StlSaveOptions();
opts.binaryMode = true;   // binary STL is more compact than ASCII

scene.save('output.stl', opts);

設定 binaryMode = false ASCII STL を生成します。これはテキストで読み取れますが、サイズが大きくなります。.

FBX へのエクスポート(DCC ツールワークフロー)

注意: ライブラリには FBX インポーターおよびエクスポーター クラスが存在しますが、FBX フォーマットの自動検出は組み込まれていません scene.open() または scene.save(). scene.save('output.fbx', opts) 呼び出すと .fbx FBX エクスポーターは呼び出されません — 拡張子は保存ディスパッチャで認識されず、呼び出しは OBJ 出力にフォールバックします。次の FbxExporter クラスを直接使用してください。FBX の入出力が必要な場合は。この形式サポート表では FBX が No* この理由で.

Blender、Maya、または Unreal Engine が受け入れる形式にエクスポートする必要がある場合は、代わりに GLB または COLLADA を使用してください — 両方とも完全に組み込まれています scene.save():

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

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

// GLB is fully supported and widely accepted by DCC tools
const opts = new GltfSaveOptions();
opts.binaryMode = true;
scene.save('output.glb', opts);

インメモリエクスポート saveToBuffer()

サーバーレス関数、HTTPレスポンス、ストリーミングパイプライン向けに、直接 a にエクスポートします Buffer ディスクに書き込まずに:

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

function convertToGlbBuffer(inputPath: string): Buffer {
    const scene = new Scene();
    scene.open(inputPath);

    const opts = new GltfSaveOptions();
    opts.binaryMode = true;

    return scene.saveToBuffer('glb', opts);
}

// Express.js / HTTP response example
// const glbBuffer = convertToGlbBuffer('model.obj');
// res.setHeader('Content-Type', 'model/gltf-binary');
// res.send(glbBuffer);

saveToBuffer() 最初の引数としてフォーマット文字列を受け取ります(例:. 'glb', 'stl', 'obj') と同じオプションオブジェクトを使用します save().

結合 openFromBuffer()saveToBuffer()

全工程がメモリ上で完結する変換パイプラインで、いかなる段階でもディスク I/O を行いません:

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';

function objBufferToGlbBuffer(objData: Buffer): Buffer {
    const scene = new Scene();

    const loadOpts = new ObjLoadOptions();
    loadOpts.enableMaterials = true;
    scene.openFromBuffer(objData, loadOpts);

    const saveOpts = new GltfSaveOptions();
    saveOpts.binaryMode = true;

    return scene.saveToBuffer('glb', saveOpts);
}

特定のレンダラー向けにシーンを準備する

Three.js / Babylon.js(Web)

これらのレンダラーは GLB ファイルをネイティブにロードします。Export with binaryMode = true. ソース OBJ からテクスチャが参照されている場合、ensure the .mtl ロード時に画像ファイルと一緒に配置されていることを確認してください。.

model-viewer(Web コンポーネント)

受け付けます .glb 直接。Three.js と同じエクスポート設定です。.

Godot Engine

Godot のインポーター (Project → Import) を使用して GLB をインポートします。使用 binaryMode = true. Godot は glTF 2.0 の PBR マテリアルをネイティブにサポートしています。.

Blender

最高のインポート忠実度を得るには glTF (output.gltf + output.bin) または GLB (output.glb). Blender の glTF 2.0 インポーターは PBR マテリアルとアニメーションを処理します。注意: FBX 出力は scene.save() はサポートされていません — FBX フォーマットの自動検出は保存ディスパッチャに組み込まれていません。.

3D Printing (Slicers: Cura, PrusaSlicer, Bambu Studio)

STL または 3MF にエクスポートします。カラーや素材メタデータを保持したい場合は 3MF を使用してください。最大の互換性が必要な場合は STL を使用します。.

エクスポート形式比較

フォーマット拡張子マテリアルアニメーション単一ファイル推奨用途
GLB.glbPBR (glTF 2.0)はいはいWeb、ゲーム、一般配信
glTF.gltfPBR (glTF 2.0)はいいいえ (+ .bin)開発、検査
STL.stlいいえいいえはい3D printing, geometry-only
FBX.fbxPhong/PBRいいえ*いいえ*インポーター/エクスポーターは存在しますが、自動検出に接続されていません
COLLADA.daeはいはいはいクロス-DCC 交換
3MF.3mf色/素材いいえはい最新の3Dプリンティング

一般的なエクスポートの問題

症状原因修正
出力されたGLBはビューアでJSONとして開くbinaryMode そのまま false設定 opts.binaryMode = true
出力GLBにテクスチャが欠如していますbinaryMode 未設定設定 opts.binaryMode = true 自己完結型 GLB 用
STL ファイルはスライサーで色がありませんSTL フォーマットは色をサポートしていませんカラー データには 3MF を使用してください
saveToBuffer 空のバッファを返しますフォーマット文字列の引数が欠落しているか間違っていますフォーマット文字列を渡してください、例:. 'glb', 'stl',、または 'obj'
FBX は Blender でアニメーションなしで開きますソースファイル(OBJ/STL)にアニメーションがありませんアニメーションは、ソースに存在する場合にのみ引き継がれます
出力ファイルが非常に大きいですソースのOBJに多数の重複頂点がありますGLB バイナリ出力はすでに重複除去されます; ソースアセットの品質を確認してください

関連項目

 日本語