【第10回ぷちコン】UE4 プリン ぷるぷる させ方 [検索]
4テーマ「ぷち」を与えられて最初に思いついたのがプッ○ンプリンでした。
プッチ○プリンを作ることばかり考えていました。期間中に8個たべました。
最終的にこの動きになりました。皿に落ちる瞬間で何度も一時停止してみてください。
くぅ~疲れました!これにてノルマ達成です!
— わかにゃ (@Nekomimimofmof) 2018年9月16日
なかみがぜんぜんできてないよ^o^ pic.twitter.com/1T5sMfPFxu
それでは、ぷるぷるプリンができていく様子を書いていきます。
理想とするプリンの条件を考えました。
・揺れて、ぷるぷるする。
・外力によって凹んだり凸ったり、変形する。
・変形し外力が失われた後、徐々に振動しながら元の形状に戻る。
・エモい揺れ方をする、乗ってぽよんぽよんしたい。
実装方法を考えました。
・アニメーションを作成して再生する。
・ いろんな方向から力を受けたときにどうしたら良いかよくわからなかった。
・頑張ってブレンドすればできるのか・・・?
・BlueprintからScaleを時間で変化させる。
・実装は簡単だが、折れ曲がる挙動なんかができない。
・なんかいい感じの物理に任せる。
・これが理想だなあ。なんか無いかなあ。
たどり着いたのが、NvidiaのGameWorks。
・Flexというパーティクルベースのシミュレーション技術
・クッションのような球体と四角のメッシュが出てきます。
・いい感じに使ったら、ぷるぷるできるんじゃないかと考えました。
・たどり着いたというより、心当たりがありました。
・NVIDIA、「VR Funhouse」がMODに対応、開発キットも公開 - GAME Watch
・このキットを使ったゲームジャムに参加したことがありました。そのとき、ちょっと調べました。
UE4 Flexの開発環境を揃える
・こちらにとてもわかりやすい導入記事があります。
・2018年9月頭の段階で、私は4.17.1ブランチを使用しました。
・https://github.com/NvPhysX/UnrealEngine/tree/FleX-4.17.1
・4.19.2のブランチがありましたが、私の環境では自分のStatic Meshに
Flex Assetをアサインできないバグがあったため使用できませんでした。
余談:ぷちコンに提供されているツールライセンス
UE4のエンジンビルドは時間かかるのでここらで休憩。
ぷちコン期間中にIncrediBuildさんのライセンスが提供されていました。
エンジンのビルドはもちろん、シェーダのコンパイルも分散されます。
導入自体は簡単です。使った方が得だと思います。
GPD WIN2でもLattePandaでもちゃんと分散してくれるIncredibuildちゃんほんと有能 pic.twitter.com/B4VUZphToG
— わかにゃ (@Nekomimimofmof) August 11, 2018
今回の自分のプロジェクトと相性が良かったです。なんだかんだ4.19.2ブランチの中で何度もリビルドしたので。。。
他にも、つよいライセンスが提供されていました。
第10回UE4ぷちコン 協賛社ライセンス一覧|株式会社ヒストリア
UE4 Flexのデモプロジェクトを見てみる
・導入のところでソリューションをのビルドが完了していれば、
FlexProject以下の.uprojectが開けるはずです。
・Maps以下の「flexSoftTestMap」を開いて、実行してみましょう。
フォルダがごちゃごちゃ。このままぷちコンに使っちゃったの。許してね。
・輪っかやタコがふにゃふにゃしている様子が見えます。
プリンの実装に使ったFlexのサンプルマップだよ~ #UE4 pic.twitter.com/I2YZEJbcdf
— わかにゃ (@Nekomimimofmof) September 19, 2018
デモプロジェクトのタコを見てみる
・TestPackages/Flex 以下の 「flexOctopus」を開いてみましょう。
・うわっ、タコが赤いつぶつぶで埋め尽くされています。イクラかな?
・このスライドの30ページの図を見れば、
つぶつぶの集まりで何をやりたいのかがなんとなくわかると思います。
・ツールバーにFlexのvisible切り替え、詳細欄にFlexの項目があります。
・FlexカテゴリのFlex Assetには「Flex Soft Asset」がアタッチされています。
・Softはふにゃふにゃする物体のためのアセットです。
・他の選択肢として、Cloth(布)、Solid(個体) があります。
・パラメータはこちらを参照(丸投げ)。Assets — Flex Artist Tools 1.0 documentation
・また、Container Templateには「flexSoftContainer」がアタッチされています。
・Containerはパラメータ設定用アセットのようなものです。
・こちらを参照(丸投げ)。Containers — Flex Artist Tools 1.0 documentation
・プリンのメッシュを作成する前に、タコのメッシュを見てみました。
・けっこう細かく作られています。
自分のメッシュを入れてみた。
・気持ち的にはタコに負ないくらい分割したメッシュを作りました。
プリン・ア・ラ・MODO pic.twitter.com/L95GSfrSLl
— わかにゃ (@Nekomimimofmof) September 1, 2018
後で使われるかもしれないので進捗と一緒に寒いギャグを言うのはやめようと思いました
・最終的には以下のようなパラメータになりました。
・タコより大きいので、つぶつぶや動きを大きくしたりという感じでしょうか。
・設定によっては簡単にこんな挙動になります。
実験に失敗して犠牲となったプリン。そして奥の巨大プリンで実験しようとするとこちらのマシンパワーが犠牲になってエディタが落ちてしまう pic.twitter.com/aZrzA2evo4
— わかにゃ (@Nekomimimofmof) September 19, 2018
・設定の試行錯誤で2日くらいかかりました。なにしろ反映が重いので設定を変えるたびにPCが悲鳴をあげるのです。。
跳ね返ってほしい
・わたあめのような雲に乗ってみたいという願望は誰しも持っているはずで、
プリンに乗ってぽよんぽよんしたいという願望も誰しも持っています。
・メッシュとFlex Softを適用しただけの状態では、自キャラに潰される一方です。
Flex設定したオブジェクトをたくさん配置すると一定数からメッシュが消失するみたい。マシンスペックを見ていい感じにしたいけどランタイムで変えるのは骨が折れるぞ。昨日までのプリンは2,3個しか置けなかった。今はちょっと調整して7個。 pic.twitter.com/vXxRCL78NY
— わかにゃ (@Nekomimimofmof) September 1, 2018
・シンプルにコリジョンを作ってキャラクターをジャンプさせました。
・やっといつものUE4って感じですね。実家のような安心感。
・Delayを入れることで、わずかにめり込んでから跳ね返ったように見えます。
・心がぴょんぴょんするんじゃぁ^~
あぁ^~ pic.twitter.com/USwJUCc7Gg
— わかにゃ (@Nekomimimofmof) September 4, 2018
そうしてこちらのゲームを作ることができたのです!
以上となります。ここまで見ていただいてありがとうございました。
パラメータなど無駄なところがあるかもしれません。詳しい方教えて・・・
その他の苦闘は気が向いたら・・・
プリンに速度をもたせると一部がメッシュの隙間を突き抜けてめり込むので危険。陶器の皿をも貫通するプリンのシミュレーションは命がけなのである
— わかにゃ (@Nekomimimofmof) 2018年9月17日