ⒸKLab inc. 1
ⒸKLab inc.
introduction
2
ⒸKLab inc.
自己紹介
3
ⒸKLab inc.
● 佐々木洋太
● KLab株式会社技術統括部RRRグループ所属
○ ※RRR = RealTime Rendering Researchの略
● VFXシニアアーティスト
自己紹介
4
ⒸKLab inc.
● 来歴
○ アニメ制作会社、3DCG制作会社で主に2D・3Dのエフェクト・コンポジット・映像制作に多
数携わった後KLabに入社。
自己紹介
5
ⒸKLab inc.
● 入社後
○ 入社後は先端VFXの技術検証やテックデモ制作に携わりつつ、オリジナルRPGタイトルのカ
ットシーン制作に参加。
■ テックデモのLink
■ UnityKorea様で行ったテックデモのウェビナーLink
● 現在
○ 現在は主に映像・エフェクトの技術・アート両分野での「新規プロジェクトへの協力・高度
なVFXの技術検証及び社内導入・制作力向上への貢献・コンセプトやスタイルガイドの構
築」といった業務を行っています。
○ 技術検証・実践内容の一部は2020年のCEDECで登壇して紹介しています。
■ CEDEC2020の資料Link
■ SideFX社様のCEDEC紹介ページLink
自己紹介
6
ⒸKLab inc.
● リアルタイム・レンダリング・リサーチグループ(RRR)
○ KLabの3Dビジュアル研究開発グループ
○ 横断活動グループとしてプロジェクトサポート及び新規開発に関与
○ 2018年に結成
○ 現在は7人
■ 全員がそれぞれ違う得意分野を持っている人
■ 全員が「楽するための苦労をしたい」人
● <今の仕事を仕組化・効率化し、未来を楽にする。>という、KLabの大事にしている価値観の
一つでもあります。
自己紹介
7
ⒸKLab inc.
● 自主制作
○ 仕事だけではなく趣味でもプリレンダーやリアルタイムの映像・エフェクト・モーショング
ラフィックス制作をしています。
■ 先日ボーンデジタル様主催の『Houdiniで作るNPRエフェクト&After Effectsでのコンポ
ジット実践解説オンラインセミナー』という題で、趣味のNPRエフェクトの解説セミナ
ーを行いました。
○ 今回のUnity道場では、仕事及びこうした自主制作で培われたHoudiniとUnity連携のノウハウ
をご紹介致します。
自己紹介
8
ⒸKLab inc.
Personal Work Demo Reel
9
ⒸKLab inc.
Personal Work Demo Reel
● Houdini&Unity:Real-timeリール紹介
○ 動画リンク
10
ⒸKLab inc.
Houdini and Unity integration
11
ⒸKLab inc.
Houdini and Unity integration
● introduction
○ デモリールで紹介したようにHoudiniとUnityを使用した作例が色々とございます。
○ 今回はその中から「FlowMap」及び「Rigid Body Dynamics(RBD)」関係のノウハウの紹介
を主に行いたいと存じます。
○ 基本的には作業シーンを紹介しながらの説明になりますが、後で資料として読み返しやすい
ように要点はスライドの方にも記載させていただきます。
12
ⒸKLab inc.
Houdini and Unity integration
● 香盤表
○ 前編
■ introduction
● 自己紹介
■ Houdini and Unity integration
● Various uses for flowmap
○ 後編
■ Houdini and Unity integration
● Baking Rigid Body Dynamics
● その他Tips
13
ⒸKLab inc.
Houdini and Unity integration
● 使用しているツールのバージョン
○ Houdini
■ Houdini18.5.462
■ SideFXLabs18.5.462
○ Unity
■ Unity2019.3LTS:HDRP
■ Unity2019.4LTS:URP
■ Unity2020.2LTS:HDRP
■ Unity2020.3LTS:HDRP
14
ⒸKLab inc.
Baking Rigid Body Dynamics
15
ⒸKLab inc.
序文
16
ⒸKLab inc.
Baking Rigid Body Dynamics
● Rigid Body Dynamics とは
○ 略称は RBD。
○ 3DCGにおいては一般的には「硬い固体の物理シミュレーション(ビルやドアの破壊・落
石・金属の鎖の揺れ等)」のことを指します。
17
ⒸKLab inc.
Baking Rigid Body Dynamics
● Rigid Body Dynamics とは
○ また、破壊表現だけではなく添付gifのような固体の物理シミュレーションする要素全般の事
をRBDと呼びます。
18
ⒸKLab inc.
Baking Rigid Body Dynamics
● Baking Rigid Body Dynamics とは
○ DCCツール上で作成したRBDをベイクしてコンバートし、ゲームエンジンで使用する手法の
ことを本セッションでは指しています。本セッションでは、主にこの内容について紹介した
いと思います。
■ 本セッションでは使用するDCCツールは「Houdini」、ゲームエンジンは「Unity」にな
ります。
19
ⒸKLab inc.
Baking Rigid Body Dynamics
● Baking Rigid Body Dynamics の必要性
○ モバイルゲーム等ではゲームエンジン上の物理シミュレーションを多用すると処理負荷が高
く問題が生じるため、このような手法が適宜必要になります。
20
ⒸKLab inc.
Baking Rigid Body Dynamics
● Baking Rigid Body Dynamics の作成方法
○ 基本的にはHoudiniの「RBDtoFBX」ROPを使用してアニメーションをベイクしたFBXとして
コンバートします。
○ ボーンを使わずベイクするので、Unity上ではMesh Renderer扱いになります。
○ VATとしても書き出せますが、そもそもモバイルゲームでの負荷対策が主目的なので、FBX
のアニメーションとして書き出せる手法を優先しています。
■ 最終出力の方法をVAT用のギミックにすれば同じアセットからVATを書き出せるので、
VATが必要な場合でも追加コストは殆どかかりません。
21
ⒸKLab inc.
Baking Rigid Body Dynamics
● Baking Rigid Body Dynamics の利点
○ DCCツールで作りこんだRBDのディテールやアニメーションをそのままゲームエンジンに持
ち込めるので、アート性が高かったり、作りこんだ優れたビジュアルの素材を持ち込めます。
22
ⒸKLab inc.
Baking Rigid Body Dynamics
● Baking Rigid Body Dynamics の利点
○ FBXアニメーションとして書き出すとトランスフォームのアニメーションになるので、添付
gifのような「動きの途中からスローモーション」のような表現もゲームエンジン上で簡単に
できます。
23
ⒸKLab inc.
Baking Rigid Body Dynamics
● Baking Rigid Body Dynamics の利点
○ 前述のとおりFBXアニメーションとして書き出すとトランスフォームのアニメーションにな
るので、レイトレーシング化でも安定して動作します。
■ 古典的で堅実な手法ゆえに、レイトレーシングと組み合わせるのが大変な手法で起こる
ような問題を気にしなくて済みます。
24
ⒸKLab inc.
Baking Rigid Body Dynamics:シーン紹介
25
ⒸKLab inc.
汎用素材:破壊プロップ
26
ⒸKLab inc.
汎用素材:破壊プロップ
● 概要
○ こちらの破壊プロップの作成方法に、RBDの基本とUnityへのベイク・コンバートの基本が詰
まっています。そのためまずはこちらを紹介したいと思います。
27
ⒸKLab inc.
汎用素材:破壊プロップ
● 概要
○ こちらの破壊プロップの作成方法に、RBDの基本とUnityへのコンバートの基本が詰まってい
ますので紹介したいと思います。
28
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:introduction
○ まずはゲームエンジンで基準としているフレームレートにFPSを合わせます。
○ 特に指定がない場合は60FPSで作成しておくと汎用性があって扱いやすいです。
○ 今回紹介するアセットは60FPSで作成しています。
29
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:introduction
○ GUIでパラメータをコントロールするしないに関わらず、アセット化を想定しているものは
最初からサブネットを作成し、その中でデータを作成するとワークフローとしてスムーズで
後々問題も起こりにくいです。
30
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:RBD Object:UV
○ HoudiniはPointでアトリビュートを扱う事が多いのですが、この手のRBDで扱うオブジェク
トのUVをPointで管理すると、画像のように偏りができるケースが珍しくありません。
31
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:RBD Object:UV
○ HoudiniはPointでアトリビュートを扱う事が多いのですが、この手のRBDで扱うオブジェク
トのUVをPointで管理すると、画像のように偏りができるケースが珍しくありません。
○ Vertexの方が自動で均等にUVが設定されやすいので、ひとまずVertexに設定して作業するこ
とが個人的にはお奨めです。
32
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:RBD Object:UV
○ 基本的にUVはUDIMで作られるので、ゲームエンジンで扱いやすいように単一のUV空間に収
めます。ゲームエンジンを用いた映像制作でこの項目を気にしなくて良いという場合は気に
しなくても良いのですが、0-1の範囲に収めておくとHoudini・Unity双方で何かと調整がしや
すいので、できれば0-1の範囲に収めておくことをお奨めします。
33
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:RBD Object:UV Optimize
○ UVを0-1の単一のUV空間に収めるために、まずはUVの最大値と最小値を取得してDetailに格
納します。
34
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:RBD Object:UV Optimize
○ 取得したUVの最大値最小値をfit関数で0-1にクランプさせます。
○ こうすることで単一のUV空間にプロシージャル且つオートマチックにUVを収めることがで
きます。
35
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:RBD Object:Fracture
○ 2021年5月時点のHoudini18.5で破砕を行う場合は「RBD Material Fracture」が多くの場面で
有用です。
36
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:RBD Object:Fracture
○ 断面のディテールやカット数はアートやパフォーマンスに合わせて適宜調整します。
○ デフォルトの割れ方のギミックは割れ方に偏りができやすいので、画像のようにInput4に
「Scatter」SOP等を繋いでPointを自分で追加すると偏りを回避できます。
37
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:RBD Object:Fracture
○ 多少偏りを付けたい場合でも、前述の手法のような形でプリカットを行ってからDensityアト
リビュート等の任意のアトリビュートを生成し、それを基に再度破壊を行った方が、嫌な偏
りができにくいです。
38
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:RBD Object:Inside
○ 映像制作では破壊した断面のUVは気にしないことも多いのですが、ゲームエンジンで扱うた
めにはきちんと設定する必要があるので、断面のUVも設定します。
39
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:RBD Object:Inside
○ 基本的にはSideFXLabsの「inside Face UVs」ノードで、元のUV空間に見た目的に問題ない
位の粒度のUVを生成することができます。
40
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:RBD Object:Inside
○ SideFXLabsの「Auto UV」ノードで、簡単に破砕面をUVアイランド化したUVにすることも
できます。
41
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:RBD Object:Inside
○ SideFXLabsの「Auto UV」ノードで、簡単に破砕面をUVアイランド化したUVにすることも
できます。
○ ただし、自動でアイランド化されているのでそのままテクスチャを張ると画像のような見た
目になります。テクスチャペイントツールを使う場合はこれでも良いのですが、そうでない
場合は破砕面毎にアイランドを作るUV展開はあまりしない方が良いでしょう。
42
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:RBD Object:Pack
○ エクスポートする際にPackされたジオメトリである必要があるので、「Assemble」や「RBD
Configure」ノードでPackし、PackジオメトリにしてからRBDのSimulationを行います。
○ Simulationするジオメトリの下準備はこれで完了です。
43
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:Impact Velocity
○ こういうプロップの場合、破壊用の接触要素はオブジェクトを衝突させるよりもVelocityを放
射した方がアセットが綺麗に纏まって且つ良い結果になる場合が多いので、放射用Velocityを
作成します。
44
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:Impact Velocity
○ まずは発生点と発生フレームを作成します。
45
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:Impact Velocity
○ normalizeしたpointをvelocityにアサインして放射Velocityのベースを作成します。
○ 更に倍率やフェード具合を調整する値や関数も追加します。
46
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:Impact Velocity
○ 方向性のない汎用破壊のような動きの場合、画像の様に上方向からVelocityを放射すると汎用
素材に適した方向性のない破壊の動きの印象になりやすいです。
■ 横や下方向からだと、特定方向からの衝撃が加わったような印象になりやすいです。
47
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:Impact Velocity
○ Velocityを綺麗にForceとして参照させるために
Volumeに変換&範囲を調整します。
■ 多少拡張しておいた方が、Forceで参照してい
るVolumeの範囲外にオブジェクトがでて変な挙
動になるような現象を避けやすいです。
48
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:Impact Velocity
○ 作成した放射VelocityのVolumeは、BulletSolverやDOPnet内にPOP advect by volume ノード
を作成して読み込みます。
49
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:Simulation
○ Simulationには「RBD Bullet Solver」SOPを使用します。複雑なSimulationの場合はDOPnet
でSolverを自作する事もありますが、基本的に「RBD Bullet Solver」で問題ない場合が多い
です。
○ Simulation全般に言えることですが、Simulationが上手くいかない時はSolverの問題よりもそ
こに至るまでの下準備が適切でない場合が多いです。そのため、Simulationが上手くいかない
と感じたらまずは下準備を見直した方が問題解決に繋がりやすいです。
50
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:Simulation
○ メッシュは最終的にはオリジナルのものを当て直すので、pointのアニメーション情報のみを
キャッシュします。同様の理由で、全てのSimulationをProxyGeometryで行うこともあります。
こうすることで各種計算時間を大幅に高速化して作業効率を上げることができます。
51
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:Simulation
○ 「Transform Pieces」SOPで、SimulationしたPointに元のジオメトリをアサインします。
52
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:Export:Optimize
○ FBXアニメーションとして書き出す場合は、アトリビュートを整理すると逆にアニメーショ
ンが上手く反映されない場合があるので本当に不要なものだけを整理しましょう。
■ 小規模なプロップの場合は整理しなくても大丈夫な場合が多いです。
53
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:Export:Optimize
○ ただし、VATで書き出す場合はPositionやNormal、Cd等の必要なアトリビュート以外を残し
ていると逆にアニメーションが上手く反映されない不具合が起こることがあります。
○ VATで使用する場合は「Clean」SOP等でアトリビュートを大胆に整理する事を推奨します。
54
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:Export
○ 書き出しには基本的に「RBD to FBX」ROPを使用します。
○ ROPnet内でないと呼び出せないので、OUTコンテキスト内にノードを作るかアセット内に
ROPnetを作成して使用します。
55
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:Export:AnimationClips
○ AnimationClipの名前を指定する場合は、「RBD to FBX」ノードの「Allow Editing of
Contents」をクリックして編集可能にし、内部のノードに記述する必要があります。
56
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:Export:AnimationClips
○ 「Convert Units」をオンにしておくと、システムスケールのズレを自動的に補正してくれま
す。これにより「Houdiniで作ったジオメトリがUnityで読むととても小さい」というよくある
問題を回避できます。
■ ただし、それを見越して大きくHoudiniでジオメトリを作成していた場合は、今度は
「Unityで読んだら大きすぎる」という事態になるので適宜使い分けます。
57
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:Import:Unity
○ ドラッグ&ドロップ等、普通にUnityにインポートする時と同じ手法で問題ありません。
58
ⒸKLab inc.
汎用素材:破壊プロップ
● シーン説明:Others
○ テクスチャは自由に変えられるので、テクスチャを変えるだけで多くの場面に対応可能です。
59
ⒸKLab inc.
汎用素材:破壊プロップ
● 応用
○ 同じHoudiniアセットの仕組みで、添付gifのような他の形状のオブジェクトも簡単に破壊アセ
ットにすることができます。
60
ⒸKLab inc.
汎用素材:コイン
61
ⒸKLab inc.
汎用素材:コイン
● 概要
○ 序文の方でも記しましたが、RigidBodyDynamicsのBakeは破壊だけではなく、頂点変化のな
い硬いオブジェクトが行う物理シミュレーション全般に使えます。
62
ⒸKLab inc.
汎用素材:コイン
● 概要
○ 序文の方でも記しましたが、RigidBodyDynamicsのBakeは破壊だけではなく、頂点変化のな
い硬いオブジェクトが行う物理シミュレーション全般に使えます。
63
ⒸKLab inc.
汎用素材:鎖
64
ⒸKLab inc.
汎用素材:鎖
● 概要
○ こういった鎖の揺れアニメーション素材も、HoudiniのRigidBodyDynamicsのBakeでUnityに
持ち込むことができます。
65
ⒸKLab inc.
汎用素材:鎖
● シーン説明:前提
○ 鎖は何も考えずにsimulationを行うと、「バラバラになる・吹っ飛ぶ・変な動きになる・計算
が重すぎる」等の状態になることが多いです。
■ そのためスマートに作業するためには少し仕込みが必要になります。
● 細かく全てを解説すると非常に長くなりますので、要点を幾つか紹介したいと思
います。
66
ⒸKLab inc.
汎用素材:鎖
● シーン構成
○ 全体図
67
ⒸKLab inc.
汎用素材:鎖
● シーン構成
○ 全体図
68
ⒸKLab inc.
汎用素材:鎖
● シーン構成
○ 全体図
69
ⒸKLab inc.
汎用素材:鎖
● 要点解説
○ この手の複数のジオメトリを複製して一繋ぎにする場合は、Houdini18.5で追加された
ChainSOPが使いやすくておススメです。
■ 始点・終点の設定や複数ジオメトリの配置、線路のような形状への応用もできて幅広く
使えるSOPです。
70
ⒸKLab inc.
汎用素材:鎖
● 要点解説
○ 最終的に使用するジオメトリと、それを基にしたSimulation用のジオメトリの二種類を作成し
ます。
71
ⒸKLab inc.
汎用素材:鎖
● 要点解説
○ Simulation用の素材は、VDB化を利用して画像のように元の形状にシェイプを詰めます。
○ これは映像制作では馴染み深い手法で、こうすることで鎖のようなものでも低負荷で破綻の
ないSimlationを行う事ができます。
72
ⒸKLab inc.
汎用素材:鎖
● 要点解説
○ Simulation用のジオメトリと最終的に使用するジオメトリを上手く差し替えるために、Pack
したピース毎に同じアトリビュートを割り振っておきます。
73
ⒸKLab inc.
汎用素材:鎖
● 要点解説
○ SimulationはBulletで行っています。Solverの設定は特に特別なことはしていません。
74
ⒸKLab inc.
汎用素材:鎖
● 要点解説
○ 最後に「TransformPieces」SOPでSimulationジオメトリを最終的に使うジオメトリに差し替
えます。きちんと差し替えが行えていれば、「RBDtoFBX」ROPで最終的に使うジオメトリ
のFBXアニメーションを問題なく書き出す事ができます。
75
ⒸKLab inc.
その他注意事項
76
ⒸKLab inc.
その他注意事項
● Export
○ 「RBDtoFBX」ROPでエクスポートする場合はジオメトリをPackしておく必要があります。
■ Packすることにより、それぞれのピースを単一のトランスフォーム情報に落とし込む
ことができます。
■ 「name」かそれに準ずるアトリビュートとピースの相関関係を参照するので、この性
質を利用することで鎖の項目で述べたような「Simlationジオメトリと全く別のジオメト
リをアサインする」というような事をしても、上手く書き出す事ができます。
77
ⒸKLab inc.
その他注意事項
● 頂点数の変化
○ 頂点数が変わると「RBDtoFBX」ROPでは上手く書き出せないことが多いです。
■ 動的に頂点数が変化するジオメトリをUnityに持ち込む場合は、「FluidVAT」や
「Alembic」といった手法で書き出さないと基本的には上手く書き出せません。
● そのため事前に全てのピースを割っておく必要があります。
● 映像制作でよく使う「破壊等で実際に物が割れるまで割れてるように見せないた
めに該当要素を削除したり隠したりするテクニック」を使うと頂点数の変化が起
こるので、「RBDtoFBX」ROPで上手く書き出せなくなります。
78
ⒸKLab inc.
その他注意事項
● Constraint
○ Constraintは使用しても問題ありません。下記の画像もGlueで割れ感を制御しています。
○ 前述の通り頂点数の変化は上手く書き出せない場合が多いですが、Constraintを使用すること
で段階的に壊れるような表現を「RBDtoFBX」ROPで書き出す事ができます。
■ Group等でアクティブ・非アクティブを分けるのも有効です。
79
ⒸKLab inc.
Baking Rigid Body Dynamics:END
80
ⒸKLab inc.
Baking Rigid Body Dynamics:END
● Baking Rigid Body Dynamics の説明は以上となります。
81
ⒸKLab inc.
Other tips
82
ⒸKLab inc.
Other tips
● シームレステクスチャの作成方法
○ UnityGrenoble様のHPで、普通の画像からタイリング可能なシームレステクスチャを作成す
る機能が公開されています。
■ ツールのインストールも必要なく、知っておくと何かと便利な手法です。
83
ⒸKLab inc.
Other tips
● シームレステクスチャの作成方法
○ UnityGrenoble様のHPで、普通の画像からタイリング可能なシームレステクスチャを作成す
る機能が公開されています。
■ ツールのインストールも必要なく、知っておくと何かと便利な手法です。
84
・Before ・After
ⒸKLab inc.
Other tips
● Houdiniで画像からNormalmapを作成する方法
○ COPの「NormalFromGrayscale」ノードで簡単に画像からNormalmapを生成できます。
■ 「NormalLevels」ノードで法線の強弱も調整可能です。
■ 画像からNormalmapを作成する手段は他にもありますが、Houdiniだとアセット化や
PDGで効率化して作業ストレスや手数を軽減し易いです。
85
ⒸKLab inc.
Other tips
● HoudiniでSpriteSheetを簡単に作成する方法
○ COPの「Mosaic」ノードで簡単に画像からSpriteSheetを生成できます。
■ Normalmap同様SpriteSheetを作成する手段は他にもありますが、Normalmap同様に
Houdiniだとアセット化やPDGで効率化して作業ストレスや手数を軽減し易いです。
86
ⒸKLab inc.
Other tips
● VertexAnimationTextureフォルダの注意点
○ SideFX社様が提供しているShaderを使う場合、Unityのパッケージマネージャから該当デー
タをロードする事が多いと思います。
○ HoudiniのVertexAnimesionTextureノードに記されたパスはオリジナルデータのパスなので、
そのまま使用して中身を改変・削除等を行うと今後同様のパスを参照する要素全てに影響が
生じます。
■ オリジナルデータを誤って上書きしないためには以下のような対策が有効です。
● オリジナルデータのフォルダを参照するが、中に入っているShader等を複製して
使用する。
● パッケージマネージャで参照するフォルダ一式を別の場所にコピーし、そちらか
ら参照するようにする。
87
ⒸKLab inc.
Other tips
● Alembicについて
○ 参考
88
ⒸKLab inc.
Other tips
● Alembicについて
○ 映像制作利用想定の場合
■ 指標として、30~40万ポリゴン位のデータの場合、Unityでの再生時にそこまで重くな
ることもなく再生できます。
■ Alembicのファイルサイズも10GB~20GB位だと、初期の読み込みには少し時間がかか
りますがそれ以降はスムーズに扱って作業できます。
● 私はこれくらいのファイルサイズを目安にオプティマイズしています。
■ Github上にもLFSで問題なくアップできます。
● ただし、大容量のファイルをバージョン管理ツールで共有するかは会社やプロジ
ェクト次第なので、個々人の環境で各々判断が必要です。
89
ⒸKLab inc.
Other tips
● PolygonSoupに関する注意点
○ 参考
90
ⒸKLab inc.
Other tips
● PolygonSoupに関する注意点
○ 2021年4月時点だと、「Sweep」や「ParticleFluidSurface」等のよく使うメッシュ生成ノード
のデフォルトがPolygonSoupになっている事が多いです。
○ PolygonSoupだとPolygonと比べて、見た目は一見変わらずにキャッシュサイズが半分位にな
ります。
■ 映像制作ではこれでも良いのですが、PrimitiveやVertexはPolygonSoup化されることで
アトリビュートの調整ができなくなり、それらを基にしたUVや頂点情報も正確ではな
くなるので、後からアトリビュートを調整したりゲームエンジンでの使用を想定してい
る場合はPolygonにする必要があります。
○ 「Convert」SOPでPolygonSoupからPolygonに変換できます。
■ ただし元データと比べてPolygonの順番が異なる場合があるので、ゲームエンジンで使
用するデータを作る場合は、PolygonSoupを使用しない方が安全だと思われます。
○ Pointの情報は殆ど維持され、Houdiniの作業時もPointを扱うことが多いので気づき辛いので
すが、作業の途中で意図せずPolygonSoupに変換され、後で気づいて問題になるということ
もあるので注意が必要です。
91
ⒸKLab inc.
Other tips
● Skinning Converter in Houdini 18.5
○ VertexAnimationTextureを使わないSoftbodySimulationのHoudiniからUnityへのコンバート手
法として、主にHoudiniの「SideFXLabs Skinning Converter」ノードを使用し、Unityに
SkinnedMeshRenderer扱いのボーンベースアニメーションに変換して持ち込む手法がござい
ます。
92
ⒸKLab inc.
Other tips
● Skinning Converter in Houdini 18.5
○ CEDEC2020でこの手法について登壇しましたので、興味のある方は弊社のホームページの方
で資料を一般公開しているのでご覧ください。
■ CEDEC2020の資料Link
93
ⒸKLab inc.
Other tips
● Skinning Converter in Houdini 18.5
○ 前述の「Skinning Converter」を使用した手法ですが、CEDEC2020登壇時のHoudini18の段階
では、「プロシージャルアセットにできてアプローチとしても有用ではあるが、当時のボー
ンの仕様も相まって少々使い辛い」という状態でした。
94
ⒸKLab inc.
Other tips
● Skinning Converter in Houdini 18.5
○ Houdini18.5になり、KineFXが登場したことでボーン周りの扱いが大幅に改善され、
「Skinning Converter」も大幅に使い勝手が向上しました。
○ Houdini18以前で作業する場合は私がCEDEC2020で登壇した手法で良いのですが、
Houdini18.5で作業する場合はバージョンアップした仕組みを使用した方が良い場合が多いの
で、Houdini18.5における「Skinning Converter」の使い方を簡単に紹介いたします。
95
ⒸKLab inc.
Other tips
● Skinning Converter in Houdini 18.5
○ Houdini18以前のSkinningConverter
96
ⒸKLab inc.
Other tips
● Skinning Converter in Houdini 18.5
○ Houdini18以前のSkinningConverter
■ ボーンへのベイク時にサブネットが生成されます。
■ KineFX以前のボーン仕様なので、ボーン用のノードがサブネット内に大量に生成され
ます。
■ エクスポート時は、この生成されたサブネットを指定する必要があります。
■ シーンファイル内にベイクされたデータを保持するのでデータサイズがHoudiniのシー
ンファイルにしては大きくなります。
97
ⒸKLab inc.
Other tips
● Skinning Converter in Houdini 18.5
○ Houdini18.5のSkinningConverter
98
ⒸKLab inc.
Other tips
● Skinning Converter in Houdini 18.5
○ Houdini18.5のSkinningConverter
■ 「SkinningConverter」ノードに直接ノードを繋いでメッシュやボーンを確認・エクス
ポートできます。
■ シーンファイルのサイズも、通常のシーンファイルと同等です。
99
ⒸKLab inc.
Other tips
● Skinning Converter in Houdini 18.5
○ まとめ
■ KineFX対応でバージョンアップしたHoudini18.5仕様の方が、総じて使いやすく個人的
にはお奨めです。
■ ただし、従来の仕組みも依然として有用です。
● そのため、諸事情によってHoudini18以前のバージョンで作業する必要がある場合、
SoftbodySimulationのベイクのアプローチとしては従来の仕組みも有効です。
100
ⒸKLab inc.
Other tips:END
101
ⒸKLab inc.
Other tips:END
● Other tips の説明・紹介は以上となります。
102
ⒸKLab inc.
ご清覧ありがとうございました
103
ⒸKLab inc.
end
104

【Unity道場Houdini編】UnityとHoudiniで作るRealtimeVFX実践解説 後編

  • 1.
  • 2.
  • 3.
  • 4.
    ⒸKLab inc. ● 佐々木洋太 ●KLab株式会社技術統括部RRRグループ所属 ○ ※RRR = RealTime Rendering Researchの略 ● VFXシニアアーティスト 自己紹介 4
  • 5.
    ⒸKLab inc. ● 来歴 ○アニメ制作会社、3DCG制作会社で主に2D・3Dのエフェクト・コンポジット・映像制作に多 数携わった後KLabに入社。 自己紹介 5
  • 6.
    ⒸKLab inc. ● 入社後 ○入社後は先端VFXの技術検証やテックデモ制作に携わりつつ、オリジナルRPGタイトルのカ ットシーン制作に参加。 ■ テックデモのLink ■ UnityKorea様で行ったテックデモのウェビナーLink ● 現在 ○ 現在は主に映像・エフェクトの技術・アート両分野での「新規プロジェクトへの協力・高度 なVFXの技術検証及び社内導入・制作力向上への貢献・コンセプトやスタイルガイドの構 築」といった業務を行っています。 ○ 技術検証・実践内容の一部は2020年のCEDECで登壇して紹介しています。 ■ CEDEC2020の資料Link ■ SideFX社様のCEDEC紹介ページLink 自己紹介 6
  • 7.
    ⒸKLab inc. ● リアルタイム・レンダリング・リサーチグループ(RRR) ○KLabの3Dビジュアル研究開発グループ ○ 横断活動グループとしてプロジェクトサポート及び新規開発に関与 ○ 2018年に結成 ○ 現在は7人 ■ 全員がそれぞれ違う得意分野を持っている人 ■ 全員が「楽するための苦労をしたい」人 ● <今の仕事を仕組化・効率化し、未来を楽にする。>という、KLabの大事にしている価値観の 一つでもあります。 自己紹介 7
  • 8.
    ⒸKLab inc. ● 自主制作 ○仕事だけではなく趣味でもプリレンダーやリアルタイムの映像・エフェクト・モーショング ラフィックス制作をしています。 ■ 先日ボーンデジタル様主催の『Houdiniで作るNPRエフェクト&After Effectsでのコンポ ジット実践解説オンラインセミナー』という題で、趣味のNPRエフェクトの解説セミナ ーを行いました。 ○ 今回のUnity道場では、仕事及びこうした自主制作で培われたHoudiniとUnity連携のノウハウ をご紹介致します。 自己紹介 8
  • 9.
  • 10.
    ⒸKLab inc. Personal WorkDemo Reel ● Houdini&Unity:Real-timeリール紹介 ○ 動画リンク 10
  • 11.
    ⒸKLab inc. Houdini andUnity integration 11
  • 12.
    ⒸKLab inc. Houdini andUnity integration ● introduction ○ デモリールで紹介したようにHoudiniとUnityを使用した作例が色々とございます。 ○ 今回はその中から「FlowMap」及び「Rigid Body Dynamics(RBD)」関係のノウハウの紹介 を主に行いたいと存じます。 ○ 基本的には作業シーンを紹介しながらの説明になりますが、後で資料として読み返しやすい ように要点はスライドの方にも記載させていただきます。 12
  • 13.
    ⒸKLab inc. Houdini andUnity integration ● 香盤表 ○ 前編 ■ introduction ● 自己紹介 ■ Houdini and Unity integration ● Various uses for flowmap ○ 後編 ■ Houdini and Unity integration ● Baking Rigid Body Dynamics ● その他Tips 13
  • 14.
    ⒸKLab inc. Houdini andUnity integration ● 使用しているツールのバージョン ○ Houdini ■ Houdini18.5.462 ■ SideFXLabs18.5.462 ○ Unity ■ Unity2019.3LTS:HDRP ■ Unity2019.4LTS:URP ■ Unity2020.2LTS:HDRP ■ Unity2020.3LTS:HDRP 14
  • 15.
    ⒸKLab inc. Baking RigidBody Dynamics 15
  • 16.
  • 17.
    ⒸKLab inc. Baking RigidBody Dynamics ● Rigid Body Dynamics とは ○ 略称は RBD。 ○ 3DCGにおいては一般的には「硬い固体の物理シミュレーション(ビルやドアの破壊・落 石・金属の鎖の揺れ等)」のことを指します。 17
  • 18.
    ⒸKLab inc. Baking RigidBody Dynamics ● Rigid Body Dynamics とは ○ また、破壊表現だけではなく添付gifのような固体の物理シミュレーションする要素全般の事 をRBDと呼びます。 18
  • 19.
    ⒸKLab inc. Baking RigidBody Dynamics ● Baking Rigid Body Dynamics とは ○ DCCツール上で作成したRBDをベイクしてコンバートし、ゲームエンジンで使用する手法の ことを本セッションでは指しています。本セッションでは、主にこの内容について紹介した いと思います。 ■ 本セッションでは使用するDCCツールは「Houdini」、ゲームエンジンは「Unity」にな ります。 19
  • 20.
    ⒸKLab inc. Baking RigidBody Dynamics ● Baking Rigid Body Dynamics の必要性 ○ モバイルゲーム等ではゲームエンジン上の物理シミュレーションを多用すると処理負荷が高 く問題が生じるため、このような手法が適宜必要になります。 20
  • 21.
    ⒸKLab inc. Baking RigidBody Dynamics ● Baking Rigid Body Dynamics の作成方法 ○ 基本的にはHoudiniの「RBDtoFBX」ROPを使用してアニメーションをベイクしたFBXとして コンバートします。 ○ ボーンを使わずベイクするので、Unity上ではMesh Renderer扱いになります。 ○ VATとしても書き出せますが、そもそもモバイルゲームでの負荷対策が主目的なので、FBX のアニメーションとして書き出せる手法を優先しています。 ■ 最終出力の方法をVAT用のギミックにすれば同じアセットからVATを書き出せるので、 VATが必要な場合でも追加コストは殆どかかりません。 21
  • 22.
    ⒸKLab inc. Baking RigidBody Dynamics ● Baking Rigid Body Dynamics の利点 ○ DCCツールで作りこんだRBDのディテールやアニメーションをそのままゲームエンジンに持 ち込めるので、アート性が高かったり、作りこんだ優れたビジュアルの素材を持ち込めます。 22
  • 23.
    ⒸKLab inc. Baking RigidBody Dynamics ● Baking Rigid Body Dynamics の利点 ○ FBXアニメーションとして書き出すとトランスフォームのアニメーションになるので、添付 gifのような「動きの途中からスローモーション」のような表現もゲームエンジン上で簡単に できます。 23
  • 24.
    ⒸKLab inc. Baking RigidBody Dynamics ● Baking Rigid Body Dynamics の利点 ○ 前述のとおりFBXアニメーションとして書き出すとトランスフォームのアニメーションにな るので、レイトレーシング化でも安定して動作します。 ■ 古典的で堅実な手法ゆえに、レイトレーシングと組み合わせるのが大変な手法で起こる ような問題を気にしなくて済みます。 24
  • 25.
    ⒸKLab inc. Baking RigidBody Dynamics:シーン紹介 25
  • 26.
  • 27.
    ⒸKLab inc. 汎用素材:破壊プロップ ● 概要 ○こちらの破壊プロップの作成方法に、RBDの基本とUnityへのベイク・コンバートの基本が詰 まっています。そのためまずはこちらを紹介したいと思います。 27
  • 28.
    ⒸKLab inc. 汎用素材:破壊プロップ ● 概要 ○こちらの破壊プロップの作成方法に、RBDの基本とUnityへのコンバートの基本が詰まってい ますので紹介したいと思います。 28
  • 29.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:introduction ○まずはゲームエンジンで基準としているフレームレートにFPSを合わせます。 ○ 特に指定がない場合は60FPSで作成しておくと汎用性があって扱いやすいです。 ○ 今回紹介するアセットは60FPSで作成しています。 29
  • 30.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:introduction ○GUIでパラメータをコントロールするしないに関わらず、アセット化を想定しているものは 最初からサブネットを作成し、その中でデータを作成するとワークフローとしてスムーズで 後々問題も起こりにくいです。 30
  • 31.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:RBDObject:UV ○ HoudiniはPointでアトリビュートを扱う事が多いのですが、この手のRBDで扱うオブジェク トのUVをPointで管理すると、画像のように偏りができるケースが珍しくありません。 31
  • 32.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:RBDObject:UV ○ HoudiniはPointでアトリビュートを扱う事が多いのですが、この手のRBDで扱うオブジェク トのUVをPointで管理すると、画像のように偏りができるケースが珍しくありません。 ○ Vertexの方が自動で均等にUVが設定されやすいので、ひとまずVertexに設定して作業するこ とが個人的にはお奨めです。 32
  • 33.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:RBDObject:UV ○ 基本的にUVはUDIMで作られるので、ゲームエンジンで扱いやすいように単一のUV空間に収 めます。ゲームエンジンを用いた映像制作でこの項目を気にしなくて良いという場合は気に しなくても良いのですが、0-1の範囲に収めておくとHoudini・Unity双方で何かと調整がしや すいので、できれば0-1の範囲に収めておくことをお奨めします。 33
  • 34.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:RBDObject:UV Optimize ○ UVを0-1の単一のUV空間に収めるために、まずはUVの最大値と最小値を取得してDetailに格 納します。 34
  • 35.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:RBDObject:UV Optimize ○ 取得したUVの最大値最小値をfit関数で0-1にクランプさせます。 ○ こうすることで単一のUV空間にプロシージャル且つオートマチックにUVを収めることがで きます。 35
  • 36.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:RBDObject:Fracture ○ 2021年5月時点のHoudini18.5で破砕を行う場合は「RBD Material Fracture」が多くの場面で 有用です。 36
  • 37.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:RBDObject:Fracture ○ 断面のディテールやカット数はアートやパフォーマンスに合わせて適宜調整します。 ○ デフォルトの割れ方のギミックは割れ方に偏りができやすいので、画像のようにInput4に 「Scatter」SOP等を繋いでPointを自分で追加すると偏りを回避できます。 37
  • 38.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:RBDObject:Fracture ○ 多少偏りを付けたい場合でも、前述の手法のような形でプリカットを行ってからDensityアト リビュート等の任意のアトリビュートを生成し、それを基に再度破壊を行った方が、嫌な偏 りができにくいです。 38
  • 39.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:RBDObject:Inside ○ 映像制作では破壊した断面のUVは気にしないことも多いのですが、ゲームエンジンで扱うた めにはきちんと設定する必要があるので、断面のUVも設定します。 39
  • 40.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:RBDObject:Inside ○ 基本的にはSideFXLabsの「inside Face UVs」ノードで、元のUV空間に見た目的に問題ない 位の粒度のUVを生成することができます。 40
  • 41.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:RBDObject:Inside ○ SideFXLabsの「Auto UV」ノードで、簡単に破砕面をUVアイランド化したUVにすることも できます。 41
  • 42.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:RBDObject:Inside ○ SideFXLabsの「Auto UV」ノードで、簡単に破砕面をUVアイランド化したUVにすることも できます。 ○ ただし、自動でアイランド化されているのでそのままテクスチャを張ると画像のような見た 目になります。テクスチャペイントツールを使う場合はこれでも良いのですが、そうでない 場合は破砕面毎にアイランドを作るUV展開はあまりしない方が良いでしょう。 42
  • 43.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:RBDObject:Pack ○ エクスポートする際にPackされたジオメトリである必要があるので、「Assemble」や「RBD Configure」ノードでPackし、PackジオメトリにしてからRBDのSimulationを行います。 ○ Simulationするジオメトリの下準備はこれで完了です。 43
  • 44.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:ImpactVelocity ○ こういうプロップの場合、破壊用の接触要素はオブジェクトを衝突させるよりもVelocityを放 射した方がアセットが綺麗に纏まって且つ良い結果になる場合が多いので、放射用Velocityを 作成します。 44
  • 45.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:ImpactVelocity ○ まずは発生点と発生フレームを作成します。 45
  • 46.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:ImpactVelocity ○ normalizeしたpointをvelocityにアサインして放射Velocityのベースを作成します。 ○ 更に倍率やフェード具合を調整する値や関数も追加します。 46
  • 47.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:ImpactVelocity ○ 方向性のない汎用破壊のような動きの場合、画像の様に上方向からVelocityを放射すると汎用 素材に適した方向性のない破壊の動きの印象になりやすいです。 ■ 横や下方向からだと、特定方向からの衝撃が加わったような印象になりやすいです。 47
  • 48.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:ImpactVelocity ○ Velocityを綺麗にForceとして参照させるために Volumeに変換&範囲を調整します。 ■ 多少拡張しておいた方が、Forceで参照してい るVolumeの範囲外にオブジェクトがでて変な挙 動になるような現象を避けやすいです。 48
  • 49.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:ImpactVelocity ○ 作成した放射VelocityのVolumeは、BulletSolverやDOPnet内にPOP advect by volume ノード を作成して読み込みます。 49
  • 50.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:Simulation ○Simulationには「RBD Bullet Solver」SOPを使用します。複雑なSimulationの場合はDOPnet でSolverを自作する事もありますが、基本的に「RBD Bullet Solver」で問題ない場合が多い です。 ○ Simulation全般に言えることですが、Simulationが上手くいかない時はSolverの問題よりもそ こに至るまでの下準備が適切でない場合が多いです。そのため、Simulationが上手くいかない と感じたらまずは下準備を見直した方が問題解決に繋がりやすいです。 50
  • 51.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:Simulation ○メッシュは最終的にはオリジナルのものを当て直すので、pointのアニメーション情報のみを キャッシュします。同様の理由で、全てのSimulationをProxyGeometryで行うこともあります。 こうすることで各種計算時間を大幅に高速化して作業効率を上げることができます。 51
  • 52.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:Simulation ○「Transform Pieces」SOPで、SimulationしたPointに元のジオメトリをアサインします。 52
  • 53.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:Export:Optimize ○FBXアニメーションとして書き出す場合は、アトリビュートを整理すると逆にアニメーショ ンが上手く反映されない場合があるので本当に不要なものだけを整理しましょう。 ■ 小規模なプロップの場合は整理しなくても大丈夫な場合が多いです。 53
  • 54.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:Export:Optimize ○ただし、VATで書き出す場合はPositionやNormal、Cd等の必要なアトリビュート以外を残し ていると逆にアニメーションが上手く反映されない不具合が起こることがあります。 ○ VATで使用する場合は「Clean」SOP等でアトリビュートを大胆に整理する事を推奨します。 54
  • 55.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:Export ○書き出しには基本的に「RBD to FBX」ROPを使用します。 ○ ROPnet内でないと呼び出せないので、OUTコンテキスト内にノードを作るかアセット内に ROPnetを作成して使用します。 55
  • 56.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:Export:AnimationClips ○AnimationClipの名前を指定する場合は、「RBD to FBX」ノードの「Allow Editing of Contents」をクリックして編集可能にし、内部のノードに記述する必要があります。 56
  • 57.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:Export:AnimationClips ○「Convert Units」をオンにしておくと、システムスケールのズレを自動的に補正してくれま す。これにより「Houdiniで作ったジオメトリがUnityで読むととても小さい」というよくある 問題を回避できます。 ■ ただし、それを見越して大きくHoudiniでジオメトリを作成していた場合は、今度は 「Unityで読んだら大きすぎる」という事態になるので適宜使い分けます。 57
  • 58.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:Import:Unity ○ドラッグ&ドロップ等、普通にUnityにインポートする時と同じ手法で問題ありません。 58
  • 59.
    ⒸKLab inc. 汎用素材:破壊プロップ ● シーン説明:Others ○テクスチャは自由に変えられるので、テクスチャを変えるだけで多くの場面に対応可能です。 59
  • 60.
    ⒸKLab inc. 汎用素材:破壊プロップ ● 応用 ○同じHoudiniアセットの仕組みで、添付gifのような他の形状のオブジェクトも簡単に破壊アセ ットにすることができます。 60
  • 61.
  • 62.
    ⒸKLab inc. 汎用素材:コイン ● 概要 ○序文の方でも記しましたが、RigidBodyDynamicsのBakeは破壊だけではなく、頂点変化のな い硬いオブジェクトが行う物理シミュレーション全般に使えます。 62
  • 63.
    ⒸKLab inc. 汎用素材:コイン ● 概要 ○序文の方でも記しましたが、RigidBodyDynamicsのBakeは破壊だけではなく、頂点変化のな い硬いオブジェクトが行う物理シミュレーション全般に使えます。 63
  • 64.
  • 65.
    ⒸKLab inc. 汎用素材:鎖 ● 概要 ○こういった鎖の揺れアニメーション素材も、HoudiniのRigidBodyDynamicsのBakeでUnityに 持ち込むことができます。 65
  • 66.
    ⒸKLab inc. 汎用素材:鎖 ● シーン説明:前提 ○鎖は何も考えずにsimulationを行うと、「バラバラになる・吹っ飛ぶ・変な動きになる・計算 が重すぎる」等の状態になることが多いです。 ■ そのためスマートに作業するためには少し仕込みが必要になります。 ● 細かく全てを解説すると非常に長くなりますので、要点を幾つか紹介したいと思 います。 66
  • 67.
  • 68.
  • 69.
  • 70.
    ⒸKLab inc. 汎用素材:鎖 ● 要点解説 ○この手の複数のジオメトリを複製して一繋ぎにする場合は、Houdini18.5で追加された ChainSOPが使いやすくておススメです。 ■ 始点・終点の設定や複数ジオメトリの配置、線路のような形状への応用もできて幅広く 使えるSOPです。 70
  • 71.
    ⒸKLab inc. 汎用素材:鎖 ● 要点解説 ○最終的に使用するジオメトリと、それを基にしたSimulation用のジオメトリの二種類を作成し ます。 71
  • 72.
    ⒸKLab inc. 汎用素材:鎖 ● 要点解説 ○Simulation用の素材は、VDB化を利用して画像のように元の形状にシェイプを詰めます。 ○ これは映像制作では馴染み深い手法で、こうすることで鎖のようなものでも低負荷で破綻の ないSimlationを行う事ができます。 72
  • 73.
    ⒸKLab inc. 汎用素材:鎖 ● 要点解説 ○Simulation用のジオメトリと最終的に使用するジオメトリを上手く差し替えるために、Pack したピース毎に同じアトリビュートを割り振っておきます。 73
  • 74.
    ⒸKLab inc. 汎用素材:鎖 ● 要点解説 ○SimulationはBulletで行っています。Solverの設定は特に特別なことはしていません。 74
  • 75.
    ⒸKLab inc. 汎用素材:鎖 ● 要点解説 ○最後に「TransformPieces」SOPでSimulationジオメトリを最終的に使うジオメトリに差し替 えます。きちんと差し替えが行えていれば、「RBDtoFBX」ROPで最終的に使うジオメトリ のFBXアニメーションを問題なく書き出す事ができます。 75
  • 76.
  • 77.
    ⒸKLab inc. その他注意事項 ● Export ○「RBDtoFBX」ROPでエクスポートする場合はジオメトリをPackしておく必要があります。 ■ Packすることにより、それぞれのピースを単一のトランスフォーム情報に落とし込む ことができます。 ■ 「name」かそれに準ずるアトリビュートとピースの相関関係を参照するので、この性 質を利用することで鎖の項目で述べたような「Simlationジオメトリと全く別のジオメト リをアサインする」というような事をしても、上手く書き出す事ができます。 77
  • 78.
    ⒸKLab inc. その他注意事項 ● 頂点数の変化 ○頂点数が変わると「RBDtoFBX」ROPでは上手く書き出せないことが多いです。 ■ 動的に頂点数が変化するジオメトリをUnityに持ち込む場合は、「FluidVAT」や 「Alembic」といった手法で書き出さないと基本的には上手く書き出せません。 ● そのため事前に全てのピースを割っておく必要があります。 ● 映像制作でよく使う「破壊等で実際に物が割れるまで割れてるように見せないた めに該当要素を削除したり隠したりするテクニック」を使うと頂点数の変化が起 こるので、「RBDtoFBX」ROPで上手く書き出せなくなります。 78
  • 79.
    ⒸKLab inc. その他注意事項 ● Constraint ○Constraintは使用しても問題ありません。下記の画像もGlueで割れ感を制御しています。 ○ 前述の通り頂点数の変化は上手く書き出せない場合が多いですが、Constraintを使用すること で段階的に壊れるような表現を「RBDtoFBX」ROPで書き出す事ができます。 ■ Group等でアクティブ・非アクティブを分けるのも有効です。 79
  • 80.
    ⒸKLab inc. Baking RigidBody Dynamics:END 80
  • 81.
    ⒸKLab inc. Baking RigidBody Dynamics:END ● Baking Rigid Body Dynamics の説明は以上となります。 81
  • 82.
  • 83.
    ⒸKLab inc. Other tips ●シームレステクスチャの作成方法 ○ UnityGrenoble様のHPで、普通の画像からタイリング可能なシームレステクスチャを作成す る機能が公開されています。 ■ ツールのインストールも必要なく、知っておくと何かと便利な手法です。 83
  • 84.
    ⒸKLab inc. Other tips ●シームレステクスチャの作成方法 ○ UnityGrenoble様のHPで、普通の画像からタイリング可能なシームレステクスチャを作成す る機能が公開されています。 ■ ツールのインストールも必要なく、知っておくと何かと便利な手法です。 84 ・Before ・After
  • 85.
    ⒸKLab inc. Other tips ●Houdiniで画像からNormalmapを作成する方法 ○ COPの「NormalFromGrayscale」ノードで簡単に画像からNormalmapを生成できます。 ■ 「NormalLevels」ノードで法線の強弱も調整可能です。 ■ 画像からNormalmapを作成する手段は他にもありますが、Houdiniだとアセット化や PDGで効率化して作業ストレスや手数を軽減し易いです。 85
  • 86.
    ⒸKLab inc. Other tips ●HoudiniでSpriteSheetを簡単に作成する方法 ○ COPの「Mosaic」ノードで簡単に画像からSpriteSheetを生成できます。 ■ Normalmap同様SpriteSheetを作成する手段は他にもありますが、Normalmap同様に Houdiniだとアセット化やPDGで効率化して作業ストレスや手数を軽減し易いです。 86
  • 87.
    ⒸKLab inc. Other tips ●VertexAnimationTextureフォルダの注意点 ○ SideFX社様が提供しているShaderを使う場合、Unityのパッケージマネージャから該当デー タをロードする事が多いと思います。 ○ HoudiniのVertexAnimesionTextureノードに記されたパスはオリジナルデータのパスなので、 そのまま使用して中身を改変・削除等を行うと今後同様のパスを参照する要素全てに影響が 生じます。 ■ オリジナルデータを誤って上書きしないためには以下のような対策が有効です。 ● オリジナルデータのフォルダを参照するが、中に入っているShader等を複製して 使用する。 ● パッケージマネージャで参照するフォルダ一式を別の場所にコピーし、そちらか ら参照するようにする。 87
  • 88.
    ⒸKLab inc. Other tips ●Alembicについて ○ 参考 88
  • 89.
    ⒸKLab inc. Other tips ●Alembicについて ○ 映像制作利用想定の場合 ■ 指標として、30~40万ポリゴン位のデータの場合、Unityでの再生時にそこまで重くな ることもなく再生できます。 ■ Alembicのファイルサイズも10GB~20GB位だと、初期の読み込みには少し時間がかか りますがそれ以降はスムーズに扱って作業できます。 ● 私はこれくらいのファイルサイズを目安にオプティマイズしています。 ■ Github上にもLFSで問題なくアップできます。 ● ただし、大容量のファイルをバージョン管理ツールで共有するかは会社やプロジ ェクト次第なので、個々人の環境で各々判断が必要です。 89
  • 90.
    ⒸKLab inc. Other tips ●PolygonSoupに関する注意点 ○ 参考 90
  • 91.
    ⒸKLab inc. Other tips ●PolygonSoupに関する注意点 ○ 2021年4月時点だと、「Sweep」や「ParticleFluidSurface」等のよく使うメッシュ生成ノード のデフォルトがPolygonSoupになっている事が多いです。 ○ PolygonSoupだとPolygonと比べて、見た目は一見変わらずにキャッシュサイズが半分位にな ります。 ■ 映像制作ではこれでも良いのですが、PrimitiveやVertexはPolygonSoup化されることで アトリビュートの調整ができなくなり、それらを基にしたUVや頂点情報も正確ではな くなるので、後からアトリビュートを調整したりゲームエンジンでの使用を想定してい る場合はPolygonにする必要があります。 ○ 「Convert」SOPでPolygonSoupからPolygonに変換できます。 ■ ただし元データと比べてPolygonの順番が異なる場合があるので、ゲームエンジンで使 用するデータを作る場合は、PolygonSoupを使用しない方が安全だと思われます。 ○ Pointの情報は殆ど維持され、Houdiniの作業時もPointを扱うことが多いので気づき辛いので すが、作業の途中で意図せずPolygonSoupに変換され、後で気づいて問題になるということ もあるので注意が必要です。 91
  • 92.
    ⒸKLab inc. Other tips ●Skinning Converter in Houdini 18.5 ○ VertexAnimationTextureを使わないSoftbodySimulationのHoudiniからUnityへのコンバート手 法として、主にHoudiniの「SideFXLabs Skinning Converter」ノードを使用し、Unityに SkinnedMeshRenderer扱いのボーンベースアニメーションに変換して持ち込む手法がござい ます。 92
  • 93.
    ⒸKLab inc. Other tips ●Skinning Converter in Houdini 18.5 ○ CEDEC2020でこの手法について登壇しましたので、興味のある方は弊社のホームページの方 で資料を一般公開しているのでご覧ください。 ■ CEDEC2020の資料Link 93
  • 94.
    ⒸKLab inc. Other tips ●Skinning Converter in Houdini 18.5 ○ 前述の「Skinning Converter」を使用した手法ですが、CEDEC2020登壇時のHoudini18の段階 では、「プロシージャルアセットにできてアプローチとしても有用ではあるが、当時のボー ンの仕様も相まって少々使い辛い」という状態でした。 94
  • 95.
    ⒸKLab inc. Other tips ●Skinning Converter in Houdini 18.5 ○ Houdini18.5になり、KineFXが登場したことでボーン周りの扱いが大幅に改善され、 「Skinning Converter」も大幅に使い勝手が向上しました。 ○ Houdini18以前で作業する場合は私がCEDEC2020で登壇した手法で良いのですが、 Houdini18.5で作業する場合はバージョンアップした仕組みを使用した方が良い場合が多いの で、Houdini18.5における「Skinning Converter」の使い方を簡単に紹介いたします。 95
  • 96.
    ⒸKLab inc. Other tips ●Skinning Converter in Houdini 18.5 ○ Houdini18以前のSkinningConverter 96
  • 97.
    ⒸKLab inc. Other tips ●Skinning Converter in Houdini 18.5 ○ Houdini18以前のSkinningConverter ■ ボーンへのベイク時にサブネットが生成されます。 ■ KineFX以前のボーン仕様なので、ボーン用のノードがサブネット内に大量に生成され ます。 ■ エクスポート時は、この生成されたサブネットを指定する必要があります。 ■ シーンファイル内にベイクされたデータを保持するのでデータサイズがHoudiniのシー ンファイルにしては大きくなります。 97
  • 98.
    ⒸKLab inc. Other tips ●Skinning Converter in Houdini 18.5 ○ Houdini18.5のSkinningConverter 98
  • 99.
    ⒸKLab inc. Other tips ●Skinning Converter in Houdini 18.5 ○ Houdini18.5のSkinningConverter ■ 「SkinningConverter」ノードに直接ノードを繋いでメッシュやボーンを確認・エクス ポートできます。 ■ シーンファイルのサイズも、通常のシーンファイルと同等です。 99
  • 100.
    ⒸKLab inc. Other tips ●Skinning Converter in Houdini 18.5 ○ まとめ ■ KineFX対応でバージョンアップしたHoudini18.5仕様の方が、総じて使いやすく個人的 にはお奨めです。 ■ ただし、従来の仕組みも依然として有用です。 ● そのため、諸事情によってHoudini18以前のバージョンで作業する必要がある場合、 SoftbodySimulationのベイクのアプローチとしては従来の仕組みも有効です。 100
  • 101.
  • 102.
    ⒸKLab inc. Other tips:END ●Other tips の説明・紹介は以上となります。 102
  • 103.
  • 104.