読者です 読者をやめる 読者になる 読者になる

しゅみぷろ

プログラミングとか

SceneビューでRaymarchingのプレビューをON/OFFする

C# Unity

 

esprog.hatenablog.com

 

こちらで紹介したUnityでRaymarchingを行う際に使用しているスクリプトで、カメラに対してCommandBufferを追加しているスクリプトがあります。

これの問題点は、SceneビューではRaymarchingによる描画を見ることができないことです(実は見ることはできたのですが、他のオブジェクトを配置する際に煩雑だったのと、OnWillRenderObjectでカメラを取得していたため描画範囲に必ず入る何かしらのオブジェクトを配置する必要があったためこの機能を取り除きました。詳細はこちらを見てください)。

今回のスクリプトでは

  • カメラに直接コンポーネントを取り付けるだけで利用できる
  • インスペクターからSceneビューでのプレビューのON/OFFを切り替えることができる
  • プレビューは複数のSceneビューで利用可能

といった機能を提供しています。

f:id:es_program:20160426001920g:plain

改善が必要な点として、インスペクターからプレビューのON/OFFを切り替える機能は

  • 一度Playボタンを押す
  • 一度スクリプトのenabledをインスペクターから切って、再度enabledをONにする

などして明示的にOnRenderObjectメソッドを呼び出す必要があります。

このままで十分有用だと勝手に判断して面倒で修正をいれていません。インスペクター拡張で値の変更を監視してよろしくしてやればこの問題は解決できると思います。時間があるときにでも修正入れようかと思います。

書いてて気付きましたが、SceneビューごとにON/OFFできた方が良さそうな気がしてきましたのでこれも時間があるときに追加しようと思います。

コードは以下のとおりです。

UnityでRaymarchingする際にカメラに取り付けるスクリプト