lycoris102 / UnityCameraLesson

社内勉強会用

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

UnityCameraLesson

概要

  • UnityのCameraの基本的な使い方について記載する
- Cameraはプレイヤーへのゲームの見せ方
- Cameraコンポーネントの設定に注意 (特にProjection)
- Cameraの演出を工夫すると「おっ」と思うゲームが出来る

SampleProject

Camraとはなんぞや

  • プレイヤーへ実際にどのように見せるかはCameraによって決まる
  • 被写体への距離/画面効果などをこのConponentによって調整可能

Cameraの作り方

  • 基本的にはScene作成時にMainCameraというゲームオブジェクトが作成される
  • 消してしまった場合やSubCamera(後述)を作成したい場合には以下の手順を踏む
[Hierarchy] => [Create] => [Camera]

CameraComponent

ClearFlag

  • カメラで描画されるゲーム画面はフレーム毎にClearFlagの設定に基づいてクリアされる
  • 背景描画、および複数のカメラを重ね合わせる際に使用する
    • Skybox: 空の背景画像によるクリア
    • Solid Color: 単色によるクリア
    • Depth only: Depth値のみクリア
      • 複数のカメラの画像を合成する場合、前面のカメラについてはこの値を指定する
    • Don't clear: 前フレームの描画内容がクリアされずに残り続ける
  • SkyBoxは特に使用目的が無ければ避けよう

Background

  • 主にSolid Color時に設定する背景色

Culling Mask

  • 描画するレイヤーを制御する
  • 特定のレイヤーだけ描画するCameraの作成も可能
    • e.g) UIだけを描画する / 背景だけを描画して、エフェクトを掛ける / サブカメラ

Projection

  • Cameraの投影方法の指定
    • Perspective (透視投影): 遠近感のある描画 (主に3Dゲームに使用)
    • Orthographic (平行投影/正投影): 遠近感のない描画 (主に2Dゲームに使用)

Field of view/Size

ClippingPlanes

  • カメラの描画奥行きの領域
    • 近い物を移さない時は Near 値を変更する
    • 遠い物を移さない時は Far 値を変更する
  • 3Dゲームを作る時には負荷を考慮する関係でFar値を減らすアプローチを取る事がある

ViewportRect

  • カメラ自体の大きさと配置を設定する
    • マリオカートの複数人プレイみたいな画面分割
    • 小さい地図を右下に表示
  • 基本的には 0〜1 の範囲で指定する

Depth

  • カメラの深度 (描画順序) を設定する

RenderingPath

  • http://docs.unity3d.com/ja/current/Manual/RenderingPaths.html
  • レンダリング方法
    • ライトや影の見え方、およびパフォーマンスに影響する
  • defaultでは各プラットフォーム毎の設定を参照している
    • [Edit] > [Project Settings] > [Player]
  • モバイルアプリに関しては Forward Rendering で良さそう

TargetTexture

  • カメラの描画を画面ではなく特定のオブジェクトに描画する時に使用する
    • テレビの3Dオブジェクトの画面にゲームを映したりするとき

OcculusionCulling

  • http://tsubakit1.hateblo.jp/entry/2015/04/22/235923
  • カメラの描画に映らない部分を描画しない機能
    • 背後や他のオブジェクトに書かれている部分
  • 使用方法によっては DrawCall 数が減少してパフォーマンス向上につながる

HDR (High Dynamic Range)

TargetDisplay

  • 複数のDisplayに描画する時に使用する
    • マルチプレイ
    • 最近はVR用のCameraと観客にどのように見えているか見せるCameraへの割り当て

Cameraを使った演出

SubCamera

ImageEffect (ポストエフェクト)

CameraShake

  • ダメージエフェクト等のFB演出に使用
  • CameraComponentがアタッチされているGameObject自体を揺らす事で実現可能
  • Tween系のアセットを使えば実装が楽

参考

Lisence

ユニティちゃんライセンス

この作品はユニティちゃんライセンス条項の元に提供されています

About

社内勉強会用


Languages

Language:GLSL 50.0%Language:C# 50.0%