# unity03ex4. 3D、Camera、MeshRenderer ________________________________________ ## 1. Unity3Dの基礎知識 ________________________________________ ### 1.1. 座標系とレイヤー 座標系 1. スクリーン座標:左下を(0,0)とするスクリーンの座標 2. ワールド座標:3D空間上の座標 - Rotate(オイラー)回転の向きは、Z=X→Y、Y=Z→X、X=Y→Z - Rotate(オイラー)回転の順序は、Z、X、Y 3. UnityEngine.Input.mousePosition - スクリーン座標を取得 4. Camera.ScreenToWorldPoint() - スクリーン座標をワールド座標に変換する。z距離は引数で与える Layer - 3Dオブジェクトのグループ単位。ライティング、衝突、描画の一括制御する ________________________________________ ### 1.2. レンダリング手法とURP-Volume レンダリング手法の例 1. Vertex Lit。フラットシェーディングのような計算(PS相当) 2. Forward。フォンシェーディング&法線マップ。反射光は考慮しない(PS3相当) - 最も標準的なレンダリングパイプライン。Unityのデフォルト 3. Deferred。G-Buffer(ライティング計算用のバッファ群)を用意し、全てのライティングを1度に計算 - G-Bufferはz情報がないため、半透明が表現できない URP-Volume - 既定の設定では、Unityのポストプロセスの一部 ________________________________________ ## 2. Camera ________________________________________ Render Type - Baseカメラは従来のカメラ - Overlayカメラは他のカメラのStackに追加する - Overlayカメラは画面全体Render Textureとやれることは同じ Renderer(ライティング計算手法や順序の設定) |プロパティ |意味 |-----------------|---------------------------- |Renderer |URPにおけるレンダリングパスの指定 |Stop NaNs |NaNを黒扱いで続行するか |Dithering |カラーディザリング処理するか |Priority |複数カメラがある場合の、カメラ間の描画順序 |Opaque Texture |シェーダで_CameraOpaqueTextureを利用可能にするか |Depth Texture |シェーダで_CameraDepthTextureを利用可能にするか |Culling Mask |描画対象にするレイヤーの選択。Everythingは全て |Occlusion Culling|カメラの方を向いていないポリゴン描画を省略するか . Environment(初期化方法やURP-Volumeの設定) |プロパティ |意味 |-----------------------|---------------------------- |Background Type |旧名称:Clear Flags。描画内容の初期化方法 |Volumes - Update Mode |初期化タイミングの指定 |Volumes - Volume Mask |Volumeが影響するレイヤーの選択 |Volumes -Volume Trigger|Volumeを適用するかどうかのトリガーの設定 . Output(出力先やHDR、MSAAの設定) |プロパティ |意味 |-----------------|---------------------------- |Output Texture |テクスチャに出力する場合の設定 |HDR |明るすぎる場面や暗すぎる場面でも色飛びを抑えるかどうか |MSAA |ピクセル化の際に複数の点から最終的な色を決定する仕組み。シャギーが軽減される . ________________________________________ ## 3. 複数Cameraの典型的な設定 ________________________________________ ### 3.1. UI Camera 用途 - Main : UI以外を撮影する。Baseにする - UI : UIを撮影する。OverlayにしてMainにスタックする 典型的な設定 カメラ|Clear |Culling Mask|Depth|Target |cinemachine ------|-----------|------------|-----|-------------|----------- Main |SkyBox |UI以外 |-1 |None |- UI |- |UI |- |- |- ________________________________________ ### 3.2. 複数視点の例 用途 - Main : 全体を描画。Baseにする - Sub : 顔アップなどを描画。Baseにする - UI : UIを撮影する。OverlayにしてMainにスタックする 典型的な設定 カメラ|Clear |Culling Mask|Depth|Target |cinemachine ------|-----------|------------|-----|-------------|----------- Main |SkyBox |UI以外 |-1 |None |- Sub |Solid Color|UI以外 |0 |RenderTexture|Brain UI |- |UI |- |- |- . ________________________________________ ## 4. MeshRenderer ________________________________________ 基礎的なマテリアルの操作 sharedMaterialは直接変更、materialはクローンして変更 項目 |旧パイプライン(Built-in) |URP ------------|--------------------------------|-------------------------------- アルベド |.SetColor("_Color", val) |.SetColor("_BaseColor", val) テクスチャ |.SetTexture("_MainTex", val) |.SetTexture("_BaseMap", val) 金属さ |.SetFloat("_Metallic", val) |.SetFloat("_Metallic", val) ツルツルさ |.SetFloat("_Glossiness", val) |.SetFloat("_Smoothness", val) 自己発光色 |.SetColor("_EmissionColor", val)|.SetColor("_EmissionColor", val) 法線マップ |.SetTexture("_BumpMap", val) |.SetTexture("_BumpMap", val) . URP物理ベースレンダリングのデフォルトで対応できるもの、できないもの - ○ 顔料(拡散反射) - ○ 鏡面(鏡面反射) - ○ 凸凹の近似(法線マップ) - ○ 環境反射の近似(キューブマップ) - ○ 自己発光(エミッション) - △ 半透明 - × 屈折 - × サブサーフェス。皮膚、蝋、葉っぱ - × 構造色 - × 異方性反射。髪、シルク - × 偏光・分光。CD、プリズム