はじめに

Aspose.3D FOSS for TypeScript (@aspose/3d) は、Node.js と最新のブラウザ環境向けのオープンソース、MIT ライセンスの 3D ファイルフォーマット ライブラリです。3D モデルビューア、フォーマットコンバータ、ジオメトリ処理ツール、またはサーバーサイドの 3D パイプラインを構築する開発者は、単一の npm install @aspose/3d コマンドを実行し、すぐに3Dコンテンツの読み込み、構築、エクスポートを開始します。.

このライブラリは主要なインターチェンジフォーマット — glTF 2.0 / GLB、STL、3MF、そして COLLADA をインポートとエクスポートの両方で、OBJ はインポートのみでサポートします。FBX のインポーター/エクスポーター クラスは存在しますが、まだフォーマット自動検出に組み込まれていません。シーングラフ API は 3D オーサリングツールで馴染みのあるモデルを鏡像のように再現します: a Scene は a を保持します rootNode, 各 Node は子ノードとエンティティオブジェクトを保持できます(Mesh, Camera, Light)、変換階層は読み書きのために完全にアクセス可能です。.

主な機能

  • マルチフォーマット I/O: OBJ をインポート(含む .mtl マテリアル、インポートのみ)、glTF 2.0 / GLB、STL(バイナリおよび ASCII)、3MF、そして COLLADA をファイルパスとメモリ上の両方から Buffer objects. glTF、STL、3MF、そしてCOLLADAもエクスポートをサポートしています。FBX のサポートはまだ自動検出に組み込まれていません。.
  • シーン グラフ API: Scene, Node, Mesh, Camera, Light 完全な親子管理を備えた階層構造;ノードを再帰的に走査するには、 node.childNodes
  • PBR マテリアルシステム: Lambert、Phong、そして PBR(metallic/roughness)マテリアルは、 node.entity.material
  • メッシュ操作: 生の頂点データにアクセスするには、 mesh.controlPoints (配列の Vector4), ポリゴンインデックスは、 mesh.polygonCount, および頂点要素チャンネルは、 mesh.getElement()
  • 数学ユーティリティ: Vector2, Vector3, Vector4, Matrix4, Quaternion, 空間計算用のバウンディングボックスタイプ
  • アニメーションシステム::キーフレームアニメーション AnimationClip, AnimationChannel,、線形、ベジエ、TCBスプラインなどの補間曲線
  • フォーマット固有のオプション::フォーマット別 LoadOptions / SaveOptions クラスは座標の反転、スケール、マテリアルの読み込みなどを制御します

はじめに

npm からインストールします。Node.js 18 以降が必要です;TypeScript 5.0 以上を推奨します。.

npm install @aspose/3d

OBJ ファイルをロードしてシーンを検査する:

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

const scene = new Scene();
const options = new ObjLoadOptions();
options.enableMaterials = true;
scene.open('model.obj', options);

for (const node of scene.rootNode.childNodes) {
    if (node.entity && 'controlPoints' in node.entity) {
        const mesh = node.entity as any;
        console.log(`Mesh "${node.name}": ${mesh.controlPoints.length} vertices`);
    }
}

glTFにエクスポート

ロードまたは構築したシーンを glTF 2.0 バイナリ (GLB) に保存します:

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

const scene = new Scene();
scene.open('input.obj', new ObjLoadOptions());
scene.save('output.glb');
console.log('Exported to output.glb');

ライブラリはファイル拡張子から出力フォーマットを自動検出します。渡す GltfSaveOptions インスタンスを渡して、PBRマテリアルの埋め込み、テクスチャ、バイナリとJSONエンコーディングの切り替えを制御します。.

シーン構築

プログラムでシーンを構築し、エクスポートします:

import { Scene, Node } from '@aspose/3d';
import { Mesh } from '@aspose/3d/entities';

const scene = new Scene();
const mesh = new Mesh();
// ... populate mesh.controlPoints and polygons ...
const node = new Node('myMesh');
node.entity = mesh;
scene.rootNode.addChildNode(node);
scene.save('programmatic.glb');

参照