load-assets について
glTF や圧縮ジオメトリ、テクスチャ、Gaussian splats を扱う開発者向けの PlayCanvas アセット読み込みスキルです。デコーダーの設定と読み込み時の選択肢を説明します。
主な機能
- 01glTF と GLB アセットの読み込み
- 02Draco と Basis デコーダーの設定
- 03Draco によるジオメトリ圧縮
- 04KTX2 によるテクスチャ圧縮
- 05Gaussian splats の読み込み
活用シーン
- 01GLB ファイルをコンテナーアセットとしてインスタンス化
- 02圧縮アセット用 WebAssembly デコーダーの設定
- 03ファイルサイズとテクスチャの細部を比較
- 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の例から始めてください。
コメント
Markdown 対応