トーンマッピングと露出
Gaussian スプラットは色を Gaussian ごとに保持しており、その色はそのまま使用されます。スプラットはライティングの影響を受けない(unlit)ため、ライト、環境光、環境マップはスプラットに一切影響しません。
しかし、出力の色は他のオブジェクトと同じように処理されます。スプラットのピクセルがフレームバッファに到達する前に、カメラのトーンカーブ、シーンの露出、そして有効な場合はフォグを通過します。つまり、シーンのライティングされたコンテンツをグレーディングするために Scene.exposure やカメラの toneMapping を変更すると、スプラットの見た目も変わってしまいます。
キャプチャが既に最終的な明るさでグレーディングされている場合は、スプラットをこのパイプラインから除外できます。
トーンマッピングと露出を無効にする
Scene.gsplat.useTonemap を false に設定します:
// カメラのトーンマッピングとシーンの露出に関係なく、スプラットは保持している色を維持します
app.scene.gsplat.useTonemap = false;
これにより、スプラットに対してのみトーンカーブと露出の乗算がスキップされます。シーン内の他のオブジェクトはこれまで通りそれらを使用するため、スプラットを固定したまま、メッシュ、ライト、空のグレーディングを続けられます。
主な用途:
- グレーディング済みのキャプチャ: キャプチャが既に最終的な見た目にカラーグレーディングされており、再度トーンマッピングするべきではない場合。
- 露出のアニメーション: 昼夜サイクルや露出のランプなど、ライティングされたコンテンツを明るく・暗くする際に、スプラットを一緒に変化させたくない場合。
- リファレンスとの一致: 元のキャプチャや他のビューアーとレンダリング結果を比較する場合。トーンカーブによる差異は望ましくありません。
トーンマッピングを無効にすると、スプラットはシーンの他の部分とトーン特性を共有しなくなります。明るい値がトーンカーブによってロールオフされなくなるため、圧縮されずにクリップします。また、トーンマッピングされたメッシュの隣にあるスプラットは見た目が不一致になることがあります。スプラットとライティングされたジオメトリが混在するシーンでは、通常はこれを有効のままにして、代わりにキャプチャ側を調整する方が良い結果になります。
フォグを無効にする
フォグには独自のスイッチ Scene.gsplat.useFog があります:
// スプラットはシーンとカメラのフォグ設定を無視します
app.scene.gsplat.useFog = false;
2 つのスイッチは互いに独立しています。useTonemap を false にしてフォグを有効のままにした場合も、スプラットにはフォグがかかります。フォグはリニア空間で適用され、その結果が出力の色空間にエンコードされます。異なるのは、トーンカーブと露出が適用されない点だけです。
スプラットの色に影響する設定
| 設定 | スプラットへの適用 | 除外する方法 |
|---|---|---|
Scene.exposure | あり | Scene.gsplat.useTonemap = false |
CameraComponent.toneMapping | あり | Scene.gsplat.useTonemap = false |
| シーンまたはカメラのフォグ | あり | Scene.gsplat.useFog = false |
| 出力の色空間(ガンマエンコード) | あり | 選択不可 — レンダーターゲットによって決まります |
| ライト、環境光、環境マップ | なし | スプラットは unlit です。リライティング を参照してください |
どちらのフラグも Scene.gsplat に属するため、シーン内のすべてのスプラットに適用されます。個々のスプラットや特定の GSplat コンポーネントの色を変更したい場合は、カスタムシェーダー を使用してください。