LoginSignup
4
3

【AppleVisionPro】部屋の明るさをマテリアルに反映させたい!

Posted at

【AppleVisionPro】部屋の明るさをマテリアルに反映させたい!

visionOSの場合、URPのLitシェーダーを使うと、部屋の明るさによって色の明度が変わります!これはAppleVisionPro実機でも同じです!便利ですね!

image.png image.png
Litシェーダーは明るい部屋だとマテリアルも明るくなる Litシェーダーは暗い部屋だとマテリアルも暗くなる

ただ、残念ながらLitシェーダーは、以下のようなアニメ調アバターに適用すると、違和感が大きくなります。プラスチック感が増すといいますか…

image.png image.png
元のToonシェーダー Litシェーダーは違和感大

なので、ToonシェーダーをvisionOSでも使いたいのですが、2024年4月時点では、visionOSで使えるToonシェーダーはまだありません!

Unlitシェーダーを使う方法もあるんですが、これだと部屋の明るさに対応できません!

image.png image.png
Unlitシェーダーは明るい部屋だと違和感小 Unlitシェーダーは暗い部屋だと違和感大

そこで、Unlitシェーダーをベースに、部屋の明るさに対応した新しいシェーダーを作ることにしました!!

開発環境

本記事作成時点では、以下の環境で開発しています。

  • macOS 14.2.1
  • Unity 2022.3.19f1
  • PolySpatial 1.1.6
  • Xcode 15.3
  • visionOS 1.1

PolySpatial Environment Radiance で部屋の明るさが取れる!

PolySpatial Environment Radiance ノードの Diffuse Radiance という出力が、部屋の明るさ(色情報を含む)であることがわかりました!

そこで、以下のようなShaderGraphを作ってみました!

image.png

テクスチャから抽出した色情報に、 Diffuse Radiance の値をかけるだけのシンプルな処理です。
以下のように部屋の明るさをマテリアルに反映できました!

image.png image.png
image.png image.png
Diffuse Radiance を使えば、明るい部屋だとマテリアルも明るくなる Diffuse Radiance を使えば、暗い部屋だとマテリアルも暗くなる

Emissionにも対応する!

瞳のEmissionが表現されていないのが気になるので、以下のように処理を追加してみました!

image.png

これで瞳が少し明るくなりました!

image.png image.png
Emission 未対応 Emission 対応

以下のように、Apple Vision Pro実機でも正常に動作しました!よかったです!!

サンプルコード

今回作ったShaderGraphは以下に公開します。ご参照ください。

さいごに

本記事作成にあたり、以下のページを参考にさせていただきました。ありがとうございました。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3