3Dゲーム制作独学レポート

3D初心者が独学をしてVR3Dゲーム作りを目指すためのレポート記録です。

【unity learn】 Create with VR tutorial3.3 -Lighting

unityの公式の教材で学習した内容を復習もこめてまとめる。


総評

・Lightingとベイク


3.Adjust scene lighting and re-bakeが何がしたいのかよくわからなかった。



コンポーネントやプロパティ等


・UniversalRenderPipelineAssetアセット:
 ・Lighting
・main light:per pixel
  ・additional lights>pre Object Limitプロパティ:追加したライトオブジェクトを何個使うかを調整する。3つ照明を追加してこのプロパティを2にすると二つだけ光が反映される。どういう基準で順番が決まっているかはよくわかない。
  ・cast shadowsプロパティ:影のオンオフ


・Light windows:window>renders>Lightingで開ける。ライティングに関する設定ができる。
 ・Environment:
・skybox material:空のオブジェクトをみれる。
  ・sun source:ライトのソースを設定する
  ・realtime shadow color:影の色
 ・Enviroment lighting:環境照明
・sorce:そらの照明、colorを選ぶと環境照明の色を設定できる。
 ・other setting:
・fog:霧が使える、処理が重くなる。
 ・scene
・Lightmapping settings
・compress Lightmapプロパティ:オンにするとライトマップが滑らかになるきれいになる。(私の環境ではこのプロパティが見つからない)
  ・bouncesプロパティ:ライトマップの解像度を設定できる。
  ・max lightmap size:解像度。なるべく小さくすると軽くなる。
・workflow setting
・generate Lighting:ライトマップを作れる。https://framesynthesis.jp/tech/unity/lighting/
  ・clear baked date:generate Lightingのドロップダウン>clear baked dateでベイクされたデータをけせる。


・Directional Lightオブジェクト:
 ・概要:太陽のようにふるまう指向性ライト
 ・modeプロパティ:realtimeでリアルタイムに描写、bakedだと焼き付ける、mixを使うとベイクした影にリアルタイムの影を追加する。リアルタイムは重いのでオキュラス単体では動作しない。


・hierarchyの検索にt:Lightと打ち込むとLightに関連したオブジェクトを検索できる。


・bake Lightmapモード:シーンブラウザの右上のthe draw mode>baked lightmap で見れる。ベイクを行った。


・scale in Lightmap:mesh randerコンポーネント>Lightmapping>Scale in Lightmapから強度を決められる。


・shadow Typeプロパティ:Lightオブジェクト>Lightにある。soft shadowsにすると柔らかくなる?


・Light Probe Groupオブジェクト:hierarchy>右クリック>Light>Light probe Groupで生成。
  ・概要:このオブジェクトがある状態でLightウインドウのScene>generate Lightingでベイクすると、シーンの場所ごとに明るさが設定できる。
  ・game viewの右上の当たりのPerspボタンでprobeのみに変えることができる。
  ・ギズモ>Light probe Proxyをオンにするどのプローブ球が反応しているか見れる。
  ・mesh rendererコンポーネントのprobes>Light Probesのオフで効果を消える。

【unity learn】 Create with VR tutorial3.2 - Optimization

概要

unityの公式の教材で学習した内容を復習もこめてまとめる。
https://learn.unity.com/tutorial/3-2-optimization-1?uv=2020.3&courseId=60183276edbc2a2e6c4c7dae&projectId=6018353dedbc2a0f634b7918


総評

・レンダリングの最適化方法


このチュートリアルで出てきたコンポーネントなど

・fpsに影響を与える工程
 ・polycount:オブジェクトのポリゴン数を数える工程
 ・draw call:オブジェクトの描写をグラフィクスAPIに依頼する工程 
 ・particles
 ・textures



・デバイスでのパフォーマンス目標
 ・https://developer.oculus.com/documentation/unity/unity-perf/


・FPS Overray UIオブジェクト:
 ・概要:FPSの値を見ることができる。
 ・Render Cameraプロパティ:メインカメラに設定するとメインカメラを追従する。


・Statsメニュー:gemeウインドウの右上にある。(window>panels>gameでパネルを開ける。)統計情報が見れる。
 ・batches:1フレームあたりのドローコールの呼び出し回数、少ない方がよい。バッチとして集めてAPIに送っている。oculus quest2だと80-600の間が基準。
 ・tris:画面に描写さてている三角形ポリゴンの数   Quest 2 750k-1.0mが推奨値



・profilerウインドウ:windows>analysis>profilerで開ける。様々なデータをみれる。録画ボタンで録画できる。何が書いてあるのかはよくわからない。
 参考URL
 ・The Rendering Statistics window https://docs.unity3d.com/Manual/RenderingStatistics.html
 ・The Frame Debugger window    https://docs.unity3d.com/Manual/FrameDebugger.html
 ・The Profiler window       https://docs.unity3d.com/Manual/ProfilerWindow.html


・Frame debugウインドウ:window>analysis>frame debugで開ける。レンダーを順序通りに見ることができる。


・バッチ処理を軽くする方法
 ・universalRenderPipelineAsset:assetブラウザの中にある。これをいじると描写を軽減できる。advancedのSRP BatcherとDynamic Batchingをチェックすると減る。(バッチ処理をやってくれる)
 ・オブジェクトを静的にすると軽くなる
 ・鏡を消すと軽くなる(カメラが減ると軽くなる)


・wireframeモード:sceneウインドウの上のshading mode>wireframeから選べる。ワイヤフレームが見える。


・メッシュフィルターコンポーネント:オブジェクトのメッシュの情報が見れる。meshをクリックするとアセットブラウザで対応するメッシュが選択されるのでそれをクリックすると各種情報が表示される。
 ・triangles :三角形ポリゴンの数


・occlusion culling:レンダリング効率を落とすことができる。window>rendering>occlusion culling
公式ドキュメント
オクルージョンカリング
オクルージョンカリングは、あるオブジェクトが他のオブジェクトに隠されていて現在カメラに映らないときに、オブジェクトのレンダリングを無効にする機能です。これは、3D コンピュータグラフィックスでは自動的に行われません。カメラからもっとも遠いオブジェクトが最初に描かれ、近いオブジェクトは、それらの上に描画されるからです(これは “overdraw” と呼ばれています)。オクルージョンカリングは、フラスタムカリングとは違います。フラスタムカリングは、カメラの表示領域外にあるオブジェクトのレンダラーを無効にしますが、“overdraw”よって視界から隠されたものについては無効にしません。オクルージョンカリングを使用するときには、まだフラスタムカリングの効果も有効なことに注意してください。
https://docs.unity3d.com/ja/2018.4/Manual/OcclusionCulling.html


・マテリアルのベーステクスチャをクリックするとアセットブラウザでそのテクスチャを選べる。


・generate mipmapsプロパティ:textureアセット>advanced>Generate Mipmaps をオンにすると離れるつれてテクスチャの解像度が低くなり軽くなる


・aniso levelプロパティ:textureアセット>advanced>aniso level:異方性フィルタリング


・particle systemコンポーネント:
 ・start Lifetimeプロパティ:パーティクルの寿命を設定。
 ・maxparticlesプロパティ:粒子が出てくる量
 ・Rate over timeプロパティ:一秒間の密度?


・マテリアルのシェーダー:univcersal render pipelineのシェーダー>particle>Lit だとライトに反射する。unlitだと反射しなくなり軽くなる


・Camera>rendering>post Processingプロパティ:オンにすると後処理が有効になる


・volumeコンポーネント:後処理したカメラオブジェクトに追加する。profileで後処理プロファイルを追加できる。add overrideで適用。(このチュートリアルではvignetteとFilm Grainを追加している)(警告: 後処理効果を追加する場合は、カラー調整が適しています。レンズの歪みやモーションブラーはサイバー病を誘発します。これらの効果の使用は避けてください。)


・unicersalRenderpipelineAsset>Quality>anti aliasing(MSAA)プロパティ:アンチエイリアシングをかけられる。参考:http://cvalley.co.jp/ae_plugin/psoft/anti-aliasing/index.html


・maincameraオブジェクト>Cameraコンポーネント>rendering >anti_aliasint:アンチエイリアスを作れる。後処理で行うのでrendering>postprocssingをオンにする必要がある。

【unity learn】 Create with VR tutorial3.1

概要

unityの公式の教材で学習した内容を復習もこめてまとめる。
https://learn.unity.com/tutorial/3-1-comfort-and-accessibility-1?uv=2020.3&courseId=60183276edbc2a2e6c4c7dae&projectId=6018353dedbc2a0f634b7918#60233de7edbc2a43be274c93

総評

・移動時のフェード効果とトグルボタンで各種セッティングを変える方法を説明していた。

このチャプターで出てきたコンポーネントやプロパティ

・Canvasコンポーネント(UI>canvasオブジェクトに標準装備されている)
 ・render modeプロパティ:screen space-Cameraを選びranderカメラにmain cameraをセットするとメインカメラに追従するカメラを作れる。
 ・plane distanceプロパティ:カメラからの距離
 ・order in Layer:1にすると透けなくなる?


・imageオブジェクト
 ・概要:canvasオブジェクトの子として作る。xyスケールを100程度にするとVRの視野をすべて覆える。


・canvas Groupコンポーネント:
・概要:どんな機能があるかよくわからなかった。
公式ドキュメントの説明。
キャンバスグループは、グループ全体の特定の側面を制御するために使用できます。ティッカー
要素を 1 か所から取得し、それぞれを個別に処理する必要はありません。キャンバスグループのプロパティは、ゲームオブジェクト
それはすべての子供たちと同様にオンです。


・fade canvasコンポーネント(script):イベントでfadeCanvas.startFadeOutファンクションを呼び出すと読み込み時にフェード効果を得られる


・on Scene Loadコンポーネント(script):on Load()でロード時のイベントを呼び出せる。


・Teleport Area With Fade:フェードがついているテレポートエリア、アンカーも同じ。フェードがあると酔わなくなるらしい。


・toggleコンポーネント:UI>toggleオブジェクトに標準で設定されている。on value changedイベントでファンクションを呼び出せる


・set interaction Layer(script):イベントでtoggleTargetLayerファンクションを呼び出すとlayermaskを切り替えられる(しかし、私の環境ではgrabコンポーネントを設定したオブジェクトがinteractionLayerでしか反応しないのでこのスクリプトは動作しなかった。