テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

Unityのカメラ描画範囲を常に表示させる

追記:コッチのほうが便利そうです。

https://debuglog.tumblr.com/post/48923836563/%E9%9D%9E%E9%81%B8%E6%8A%9E%E6%99%82%E3%81%AB%E3%82%82%E3%82%AB%E3%83%A1%E3%83%A9%E3%83%93%E3%83%A5%E3%83%BC%E3%81%AE%E3%82%AE%E3%82%BA%E3%83%A2%E3%82%92%E8%A1%A8%E7%A4%BA

DEBUG.LOG (非選択時にもカメラビューのギズモを表示)





Unityのカメラは選択中に表示され、選択が解除されると非表示になります。このため、画面範囲内にキャラクターが入っているかの有無は、ゲームビューで判断しなくてはいけません、これは不便です。

なので、画面範囲が常に表示されるエディタ拡張を作成しました。

スクリーンショット 2014-06-17 9.35.04
この今回作成したコンポーネントをカメラに付与すると、カメラの描画範囲がカメラを選択していなくても表示されるようになります。また、カメラを選択している場合、カメラのより詳しい情報(カメラの描画範囲やワールドスケール)が表示されるようになります。

スクリーンショット 2014-06-17 9.38.07
一応、平行投影にも対応。参照しているカメラの撮影モードにより、表示されるUIモードが少し変化、通常のCameraのGizmoと同じような形になります。

スクリーンショット 2014-06-17 9.40.20

ソースコードはこちら



実はこれ、少し悩んでいます。
もし何かアイディアがあれば教えてくれると嬉しいです。

Perspectiveでの画面範囲の扱い

Perspectiveモードで範囲を表示する際に”想定z位置のカメラを表示する”のですが、想定z位置で表示すると、意外と範囲内なのか外なのかがわかりにくい事です。Perspectiveは位置により描画範囲が変わるので、少しでも手前・奥にある物は範囲内外がわかりにくく誤差が出てしまいます。

とりあえず現状は想定z位置からの範囲指定で描画していますが、これが良いかは非常に悩みどころです。

スクリーンショット 2014-06-17 10.03.05

想定z位置の設定方法


もう一つ、想定z位置の設定方法も悩んでいます。現状は親オブジェクトとの相対座標で設定していますが、こんな事のために親オブジェクトを要求するのも面倒なので、Vector3を持っておいてそこを参照する事が考えられます。

しかし欲しいのはz値だけなので、floatだけでも良い気もしますし、参照座標がワールドかローカルかといった事も悩みどころです。絶対座標にした場合、画面を回転させた時の反応も悩ましい所の一つです。

拡大縮小2