メインコンテンツまでスキップ

<pc-gsplat>

<pc-gsplat>タグは、3D Gaussian Splatsをレンダリングするためのgsplatコンポーネントを定義するために使用されます。

スプラットベースのシーンをレンダリングする場合、最高のパフォーマンスを得るには、<pc-app>タグのantialiasfalseに、max-pixel-ratio1に設定することをお勧めします。

使用法

属性

属性タイプデフォルト説明
assetAsset ID-Gaussian splatアセットID (gsplatタイプのアセットを参照する必要があります)
cast-shadowsBoolean"false"gsplatコンポーネントが影を落とすかどうか
enabledBoolean"true"コンポーネントの有効状態
lod-falloffNumber"1"このスプラットのディテールがカメラから離れるにつれてどれだけ速く落ちるかを、0から8の指数で指定します。値が大きいほどシーン全体のスプラット予算をカメラ近くに集中させ、小さいほど均等に分散させます。LODレベルを含むアセットにのみ影響します。
lod-range-maxNumber"99"許可される最大のLODインデックス (この値を含む)。距離によって選択されるLODは、この値より粗い (インデックスが大きい) ものにならないようにクランプされます。デフォルトの99は事実上「上限なし」を意味します。LODレベルを含むアセットにのみ影響します。
lod-range-minNumber"0"許可される最小のLODインデックス (この値を含む)。距離によって選択されるLODは、この値より細かい (インデックスが小さい) ものにならないようにクランプされます。値を上げると、最高品質 (最大) のLODファイルのダウンロードを回避できます。LODレベルを含むアセットにのみ影響します。

レベルオブディテール

ストリーミング用のスプラットアセットとは、LODレベル付きでエクスポートされたものです。その<pc-asset>srcはエクスポートのlod-meta.jsonを指し、このファイルが先に読み込まれ、スプラットデータ自体はオンデマンドでストリーミングされます。こうしたアセットは、どこでもフルディテールで描画されるわけではありません。エンジンはシーン全体のスプラット予算、つまりシーン内のすべての<pc-gsplat>を合わせて画面に描くスプラット数の目標値に従って動き、最も効果の高い場所にそれを使います。予算とその使い方はシーンの性質なので<pc-scene>に置かれ、各スプラットが自分の取り分をどう競うかはここに置かれます。

属性場所制御する内容
gsplat-splat-budget<pc-scene>シーン全体で描画するスプラットの総数。デフォルトは1,000,000。シーンより大きい予算を与えると、すべてのノードが最も細かいレベルで解決されます
gsplat-lod-mode<pc-scene>"error"は近似誤差を最も減らせる場所に予算を使います。"distance"は誤差メタデータを無視し、カメラを中心とした同心円状の帯でディテールを段階的に下げます。誤差テーブルが信頼できないキャプチャ向けです
lod-falloff<pc-gsplat>このスプラットが自分の予算の中で、遠方のディテールを近くのディテールとどれだけ急にトレードするか。1が中立で、大きい値ほどディテールをカメラ側へ引き寄せます
lod-range-minlod-range-max<pc-gsplat>予算の判断にかかわらず、このスプラットが使えるLODインデックスの上下限。最小値を上げれば、最大のファイルを一切ダウンロードしないようにできます
<pc-scene gsplat-splat-budget="1500000" gsplat-lod-mode="error">
<pc-entity name="capture">
<pc-gsplat asset="capture" lod-falloff="1.5" lod-range-min="1"></pc-gsplat>
</pc-entity>
</pc-scene>

予算による選択を無効にする方法はありません。0以下の予算は上限を外すのではなく、すべてのノードを最も粗いレベルに固定してしまうため、エンジンは警告を出してデフォルトを使い続けます。すべてをフルディテールで見たい場合は、キャプチャより大きい予算を設定してください。LODレベルを持たない通常の.ply.sog.splatアセットにはどれも影響せず、常にフルで描画されます。

Splat Streamingのサンプルは大きなLODキャプチャをストリーミングし、予算を操作できるようにしているので、このトレードオフを想像ではなく実際に眺めることができます。

実物のぬいぐるみをスキャンしたガウシアンスプラットです。ドラッグで軌道回転、スクロールでズームできます。上で推奨した <pc-app> の属性にも注目してください:

ライブサンプル
<pc-app antialias="false" max-pixel-ratio="1">
<pc-asset src="https://cdn.jsdelivr.net/npm/playcanvas@2.22.0/scripts/esm/camera-controls.mjs"></pc-asset>
<pc-asset id="toy" src="https://developer.playcanvas.com/assets/toy-cat.sog"></pc-asset>
<pc-scene>
<pc-entity name="camera" position="0 0 2.5">
<pc-camera clear-color="#1d1f2b"></pc-camera>
<pc-script>
<pc-script-instance name="cameraControls" enable-pan="false" zoom-range="1 5"></pc-script-instance>
</pc-script>
</pc-entity>
<pc-entity name="toy" position="0 -0.7 0" rotation="0 0 180">
<pc-gsplat asset="toy"></pc-gsplat>
</pc-entity>
</pc-scene>
</pc-app>

JavaScriptインターフェース

GSplatComponentElement APIを使用して、<pc-gsplat>要素をプログラムで作成および操作できます。

componentプロパティは、この要素が追加するエンジンのGSplatComponentです。要素の準備が完了するまではnullで、属性が公開していないものはすべてここから利用できます。

関連項目

サンプル: Basic SplatSplat AnnotationsSplat FlipbookSplat Streaming