どうも、コニーです
この記事ではCinemachineでディゾルブを実装したときに
RenderTexture用のカメラが表示されるエラーについて解説していきます
※下の記事の追加解説になりますので、まだ読んでいないという方は先にご覧ください
Cinemachineでディゾルブをやろうという人が少ないので、その過程のエラーについても記事がなかなかないんですよね…
同じ現象で困っている方の助けになればなと思い、
この記事ではRenderTexture用のカメラが表示される原因と対処法を紹介します
エラー状況
まずエラーの状況です
本来MainCamera(以下MC)のバーチャルカメラが表示されてほしいという状況にもかかわらず、なぜかRenderTexture用のカメラ(以下RC)が表示されてしまう
というエラーを今回解決していきます
原因
このエラーの原因は
RCにもCinemachineBrainをつけているからです
これによってカメラの優先度(Priority)がMCよりRCが高いという状況になっています
優先度ってなに?
そもそもバーチャルカメラ含め、Unityのカメラには優先度というものがあります
そしてその値が大きい順に表示される仕組みです
優先度についてはTimelineに入れたものは優先度の対称から外れるなど、まぁいろんな規則があってごちゃごちゃしてます
今回はTimelineを使ってカメラを制御するという場合について考えていきます
実際に表示されるカメラはどれ?
Timelineを使ってカメラを制御する際は2段階の審査で表示されるカメラが決まります
①一番優先度が強いリアルカメラ
②①についているバーチャルカメラ
という流れです
①と②それぞれで表示される強さランキングがあるのでそれを見ていきましょう
①リアルカメラの強さランキング
1位
Brainが付いていて優先度が一番高いもの
2位
Brainが付いていて優先度が低いもの
3位
Brainが付いていないもの
今回のエラーはここが原因です!!
RCはMCよりも後に追加したものなので、デフォルトの状態だとMCより優先度が高くなります
追加したままなら問題ないですが、Brainを追加したら3位から1位に順位が上がり表示されてしまうんですね~
②バーチャルカメラの強さランキング
つぎにバーチャルカメラの強さ順です
1位
Timelineに入っているもの
2位
Timelineに入っておらず優先度が高いもの
3位
優先度が低いもの
基本的には1位の場合しかありませんが、「ある条件を満たしたらTimelineがアクティブになる」という場合にはこの順位が大事です
対処法
対処法としては
・RCのCinemachineBrainを外す
・RCの優先度(Priority)をMCより小さくする
の2つですね
ただディゾルブを実装するという際はRCにバーチャルカメラを付けると別のエラーが発生します
なのでここでは前者の方法をおすすめします
まとめ
一番強いリアルカメラについている一番強いバーチャルカメラが優勝
普段Timelineを使っている方は優先度とか気にしないですよね~
しかし複数のカメラを扱う場合には必ず必要な概念なので、これを機に勉強してみて下さい!
ではまた!