2カ月も間が空いてしまいました。
今回は、Cinemachine Free Look Cameraを使って、フォトグラメトリで作った3Dアートを360℃鑑賞できるようなビューを作ってみます。
上の画面ですと、アートの方が回転しているように見えますが、
実際は下のように、Free Look Cameraがアートの周りを回転しています。
今回の記事の前提
・Unity 2019/2020
・すでにMainCamera用のVirtual Cameraは別途存在している
・ビルトインレンダーパイプラインが対象
アート鑑賞用の物理カメラの作成
通常のカメラとは別に、アートオブジェクトだけを投影するカメラを作りたいため、MainCameraのほかに専用の物理カメラを新たに作成します。
カメラを作成したら、「コンポーネントを追加」からCinemachine Brainを割り当ててください。
なお、Audio ListenerはMainCameraだけに付いていればよく、2つあるとエラーになるため新しいカメラからは削除しましょう。
FreeLookCameraの作成
次にCinemachine FreeLookCameraを作成します。Cinemachineがインストールされていない場合はパッケージマネージャーからインストールしてください。
以下からシーンに追加できます。
(Unity2019の場合) メニューのゲームオブジェクト→Cinemachine→Free Look Camera
(Unity2020の場合) メニューのCinemachine→Create Freelook Camera
Freelook CameraのFollow とLook atに、映したいオブジェクトを設定します。
各種設定
次に、FreeLookCameraでは対象のアートオブジェクトだけを投影するようにしたいため、以下の設定を行います。
(1)アートオブジェクトに特定のレイヤーを設定
私の場合は「Dolls」というレイヤーを作って設定しました。
(2)アート鑑賞用の物理カメラのカリングマスクにアートオブジェクトのレイヤーのみを設定
(3)FreeLookCameraのをアートオブジェクトと同じレイヤーに設定
これで、アート鑑賞用の物理カメラのCinemachine BrainとFreeLookCameraが対応づけられるとともに、アート鑑賞用の物理カメラに投影されるのは対象レイヤーのものだけになります。
カスタムスカイボックスの追加
ここは趣味ですが、アート鑑賞用の物理カメラに「コンポーネントを追加」からカスタムスカイボックスを設定します。
以下の無料アセットから、CosmicCoolCloudという宇宙のSkyboxをセットしました。
Skybox Series Free | 2D Sky | Unity Asset Store
また、深度をメインカメラより大きくしておき、メインカメラよりも手前に描画されるようにします。これで再生すると、以下のGifのようになると思います。
FreeLookCameraの細かな設定
あとは、FreeLookCameraのレンズのクリップ面の距離や、Orbitsの
TopRig,MiddleRig,BottomRigの各値を調整してやります。
隣のアートを同じレイヤーに設定していると、カメラをグルグル回したときに隣のアートが映ってしまいます。そのため、レンズのファークリップ面の距離を短くして、調整しています。あとはTopRig,MiddleRig,BottomRigのHeightとRadiusを調整して、カメラがグルグル回る高さ・中心からの距離を調整します。ここらへんは適宜、環境にあった設定を行いましょう。
マウス右ボタンを押しているときだけFreeLookCameraが回転するようにしたい
以下のUnityForumサイトの「InputOnMouseDown」をFreeLookCameraにアタッチすると、右ボタンを押しているときだけFreeLookCameraが回転するようにできます。神だ・・・
・・・長い・・・力尽きたので続きは明日に。
参考記事
ゲームデザインで Cinemachine を使用するクリエイティブな方法 | バーチャルカメラシステム | Unity