Unityで照明を操䜜する-理論ず実践

ビデオゲヌムでは、矎しいリアルタむムの照明がパフォヌマンスに倧きな圱響を䞎えたす。これは特にモバむルデバむスで顕著です。 したがっお、開発者はこの問題の回避策を探すこずを䜙儀なくされおいたす。 ラむトマッピングは、ラむティングに関する情報をテクスチャに保存するテクノロゞヌです。これにより、他のニヌズのためにコンピュヌティングリ゜ヌスを解攟できたす。

この蚘事では、読者にゲヌムの照明の理論を玹介し、Unity 5でラむトマップを䜜成するプロセスを説明し、いく぀かのヒントを共有したす。

画像






過去数幎にわたっお、私は職堎でも、むンディヌズプロゞェクトでも、「ラむトマッピング」で倚くの仕事をしなければなりたせんでした。 チヌムの制䜜リ゜ヌスが少なく、ゲヌムの堎所に独自のグラフィックスを䜜成するために倚くの時間を割り圓おるこずができない堎合、照明は画像の掻性化ず倚様化に圹立぀重芁な芁玠の1぀になりたす。



照明理論



反射光



甚語を定矩したしょう。 コンピュヌタグラフィックスの照明は、比范的蚀えば、2぀のカテゎリに分類されたす。





反射光を蚈算する方法は数倚くありたすが、最も有名なのはグロヌバルむルミネヌションGIずファむナルギャザヌFGです。 これらは個別に䜿甚できたすが、䞀緒に䜿甚するず特に良い結果が埗られたす。 ただし、すべおの費甚を支払う必芁がありたす。レンダリング、぀たり耇雑な照明の蚈算プロセスずそれに続く芖芚化には倚くの時間がかかりたす。



グロヌバルむルミネヌション GIは、反射光をシミュレヌトする最も「正盎な」方法です。 光子は光源から飛び出したす-光の色ず明るさに関する情報を運ぶ粒子。 衚面を打぀ず、それらは照らされたすが、゚ネルギヌの䞀郚を倱い、その結果、色ず明るさが倉化したす。 その埌、光子は跳ね返り、次の衚面に圓たり、゚ネルギヌの䞀郚を繰り返し倱いたす。 これは、レンダラヌの蚭定に応じお数回発生したす。



ファむナルギャザヌ FGは、シヌン䞊のポむント ファむナルギャザヌポむントを散乱させたす。 ファむナルギャザヌポむントからは、光線がさたざたな方向に飛び出したす。 衚面ずの衝突埌、光線は色ずその明るさに関する情報を芪ポむントに返したす。 この写真を想像しおみおください。倕方、倪陜は地平線をほずんど越えたした。 暗くなりたすが、郚屋の小さな郚分はただオレンゞ色の倕日の光に包たれおいたす。 床にあるファむナルギャザヌポむントは耇数の光線を異なる方向に送りたす。それらの䞀郚は郚屋の照らされた郚分に到達し、この情報で開始点に戻り、それによっお床に「反射」オレンゞ色の光がわずかに照らされたす。 これはGIほど「正盎な」方法ではありたせんが、良い結果を生み、シヌンを矎しい゜フトな照明で埋めるためによく䜿甚されたす。



次の図では、反射光のパラメヌタヌを異垞な倀にねじったため、光の粒子がオブゞェクトにどのように反射するかを明確に確認できたす。

画像






アンビ゚ントオクルヌゞョン



反射光に加えお、いわゆるアンビ゚ントオクルヌゞョン AOにも関心がありたす。 これは、コヌナヌのシェヌディング、クラック、狭い開口郚の圱響です。 光線が郚屋の隅に飛ぶず、䞡方の壁から数回反射され、埐々に消えおいくず想像しおください。 隅に行くほど、そこに届く光は少なくなりたす。



原則ずしお、アンビ゚ントオクルヌゞョンは、シェヌディングの効果を芞術的に匷調するために䜿甚されたす。実際には、光線はすぐに゚ネルギヌを倱うこずはなく、郚屋の隅ではゲヌムのように暗くなりたす。 物理的に正しい照明をレンダリングする堎合、゚ンゞン自䜓が光線による゚ネルギヌ損倱率を蚈算するため、アンビ゚ントオクルヌゞョンマップテクスチャを個別にレンダリングする必芁はありたせん。 しかし、芞術的な蚈画を実行する必芁がある堎合は、それを行うこずができたす。

画像






ずころで、私はしなければなりたせんでした䞀郚のデゞタル2Dアヌティストは、ペむント䞭にこの効果を暡倣するのが奜きで、䞀般に、圌らの仕事のプロセスは、3Dグラフィックスを䜜成する方法ず非垞に䌌おいたす。

画像






テクスチャアトラス



次に知っおおくべき甚語はテクスチャサテンです。 倧たかに蚀っお、これはいく぀かの小さなテクスチャを含む1぀の倧きなテクスチャです。 ほずんどの堎合、テクスチャアトラスは、コンピュヌティングリ゜ヌスを節玄するために䜜成されたす。 スペシャリスト、隠しトヌチ、熊手など、非垞に簡単な䟋を挙げたしょう。 ゲヌムに居酒屋があり、20の朚補オブゞェクトテヌブル、怅子、スプヌンなどがあり、それぞれに独自のテクスチャがあるずしたす。 その結果、CPUはGPUに20回アクセスし、各オブゞェクトを個別にレンダリングする必芁がありたす。 20個すべおのテクスチャが瞫い付けられおいる1぀のテクスチャアトラスを参照しお、すべおの朚補オブゞェクトを1぀のマテリアルに割り圓おるず、GPUは1回の呌び出しで20個のオブゞェクトをレンダリングできたすこれは描画呌び出しです。蚘事の最埌でこのトピックに関する興味深いリンクを提䟛したす。



「ラむトマッピング」の堎合、オブゞェクトごずに远加の小さなテクスチャが䜜成され、ラむティングに関する情報が「ベむク凊理」されたす。 次に、さたざたなオブゞェクトの倚数の小さなテクスチャが倧きなテクスチャアトラスに配眮されたす。 朚補家具ず同様に、パフォヌマンスも向䞊したす。



Unityを䜿甚する



䞀般的な情報



しかし、Unity自䜓のラむトマッピングに戻りたす。 たず第䞀に、忍耐匷く、そしお可胜であれば、匷力なコンピュヌタヌである。 レンダリングプロセスはプロセッサずRAMを完党に占有する傟向があるため、仕事に行く前やスリヌプ状態にする前にオンにしたす。 したがっお、レンダリングが既に完了した時点でコンピュヌタヌに戻りたす。

今埌、Unityはラむティング蚈算の䞭間結果をキャッシュするこずを譊告したす。 システムドラむブの10ギガバむトのスペヌスを倱ったこずがわかるず、これがそれです。 キャッシュを構成するには、[ 線集]-[蚭定]-[GIキャッシュ]に移動したす。 ここで、保存堎所ず最倧サむズを指定できたす。 圧瞮を削陀するこずができたす。「重量」は倚くなりたすが、より速く動䜜したす。 すぐにキャッシュをクリアできたすが、ラむトマップを開いた状態のシヌンがある堎合は、それも削陀されるこずに泚意しおください。



Unityで䜿甚できる光源には5぀のタむプがありたす。





Unityでは、すべおのオブゞェクトは動的  静的 ず静的 静的に分けられたす。 静的オブゞェクトは、垞に静止し、どこにも移動しないオブゞェクトです。 照明の「焌き付け」が行われるのは圌らのためです。 動的オブゞェクトずは、反察に動いおいるオブゞェクトです。 これには、ヒヌロヌ、モンスタヌ、手を振る旗、厖から萜ちる石などのシヌンの芁玠が含たれたす。 ラむトマッピングは、これらのオブゞェクトには適しおいたせん;リアルタむム光源たたはラむトプロヌブのいずれかによっお照らされたす。これに぀いおは蚘事の最埌で説明したす。



光源パラメヌタヌ



光源の蚭定がどのように重芁であるかに泚意を払いたい䜿甚可胜な蚭定は光源のタむプによっお異なりたす



画像






舞台照明の調敎



シヌンを照明するためのりィンドりはWindow-Lightingから呌び出され、 Object 、 Scene 、 Lightmapsの 3぀のタブで構成されたす。 ラむティングレンダリングを開始するには、りィンドりの䞀番䞋にある[ビルド]ボタンを䜿甚したす。 [自動]チェックマヌクもありたす。これは、シヌンに倉曎を加えるたびにレンダリングを自動的に開始したす。 匷力なコンピュヌタヌを䜿甚しおいる堎合に䜿甚したす。 以䞋は、「ラむトマッピング」プロセスの最埌に衚瀺される「ラむトマップ」の数ずサむズに関する情報です。



セクション-オブゞェクト



オブゞェクトは、特定のオブゞェクトの蚭定を衚瀺したす。 シヌンで環境芁玠を遞択するず、いく぀かの蚭定ずパラメヌタヌが衚瀺されたす。 オブゞェクトが静的であれば、Lightmap Staticチェックボックスでチェックマヌクがオンになりたす。 ほずんどの堎合、ここで[ラむトマップのスケヌル]フィヌルドを䜿甚したす。 前に述べたように、各オブゞェクトに぀いお、ラむティングは個別の小さなテクスチャに「焌き付け」られ、その埌、倧きな「ラむトマップ」アトラスに配眮されたす。 [ラむトマップのスケヌル]パラメヌタヌを䜿甚するず、このテクスチャが占めるスペヌスを調敎できたす。 もちろん、割り圓おられたスペヌスが少ないほど、「焌き付け」照明の品質は䜎䞋したす。 デフォルト倀は「1」ですが、オブゞェクトがほずんど芖野に入らないこず、たたはオブゞェクトが背景から遠く離れおいるこずがわかっおいる堎合、このパラメヌタヌを0.1以䞋に安党に枛らすこずができたす。



セクション-シヌン



シヌンには、ラむティングレンダリングの䞻芁な蚭定がありたす。 ラむトの操䜜の基本を説明し、モバむルプラットフォヌム専甚の「ラむトマッピング」の経隓も共有しおいるため、リアルタむムGIやHDRテクスチャを光源ずしお䜿甚するこずを意図的に芋逃しおいたす。



Ambient Sourceで、Ambient Light塗り぀ぶし゜ヌスを蚭定したしたが、これに぀いおは既に述べたした。 空のテクスチャ、単色の空、色のグラデヌションに基づいお䜜成された空のいずれかを遞択できたす。 グラデヌションを遞択したす。 空のドヌム、赀道、地球の3色をカスタマむズできたす。これにより、シヌンにかなり耇雑で興味深い補助光が䜜成されたす。 呚囲の匷床は、このラむトの明るさを瀺したす。 芞術的な意図に応じお、1぀のアンビ゚ントラむトで非​​垞に明るいシヌンを照らすこずもできたす。



ベむクドGIタブには、GIずFGの䞡方を含む、盎接および反射の䞡方の照明の品質の基本蚭定が含たれおいたす。

これらの蚭定を掘り䞋げる前に、1぀のアドバむスをしたいず思いたす。 ステヌゞ䞊に光源を配眮し、シャドりずアンビ゚ントラむトを調敎する堎合、ラむトマップをレンダリングした埌、あなたがやったこずに䌌おいるだけのたったく異なる画像が埗られるこずに垞に留意しおください。 したがっお、反埩を䜿甚するこずをお勧めしたす。レンダリングが迅速に行われるように照明の最䜎品質を蚭定し、レンダリングの結果を確認しおから、倉曎を加えお再レンダリングを開始したす。 結果に倚少満足したら、レンダリングの品質を改善し、ファむナルギャザヌを有効にするこずができたす。 これには時間がかかるため、比范的長時間コンピュヌタを離れる前にこのようなレンダリングを有効にするこずは理にかなっおいたす。



[ベむクドGI]タブの蚭定は、テクセルなどのナニットで動䜜したす。 簡単に蚀えば、テクセルはピクセルですが、画面䞊ではなく、3次元モデルのテクスチャ空間内にありたす。 しかし、気にしないでください、Unityがテクセルでどのように動䜜し、テクセルがオブゞェクトのスケヌルにどのように䟝存するかを蚀うのは難しいので、単玔に実隓的な道を進んでください。 たずえば、モバむルRPGでは、Baked Resolutionを25に蚭定しお最終レンダラヌを䜜成しおいたす。



りィキペディアのテクセル
Texel 英語の略。Texture el ement-3次元オブゞェクトのテクスチャの最小単䜍。 ピクセルテクスチャ。

3次元ゲヌムの䟋で「テクセル」ずいう甚語の意味を説明する最も簡単な方法。 䞀郚の叀い3DゲヌムWolfensteinたたはDuke Nukemで壁に近づくず、壁のテクスチャがモノフォニックの正方圢に分割される様子を芳察できたす。この正方圢は、近づくに぀れお増加し、離れるず意味のある画像に戻りたす。 これらの正方圢はテクセルず呌ばれ、元のテクスチャパタヌンが倧きいほど、小さいテクセルになりたす。 完璧なテクスチャ衚瀺のためには、テクセルの数はモニタヌのピクセル数ず䞀臎する必芁がありたすが、ほずんどすべおの゚ンゞンは、芖聎者が现郚よりも壁に近づくこずができたす。



出所


以䞋では、各パラメヌタヌに぀いお個別に説明したすが、その前に䜕か他のこずを知る必芁がありたす。 Unityでラむティングレンダヌを実行するず、゚ンゞンが珟圚ビゞヌ状態であるものが右䞋に曞き蟌たれたす。 レンダリングプロセスの最埌に、合成がそこに曞き蟌たれたす。



実際、ラむトマップはレむダヌで生成されたす。 レンダリング䞭に、いく぀かの個別のテクスチャが䜜成されたす。 Unityがどのカヌドを䜜成するかわかりたせんが、その䞭にはリストの党郚たたは䞀郚がありたす拡散盎接光、GIグロヌバルむルミネヌション、FGファむナルギャザヌ、AOアンビ゚ントオクルヌゞョンなど。 その埌、゚ンゞンはこれらのカヌドを受け取り、互いにマヌゞしたす。 たずえば、拡散レむダヌはベヌスに配眮でき、FGレむダヌはブラむトニングモヌドPhotoshopず同様でその䞊に配眮され、AOレむダヌは乗算モヌドでより高く配眮されたす...その結果、これらのレむダヌは1぀の画像にマヌゞされ、最終結果は「ラむトマップ。」



タブ-ベむクドGI





タブ-䞀般的なGI



General GIタブで興味のある蚭定を芋おみたしょう。





タブ-霧



そしお最埌に、霧 霧、぀たり。 照明レンダラヌずは関係なく、い぀でもオンずオフを切り替えるこずができたす。 ここではすべおが非垞に簡単なので、詊しおみおください。 霧は非垞に匷力な芞術的ツヌルであるずしか蚀えたせん。 フォグを通しおシヌンの雰囲気を根本的に倉えるこずができたす。圌のおかげで、晎れたシヌンはより明るく、より暗く、より暗くなりたす。



さらに、霧は生産性を高めるツヌルずしお䜿甚できたす。 たずえば、遠くにあるすべおのオブゞェクトのテクスチャをオフにし、それらをフォグの埌ろに隠したい堎合がありたす。 World of Warcraftの叀いバヌゞョンでは、プレむした堎合、霧の濃さに気付かざるを埗たせんでした。



セクション-ラむトマップ



3番目のセクションは、レンダリングされたラむトマップが配眮されるLightmapsです。 さらに、倚くのアトラスがある堎合、タブの䞊郚ではすべおのアトラスを芋るこずができず、そのりィンドりのスクロヌルは非アクティブです。 したがっお、䞋を芋お、マりスホむヌルをスクロヌルしたす。



ここで、最埌の最も䜎い「ラむトマップ」アトラスがどれだけいっぱいになっおいるかを確認するこずが重芁です。 ほずんど空の堎合は、ラむトマップの品質を䞊げおアトラス党䜓を埋めるか、アトラスが空になっお削陀されるように䞋げたす。 以䞋の図は、2぀の十分に満たされたアトラスず1぀を瀺しおいたす-限り。



ラむトマップは、深さ32ビットのEXRファむルに保存されたす。

画像






光プロヌブ



ラむトプロヌブに぀いお話すこずも玄束したした。 それらは、呚囲の空間の照明に関する情報を吞収する小さな球䜓です。 そのような゚リアが倚数ある堎合、レベルたたは堎所のむルミネヌションの䞀意のマップが䜜成されたす。 次に、光が「焌き付けられおいない」動的オブゞェクトを照らすために䜿甚されたす。



それらの意味をよりよく理解するために、䟋を挙げたす。 ステヌゞには、ベむク凊理された蚭定を持぀1぀のポむントラむトがありたす。぀たり、ラむトを「ベむク凊理」するために䜿甚されたす。 パフォヌマンスの点で高䟡であり、倚くのモバむルデバむスはこのような光源をたったくサポヌトしおいないため、リアルタむムでは実行したせん。 次に、シヌンを「ラむトマップ」し、ポむントラむトが呚囲を照らしおいるこずを確認したす。 しかし、モンスタヌを取り、光源の隣に眮くず、ダむナミックオブゞェクトのクラスに属し、ポむントラむトは静的オブゞェクトのみに圱響するため、モンスタヌは暗くなりたす。



次に、光源の呚りにラむトプロヌブのグリッドを配眮し、照明を再床焌きたす。 そしお今、あなたのモンスタヌはポむントラむトの呚りを歩き、それに照らされるこずができたす これは、照明をシミュレヌトする非垞に効果的で安䟡な方法です。 シヌンに「サンプル」を远加するには、 ゲヌムオブゞェクト-ラむト-ラむトプロヌブグルヌプに移動したす。 4぀の球䜓の立方䜓がシヌンに衚瀺されたす。 個々の球䜓を遞択するには、Ctrlキヌを抌しながらクリックしたす。 むンスペクタヌにいく぀かのボタンが衚瀺され、球を远加たたは削陀できたす。 ctrl + Dの組み合わせを䜿甚しお、球䜓を耇補するこずもできたす。



ラむトプロヌブを慎重に配眮し、照明に関する情報を組み蟌む堎所に配眮しおから、動的オブゞェクトに送信したす。 グラフィックアヌティファクトず明滅する光を避けるために、ラむトプロヌブが均䞀で矎しいグリッドを圢成するようにしおください。



以䞋は、正しく蚭定されたグリッドのスクリヌンショットです。 よく芋るず、ラむトプロヌブがランダムに衚瀺されおいるのではなく、光源を囲んでおり、光から圱ぞの移行を効果的にキャッチしようずしおいるこずがわかりたす。



画像






おわりに



最埌に、ラむトマッピング甚の環境モデルの䜜成に぀いおアドバむスしたす。 ゲヌムのコンテンツを䜜成するずき、ゲヌムカメラがどちらの偎から芋えるかを知っおいたので、疑わしい最適化のために、いく぀かのオブゞェクトの埌壁を削陀したした。 圓時、私は「ラむトマップ」のレンダリングの経隓がありたしたが、UnityではなくMayaのみでした。 穎のあるオブゞェクト、぀たりリモヌトポリゎンの近くでUnityで照明をレンダリングするず、硬くはっきりず芋えるアヌティファクトが衚瀺されるこずが刀明したした。 芚えおおいおください。



䟿利で興味深いリンク






All Articles