UnityのCamera【使い方とスクリプト】

component thumbnail

この記事はUnityのコンポーネントCameraについて解説した記事です。

スポンサーリンク
  1. <Cameraとは>
  2. <Cameraのインスペクター>
    1. Clear Flags
      1. ・Skybox
        1. ・Background
      2. ・Solid Color
      3. ・Depth Only
      4. ・Don’t Clear
    2. Culling Mask
    3. Projection
      1. ・Perspective
        1. ・Field of View
        2. ・Physical Camera
      2. ・Orthographic
        1. ・Size
    4. Clipping Planes
    5. Viewport Rect
    6. Depth
    7. Rendering Path
    8. Target Texture
    9. Occlusion Culling
    10. Allow HDR
    11. Allow MSAA
    12. Allow Dynamic Resolution
    13. Physical Camera
  3. <Physical Camera>
    1. Focal Length
    2. Sensor Type
    3. Sensor Size
    4. Lens Shift
    5. Gate Fit
      1. ・Vertical
      2. ・Horizontal
      3. ・Fill
      4. ・Overscan
      5. ・None
  4. <Cameraのスクリプトの使い方>
    1. allCameras
    2. allCamerasCount
    3. current
    4. main
    5. onPostRender
    6. onPreCull
    7. onPreRender
    8. activeTexture
    9. actualRenderingPath
    10. allowDynamicResolution
    11. allowHDR
    12. allowMSAA
    13. areVRStereoViewMatricesWithinSingleCullTolerance
    14. aspect
    15. backgroundColor
    16. cameraToWorldMatrix
    17. cameraType
    18. clearFlags
    19. clearStencilAfterLightingPass
    20. commandBufferCount
    21. cullingMask
    22. cullingMatrix
    23. depth
    24. depthTextureMode
    25. eventMask
    26. farClipPlane
    27. fieldOfView
    28. forceIntoRenderTexture
    29. layerCullDistances
    30. layerCullSpherical
    31. nearClipPlane
    32. nonJitteredProjectionMatrix
    33. opaqueSortMode
    34. orthographic
    35. orthographicSize
    36. pixelHeight
    37. pixelRect
    38. pixelWidth
    39. previousViewProjectionMatrix
    40. projectionMatrix
    41. rect
    42. renderingPath
    43. scaledPixelHeight
    44. scaledPixelWidth
    45. scene
    46. stereoActiveEye
    47. stereoConvergence
    48. stereoEnabled
    49. stereoSeparation
    50. stereoTargetEye
    51. targetDisplay
    52. targetTexture
    53. transparencySortAxis
    54. transparencySortMode
    55. useJitteredProjectionMatrixForTransparentRendering
    56. useOcclusionCulling
    57. velocity
    58. worldToCameraMatrix
    59. AddCommandBuffer
    60. CalculateFrustumCorners
    61. CalculateObliqueMatrix
    62. CopyFrom
    63. GetCommandBuffers
    64. GetStereoNonJitteredProjectionMatrix
    65. GetStereoProjectionMatrix
    66. GetStereoViewMatrix
    67. RemoveAllCommandBuffers
    68. RemoveCommandBuffer
    69. RemoveCommandBuffers
    70. Render
    71. RenderToCubemap
    72. RenderWithShader
    73. ResetAspect
    74. ResetCullingMatrix
    75. ResetCullingMatrix
    76. ResetProjectionMatrix
    77. ResetReplacementShader
    78. ResetStereoProjectionMatrices
    79. ResetStereoViewMatrices
    80. ResetTransparencySortSettings
    81. ResetWorldToCameraMatrix
    82. ScreenPointToRay
    83. ScreenToViewportPoint
    84. ScreenToWorldPoint
    85. SetReplacementShader
    86. SetStereoProjectionMatrix
    87. SetStereoViewMatrix
    88. SetTargetBuffers
    89. ViewportPointToRay
    90. ViewportToScreenPoint
    91. ViewportToWorldPoint
    92. WorldToScreenPoint
    93. WorldToViewportPoint
    94. GetAllCameras
    95. OnPostRender
    96. OnPreCull
    97. OnPreRender
    98. OnRenderImage
    99. OnRenderObject
    100. OnWillRenderObject
    101. CameraCallback

<Cameraとは>

Unityでシーン上に設置されたオブジェクトを映してレンダリングする為のコンポーネントです。

普通に使えば、映したものをゲーム画面に表示させる事ができます。

↓のようにシーンビューで映したものがゲームビューに表示されています。

Project on the camera

また、単に映したものをゲーム画面に表示するだけではなく、画像データとして取り込んで加工したりと様々な使い方ができます。

<Cameraのインスペクター>

camera inspector
クリックすると展開します

Clear Flags

カメラが何も映していない場所をどのように処理するのかを決定します。

例えば↓のようにオブジェクトを置いてカメラで映した場合

Clear Flags Camera

↓の真っ黒な部分はオブジェクトが何もないエリアになります。

Clear Flags Area Black

↑の真っ黒な部分をどのようにするかを決定します。

・Skybox

カメラが映していない場所にスカイボックスと言われるシーンを囲むように表示される背景を描画します。

デフォルトでは↓のようになっていると思います。

skybox default riri

このスカイボックスはLightning Settingで設定されているものが表示されます。

スカイボックスという名前がついてますが、必ずしも空であるとは限りません。設定したマテリアルの内容が画面全体を覆うような感じで表示されるものです。

設定したマテリアルを変える事で↓のようにしたり色々できます。

skybox planet

マテリアルがスカイボックスに対応したものでない場合は真っ黒になるので注意してください。

・Background

Skyboxが設定されていない時、背景がこの色になります。

Skyboxが設定されている場合は特に意味はありません。

・Solid Color

Backgroundというパラメータがすぐ下に表示されると思います。

カメラが描画していない場所をBackgroundで設定した色にします。

camera solid color

・Depth Only

カメラが映していない場所に何もない状態にします。

普通に使うと↓のようになります。

オブジェクトがない場所が真っ暗になって何も描画されていません。

Solid Colorで真っ黒にすればいいのでは?と思うかもしれませんが、このモードの真骨頂はカメラを複数台置いた場合です。

↓のような感じで複数台カメラを置いたとします。

many camera scene

すると↓のように表示されます。

オブジェクトが映っていない場所に何かを映す設定にしていた場合は完全に塗りつぶされてしまいます。例えば1台目のカメラが映した内容を2台目のカメラで塗り潰してしまうみたいな感じです。

Depth Onlyにしておくと塗り潰しが発生しないので複数台カメラを置いたとしても2台目のカメラが映した後ろに1台目のカメラの内容が描画されます。

・Don’t Clear

前のレンダリング内容を消しません。

普通にDon’t Clearで映すと↓のようになります。

Don't Clear

またしても背景が真っ黒になっていますが、これはオブジェクトが動いていないからこうなっているだけでオブジェクトを動かすと↓のようになります。

camera don't clear

これは単に横にスライドさせただけなのですが、こうなりました。

前回映した内容を消さずに描画するので前の状態が残り続けます。

↑では横にスライドさせた為に、前の状態が残り続けて残像のようになっているわけです。というか正真正銘の残像です。

前の像が残っている為こうなっているわけですね。

Culling Mask

camera culling mask

チェックが入っているレイヤーのオブジェクトのみをカメラに映します。

レイヤーは各種ゲームオブジェクトの右上にあるLayerで指定しているものになります。

game object layer

チェックが入っているレイヤーのゲームオブジェクトがカメラに映って、チェックが入っていないレイヤーのゲームオブジェクトはカメラに映りません

Everythingを選択すると全てのレイヤーにチェックが入り、Nothingを選択すると全てのレイヤーのチェックが外れます。

Projection

カメラの映し方をどうするのかを設定します。

・Perspective

遠近感のある映し方をします。

skybox default riri
・Field of View

画角を調節します。

カメラが映すことのできる角度の範囲を調節できるパラメータです。

camera field of view 60

Field of Viewが60の時↑のようになります。

この値を小さくして画角を狭くすると↓のようになります。

camera field of view 10

↑Filed of Viewを10にしてみました。

画角が狭くなって見える範囲が小さくなっていることがわかります。オブジェクトを動かしてはいませんが、画面は拡大されているように見えます。

逆に大きくすると↓のようになります。

camera field of view 130

↑Filed of Viewを130にしてみました。

画角が広くなって見える範囲も広くなりました。オブジェクトを動かしてはいませんが、画面では小さく見えます。

・Physical Camera

この項目にチェックを入れると、現実にあるようなカメラと同じ原理で描画します。

解説が長くなるので詳しくは↓↓の方に載せてあります。

・Orthographic

遠近感の無い映し方をします。

camera orthographic

↑Perspectiveの時とカメラの位置は動かしていません。

遠近感がなくなるので、Orthographicに設定するとカメラから離れても見え方が同じになります。

2D的な表現に使用される場合が多いです。

・Size

カメラの見える範囲を調節します。

↓はSizeが1の時です。

camera size 1

Sizeを2にすると↓のようになります。

camera size 2

カメラが映している範囲が広がりました。範囲が広がった事によってオブジェクトは小さく映ります。

Clipping Planes

Nearでカメラが映す一番近い距離を指定します。最低値は0.01です。

Farでカメラが映す一番遠い距離を指定します。最低値は0.02です。

near clip far clip

Viewport Rect

このカメラが画面に描画する範囲を決定します。

画面の左下を基準にXとYで画面が始まる距離を表して、WとHで画面の横幅と縦幅を表します。

ここで使用される値は正規化された値になります。

XとYは0で画面の左下、1で右上になり、WとHは0で描画されず、1で画面いっぱいに描画されます。

例えば↓のような設定をしたとします。

viewport rect

すると↓のように表示されます。

これは↓のようにViewport Rectによって、どれくらいの割合と位置にカメラで映した内容を画面に映すのかを決めています。

このパラメータを利用する事によってゲーム中に複数の画面を描画したり、ミニマップを作ってみたりと色々な使い方ができます。

Depth

この値が小さい順にカメラが描画されます。

複数台カメラを使用している場合、描画する順番を整理するのに使用されます。

↓顔がアップで映っているのがDepth1で奥にCubeに乗って見えるのがDepth0になってます。

depth camera

Cubeに乗っている方のClear FlagsがSkyboxの設定になっていて、顔のアップがDepth Onlyです。

値が小さい順で描画されるので、まずCubeに乗っている方が描画されて、顔のアップが描画されています。

ちなみにお互いのDepthの値を入れ替えると↓のようになります。

skybox default riri

逆になったのでまず顔のアップが描画されて、その後Cubeに乗っている方が描画されます。

Cubeに乗っている方はClear FlagsがSkyboxなので、後ろの顔のアップのカメラの内容を無視してスカイボックスで塗り潰してしまっています。

このようにカメラの描画順を指定することができます。

同じ値にしておくとどっちから描画されるのかランダムになるのでカメラ間で同じ値にはしないようにしましょう。(描画範囲が同じな場合)再起動したり実機に入れたりした時に逆になったりします。

Rendering Path

このカメラのレンダリングパスを変更します。

User Graphics Settingsにチェックが入っているとProject SettingsのGraphicsの項目に従います。

project settings rendering path

別の項目を設定した場合、設定したレンダリングパスで描画します。

Target Texture

このカメラが映したものを画面ではなく設定したテクスチャに描画します。

ここに設定できるのはRender Textureという種類のテクスチャのみになります。

レンダーテクスチャはプロジェクトウィンドウで右クリックすることで作ることができます。

create render texture

カメラでの描画内容をテクスチャとして扱うことができるので様々な使い方ができます。

Occlusion Culling

オクルージョンカリングを実行するかどうかを設定します。

カメラは範囲外の部分を描画しないことで軽量化してますが、遮蔽物などに隠れていて見えないものまで描画してしまいます。

オクルージョンカリングを行うことで、遮蔽物などで見えなくなってしまったものは描画しません。

ただし、カメラのこの項目にチェックが入っているだけでは意味がなく、シーン上でオクルージョンカリングを行う範囲をベイクしてあげる必要があります。

Allow HDR

HDRというのは、High Dynamic Rangeの略でより広い明るさの幅を表現できる機能の事です。

この項目にチェックを入れる事でカメラがHDRに対応します。

Allow MSAA

MSAAというのは、MultiSamplingの略でアンチエイリアスの手法の一つです。

簡単に言うとカメラが映した結果が荒くなってジャギジャギになってしまった場合、それを滑らかに緩和することができます。

Deferredレンダリングの設定になっている場合はMSAAを使うことができません。

この項目にチェックが入っているとProject SettingsのQualityタブのAnti Aliasingで選択された項目が適用されます。

quality setting anti aliasing

Allow Dynamic Resolution

動的にこのカメラの解像度を変更する事を許可します。

主に処理が重くなった時などに、一時的に解像度を下げる場合に使用します。

これにチェックが入っていると動的な解像度の変更が可能になるだけで、処理自体は自分で行う必要があります。

Physical Camera

これにチェックを入れると現実にあるようなカメラと同じ原理で描画します。

詳しくは↓で解説しています。

<Physical Camera>

Unity2018.2から追加された機能で、現実にあるようなカメラと同じ原理で描画します。

この項目にチェックを入れると↓のようにインスペクターに項目が増えます。

physical camera inspcetor

描画の手法が変更されるので考え方が↓のようになります。

physical camera

Focal Length

焦点とイメージセンサーの距離を表します。

近いほど多くの範囲の光を受けれるので映像が広くとられます。小さくすると広角レンズのように扱えます。

逆に遠くすると光を受けられる範囲が少しになるので映像が狭くなります。要するにズームされます。大きくすると望遠レンズのように扱えます。

連動してField of Viewが動きます。

Sensor Type

Sensor Sizeのテンプレートです。

現実にあるイメージセンサーを選択することができます。これを変更しても単にSensor Sizeの値が変わるだけです。

8mm・・・ X 4.8 Y 3.5
Super 8mm・・・ X 5.79 Y 4.01
16mm・・・ X 10.26 Y 7.49
Super 16mm・・・ X 12.52 Y 7.41
35mm 2-perf・・・ X 21.95 Y 9.35
35mm Academy・・・ X 21 Y 15.2
Super-35・・・ X 24.89 Y 18.66
65mm ALEXA・・・ X 54.12 Y 25.59
70mm・・・ X 70 Y 51
70mm IMAX・・・ X 70.41 Y 52.63
Custom・・・↑以外の値にすると勝手にこれになります

Sensor Size

イメージセンサーのサイズを変更します。

この値を変更するとカメラの画角も変わります。画角の変わり方はGate Fitの設定によります。

シーンビューのカメラのラインの奥にセンサーサイズの枠線が表示されています。

sensor size

Lens Shift

シフトレンズを使っているかのように扱えます。カメラの向きを変えずに映す向きを変更することができます。

no lens shift

Lens Shift X 0, Y 0 (シフトなし)

lens shift

Lens Shift X -1, Y 0 (シフト有り)

Gate Fit

画面の解像度に合わせてアスペクト比をどこを基準に変更するのかを決定します。

この項目はUnity2018.3から追加されました。

・Vertical

解像度の計算を縦基準にします。

実際の画面の縦幅に、カメラが映している縦幅が合うようにします。

横の部分はアスペクト比によって可変します。つまり横で見切れたりといった事が発生します。

・Horizontal

解像度の計算を横基準にします。

実際の画面の横幅に、カメラが映している横幅が合うようにします。

縦の部分はアスペクト比によって可変します。つまり縦で見切れたりといった事が発生します。

・Fill

画面とセンサーサイズに合わせてアスペクト比を変更します。

センサーサイズ内に収まるようになります。

gate fit fill

・Overscan

画面とセンサーサイズに合わせてアスペクト比を変更します。

必ずセンサー全体が画面に収まるようになります。

・None

センサーサイズに映っているものをそのまま描画します。

センサーサイズと画面のサイズが合っていない場合、絵が伸びます。

スポンサーリンク

<Cameraのスクリプトの使い方>

名前空間UnityEngine
class
継承Behavior
クリックすると展開します

allCameras

シーン内で有効なカメラを全て返します。

無効になっているカメラは受け取れないので注意してください。

読み取り専用です。

型 Camera[]型

○ 使い方
全てのカメラを取得したい時に使用します。

//全てのカメラを取得
Camera[] allCamera = Camera.allCameras;

allCamerasCount

シーン内で有効なカメラの数を返します。

読み取り専用です。

型 int型

○ 使い方
全てのカメラの数を取得したい時に使用します。

//全てのカメラを取得
Camera[] allCamera = Camera.allCameras;
for(int i = 0; i < Camera.allCamerasCount; ++i)
{
  Debug.Log(allCamera[i].name); //カメラの名前を1つずつ表示
}

current

現在レンダリングされているカメラを返します。

読み取り専用です。

型 Camera型

○ 使い方
この変数を普通の状態で使用することはありません。

OnRederImageやOnPreRender,OnPostRenderなどのレンダリングに関係するイベント関数内で使用されます。

void OnWillRenderObject()
{
    if (Camera.current.cameraType == CameraType.SceneView)
    {
       Debug.Log("このオブジェクトはシーンビューに映っています");
    }
}

main

シーン上のMainCameraのタグになっているカメラを返します。

読み取り専用です。

型 Camera型

○ 使い方
メインカメラを取得したい場合に使用します。

複数存在する場合どれが呼ばれるかランダムになるので注意してください。(再起動したり、機種によって変わったりする)

//メインカメラ取得
Camera came = Camera.main;

onPostRender

カメラがレンダリングを終えた後に発生するイベントです。

型 Camera.CameraCallback型

○ 使い方
カメラがレンダリングを終えた後に何か処理をしたい場合に使用します。

void Start()
{
  Camera.onPostRender += EndRendering;
}

public void EndRendering(Camera came)
{
  Debug.Log(came.name + "のレンダリングが終わりました");
} 

onPreCull

カメラがカリングを開始する前に発生するイベントです。

型 Camera.CameraCallback型

○ 使い方
カメラがカリングを開始する前に何か処理をしたい場合に使用します。

void Start()
{
  Camera.onPreCull += BeforeCulling;
}

public void BeforeCulling(Camera came)
{
  Debug.Log(came.name + "がこれからカリングを行います");
} 

onPreRender

カメラがレンダリングを開始する前に発生するイベントです。

型 Camera.CameraCallback型

○ 使い方
カメラがレンダリングを開始する前に何か処理をしたい場合に使用します。

void Start()
{
  Camera.onPostRender += BeforeRendering;
}

public void BeforeRendering(Camera came)
{
  Debug.Log(came.name + "がこれからレンダリングを行います");
} 

activeTexture

このカメラが描画しているレンダーテクスチャーです。

何も設定してない場合はnullが返ってきます。

読み取り専用です。

型 RenderTexture型

○ 使い方
カメラが使用しているレンダーテクスチャーを取得したい時に使用します。

//カメラに設定されているレンダーテクスチャーを取得する
Camera came = GetComponent<Camera>();
RenderTexture tex = came.activeTexture;

actualRenderingPath

このカメラの現在使用しているレンダリングパスです。

読み取り専用です。

型 RenderingPath型

enum型です。

・UsePlayerSettings・・・プレイヤーセッティングの設定を使用します
・VertexLit・・・頂点ライティングです
・Forward・・・フォーワードレンダリングです
・DefferdLighting・・・旧式のディファードライティングです
・DeferredShading・・・ディファードライティングです

○ 使い方
このカメラが使用しているレンダリングパスを知りたい場合に使用します。

例えば、ユーザーが低スペック端末等でプレイする時、レンダリングパスがサポートされていない場合があります。それを検知する時に使用します。

Camera came = GetComponent<Camera>();
if(came.actualRenderingPath != RenderingPath.DeferredShading)
{
  Debug.Log("想定していたレンダリング方法になっていない");
}

allowDynamicResolution

動的にこのカメラの解像度を変更する事を許可します。

型 bool型

○ 使い方
主に処理が重くなった時などに、一時的に解像度を下げる場合に使用します。

これにチェックが入っていると動的な解像度の変更が可能になるだけで、処理自体は自分で行う必要があります。

Camera came = GetComponent<Camera>();
came.allowDynamicResolution = true;

allowHDR

より広い明るさの幅を表現できる機能を使用する事を許可します。

型 bool型

○ 使い方
ハイダイナミックレンジレンダリングのオンオフを切り替えたい場合に使用します。

Camera came = GetComponent<Camera>();
came.allowHDR = true;

allowMSAA

カメラが映した結果が荒くなってジャギジャギになってしまった場合、それを滑らかに緩和する機能を使用する事を許可します。

型 bool型

○ 使い方
アンチエイリアスのオンオフを切り替えたい場合に使用します。

trueだとProject SettingsのQualityタブのAnti Aliasingで選択された項目が適用されます。

Camera came = GetComponent<Camera>();
came.allowMSAA = true;

areVRStereoViewMatricesWithinSingleCullTolerance

ステレオビューマトリックスがシングルパスカリングに適しているかどうかを返します。

読み取り専用です。

型 bool型

○ 使い方
ステレオビューマトリックスを手動で設定したい時、シングルパスレンダリングが可能かどうか事前にチェックするのに使います。

Camera came = GetComponent<Camera>();
if(came.areVRStereoViewMatricesWithinSingleCullTolerance)
{
  Debug.Log("このカメラはシングルパスレンダリングができます");
}

aspect

このカメラのアスペクト比です。

幅を高さで割った値です。

型 float型

○ 使い方
現在のカメラのアスペクト比を知りたい場合に使用します。

Camera came = GetComponent<Camera>();
Debug.Log("このカメラのアスペクト比は" + came.aspect + "です");

backgroundColor

CameraClearFlagsがSolidColorに設定されている場合、もしくはSkyboxに設定されているけどSkyboxがnullだった場合、背景に塗られる色です。

型 Color型

○ 使い方
背景色を変えたい場合などに使用します。

Camera came = GetComponent<Camera>();
came.backgroundColor = Color.black;

cameraToWorldMatrix

Cameraから見た位置をワールド座標に変換するために使用する行列を返します。

読み取り専用です。

型 Matrix4x4型

○ 使い方
カメラから見た相対的な位置がわかっているもののワールド座標が知りたい場合に使用します。

Camera came = GetComponent<Camera>();
Matrix4x4 m = came.cameraToWorldMatrix;
Vector3 p = m.MultiplyPoint(new Vector3(0, 0, -1f * came.nearClipPlane));
Debug.Log("このカメラは" + p.ToString() + "の位置から描画し始めます。");

cameraType

このカメラの種類を指定します。

型 CameraType型

enum型です。

・Game・・・ゲーム内のカメラです
・SceneView・・・シーンビューのカメラです
・Preview・・・プレビューのカメラです
・VR・・・VR用のカメラです(エディタのみです)
・Reflection・・・リフレクションプローブのカメラです

○ 使い方
このカメラがどのようなカメラなのか知りたい場合に使用します。

if (Camera.current.cameraType == CameraType.SceneView)
{
  Debug.Log("このカメラはシーンビュー用です");
}

clearFlags

カメラが何も映していない場所をどのように処理するのかを決定します。

詳しくはインスペクターの項目で解説しています。

型 CameraClearFlags型

enum型です。

・Skybox・・・スカイボックスでクリアします
・SolidColor・・・指定した色でクリアします
・Depth・・・深度バッファのみをクリアします
・Nothing・・・クリアしません

○ 使い方
カメラのクリアフラグを途中で切り替えたい場合などに使用します。

//このカメラを深度カメラに変更します
Camera came = GetComponent<Camera>();
came.clearFlags = CameraClearFlags.Depth;

clearStencilAfterLightingPass

カメラがDeferred Light Pathの後にステンシルバッファをクリーンにする必要があるかどうかを設定します。

型 bool型

○ 使い方
ステンシルバッファを強制的に消したい場合などに使用します。

Camera came = GetComponent<Camera>();
came.clearStencilAfterLightingPass = true;

commandBufferCount

このカメラに設定されているコマンドバッファ数を取得します。

読み取り専用です。

型 int型

○ 使い方
コマンドバッファ数を知りたい場合に使用します。

Camera came = GetComponent<Camera>();
Debug.Log("コマンドバッファが" + came.commandBufferCount + "個設定されています。");

cullingMask

このカメラが描画するレイヤーを指定します。

型 int型

○ 使い方
ビットフラグ形式になっているため注意が必要です。

//このカメラをDefault layerのゲームオブジェクトだけ描画するようにします
Camera came = GetComponent<Camera>();
cam.cullingMask = 1 << 0;

cullingMatrix

カリングクエリに使うためのカメラのカスタムマトリクスを設定します。

型 Matrix4x4型

○ 使い方
複数のカメラをまったく同じようにカリングする時などに使用します。

Camera came = GetComponent<Camera>();
Camera.main.cullingMatrix = came.projectionMatrix * came.worldToCameraMatrix;

depth

このカメラのレンダリング順を指定します。

型 float型

○ 使い方
この値が小さい順番にレンダリングされていきます。

//このカメラをメインカメラより後にレンダリングします。
Camera came = GetComponent<Camera>();
came.depth = Camera.main.depth + 1;

depthTextureMode

このカメラがどのように深度テクスチャを生成するのかを選択します。

型 DepthTextureMode型

enum型です。

・None・・・深度テクスチャを生成しません(デフォルト)
・Depth・・・深度テクスチャを生成します
・DepthNormals・・・深度と法線を組み合わせたテクスチャを生成します
・MotionVectors・・・モーションベクターをレンダリングしたテクスチャを生成します(可能な場合に限る)

○ 使い方
深度テクスチャを生成したい場合に使用します。

Camera came = GetComponent<Camera>();
came.depthTextureMode = DepthTextureMode.Depth;

eventMask

このカメラがイベントを発生させるレイヤーを制限します。

イベントと言っても全てのイベントではなく、OnMouseEnterなどのマウス系のイベントです。

型 int型

○ 使い方
ビットフラグ形式になっているため注意が必要です。

//このカメラが映しているオブジェクトの中でレイヤーがUIのものだけマウスイベントを受け取る
Camera came = GetComponent<Camera>();
came.cullingMask = 1 << LayerMask.NameToLayer("UI");

farClipPlane

このカメラが映せる最大距離を表します。

型 float型

○ 使い方
カメラの映せる距離を調整したい場合に使用します。

Camera came = GetComponent<Camera>();
came.farClipPlane = 100.0f;

fieldOfView

このカメラの画角です。

詳しくはインスペクターの項目で解説しています。

型 float型

○ 使い方
カメラの画角を調整したい場合に使用します。

Camera came = GetComponent<Camera>();
came.fieldOfView = 60.0f;

forceIntoRenderTexture

レンダリングをレンダーテクスチャに強制します。

型 bool型

○ 使い方
CommandBufferを使用してレンダリング中のイメージを使用したい場合に使用します。

Camera came = GetComponent<Camera>();
came.forceIntoRenderTexture = true;

layerCullDistances

このカメラが映せる距離をレイヤー毎に表します。

型 float[]型

○ 使い方
レイヤー別にレンダリング距離を分けたい時に便利です。例えば、大きな建物などは遠くでも見えるけど、小石などの小さなものは近くじゃないと見えないようにしたりする事で負荷軽減ができるので便利です。

Camera came = GetComponent<Camera>();
int layerNum = LayerMask.NameToLayer("Water");
came.layerCullDistances[layerNum] = 50.0f;

layerCullSpherical

このカメラが遠方まで映せる距離を平面ではなく球面にします。

layerCullDistancesが設定されている必要があります。

型 bool型

○ 使い方
視界範囲を球状にします。

デフォルトの状態では視界が最も遠い位置は平面で表されるので、例えば視点をグルグル動かせる系のゲームだと、止まっている状態で視点をグルグル回すとオブジェクトが映ったり映らなかったりします。

視界範囲を球状にすることによってクルクル視点を回してもオブジェクトがちらつきません。

Camera came = GetComponent<Camera>();
came.layerCullSpherical = true;
int layerNum = LayerMask.NameToLayer("Water");
came.layerCullDistances[layerNum] = 50.0f;

nearClipPlane

このカメラが映せる最小距離を表します。

型 float型

○ 使い方
カメラの映せる距離を調整したい場合に使用します。

Camera came = GetComponent<Camera>();
came.nearClipPlane = 10.0f;

nonJitteredProjectionMatrix

オフセットが適用されていない投影行列です。

型 Matrix4x4型

○ 使い方
モーションベクターなどを使用する際に使用します。

Camera came = GetComponent<Camera>();
came.nonJitteredProjectionMatrix =came.projectionMatrix;

opaqueSortMode

不透明なオブジェクトをどういう順番でレンダリングしていくかです。

型 Rendering.OpaqueSortMode型

enum型です。

Default・・・大まかにグループ化して順番にレンダリングしてきます。

FrontToBack・・・前から順にレンダリングします。粗く順番を決めるので必ずしも前から順とは限りません

NoDistance・・・距離によらない順番でレンダリングします

○ 使い方
レンダリング順を変えたい時に使用します。

Camera came = GetComponent<Camera>();
came.opaqueSortMode =Rendering.OpaqueSortMode.NoDistance;

orthographic

平行投影かそうでないかです。

falseだとperspectiveになります。

詳しくはインスペクターの項目で解説しています。

型 bool型

○ 使い方
カメラの映し方を変更したい場合に使用します。

Camera came = GetComponent<Camera>();
came.orthographic =true;

orthographicSize

カメラがorthographicの時の画角の広さです。

この値はカメラの画角の縦幅の半分の値になっています。

詳しくはインスペクターの項目で解説しています。

型 float型

○ 使い方
カメラが映す範囲を変更したい場合に使用します。

Camera came = GetComponent<Camera>();
came.orthographicSize =5.0f;

pixelHeight

カメラビューポートの高さをピクセル単位で返します。動的解像度スケーリングを考慮しません。

読み取り専用です。

型 int型

○ 使い方
カメラが映す範囲の高さをピクセル単位で知りたい場合に使用します。

Camera came = GetComponent<Camera>();
Debug.Log("このカメラは高さ" + came.pixelHeight +"ピクセルで描画しています");

pixelRect

画面上のピクセル座標でどこにカメラが描画されるかです。

型 Rect型

○ 使い方
カメラが映す範囲をピクセル単位で指定したい場合に使用します。

Camera came = GetComponent<Camera>();
came.pixelRect = new Rect(0, 0, 400, 200);

pixelWidth

カメラビューポートの幅をピクセル単位で返します。動的解像度スケーリングを考慮しません。

読み取り専用です。

型 int型

○ 使い方
カメラが映す範囲の幅をピクセル単位で知りたい場合に使用します。

Camera came = GetComponent<Camera>();
Debug.Log("このカメラは幅" + came.pixelWidth +"ピクセルで描画しています");

previousViewProjectionMatrix

最後のフレームで使用されるビュー投影行列を取得します

読み取り専用です。

型 Matrix4x4型

○ 使い方
ブラーなどの前回の描画情報を使って表現されるイメージエフェクトで使用されます。

Camera came = GetComponent<Camera>();
Material material = new Material(Shader.Find("Buler"));
material.SetMatrix("_PreviousViewProjectionMatrix", came.previousViewProjectionMatrix);

projectionMatrix

射影行列です。

この値を変更してしまうとカメラのaspectやfieldOfViewなどが更新されなくなります。

ResetProjectionMatrixを行うことで直す事ができます。

型 Matrix4x4型

○ 使い方
カメラの座標をクリップ座標に変換するときなどに使用します。

//カメラの映り方を若干歪ませます
Camera came = GetComponent<Camera>();
Matrix4x4 p =came.projectionMatrix;
p.m01 += 1.0F;
Camera.main.projectionMatrix = p;

rect

カメラが画面のどの位置にどれくらいの割合で表示されるかです。

詳しくはインスペクターの項目で解説しています。

型 Rect型

○ 使い方
カメラを画面にどう映るのかを制御したい時に使用します。

//このカメラを左上のミニマップにします
Camera came = GetComponent<Camera>();
came.rect = new Rect(0,0.8f,0.2f,0.2f);

renderingPath

このカメラのレンダリングパスです。

型 RenderingPath型

enum型です。

・UsePlayerSettings・・・プレイヤーセッティングの設定を使用します
・VertexLit・・・頂点ライティングです
・Forward・・・フォーワードレンダリングです
・DefferdLighting・・・旧式のディファードライティングです
・DeferredShading・・・ディファードライティングです

○ 使い方
このカメラが使用しているレンダリングパスを変更したい場合に使用します。

現在のレンダリングパスを知りたい場合はactualRenderingPathがあるのでそちらを使用しましょう。renderingPathで指定したものは機種によって使用されていない可能性があります。

Camera came = GetComponent<Camera>();
came.renderingPath =RenderingPath.Forward;

scaledPixelHeight

カメラビューポートの高さをピクセル単位で返します。動的解像度スケーリングを考慮します。

読み取り専用です。

型 int型

○ 使い方
カメラが映す範囲の高さをピクセル単位で知りたい場合に使用します。

Camera came = GetComponent<Camera>();
Debug.Log("このカメラは高さ" + came.scaledPixelHeight +"ピクセルで描画しています");

scaledPixelWidth

カメラビューポートの幅をピクセル単位で返します。動的解像度スケーリングを考慮します。

読み取り専用です。

型 int型

○ 使い方
カメラが映す範囲の幅をピクセル単位で知りたい場合に使用します。

Camera came = GetComponent<Camera>();
Debug.Log("このカメラは幅" + came.scaledPixelWidth +"ピクセルで描画しています");

scene

nullではない場合、このカメラは指定されたシーンのコンテンツのみをレンダリングします。

EditorSceneManager.NewPreviewSceneによって作成されたシーンのみをサポートします。

型 SceneManagement.Scene型

○ 使い方
主にエディタ拡張などでカスタマイズする時に使用します。

Camera came = GetComponent<Camera>(); 
came.scene = EditorSceneManager.NewPreviewScene();

stereoActiveEye

立体視している場合、現在レンダリングしている目を返します。(VRディスプレイの左か右か)

読み取り専用です。

型 Camera.MonoOrStereoscopicEye型

enum型です。

Left・・・左目用です。
Right・・・右目用です。
Mono・・・立体視モードではありません。

○ 使い方
OnRenderImageなどで現在レンダリング中のカメラの種別を判別する際に使用します。

Camera came;

private void Start()
{
    came = GetComponent<Camera>();
}

protected virtual void OnRenderImage(RenderTexture source, RenderTexture destination)     {
    if (came.stereoActiveEye == Camera.MonoOrStereoscopicEye.Left)
    {
       Debug.Log("このカメラは左目用です");
    }
}

stereoConvergence

立体視している場合、目が収束する点までの距離を返します。(VRディスプレイの左右が収束する距離)

型 float型

○ 使い方
立体視を行う為の距離を変更したい場合などに使用します。

Camera came = GetComponent<Camera>(); 
came.stereoConvergence = 5.0f;

stereoEnabled

このカメラが立体視をしているかどうか。(VRディスプレイで見るような形)

読み取り専用です。

型 bool型

○ 使い方
立体視モードになっているかどうか知りたい時に使用します。

Camera came = GetComponent<Camera>(); 
if(came.stereoEnabled)
{
  Debug.Log("このカメラは立体視しています");
}

stereoSeparation

このカメラが立体視をしている場合の左右の距離。(VRディスプレイで見るような形)

VR機器によってはこの値が固定となります。

型 float型

○ 使い方
左右の目の距離が知りたい場合に使用します。

Camera came = GetComponent<Camera>(); 
if(came.stereoEnabled)
{
  Debug.Log("このカメラの左右の距離は" + came.stereoSeparation + "です");
}

stereoTargetEye

このカメラがVRディスプレイの左右どちらにレンダリングするのか

型 StereoTargetEyeMask型

enum型です。

None・・・どちらの目もレンダリングしません。
Left・・・左目だけをレンダリングします。
Right・・・右目だけをレンダリングします。
Both・・・両目をレンダリングします。

○ 使い方
カメラがレンダリングしたいディスプレイを変更したい場合に使用します。

Camera came = GetComponent<Camera>(); 
came.stereoTargetEye = StereoTargetEyeMask.Both;

targetDisplay

このカメラが表示するディスプレイの番号です。

型 int型

○ 使い方
どのディスプレイに表示したいのか変更したい場合などに使用します。

Camera came = GetComponent<Camera>(); 
came.targetDisplay = 1;

targetTexture

このカメラのレンダリング先であるレンダーテクスチャです。

nullの場合、ディスプレイをレンダリング先にします。

型 RenderTexture型

○ 使い方
主にカメラに設定されているレンダーテクスチャからデータを受け取りたい時などに使用します。

Camera came = GetComponent<Camera>(); 
if(came.targetTexture != null)
{
  //レンダーテクスチャに映った深度バッファを取り出します
  RenderBuffer rb = came.targetTexture.depthBuffer;
}

transparencySortAxis

透明なオブジェクトをレンダリングする順番を決める時に基準とするベクトルです。

型 Vector3型

○ 使い方
主に半透明なオブジェクトのレンダリングの仕方を変えたい場合に使用します。

//透明なオブジェクトを斜め奥から順に描画するようにします。
Camera came = GetComponent<Camera>(); 
came.transparencySortAxis = Vector3.one;

transparencySortMode

透明なオブジェクトどのような順番でレンダリングするのかです。

型 TransparencySortMode型

enum型です。

Default・・・カメラの現在の設定に合わせる?

Perspective・・・カメラの位置からオブジェクトの中心までの距離に基づいてレンダリングの順番を決めます

Orthographic・・・ビューの方向に沿った距離に基づいてレンダリングの順番を決めます

CustomAxis・・・transparencySortAxisを使って自分で指定したベクトルに基づいてレンダリングの順番を決めます

○ 使い方
主に半透明なオブジェクトのレンダリングの仕方を変えたい場合に使用します。

//透明なオブジェクトを斜め奥から順に描画するようにします。
Camera came = GetComponent<Camera>(); 
came.transparencySortMode = TransparencySortMode.Orthographic;

useJitteredProjectionMatrixForTransparentRendering

透明なオブジェクトをレンダリングする時にオフセットを利用するか否かです。

型 bool型

○ 使い方
ジッタ投影レンダリングをしたい場合に使用します。

Camera came = GetComponent<Camera>();
came.useJitteredProjectionMatrixForTransparentRendering =true;

useOcclusionCulling

このカメラがオクルージョンカリングをするかどうかです。

型 bool型

○ 使い方
このフラグをtrueにするだけでは意味はなく、シーンにベイクしておく必要があります。

Camera came = GetComponent<Camera>();
came.useOcclusionCulling =true;

velocity

このカメラの速度です。

読み取り専用です。

型 Vector3型

○ 使い方
読み取り専用なので、検知する目的にしか使えません。

Camera came = GetComponent<Camera>();
if(came.velocity.magnitude > 5.0f)
{
   Debug.Log("カメラが早すぎて酔う〜");
}

worldToCameraMatrix

ワールド座標からCameraから見た位置に変換するために使用する行列を返します。

型 Matrix4x4型

○ 使い方
カメラの視点を変えたい時などに使用します。

//ちょっと右からの視点に変えます
Camera came = GetComponent<Camera>();
Vector3 cameOffset = new Vector3(-5, 0, 0);
Matrix4x4 m = Matrix4x4.TRS(cameOffset, Quaternion.identity, new Vector3(1, 1, -1));    came.worldToCameraMatrix = m * transform.worldToLocalMatrix;

AddCommandBuffer

指定されたタイミングで実行されるようなコマンドバッファをカメラに追加します。

1. 実行するタイミング : Rendering.CameraEvent型
2. 実行するコマンドバッファ : Rendering.CommandBuffer型

戻り値(返り値)

なし

○ 使い方
レンダリング結果をカスタマイズしたい場合などに使用します。

//深度バッファをセットする
CommandBuffer command = new CommandBuffer ();
command.name = "Set depth texture";
command.SetGlobalTexture ("_DepthTexture", m_DepthBuffer);
m_Camera.AddCommandBuffer (CameraEvent.BeforeImageEffects, command);

CalculateFrustumCorners

カメラの視錐台を成す4つの辺のベクトルを返します。

1. ビューポート : Rect型
2. どこまで遠くを映すか : float型
3. どの視点のカメラか : Camera.MonoOrStereoscopicEye型
4. カメラの視錐台を成す4つの辺のベクトルを入れる変数 : Vector3[]型

4の配列の中に結果が返ってきます。従って配列の大きさは4以上である必要があります。

戻り値(返り値)

なし

○ 使い方
カメラの視錐台の情報を知りたい場合に使用します。

Vector3[] v = new Vector3[4]; 
Camera.main.CalculateFrustumCorners(new Rect(0,0,1,1),camera.farClipPlane,Camera.MonoOrStereoscopicEye.Mono,v);

CalculateObliqueMatrix

カメラのNear Clipから開始される視界の平面の形を指定した場合に得られる近平面射影行列を返します。

  1. クリップ平面 : Vector4

このVector4の要素は面の法線ベクトル(3次元)とカメラからの距離です。

戻り値(返り値)

斜めの近平面射影行列を返します。 : Matrix4x4型 

○ 使い方
カメラが視界を開始する面を変えたい場合に使用します。

//斜めに見切れるカメラ
Camera came = GetComponent<Camera>();
Vector3 clipNormal = came.worldToCameraMatrix.MultiplyVector(Vector3.one);
Camera.main.projectionMatrix = Camera.main.CalculateObliqueMatrix(new Vector4(clipNormal.x, clipNormal.y, clipNormal.z, 3.0f));

↓描画が開始される面が斜めになるのでこうなります。(Vector3.oneは適当に書いた物なので使う場合はちゃんとカメラの方向から計算した方がいいです)

near clip plane camera

CopyFrom

このカメラの設定を他のカメラと同じようにします。

  1. 設定をコピーしたいカメラ : Camera型
戻り値(返り値)

なし

○ 使い方
同じ設定のカメラにしたい場合に使用します。

Camera came = GetComponent<Camera>();
came.CopyFrom(Camera.main);

GetCommandBuffers

このカメラに指定したタイミングのコマンドバッファが設定されていたら、それを返します。

  1. どのタイミングか : Rendering.CameraEvent型
戻り値(返り値)

指定したタイミングにセットされているコマンドバッファ :CommandBuffer[]型

○ 使い方
このカメラに設定されているコマンドバッファを得たい場合に使用します。

Camera came = GetComponent<Camera>();
CommandBuffer[] buffers = came.GetCommandBuffers(Rendering.CameraEvent.BeforeDepthTexture);

GetStereoNonJitteredProjectionMatrix

オフセットが適用されていないVR用の投影行列を返します。

  1. どの視点のカメラか : Camera.MonoOrStereoscopicEye型

enum型です。

Left・・・左目用です。
Right・・・右目用です。
Mono・・・立体視モードではありません。

戻り値(返り値)

オフセットが適用されていないVR用の投影行列 : Matrix4x4型

○ 使い方
このカメラに設定されているコマンドバッファを得たい場合に使用します。

Camera came = GetComponent<Camera>();
Matrix4x4 m =  came.GetStereoNonJitteredProjectionMatrix(Camera.MonoOrStereoscopicEye.Left);

GetStereoProjectionMatrix

VR用の投影行列を返します。

  1. どの視点のカメラか : Camera.MonoOrStereoscopicEye型

enum型です。

Left・・・左目用です。
Right・・・右目用です。
Mono・・・立体視モードではありません。

戻り値(返り値)

VR用の投影行列 : Matrix4x4型

○ 使い方
VR用の投影行列を得たい場合に使用します。

Camera came = GetComponent<Camera>();
Matrix4x4 m =  came.GetStereoProjectionMatrix(Camera.MonoOrStereoscopicEye.Left);

GetStereoViewMatrix

VR用のビュー行列を返します。

  1. どの視点のカメラか : Camera.MonoOrStereoscopicEye型

enum型です。

Left・・・左目用です。
Right・・・右目用です。
Mono・・・立体視モードではありません。

戻り値(返り値)

VR用のビュー行列 : Matrix4x4型

○ 使い方
VR用のビュー行列を得たい場合に使用します。

Camera came = GetComponent<Camera>();
Matrix4x4 m =  came.GetStereoViewMatrix(Camera.MonoOrStereoscopicEye.Left);

RemoveAllCommandBuffers

このカメラに設定されているすべてのコマンドバッファを削除します。

なし

戻り値(返り値)

なし

○ 使い方
コマンドバッファを削除したい場合に使用します。

Camera came = GetComponent<Camera>();
came.RemoveAllCommandBuffers();

RemoveCommandBuffer

このカメラから指定したコマンドバッファを削除します。

  1. どのタイミングのコマンドバッファか : Rendering.CameraEvent型
  2. 指定するコマンドバッファ : Rendering.CommandBuffer型
戻り値(返り値)

なし

○ 使い方
コマンドバッファを指定して削除したい場合に使用します。

同じコマンドバッファが複数回適用されていた場合、全て削除されます。

Camera came = GetComponent<Camera>();
CommandBuffer[] buffers = came.GetCommandBuffers(Rendering.CameraEvent.BeforeDepthTexture);
if(buffers != null && buffers.Length > 0)
{
   came.RemoveCommandBuffer(Rendering.CameraEvent.BeforeDepthTexture, buffers[0]);
}

RemoveCommandBuffers

このカメラから指定したタイミングのコマンドバッファを削除します。

  1. どのタイミングのコマンドバッファか : Rendering.CameraEvent型
戻り値(返り値)

なし

○ 使い方
コマンドバッファをタイミングを指定して削除したい場合に使用します。

Camera came = GetComponent<Camera>();
came.RemoveCommandBuffers(Rendering.CameraEvent.BeforeDepthTexture);

Render

このカメラを手動でレンダリングします。

なし

戻り値(返り値)

なし

○ 使い方
レンダリング結果がすぐに欲しい場合などに使用します。

Camera came = GetComponent<Camera>();
came.Render();

RenderToCubemap

このカメラから静的のキューブマップにレンダリングします。

  1. ベイクされるキューブマップ : Cubemap型
  2. 6つの面のビットフラグ : int型 (デフォルト引数 63)

2番目の引数はビットフラグです。2の6乗=64なので、デフォルト引数 63は6つの全ての面を表します。(0を含むと63で64個になる)

  1. ベイクされるキューブマップ用のレンダーテクスチャ : RenderTexture型
  2. 6つの面のビットフラグ : int型 (デフォルト引数 63)

RenderTextureはisCubemapがtrueに設定されている必要があります。

戻り値(返り値)

成功したか失敗したか : bool型

○ 使い方
レンダリングをキューブマップに反映したい場合などに使用します。

Camera came = GetComponent<Camera>();
Cubemap cube = new Cubemap(1080, UnityEngine.Experimental.Rendering.GraphicsFormat.RGBA_ASTC12X12_SRGB, UnityEngine.Experimental.Rendering.TextureCreationFlags.None);
came.RenderToCubemap(cube);

RenderWithShader

シェーダーを交換してカメラをレンダリングします。

  1. 交換するシェーダー : Shader型
  2. 交換するところのタグ : String型
戻り値(返り値)

なし

○ 使い方
現在レンダリング中である場合はこの関数は使用できないので注意してください。

このカメラだけエフェクトをかけたい時などに使用します。

Camera came = GetComponent<Camera>();
Shader s = Shader.Find("Sprites/Diffuse");
came.RenderWithShader(s,"Transparent");

ResetAspect

アスペクト比をスクリーンの時のアスペクト比に戻します。

なし

戻り値(返り値)

なし

○ 使い方
アスペクト比をリセットしたい時に使用します。

Camera came = GetComponent<Camera>();
came.ResetAspect();

ResetCullingMatrix

カリングクエリに使うためのカメラのカスタムマトリクスを元に戻します。

なし

戻り値(返り値)

なし

○ 使い方
カリングマトリクスをリセットしたい時に使用します。

Camera came = GetComponent<Camera>();
came.ResetCullingMatrix();

ResetCullingMatrix

カリングクエリに使うためのカメラのカスタムマトリクスを元に戻します。

なし

戻り値(返り値)

なし

○ 使い方
カリングマトリクスをリセットしたい時に使用します。

Camera came = GetComponent<Camera>();
came.ResetCullingMatrix();

ResetProjectionMatrix

このカメラの射影行列を元に戻します。

なし

戻り値(返り値)

なし

○ 使い方
射影行列をリセットしたい時に使用します。

Camera came = GetComponent<Camera>();
came.ResetProjectionMatrix();

ResetReplacementShader

このカメラで変更されたシェーダーを元に戻します。

なし

戻り値(返り値)

なし

○ 使い方
カメラに適用されたシェーダーをリセットしたい時に使用します。

Camera came = GetComponent<Camera>();
came.ResetReplacementShader();

ResetStereoProjectionMatrices

このカメラに設定されたVR用の射影行列を元に戻します。

なし

戻り値(返り値)

なし

○ 使い方
VR用の射影行列をリセットしたい時に使用します。

Camera came = GetComponent<Camera>();
came.ResetStereoProjectionMatrices();

ResetStereoViewMatrices

このカメラに設定されたVR用のビュー行列を元に戻します。

なし

戻り値(返り値)

なし

○ 使い方
VR用のビュー行列をリセットしたい時に使用します。

Camera came = GetComponent<Camera>();
came.ResetStereoViewMatrices();

ResetTransparencySortSettings

このカメラに設定された透明なオブジェクトのレンダリングの順番設定を元に戻します。

なし

戻り値(返り値)

なし

○ 使い方
透明なオブジェクトのレンダリングの順番設定をリセットしたい時に使用します。

Camera came = GetComponent<Camera>();
came.ResetTransparencySortSettings();

ResetWorldToCameraMatrix

このカメラに設定されているワールド座標からカメラ座標に変換する行列を元に戻します。

なし

戻り値(返り値)

なし

○ 使い方
ワールド座標からカメラ座標に変換する行列をリセットしたい時に使用します。

Camera came = GetComponent<Camera>();
came.ResetWorldToCameraMatrix();

ScreenPointToRay

画面の指定したポイントからレイを飛ばします。

  1. スクリーン座標 : Vector3型

スクリーン座標は左下が(0,0)で右上が画面のピクセル数の横,縦

zの値はカメラからどれだけ前後からレイを飛ばすか

戻り値(返り値)

飛んだレイの結果 : Ray型

○ 使い方
画面でタップした場所にオブジェクトが存在するのかなど、画面と関連した色々な事に使われます。

Ray r = Camera.main.ScreenPointToRay(Input.mousePosition);

ScreenToViewportPoint

スクリーン座標からビューポート座標に変換します。

スクリーン座標は左下が(0,0)で右上が画面のピクセル数の横幅,縦幅です。

ビューポート座標は縦幅と横幅を正規化した場合の画面における座標です。

  1. スクリーン座標 : Vector3型

zの値はカメラの位置からどれだけ前後かです。

戻り値(返り値)

ビューポート座標 : Vector3型

○ 使い方
画面で指定した位置のビューポート座標を得たい場合に使用します。

Vector3 viewPos = Camera.main.ScreenToViewportPoint(Input.mousePosition);

ScreenToWorldPoint

スクリーン座標からワールド座標に変換します。

スクリーン座標は左下が(0,0)で右上が画面のピクセル数の横幅,縦幅です。

  1. スクリーン座標 : Vector3型

zの値はカメラの位置からどれだけ前後かです。

戻り値(返り値)

ワールド座標 : Vector3型

○ 使い方
画面で指定した位置のワールド座標を得たい場合に使用します。

Vector3 worldPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);

SetReplacementShader

このカメラが描画するシェーダーを交換します。

  1. 交換するシェーダー : Shader型
  2. 交換するところのタグ : String型
戻り値(返り値)

なし

○ 使い方
このカメラだけエフェクトをかけたい時などに使用します。

Camera came = GetComponent<Camera>();
Shader s = Shader.Find("Sprites/Diffuse");
came.SetReplacementShader(s,"Transparent");

SetStereoProjectionMatrix

このカメラにVR用の射影行列をセットします。

  1. どの視点のカメラか : Camera.MonoOrStereoscopicEye型
  2. セットする射影行列 : Matrix4x4型

引数1はenum型です。

Left・・・左目用です。
Right・・・右目用です。
Mono・・・立体視モードではありません。

戻り値(返り値)

なし

○ 使い方
VR用の射影行列をセットしたい時などに使用します。

Camera came = GetComponent<Camera>();
came.SetStereoProjectionMatrix(Camera.StereoscopicEye.Left, came.projectionMatrix);

SetStereoViewMatrix

このカメラにVR用のビューマトリクスをセットします。

  1. どの視点のカメラか : Camera.MonoOrStereoscopicEye型
  2. セットするビューマトリクス : Matrix4x4型

引数1はenum型です。

Left・・・左目用です。
Right・・・右目用です。
Mono・・・立体視モードではありません。

戻り値(返り値)

なし

○ 使い方
VR用のビューマトリクスをセットしたい時などに使用します。

Camera came = GetComponent<Camera>();
Matrix4x4 viewL = came.worldToCameraMatrix;
Matrix4x4 viewR = came.worldToCameraMatrix;
viewL[12] += 0.011f;
viewR[12] -= 0.011f;
cam.SetStereoViewMatrix(Camera.StereoscopicEye.Left, viewL);         cam.SetStereoViewMatrix(Camera.StereoscopicEye.Right, viewR);

SetTargetBuffers

このカメラがレンダリングするバッファを指定します。

複数指定することもできます。

  1. カラーバッファ : RenderBuffer型
  2. 深度バッファ : RenderBuffer型
  1. カラーバッファ(複数) : RenderBuffer[]型
  2. 深度バッファ(複数) : RenderBuffer[]型
戻り値(返り値)

なし

○ 使い方
レンダリング先のバッファを指定したい場合などに使用します。

Camera came = GetComponent<Camera>();
RenderTexture rt = new RenderTexture(300, 200, 24, RenderTextureFormat.ARGB32);
came.SetTargetBuffers (rt.colorBuffer, rt.depthBuffer);

ViewportPointToRay

指定したビューポート座標からレイを飛ばします。

  1. ビューポート座標 : Vector3型

ビューポート座標は左下が(0,0)で右上が(1,1)

zの値はカメラからどれだけ前後からレイを飛ばすか

戻り値(返り値)

飛んだレイの結果 : Ray型

○ 使い方
画面の指定した場所にオブジェクトが存在するのかなど、画面と関連した色々な事に使われます。

Camera came = GetComponent<Camera>();
Ray r = came.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0));

ViewportToScreenPoint

ビューポート座標をスクリーン座標に変換します。

  1. ビューポート座標 : Vector3型

ビューポート座標は左下が(0,0)で右上が(1,1)

zの値はカメラからどれだけ前後からレイを飛ばすか

戻り値(返り値)

スクリーン座標 : Vector3型

○ 使い方
ビューポート座標をスクリーン座標に変換したい場合に使用します。

Camera came = GetComponent<Camera>();
Vector3 screenPos = came.ViewportToScreenPoint(new Vector3(0.5f, 0.5f, 0));

ViewportToWorldPoint

ビューポート座標をワールド座標に変換します。

  1. ビューポート座標 : Vector3型

ビューポート座標は左下が(0,0)で右上が(1,1)

zの値はカメラからどれだけ前後からレイを飛ばすか

戻り値(返り値)

ワールド座標 : Vector3型

○ 使い方
ビューポート座標をワールド座標に変換したい場合に使用します。

Camera came = GetComponent<Camera>();
Vector3 worldPos = came.ViewportToWorldPoint(new Vector3(0.5f, 0.5f, 0));

WorldToScreenPoint

ワールド座標をスクリーン座標に変換します。

  1. ワールド座標 : Vector3型
戻り値(返り値)

スクリーン座標 : Vector3型

○ 使い方
ワールド座標をスクリーン座標に変換したい場合に使用します。

Camera came = GetComponent<Camera>();
Vector3 screenPos = came.WorldToScreenPoint(Vector3.zero);

WorldToViewportPoint

ワールド座標をビューポート座標に変換します。

  1. ワールド座標 : Vector3型
戻り値(返り値)

ビューポート座標 : Vector3型

○ 使い方
ワールド座標をビューポート座標に変換したい場合に使用します。

Camera came = GetComponent<Camera>();
Vector3 viewPos = came.WorldToViewportPoint(Vector3.zero);

GetAllCameras

現在のシーン内にある全てのカメラを引数にした配列に入れます。

  1. カメラを入れる配列 : Camera[]型
戻り値(返り値)

カメラが入った数 : int型

○ 使い方
入れる配列の大きさがシーン中に存在するカメラの数より小さい場合エラーになります。

Camera[] c = new Camera[Camera.allCamerasCount]; 
int cameraCount = Camera.GetAllCameras(c);

OnPostRender

カメラがシーンのレンダリングを終了した際に呼び出されます。

なし

○ 使い方
レンダリング終了時に何か処理を加えたい時に使用します。

void OnPostRender() 
{
        Debug.Log("このカメラのレンダリングが終了しました");
}

OnPreCull

カメラがシーンのカリングを行う直前に呼び出されます。

なし

○ 使い方
シーンのカリングを行う直前に何か処理を加えたい時に使用します。

void OnPreCull() 
{
        Debug.Log("このカメラはカリングを行う直前です");
}

OnPreRender

カメラがシーンのレンダリングを開始する前に呼び出されます。

なし

○ 使い方
シーンのレンダリングを開始する前に何か処理を加えたい時に使用します。

void OnPreRender() 
{
        Debug.Log("このカメラはレンダリングを行う前です");
}

OnRenderImage

すべてのレンダリングが完了したときに呼び出されます。

  1. 受け取ったレンダリング結果 : RenderTexture型
  2. 画面に出力するもの : RenderTexture型

○ 使い方
すべてのレンダリングが完了したときに何か処理を加えたい時に使用します。

受け取ったレンダーテクスチャにレンダリング結果が入っていますので、これを加工して出力するレンダーテクスチャに入れると画面での映り方が変わります。

public Material mat;
void OnRenderImage(RenderTexture src, RenderTexture dest) 
{
         Graphics.Blit(src, dest, mat);
}

OnRenderObject

カメラがシーンのレンダリングを終了した際に呼び出されます。

なし

○ 使い方
レンダリング終了時に何か処理を加えたい時に使用します。

OnPostRenderとの違いはこの関数はカメラがアタッチされていなくても呼び出される点です。

void OnRenderObject() 
{
        Debug.Log("このカメラのレンダリングが終了しました");
}

OnWillRenderObject

このオブジェクトがカメラに映っている場合、カメラごとに一度呼び出されます

なし

○ 使い方
このオブジェクトがカメラに映っている間、何か処理を加えたい時に使用します。

この関数はカメラがアタッチされていなくても呼び出されます。

void OnWillRenderObject() 
{
        Debug.Log("カメラに映ってます");
}

CameraCallback

カメラのコールバックで使用するデリゲートです。

  1. コールバックで渡されるカメラ : Camera型

○ 使い方
Camera.onPreCull、Camera.onPreRender、Camera.onPostRender のコールバックを取得するのに使用します。

void Start()
{
  Camera.onPostRender += EndRendering;
}

public void EndRendering(Camera came)
{
  Debug.Log(came.name + "のレンダリングが終わりました");
}

Static変数や関数、メッセージなどがわからない方は↓の記事を参考にしてみてください



タイトルとURLをコピーしました