mcpField
L
load-assets

load-assets

github.com/playcanvas開発31139 回インストール1 週間前に更新
リポジトリ

load-assets について

glTF や圧縮ジオメトリ、テクスチャ、Gaussian splats を扱う開発者向けの PlayCanvas アセット読み込みスキルです。デコーダーの設定と読み込み時の選択肢を説明します。

主な機能

  1. 01glTF と GLB アセットの読み込み
  2. 02Draco と Basis デコーダーの設定
  3. 03Draco によるジオメトリ圧縮
  4. 04KTX2 によるテクスチャ圧縮
  5. 05Gaussian splats の読み込み

活用シーン

  1. 01GLB ファイルをコンテナーアセットとしてインスタンス化
  2. 02圧縮アセット用 WebAssembly デコーダーの設定
  3. 03ファイルサイズとテクスチャの細部を比較
  4. 04Gaussian splat シーンアセットの読み込み

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/playcanvas/skills --skill load-assets

インストール後、Claude Code で/load-assetsを入力して読み込まれたか確認します。

詳細

アセットを読み込む

glTF は完全にサポートされています

.glb ファイルを container アセットとして読み込み、instantiateModelEntity ではなく asset.resource.instantiateRenderEntity() を呼び出してください。インポーターはすでに KHR_lights_punctual、KHR_materials_* (クリアコート、シーン、透過、ボリューム、イリデッセンス、バリアントなど)、 KHR_texture_transform、および EXT_mesh_gpu_instancing を処理します。これらを手動で再構築しないでください。 AssetListLoader でアセットセットをプリロードしてください。

サイズを圧縮する

  • ジオメトリ:Draco(KHR_draco_mesh_compression)。Meshopt はサポートされていないため、配布前にそのようなファイルをデコードしてください。
  • テクスチャ:Basis を使用した KTX2(KHR_texture_basisu)は GPU 形式にトランスコードされ、ダウンロードサイズと VRAM の両方を削減します。ETC1S は最も小さく、非可逆です。UASTC はサイズが大きい一方、ディテールを保ちます。これは法線マップで特に重要です。サイズと視覚的なディテールのバランスを考慮してください。

デコーダーを設定する

npm パッケージには Draco または Basis の wasm は含まれていません。Engine の examples/assets/wasm から、インストール済みのタグ(find-examples)の draco/ と basis/ をコピーし、読み込み前に設定してください。

import { WasmModule, basisInitialize } from 'playcanvas';

WasmModule.setConfig('DracoDecoderModule', {
    glueUrl: '/wasm/draco/draco.wasm.js',
    wasmUrl: '/wasm/draco/draco.wasm.wasm',
    fallbackUrl: '/wasm/draco/draco.js'
});
await new Promise((resolve) => WasmModule.getInstance('DracoDecoderModule', resolve));
basisInitialize({
    glueUrl: '/wasm/basis/basis.wasm.js',
    wasmUrl: '/wasm/basis/basis.wasm.wasm',
    fallbackUrl: '/wasm/basis/basis.js'
});

Web Components では、<pc-app> の下に置いた <pc-wasm name="DracoDecoderModule"> 要素で、glue、wasm、fallback 属性を使って Draco の設定を行います。

その他のアセット

  • 斜めの角度から見るサーフェスでは、デフォルトが 1 の texture.anisotropy を大きくしてください。
  • Gaussian splat は gsplat アセットとして読み込まれ、gsplat コンポーネントに設定されます。gaussian-splatting の例から始めてください。

コメント