HoudiniずUnreal Engine 4でリアルな川をシミュレヌトしたす





DX9からDX10ぞの移行が始たったばかりのずき、適切な効果を持぀クヌルにモデル化された氎を䜿甚した倚くのゲヌムが登堎し始めたした。 特に、過去の䞖代のゲヌムず同じCrysisを比范する堎合、違いは非垞に顕著でした。 そのため、UE4のHoudiniプラグむンを䜿甚しお、シンプルでありながら珟実的な川のシミュレヌションを䜜成する方法に関するガむドに出䌚ったずき、それに぀いおも考えず、すぐに翻蚳したした。



プロロヌグ





はじめに



私の名前はサむモンです。 QBasicずPascalでプログラミングを始めたのは幌い頃ここに䟋がありたす 、コヌディングが難しいこずにすぐに気付き、3Dアヌトに切り替えたした。 同時に、私は垞にゲヌムを䜜成する技術的な偎面に興味を持ち続けたした。その結果、私はVFXアヌティストになりたした。 この職業は芞術ず技術をうたく組み合わせおいたす。



Sacred 2 and XRebirthでは3Dアヌティストずしお、 RiMEではThe Invisible Hoursで VFXアヌティストずしお働いおいたした。 珟圚、 WiLDに取り組んでいたす。







ゲヌム開発に関連する個人プロゞェクトもいく぀かありたす。GameArt Trickブログ、ドむツのGame Dev Podcast 、およびUnrealチュヌトリアルずHoudiniチュヌトリアルを含むYouTubeチャンネルです。



Houdiniの玹介



The Invisible Hoursの制䜜䞭にHoudiniず友達になりたした。 その埌、䞀時停止、展開、リアルタむムで逆再生できる小さな流䜓シミュレヌタを䜜成したした。 結果は次のずおりです。





出兞 Invisible Hours Fluid Simulation



Unrealに流䜓モデリングを远加する方法がわかりたせんでした。 幞いなこずに、 Vertex-Count-Agnostic Morph Target-Based Fluid Animationずいう驚くべき技術がHoudiniに実装されたため、ゲヌムに流䜓シミュレヌションを远加するこずができたした。 この技術はもずもずノヌマン・シャヌルによっお開発されたした。





出兞 Norman ShaarのUE4のVertex-Count-Agnostic Morphタヌゲット



実装に぀いお詳しく知りたい堎合は、テクスチャヌトヌクのクヌルスタッフのこのセクションをご芧ください。





川の圱響プロゞェクトの始たり



Realtime VFX River Challengeでプロシヌゞャルに生成された川の䜜り方を孊びたかったのですが、どこから始めたらいいのかわかりたせんでした。 偶然、 Ben Shriverから玠晎らしいチュヌトリアルに出䌚いたした。圌はHorizo​​n Zero Dawnの川に぀いお話しおいたす。 私は倢䞭になり、詊しおみるこずにしたした





ずころで、 Andreas Gladの Houdini川に関する別の非垞にクヌルなチュヌトリアルがありたす。





これらのビデオは、最初は本圓に助けになり、基瀎になりたした。



ランドスケヌプを構築する非垞に難しい方法



救枈は非垞に耇雑でした。 䜜成プロセスを説明しお、誰もが理解できるようにしたす。





゜ヌス Houdiniで地圢を䜜成する



冗談です。 簡単すぎる。



川の効果



最初の手順は、Benのチュヌトリアルから100コピヌされおおり、クヌルです。 最初にスプラむンを䜜成し、地面に「萜䞋」させたす。 これは、スプラむンのポむントでレリヌフの高さを読み取り、ポむントをこの高さに移動するこずにより行われたす。







次に、スプ​​ラむンポむントを斜面に「スラむド」させお、川を地圢により良く統合したす。







実際、それらは物理的な方法でロヌルダりンしたせん。 代わりに、サヌフェスのベヌス法線ずポむントの法線を䜿甚しお、各ポむントのロヌカル軞を蚈算したすスプラむンからスロヌプに沿っお移動したす。 次に、蚈算された軞に沿っおポむントを少し移動したすこのプロセスはBenのビデオで非垞によく瀺されおいたす。



次のステップは、川が川に沿っお流れる小さな䞘があるため、川が景芳のために䞊流に流れないようにするこずです。







小さなPythonスクリプトにより、3D空間のスプラむンポむントが前のものより高くなるこずはありたせん。







自然さを远加するもう1぀の方法は、連続した傟斜を避けるこずです。 代わりに、川が段階的に流れるようにしたす芖芚化のため、ここで川のゞオメトリを瀺したすが、実際には1぀のスプラむンのみを䜿甚しおいたす。







最埌に、独自のアむデアをもたらすステップに進みたす。スプラむンに色を远加しお、スロヌプの堎所緑、開始点青緑色、終了点赀をマヌクしたす。 これは、埌でさたざたな氎のテクスチャを混合し、パヌティクルシステムを配眮するのに圹立ちたす。







これに぀いおは、Benのビデオで完党に説明されおいるため、川のゞオメトリの䜜成を高速化したしょう。 最も重芁な点は、川の倖瞁だけがレリヌフず再び䜍眮合わせされるこずです最初にスプラむンで行ったように。







流れに応じた地圢の倉圢



繰り返しになりたすが、これはベンの100のワヌクフロヌです。リリヌフを川のゞオメトリの䞋に移動しお、亀差しないようにしたす。







次に、地圢の各ポむントに察しお、光線を描きたす。 それらが川の圢状に該圓する堎合、これらのポむントは衝撃の堎所たで移動したす。







どこにもヒットしなかった各ポむントは、元の高さを受け取りたす。







このgifは、スプラむンが倉曎されたずきに䜕が起こるかを瀺しおいたす。







次に、颚景の高さの領域がポリゎンに倉換され、再混合されたす。 これで、Unrealで䜿甚する準備ができたした。







次に、UV倉換、マテリアル、フロヌマップなどに぀いお説明したす。



川の圢状



先ほど芋た川の圢状は、その領域を切り取るためだけに䜿甚されたした。 実際の川は少し薄く、UVがあり、分割されたした私のスロヌプの色はただ残っおいるこずに泚意しおください。







UV生成



スプラむンの長さは垞に倉化するため、UVはこれに適応する必芁がありたす。 幞いなこずに、これはHoudiniでは非垞に簡単です。 最初に0-1-UV-SpaceでUVを䜜成し、スプラむンの長さを枬定したす。 この倀は、UVのスケヌリングに䜿甚できたす。 ここで、スプラむンを倉曎する方法ず、䞀番䞋のUVが自動的に適応する方法を確認できたす。 私を信じお、䞀床これを詊しおみたら、再び手動でUVを䜜成するこずは決しおないでしょう。







チャンネル



別の詳现チャンネルをより暗く湿らせたいず思いたした。 これを行うには、颚景の各ポリゎンからいく぀かの光線を䜜成し、川に入るず、このポリゎンのすべおのポむントに色を割り圓おたす。 䜜成されるマスクは次のずおりです。







そしお、ここでマテリアルにマスクを䜿甚しお、あいたいさず粗さの異なる倀を割り圓おる䟋を瀺したす。







フロヌチャヌト



Houdiniを䜿甚した河川流量マップの䜜成は非垞に簡単です。 「これは私の川のゞオメトリです。これは川の方向を瀺すスプラむンです」ずブヌムず蚀うだけで、ゞオメトリは突然川の流れを衚すピヌクの色を取埗したす。







フロヌマップを障害物に応答させる別のノヌドを远加できたす。 今、それらの呚りに氎が流れたす







そしお最もクヌルなこずUnrealでフロヌマップをベむクするこずができたす UnrealずHoudiniを切り替える必芁はありたせん。 HoudiniのRenderボタンをパラメヌタヌずしお蚭定するだけです。 ここで、障害をどのように倉曎するかを確認し、新しいフロヌマップを芖芚化したすベヌキングにはGIFよりも時間がかかるこずに泚意しおください。







フォヌムマスク



障害物の呚りの氎に泡を䜜るには、いわゆるisoOffsetノヌドを䜿甚したす。 基本的に、オブゞェクトたでの距離を川の䞊の色で保存したす。 その埌、ノむズを远加し、マスクの準備ができたした。







フォヌムマスクの静的性を䜎くするために、川に沿っお移動し、元のマスクから差し匕く単玔なPhotoshopクラりドテンプレヌトを䜿甚したす。







たた、泡に぀いお話しおいるので、カスケヌドには単玔な泡のテクスチャもあり、これは川の偎でのみ衚瀺されたす。 フォヌム構造は川の氎よりも速くスクロヌルしたす。







パヌティクルシステム



カスケヌドの䞊郚ず䞋郚がどこにあるかを曞き留めたので、これらの芁玠をフィルタリングしラむンを䜿甚しお川のゞオメトリを䜜成、䞭心にポむントを䜜成し、ダミヌボックスをその䞭にコピヌしたす。 埌で、Unrealのパヌティクルシステムに眮き換えたす。







障害物の呚りのパヌティクルに぀いおは、Intersection Analysisずいうノヌドを䜿甚しお、障害物ず川の亀差点を取埗したす。 これらの亀差゚ッゞにはポむントがありたす。 それらの乱数に、ダミヌボックス埌でUnrealのパヌティクルシステムず亀換されるを再床コピヌしたす。







Unrealでダミヌボックスを眮き換えるず、次のようになりたす。







Unrealぞのプロゞェクトの゚クスポヌト



いわゆるHoudini゚ンゞンは、Unity、Unreal、3ds Max、Maya、Cinema 4Dのプラグむンであり、これらのプログラムでHoudiniで盎接䜜成したネットワヌクノヌドを実行したす。 Houdiniファむルをデゞタル資産ずしお保存するには、゚リアず川を衚瀺する必芁がありたす。 Unrealの他のリ゜ヌスず同様にむンポヌトしお䜿甚できたす。







これで、Houdiniで蚭定したパラメヌタヌを倉曎したり、スプラむンを倉曎したりしお、川の流れを倉えるこずができたす。







マテリアルは匕き続きUnrealで䜜成および割り圓おられたすが、事前に割り圓おるこずができたすこれに぀いおは、このチュヌトリアルで説明したす。







Houdiniのワヌクフロヌも同様に研究すべきですか



Houdiniには孊ぶべきこずがたくさんありたす。 さらに、これらは新しい開発ツヌルであるため、ドキュメントに䞍正確さが生じたす。



しかし、これはゲヌム開発者にずっお䞀般的な状況です。 私たちは垞に、最初に飌い慣らされる必芁のある高床な技術ず連携しおいたす。 最も重芁なこずあなたは䞀人ではありたせん。 Thinking Procedural Discordは、助けたり教えたりするクヌルな人でいっぱいです。 これらのチャットでは、SideFX開発者を芋぀けるこずもできたす



参照資料






All Articles