11.1K Views
May 11, 21
スライド概要
2021/05/13に開催された Unity道場Houdini編 の講演スライドです。
講師:佐々木 洋太(KLab株式会社)
Unityのイベント資料はこちらから
https://www.slideshare.net/UnityTechnologiesJapan/clipboards
リアルタイム3Dコンテンツを制作・運用するための世界的にリードするプラットフォームである「Unity」の日本国内における販売、サポート、コミュニティ活動、研究開発、教育支援を行っています。ゲーム開発者からアーティスト、建築家、自動車デザイナー、映画製作者など、さまざまなクリエイターがUnityを使い想像力を発揮しています。
ⒸKLab inc. 1
introduction ⒸKLab inc. 2
自己紹介 ⒸKLab inc. 3
自己紹介 ● 佐々木洋太 ● KLab株式会社技術統括部RRRグループ所属 ○ ※RRR = RealTime Rendering Researchの略 ● VFXシニアアーティスト ⒸKLab inc. 4
自己紹介 ● 来歴 ○ アニメ制作会社、3DCG制作会社で主に2D・3Dのエフェクト・コンポジット・映像制作に多 数携わった後KLabに入社。 ⒸKLab inc. 5
自己紹介 ● 入社後 ○ 入社後は先端VFXの技術検証やテックデモ制作に携わりつつ、オリジナルRPGタイトルのカ ットシーン制作に参加。 ■ テックデモのLink ■ UnityKorea様で行ったテックデモのウェビナーLink ● 現在 ○ ○ 現在は主に映像・エフェクトの技術・アート両分野での「新規プロジェクトへの協力・高度 なVFXの技術検証及び社内導入・制作力向上への貢献・コンセプトやスタイルガイドの構 築」といった業務を行っています。 技術検証・実践内容の一部は2020年のCEDECで登壇して紹介しています。 ■ CEDEC2020の資料Link ■ SideFX社様のCEDEC紹介ページLink ⒸKLab inc. 6
自己紹介 ● リアルタイム・レンダリング・リサーチグループ(RRR) ○ ○ ○ ○ KLabの3Dビジュアル研究開発グループ 横断活動グループとしてプロジェクトサポート及び新規開発に関与 2018年に結成 現在は7人 ■ 全員がそれぞれ違う得意分野を持っている人 ■ 全員が「楽するための苦労をしたい」人 ● <今の仕事を仕組化・効率化し、未来を楽にする。>という、KLabの大事にしている価値観の 一つでもあります。 ⒸKLab inc. 7
自己紹介 ● 自主制作 ○ 仕事だけではなく趣味でもプリレンダーやリアルタイムの映像・エフェクト・モーショング ラフィックス制作をしています。 ■ 先日ボーンデジタル様主催の『Houdiniで作るNPRエフェクト&After Effectsでのコンポ ジット実践解説オンラインセミナー』という題で、趣味のNPRエフェクトの解説セミナ ーを行いました。 ○ 今回のUnity道場では、仕事及びこうした自主制作で培われたHoudiniとUnity連携のノウハウ をご紹介致します。 ⒸKLab inc. 8
Personal Work Demo Reel ⒸKLab inc. 9
Personal Work Demo Reel ● Houdini&Unity:Real-timeリール紹介 ○ 動画リンク ⒸKLab inc. 10
Houdini and Unity integration ⒸKLab inc. 11
Houdini and Unity integration ● introduction ○ ○ ○ デモリールで紹介したようにHoudiniとUnityを使用した作例が色々とございます。 今回はその中から「FlowMap」及び「Rigid Body Dynamics(RBD)」関係のノウハウの紹介 を主に行いたいと存じます。 基本的には作業シーンを紹介しながらの説明になりますが、後で資料として読み返しやすい ように要点はスライドの方にも記載させていただきます。 ⒸKLab inc. 12
Houdini and Unity integration ● 香盤表 ○ ○ 前編 ■ introduction ● 自己紹介 ■ Houdini and Unity integration ● Various uses for flowmap 後編 ■ Houdini and Unity integration ● Baking Rigid Body Dynamics ● その他Tips ⒸKLab inc. 13
Houdini and Unity integration ● 使用しているツールのバージョン ○ ○ Houdini ■ Houdini18.5.462 ■ SideFXLabs18.5.462 Unity ■ Unity2019.3LTS:HDRP ■ Unity2019.4LTS:URP ■ Unity2020.2LTS:HDRP ■ Unity2020.3LTS:HDRP ⒸKLab inc. 14
Various uses for Flowmap ⒸKLab inc. 15
序文 ⒸKLab inc. 16
序文 ● Flowmap とは ○ ○ Flowmap は、端的に言うと水など流体の流れを2次元で表現するための手法です。 Y-up で X方向への動きを赤(R)チャネルに、Z 方向のチャネルを緑 (G) チャネルに渡し、 0 < x,z < 128 で-方向に、128< x,z < 255 で+ 方向に動きます。X=128, Z=128 で静止状態です。 ⒸKLab inc. 17
序文 ● Flowmap とは ○ 一般的なエフェクトで煙やショックウェーブのような要素に使用したり、環境エフェクトで 川や滝・溶岩のようなものに使用したり、サイネージのようなイメージ流体的な表現に使用 したりと色々と使い所の多い手法です。 ⒸKLab inc. 18
序文 ● Flowmap とは ○ 一般的なエフェクトで煙やショックウェーブのような要素に使用したり、環境エフェクトで 川や滝・溶岩のようなものに使用したり、サイネージのようなイメージ流体的な表現に使用 したりと色々と使い所の多い手法です。 ⒸKLab inc. 19
序文 ● Flowmap とは ○ 一般的なエフェクトで煙やショックウェーブのような要素に使用したり、環境エフェクトで 川や滝・溶岩のようなものに使用したり、サイネージのようなイメージ流体的な表現に使用 したりと色々と使い所の多い手法です。 ⒸKLab inc. 20
序文 ● infomation ○ 今回はUnity道場Houdini編ということで、画像のシーンをベースに、Houdiniで川のような流 れのFlowmapを生成し、それをUnityに持ち込んで利用する環境エフェクト作成手法を主にご 紹介したいと思います。 ⒸKLab inc. 21
序文 ● infomation ○ 今回はUnity道場Houdini編ということで、画像のシーンをベースに、Houdiniで川のような流 れのFlowmapを生成し、それをUnityに持ち込んで利用する環境エフェクト作成手法を主にご 紹介したいと思います。 ⒸKLab inc. 22
Flowmap of Environments ⒸKLab inc. 23
Flowmap of Environments ● infomation ○ Unityに持ち込む素材は基本的にHoudiniで作成しています。 ⒸKLab inc. 24
Flowmap of Environments ● 背景素材:infomation ○ 背景素材はHeightFieldで作成しています。 ⒸKLab inc. 25
Flowmap of Environments ● 背景素材:初期設定 ○ ○ ジオメトリの凹凸のクオリティが頂点カラーやNormalにベイクする際に直に影響するので、 「GridSpacing」を「1」にしてメッシュの解像度を高めています(初期設定は「2」)。 「GridSpacing」が「2」だと寄りの絵で見た時にメッシュやテクスチャが甘めに見えやすい ので、高解像度でベースの素材を作成して後々必要に応じてリダクションすることをお奨め します。 ⒸKLab inc. 26
Flowmap of Environments ● 背景素材:マスク ○ 実際に川にする部分をジオメトリでマスキングして指定することができます。 ■ こうすることで極めてプロシージャルなシーン・アセットを構築することができますが、 後々細かく個別に調整したいときに逆に不便な事もあるので適宜使い分けます。 ⒸKLab inc. 27
Flowmap of Environments ● 背景素材:マスク ○ 今回はHeightField上でアナログで川にする部分をペイントしてマスキングしています。 ⒸKLab inc. 28
Flowmap of Environments ● 背景素材:ディテール ○ 主に「Noise」「Distort」「Erode」を用いてディテールを作成します。 ⒸKLab inc. 29
Flowmap of Environments ● 背景素材:ディテール ○ 主に「Noise」「Distort」「Erode」を用いてディテールを作成します。 ⒸKLab inc. 30
Flowmap of Environments ● 背景素材:ディテール ○ 主に「Noise」「Distort」「Erode」を用いてディテールを作成します。 ⒸKLab inc. 31
Flowmap of Environments ● 背景素材:ディテール ○ 主に「Noise」「Distort」「Erode」を用いてディテールを作成します。 ⒸKLab inc. 32
Flowmap of Environments ● 背景素材:リサイズ ○ 初期設定だと1000m×1000mのような長大なサイズなので、ディテールを作り終えたらポリゴ ンに変換する前に扱いやすいサイズにリサイズしています。 ⒸKLab inc. 33
Flowmap of Environments ● 背景素材:コンバート ○ ○ 「Convert HeightField」SOPでポリゴンに変換します。 この作例のような小規模なスケールの場合、HeightFieldを普通のポリゴンとして扱うことで 作業の取り回しが良くなります。 ⒸKLab inc. 34
Flowmap of Environments ● 背景素材:ポストプロセス ○ HeightField素材は様々なアトリビュートを内包しているので、それを用いることで地形に沿 った色調整を行う事ができます。 ⒸKLab inc. 35
Flowmap of Environments ● 背景素材:ポストプロセス ○ HeightField素材は様々なアトリビュートを内包しているので、それを用いることで地形に沿 った色調整を行う事ができます。 ⒸKLab inc. 36
Flowmap of Environments ● 背景素材:Export ○ 色調整等のポストプロセスが済んだら、SideFXLabsの「MapsBaker」SOPで必要なテクスチ ャを書き出します。メッシュも必要に応じてリダクションしてFBXで書き出します。 ⒸKLab inc. 37
Flowmap of Environments ● 背景素材:Export ○ 色調整等のポストプロセスが済んだら、SideFXLabsの「MapsBaker」SOPで必要なテクスチ ャを書き出します。メッシュも必要に応じてリダクションしてFBXで書き出します。 ⒸKLab inc. 38
Flowmap of Environments ● Flowmap:infomation ○ 背景素材の調整が済んだら、それに沿ってFlowmapのテクスチャとメッシュ作成を行います。 ⒸKLab inc. 39
Flowmap of Environments ● Flowmap:ベース素材 ○ ○ 背景素材に沿って、任意の形状のカーブを作成して使用します。 地形に沿わせる事を考慮して、ベース形状作成後に「ResampleSOP」等でPoint数を増やし ておくとベターです。 ⒸKLab inc. 40
Flowmap of Environments ● Flowmap:ベース素材 ○ 「add」SOPでPointを作って繋げてベースのカーブを作成しています。 ■ こうすることで後々カーブを編集したい時に調整がしやすくておススメです。 ⒸKLab inc. 41
Flowmap of Environments ● Flowmap:ベース素材 ○ 「raySOP」でカーブを任意の背景素材に沿わせます。 ⒸKLab inc. 42
Flowmap of Environments ● Flowmap:ベース素材 ○ 「Sweep」SOPでメッシュを生成します。 ⒸKLab inc. 43
Flowmap of Environments ● Flowmap:ベース素材:注意事項 ○ ○ 「Sweep」SOPの「PrimitiveType」を「Polygons」に設定します。 初期設定の「Automatic」だと「PolygonSoup」扱いになる場合が多く、「PolygonSoup」だ とPointやPrimitiveのアトリビュートを参照・調整したい時に不都合があるので、Flowmap作 成時は「Polygons」に設定する必要があります。 ⒸKLab inc. 44
Flowmap of Environments ● Flowmap:UV ○ 川のように縦に長いメッシュや中規模以上のメッシュを生成した場合、画像の様にUVが複 数のUV空間に渡って生成されることがよくあります。 ■ プリレンダーならともかく、ゲームエンジンに持ち込む上でこの状態は望ましくあり ません。そのため一つのUV空間にUVを納める必要があります。 ⒸKLab inc. 45
Flowmap of Environments ● Flowmap:UV ○ ○ pointnunber等の任意のアトリビュートを参照したアトリビュートを作成し、それを0-1にfit させます。 生成するアトリビュートは元のカーブのpoint数と同じにしておくのがベターです。 ⒸKLab inc. 46
Flowmap of Environments ● Flowmap:UV ○ 0-1にfitさせたアトリビュートの情報を基にUV情報をリマップします。0-1にfitさせているの でUVが一つのUV空間に納まります。 ⒸKLab inc. 47
Flowmap of Environments ● Flowmap:Flowmap生成 ○ ベースのDirectionは元のメッシュのNormal情報を使うか、画像の様に均一なDirectionでベー スを作成しておくと後の調整がし易くておススメです。 ⒸKLab inc. 48
Flowmap of Environments ● Flowmap:Flowmap生成 ○ 元のカーブを「FlowmapGuide」ノードに接続することで、プロシージャルにカーブの流れ に沿ったFlowmapを作成することができます。 ⒸKLab inc. 49
Flowmap of Environments ● Flowmap:Flowmap生成 ○ 元のカーブを「FlowmapGuide」ノードに接続することで、プロシージャルにカーブの流れ に沿ったFlowmapを作成することができます。 ⒸKLab inc. 50
Flowmap of Environments ● Flowmap:カラー設定 ○ ○ 「Flowmap to Color」ノードでFlowmapとしての色を付けます。 如何にもUnityで使う場合はチェックを入れなければならないと思われるようなチェックボ ックスがあるのですが、プレビューで意図した通りにFlowmapが流れていればチェックを入 れなくて問題ありません。 ⒸKLab inc. 51
Flowmap of Environments ● Flowmap:障害物の設定 ○ 「FlowmapObstacle」ノードを使用し、障害物周辺の流れの歪みを生成することができます。 障害物がない場合は「FlowmapObstacle」ノードは使用しなくて大丈夫です。 ⒸKLab inc. 52
Flowmap of Environments ● Flowmap:プレビュー ○ Flowmapの見た目や動きの確認は「FlowmapVisualize」ノードで行います。実際にアニメー ションを再生しながらFlowmapのクオリティを詰めていきます。 ⒸKLab inc. 53
Flowmap of Environments ● Export:事前確認 ○ ○ Exportの前にUV情報が一つのUV空間に納まっているかを確認します。 本来一つのUV空間に納まらないUVをfitさせているので、画像の様に圧縮されたような見た 目になっていても問題ありません。 ⒸKLab inc. 54
Flowmap of Environments ● Export:Texture ○ ○ FlowmapTextureのExportにはSideFXLabsの「SimpleBaker」「MapsBaker」が手軽でおス スメです。 基本的に地形のFlowmapは縦横に伸縮された状態で書き出すので、実際にColorやNormalで 使うテクスチャはタイリングされたものを推奨します。 ⒸKLab inc. 55
Flowmap of Environments ● Export:メッシュ ○ ○ 静的なメッシュとしてFBX等でExportします。 この際、場合によっては適宜リダクションしてポリゴン数を減らします。 ■ 四角ポリゴンのままリダクションしたい場合は「PolyReduce」SOPの 「PreserveQuads」のチェックをオンにしておくと、比較的四角ポリゴンを維持してリダ クションできます。 ■ UVはHoudiniの殆どのリダクション手法で維持されます。 ⒸKLab inc. 56
Flowmap of Environments ● Unity:import設定 ○ Flowmapの素材はsRGBのチェックを外さないと上手く使えない場合もあるのですが、 sRGBの状態できちんとFlowmapテクスチャが描画されていればチェックが付いたままで 大丈夫です。 ⒸKLab inc. 57
Flowmap of Environments ● Unity:Shader設定 ○ 川や溶岩のようなPBR要素を活かしてクオリティを調整するようなものは、Normalmap もFlowmapの影響を受けるように構築すると品質向上に繋がります。 ⒸKLab inc. 58
Flowmap of Environments ● Unity:Shader設定 ○ 逆にバトルエフェクトの煙やショックウェーブのようなUnlitで良いものは、Normalmap 等の必要ない要素をオミットすることでShaderを簡略化・軽量化できます。 ⒸKLab inc. 59
Flowmap of Environments ● Unity:Appendix:背景パーティクル ○ 背景の賑やかしで挿入しているパーティクルはVisualEffectGraphで作成しています。 ⒸKLab inc. 60
Flowmap of Environments ● Unity:Appendix:背景パーティクル ○ ベースとなる発生源の素材はHoudiniで作成しています。 ■ 最低限の指向性を持ったNormalやVelocityがあれば大丈夫なので、シンプルなチュ ーブを作成しアトリビュートを調整してPointCacheで書き出しています。 ⒸKLab inc. 61
Flowmap of Environments ● Unity:Appendix:背景パーティクル ○ VectorFieldのデータも同じチューブから生成しています。 ■ こちらもSDFの起点として最低限の要素が備わっていれば今回のような用途では問 題ないので、軽量のボリュームに変換して3KBのVectorFieldデータとして書き出し ています。 ⒸKLab inc. 62
Flowmap of Environments ● Unity:Appendix:背景パーティクル ○ PointCacheとVectorFieldの書き出しに使用しているノードは、Unity-Technologiesの Github上で公開されているVFXtoolboxのものを使用しています。 ⒸKLab inc. 63
Flowmap of Environments ● Unity:Appendix:背景パーティクル ○ 書き出したPointCacheとVectorFieldを使用して添付gifのような汎用パーティクル素材を 作成しています。 ⒸKLab inc. 64
Flowmap of Environments ● Unity:Appendix:背景パーティクル ○ PointCacheとVectorFieldに基本的な情報を格納しているので、VisualEffectGraphの構造 自体はシンプルです。 ⒸKLab inc. 65
Flowmap of Environments ● Unity:Appendix:背景パーティクル ○ PointCacheからベースとなるPositionやVelocityの値を参照させています。こうすること で任意の位置からの発生や指向性を持った初速を簡単にコントロールできます。 ⒸKLab inc. 66
Flowmap of Environments ● Unity:Appendix:背景パーティクル ○ VectorFieldと3DNoiseをかけ合わせています。こうすることでタービュランスを柔軟に調 整できるようにしています。 ⒸKLab inc. 67
Other Flowmap tips ⒸKLab inc. 68
Other Flowmap tips ● infomation ○ ポピュラーなFlowmapの利用法として、煙やショックウェーブのようなエネルギー物に使う 放射型のFlowmapのHoudiniでの作り方を紹介いたします。 ⒸKLab inc. 69
Other Flowmap tips ● ベース素材作成 ○ Flowmap作成に使う正方形のグリッドを用意します。このグリッドの頂点カラーに焼き付い たFlowmapの情報をテクスチャにベイクするので、分割数はそこそこ増やしておきます。 ⒸKLab inc. 70
Other Flowmap tips ● 指向性のある法線素材作成 ○ 放射型のNormalを持ったサークルを作成します。このNormalが放射型の動きのベースになり ます。 ⒸKLab inc. 71
Other Flowmap tips ● 指向性のある法線素材作成 ○ 放射型のNormalを持ったサークルを作成します。このNormalが放射型の動きのベースになり ます。 ⒸKLab inc. 72
Other Flowmap tips ● 指向性のある法線適応・調整 ○ 作成した放射型Normalの素材を「FlowmapObstacle」ノードに接続し、パラメータを調整し て放射具合を整えます。 ⒸKLab inc. 73
Other Flowmap tips ● ディテールアップ ○ 均一な放射になりすぎるのが嫌な場合は、別の素材を追加で「FlowmapObstacle」ノードに 接続したり、元々の放射型Normalに少しランダム性を持たせたりして不均一さを作ります。 ⒸKLab inc. 74
Other Flowmap tips ● ディテールアップ ○ 均一な放射になりすぎるのが嫌な場合は、別の素材を追加で「FlowmapObstacle」ノードに 接続したり、元々の放射型Normalに少しランダム性を持たせたりして不均一さを作ります。 ⒸKLab inc. 75
Other Flowmap tips ● プレビュー・最終調整 ○ 基本的なNormalの設定が終わったら「FlowmapVisualize」ノードで視覚化しながら最終的な ディテールを詰めていきます。 ⒸKLab inc. 76
Other Flowmap tips ● Export ○ 「FlowmapVisualize」ノードでの調整が終わったら「SimpleBaker」や「MapsBaker」ノード で頂点カラーをテクスチャにベイクして作業完了です。 ⒸKLab inc. 77
Other Flowmap tips ● Extra ○ 余談ですが、プレビューに用いているショックウェーブ素材もHoudiniで作成しています。 ⒸKLab inc. 78
Other Flowmap tips ● Extra ○ Flowmap作成時に特によく調整する要素はそこまで多くないので、よく調整する要素を纏め てHDAやサブネットでアセット化しておくと作業効率・品質の向上に役立ちます。 ⒸKLab inc. 79
Flowmap:END ⒸKLab inc. 80
Flowmap:END ● Flowmap関係の説明・解説は以上となります。 ⒸKLab inc. 81
ご清覧ありがとうございました ⒸKLab inc. 82
end ⒸKLab inc. 83