カメラ
公式サイト:
概要
ドキュメント:
使い方
参考:
設定
- Clear Flags
- Skybox
- Solid Color
- Depth only
- Don’t Clear
- Background
- Culling Mask
- Projection
- Perspective
- Orthographic
- Size
- Field of View
- Physical Camera
- Clipping Planes
- Near
- Far
- Viewport Rect
- X
- Y
- W
- H
- Depth
- Rendering Path
- Use Graphics Settings
- Forward
- Deferred
- Legacy Vertex Lit
- Legacy Deferred (light prepass)
- Target Texture
- Occlusion Culling
- Allow HDR
- Allow MSAA
- Allow Dynamic Resolution
- Target Display
ドキュメント:
参考:
リアルなレンダリングをする場合のチェック項目 | Shade3D チュートリアル
マウスで操作する
コード:
Camera Controller (TAK-EMI) – GitHub Gist
シーンビューの視点位置にカメラを配置する
操作
Ctrl
+ Shift
+ F
: シーンビューに整列させる (Align with View)
動画:
Ctrl Shift F to Match the Camera to the Scene View
ドキュメント:
ホットキー | Unity 2018.4 マニュアル [公式]
参考:
シーンビューカメラの位置に Camera を移動する | いんでぃーづ
カメラを選択した状態で Ctrl + Shift + F を押すと Scene ビューと Game ビューのカメラを同期できる | コガネブログ
これは便利!カメラの位置をシーンビューの視点と一致させる方法 | おもちゃラボ
背景
ドキュメント:
Camera.backgroundColor | Unity スクリプトリファレンス [公式]
描画順 (Depth)
カメラのレンダリング順序を指定する。
ドキュメント:
Camera.depth | Unity スクリプトリファレンス [公式]
参考:
How do I force my cameras to render in a certain order? | Unity Support [Official]
Camera Rendering Order | Unity Forum
Problems with camera rendering order | Unity Forum
焦点距離/画角 (FOV)
設定
- Field of View: 画角 (デフォルト:
60
/単位:度)
参考:
What is a normal Field of View? – Unity Discussions
投影方法 (Projection)
種類
- 透視投影 (Perspective)
- 平行投影 (Orthographic)
ドキュメント:
Camera.orthographic | Unity スクリプトリファレンス [公式]
参考:
物理カメラ (Physical Camera)
設定
- Focal Length: 焦点距離 (デフォルト:
50
/単位:mm) - Sensor Type / Sensor Size (単位:mm)
- 8mm (
4.8
×3.5
) - Super 8mm (
5.79
×4.01
) - 16mm (
10.26
×7.49
) - Super 16mm (
12.52
×7.41
) - 32mm 2-perf (
21.95
×9.35
) - 35mm Academy (
21
×15.2
) - Super-35 (
24.89
×18.66
) - 65mm ALEXA (
54.12
×25.59
) - 70mm (
70
×51
) - 70mm IMAX (
70.41
×52.63
) - Custom (デフォルト:
36
×24
)
- 8mm (
- Lens Shift
- Gate Fit
- Vertical: 解像度ゲートをフィルムゲートの高さに合わせる
- Horizontal: 解像度ゲートをフィルムゲートの幅に合わせる (デフォルト)
- Fill: 解像度ゲートをフィルムゲートの高さあるいは幅のいずれか小さい方に合わせる
- Overscan: 解像度ゲートをフィルムゲートの高さあるいは幅のいずれか大きい方に合わせる
- None: 解像度ゲートを無視して、フィルムゲートのみを使用する。アスペクト比を保つことなく、レンダリング画像をゲームビューの大きさに合わせて縦横拡大する。
ドキュメント:
参考:
Unity 2018.2 で追加された Physical Camera とはナンゾや? | テラシュールブログ
カメラを切り替える
ドキュメント:
複数のカメラを使用する | Unity マニュアル [公式]
参考:
カメラの切り替えをスクリプトで実現しよう! | XR-Hub
Unity でカメラをスクリプトから切り替えられるようにする | かめくめ
主観カメラへの切り替えと、プレイヤーの移動方法について | TECH Projin
Unity でカメラ切り替えをするスクリプトを書いたよ/5つのカメラを数字キーで切り替え | 神部まゆみのブログ
カメラの切り替えの実装/実装パターン3つ紹介 | dasuko の技術ブログ
複数のカメラを切り替えたり画面を分割したりする方法 | Uinty 使い方ガイド
スクリプトで操作する
ドキュメント:
UnityEngine.Camera | Unity スクリプトリファレンス [公式]
参考:
スクリプトから Main Camera を取得するのは簡単だよ | TECH Projin
VR カメラを任意のポジションに移動する方法 – Qiita
スクリプトから MainCamera の Position、Rotation の変更 | kyam 研の忘備録
How to arbitrarily set camera position in world coordinates – Unity Forum
How to get current Camera coordinates in a script – Unity Discussions
camera position in UNITY – Stack Overflow
カリングマスク (Culling Mask)
動画:
Using Camera Culling Mask to Not Render Specific Layers
ドキュメント:
Camera.cullingMask | Unity スクリプトリファレンス [公式]
参考:
Camera の Culliing Mask 設定 – Qiita
特定のゲームオブジェクトだけをカメラに映す方法 | Uinty 使い方ガイド
カメラとレイヤー | KAYAC engineers’ blog
レイヤーによる Main Camera の非表示 | フタバゼミ
座標変換
ドキュメント:
Camera.WorldToScreenPoint | Unity スクリプトリファレンス [公式]
参考:
How to get a world position from the center of the screen ? – Unity Forum
Getting game object coordinate (from world coordinate) in screen coordinate – Stack Overflow
How to position 3D object to the camera screen in unity – Stack Overflow
オブジェクトを中心にして回転させる
参考:
Rotate a camera around the object – Unity Forum
複数台のカメラを使う
- 切り替え
- ピクチャインピクチャ/ワイプ (PIP / Picture in Picture)
- 分割 (PBP / Picture by Picture)
- 合成
- テクスチャ描画 (Render Texture)
- マルチディスプレイ
- バーチャルカメラ (Virtual Camera / Cinemachine)
ドキュメント:
複数のカメラを使用する | Unity マニュアル [公式]
参考:
複数のカメラの使い方/複数カメラ表示/カメラ切り替え | TECH PROjin
画面分割して複数のカメラの映像を表示する | Unity の使い方
視野錘台を傾ける (CalculateObliqueMatrix)
クリップ平面を与えて投影行列を計算する。
projection = camera.CalculateObliqueMatrix(clipPlane);
Code language: C# (cs)
ドキュメント:
Camera.CalculateObliqueMatrix | Unity スクリプトリファレンス [公式]
Camera.projectionMatrix | Unity スクリプトリファレンス [公式]
Camera.ResetProjectionMatrix | Unity スクリプトリファレンス [公式]
Using an Oblique Frustum | Unity マニュアル [公式]
GeometryUtility.CalculateFrustumPlanes | Unity スクリプトリファレンス [公式]
参考:
斜め (Oblique) の投影行列で空間を切り取る – Qiita
Camera.projectionMatrix の罠まとめ | fuqunaga
解像度
参考:
カメラ1つで UI 解像度を維持し、3D 解像度だけを下げる方法 | 神様は有休消化中です。
画面のアスペクト比と解像度を自動変換/複数解像度に対応させる | Unity 入門の森
たった1個のスクリプトだけで画面解像度を下げる方法 | notargs.com
DPI
動画:
DPI Scaling Finally Fixed!!! (Game From Scratch)
ドキュメント:
Screen.dpi | Unity スクリプトリファレンス [公式]
コード:
Get Scale Factor (gksen) – GitHub Gist
参考:
Fixed DPI – 画素密度を固定する解像度設定 | KAYAC engineers’ blog
Is Screen.dpi supported? – Unity Forum
Get windows scale and layout – Stack Overflow
フルスクリーン
ドキュメント:
Screen.fullScreen | Unity スクリプトリファレンス [公式]
参考:
ウィンドウモードとフルスクリーンモードを切り替える | ソーサリーフォース
フレームデバッガー
メニューから「Window > Analysis > Frame Debugger」を選択して開く。
ドキュメント:
参考:
Problems with camera rendering order | Unity Forum
Camera コンポーネント
ドキュメント:
UnityEngine.Camera | Unity スクリプトリファレンス [公式]
参考:
Render Texture を使う
ドキュメント:
Camera.targetTexture | Unity スクリプトリファレンス [公式]
OnPreCull
動画:
How to Hide Objects from a Camera without Layer Masks
ドキュメント:
MonoBehaviour.OnPreCull | Unity スクリプトリファレンス [公式]
Camera.onPreCull | Unity スクリプトリファレンス [公式]
URP
ドキュメント:
Cameras | Universal RP 8.2 Manual [Official]
Class UniversalAdditionalCameraData | Universal RP 8.2 Manual [Official]
参考:
Camera.main が null を返す
対処法:
メインカメラに MainCamera
タグを付与する。
参考:
Camera.main にアクセスしようとすると例外が発生する | Alpaca Tech Blog
Camera.main returns null? – Stack Overflow
Cinemachine
ドキュメント: