🫥

Unityでカメラを近づけるとオブジェクト、モデルが消える際の対処法と原因を考察

に公開

Unityでゲーム制作中にSceneビューでカメラの周りのオブジェクトが急に消えることがありました。

具体的にはこんな状態です:

https://www.youtube.com/watch?v=1DvONCz1Na4

ネット上では
「GizmoをPerspにする」
「Fキーを押してオブジェクトのフォーカスを終了する」
といった方法が紹介されていますが、私の場合は効果がありませんでした。
しかし、Dynamic Clippingをオフにすると改善が確認できました。

Dynamic Clippingをオフにする方法

画像で分かりにくい場合は下記の動画で字幕付きで解説しています。

https://www.youtube.com/watch?v=EspcuCvFOno

細かい説明

Sceneビュー上部のボタンが並んでいる場所から、カメラマークをクリックします:

その後、表示されるウィンドウで Dynamic Clipping のチェックを外します:

するとSceneビューにオブジェクトが描画されます:

また、Dynamic Clippingをオフにしたままでも良いですが、一度Unityを再起動した後に、Dynamic Clippingを同様の手段でオンにすると、しっかりと描画されるかと思います。

Dynamic Clippingについて

  • 前提として、Dynamic Clipping はSceneビュー専用の機能です。
  • Near(手前)とFar(奥)の範囲を自動調整して、近すぎたり遠すぎたりするオブジェクトを描画しないようにします。
  • チェックを外すと、Near/Far を手動で設定できます
  • 手動設定した値は Sceneビュー専用で、Gameビューには影響しません。そのため、作業しやすい値に変更して問題ありません。

考えられる原因

Dynamic Clippingは描画範囲を自動調整します。
今回の現象では、その値が異常になっていた可能性があります

一つの要因として「極端に大きい/小さいオブジェクトへフォーカスした際」に、Near/Far の値が大きく変化し、その後戻らなくなるケースが考えられます。
実際、英語圏フォーラムでは上記の報告が多く寄せられています。

ただし実際にどの操作を契機に値が更新されるかについては公式に明示されておらず、断定はできません。

現時点では、「自動調整の値が異常化し、復帰しないことがあるため、手動でクリップ値を設定すると解消する」という見解が妥当だと考えています。

Nearの値を調整した例

  • Near = 4
  • Near = 8

何か間違っている所があればすぐに修正を行いますのでDiscussion欄にてお願いします。
最後まで見て頂きありがとうございました!

参考

https://docs.unity3d.com/6000.2/Documentation/Manual/SceneViewCamera.html

https://www.reddit.com/r/Unity3D/comments/1gz1ouq/why_cant_i_zoom_into_my_scene_without_the_objects/

https://discussions.unity.com/t/scene-editor-camera-is-cutting-off-my-objects/646625/37

https://unity.huh.how/scene-view/clipping-planes.html

Discussion