はじめに

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

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

主な機能

  • マルチフォーマット I/O::OBJ をインポートおよびエクスポート( .mtl マテリアル)、glTF 2.0 / GLB、STL(バイナリおよび ASCII)、3MF、そして COLLADA をファイルパスとメモリ上の両方から Buffer オブジェクト。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()
  • Math ユーティリティ: 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');

参照