#memo

indiedev太郎

UE4.13で追加されたPhysical Animationsについて

4.13で追加されたPhysical Animations
Unreal Engine 4.13 Released!

従来でも物理アニメーションはPhATを設定して、このボーン以下にどんくらい適応するみたいな事はできた
追加された機能の違いと使い方を確認する

現時点でまだドキュメントはなく、公式による解説動画がある
Physical Animations with Ian and Alex - Training Stream - YouTube

将来的にドキュメントが作成されているはずなので、そちらを参考にしてください
また、まだ実験機能ということで、仕様が変わる可能性があるので記事の日付をよく確認してください

続きを読む

足を傾斜に沿わせる

https://i.gyazo.com/dd740eb5e5caa1cfd2a803d198e1fd8a.png

やりたい
・足が傾斜に応答するようにする
・IKとTransformを使用してジョイントをプロシージャルに移動させる

いつIKを使うべきか
・基本的に足のIKはめり込み回避に使われるべき
・アイドルモーションでは、軸足でない側
→軸足にIKを使用して膝を曲げてしまうと、バランス取れてない感じになる
→アイドルモーションでは、低い位置にある方が軸足となる

移動中は、空中に浮いている側、軸足 の関係が常に成立している
軸足の膝は曲がるべきでなく、浮いている側はめり込ませたくない
→浮いている側の足に対してIKを使用する

高低差のある斜面を歩くとき
・高い側の軸足、低い側の軸足が発生する
・高い側が軸足の時、軸足にもIKが働く、完全に膝は伸びきることはない
・低い側が軸足の時、高い側の足がめり込む、面より浮かせるようにしないといけない

段差予測
https://i.gyazo.com/977d0f1c9cba20e70caf3ce08790430e.png


やること
・歩きアニメで足の設置時に通知を取るようにする
→軸足の検知、IKのブレンドアルファを制御する

・カプセルより下には足は行かない
→軸足が地面に接するように体を下げる必要がある
→→1. カプセルを見た目より小さくとって、Zを上げる方法
→→2. Transformでルートジョイントを下げる方法
→→→崖とかでこれが働くとまずいので、程よい長さに制限する、崖際の見た目は諦める
https://i.gyazo.com/461c1e5e73442933d8319de3fa81d1d9.png

・CharacterMovementのMovementModeは勝手に変わってしまうので、アニメ制御用のムーブメントステートを用意する




参考
IK / FABRIK blueprint tutorial for proper foot placement with capsule collision

SubstancePainterでネジ穴

https://i.gyazo.com/f4ca4b4973365325b3db3bc8f781d845.png

Toolsにネジ穴あるけど、自分で用意出来たらハッピー
流れは、Designer側でネジのマップをまとめたsbsを作って、それをSPで使います

モデル準備
https://i.gyazo.com/2d06a89aa5f4d5c2229f40ee3d9c5351.png

・ベイク用の板ポリとベイク元のメッシュ2つを用意しておく
・ベイク元はトポロジーどうでもよく、ハイポリがいい
・ネジ穴のバッファというかへこみみたいなものもベイクしちゃったほうがそれっぽくなる

SDでベイク
https://i.gyazo.com/9b82c43ae9e121d6aecb7ad29e4e1e7e.png

・インポートした板ポリを右クリックでBake設定、必要そうなマップを追加していって(Height, Normal, AO)、ハイポリメッシュを指定する
・Cageは板ポリだと多分使えないので、MaxDistanceを適当にする、どっちも1.0で問題なさそうな感じがある
・ファイルフォーマットをpsdにしておくと、16bitでやってくれる
・デティールは貼り付けるモデルのテクセルに依存するので、こっち側のサイズはあんま関係なく、好きなサイズにしておく

アウトプット
https://i.gyazo.com/9c123fcd69cf5749b819b85ef9cfe8ea.png

好きな感じにノードをやっていく、SPで使用するチャンネルは
BaseColor
Metalic
Roughness
Normal
Height
Mask
なので、これをアウトプットするようにしておく
ネジ穴周囲のへこみは、向こう側のマテリアルなので、heightとnormalだけ乗るようにマスクをしている

SPで読み込む
Materialsのとこにsbsasを突っ込むとインポートされる、ToolsのScrewBoltを選択し、Materialを追加したものに変更すると自分だけのネジ穴が打てるようになる

Toolsに登録する
https://i.gyazo.com/ebdb17f5c34f1e957d8a0e44186ab881.png

いい感じの設定になったら、ブラシのサムネイルのとこを右クリックすると、ツールに登録できる
マテリアルとかテクスチャは、参照できるのが現在のプロジェクトからだけとかだけど(インポート時の設定)、ツールは登録した時点でプロジェクト全体から使えるようになる
sbsarファイルとかをMaterialタブに保存しておく必要はなくて、すべて.spprというファイルに書き出されている
このファイルは、マイドキュメントのSubstancePainter2\shelf\presets\toolsにあります

アニメについてのメモ

過去
ルートモーションについて
miyahuji111.hatenablog.com

09/08
歩きの種類について
歩きといっても、敵がいる状態での歩き、町中の歩き、いろいろコンテクストがある

09/11
AnimMontageについて
Unreal Engine | AnimMontage
Unreal Engine | 加算アニメーションを使用する

09/13
足のIKについて
miyahuji111.hatenablog.com

09/17
移動速度、距離について
CharacterMovementのMaxWalkSpeedは1秒間の移動距離なので、そこでいい感じの値を見つける
アニメ作るとき、この数値を1秒間で移動させる距離にする、24fpsなら24フレームでこの距離で動きを作る

Physical Animationsについて
miyahuji111.hatenablog.com

09/18
歩行のブレンドスペースの構築について
miyahuji111.hatenablog.com

AnimDynamics / 髪のシミュレーション

髪の動きやる、いくつかの方法あるのでどれが良さそうか見ていく、初音ミクちゃんくらい長い髪はまた違うと思うので、長さ別にも見る、また髪の作り方も何パターンかある、バリエーション

いくつか、以下です
1. 手付アニメ
2. PhAT(物理アセット)
3. AnimDynamics
4. APEX Clothing

続きを読む

UE4、SkeletalMesh周りのレギュレーション

UE4の機能を使うにあたって、やっておいたほうがいいことがままあり、とくにスケルタル
見つかり次第追記

Rootを移動用と回転用で分けるようにする、具体的には原点に移動専用のRootを作って、その下に回転専用のルートジョイントを作る
→ルートモーションをうまいこと機能させる
Unreal Engine | ルート モーション

ルートジョイントの名前は"RootNode"にする
→Apex Clothingを使うならこれでエラーがへる、使わないなら好きな名前で良いです
→→とやっていたけれど、MayaはなんかRootNodeという文字列を予約しているっぽくて、保存時に勝手に名前が変わってしまってアニメーションインポートが渋くなるみたいなことが起こるので、どうしましょう…
→→→現状"Root"で問題が出ていないので、そういうことにする

APEX Clothingでシミュレーションする布は1 Joint 1 Influenceにする
→複数Influenceあるとエラー出る、Apexやらないなら気にしなくていいです

UE側でIKやるつもりなら腕とか足は2boneにしておく
→膝の変形とか補助ボーンでがんばろう

UE4のApex Clothing

Mayaでもできるっぽいけどプラグイン入れ方よくわからんかったので、おなじみのこちらでやりました
物理-布シミュレーション - UE4 Document@com04

前提
・布やる部分のメッシュ、マテリアルはわけておく
・ボーン入れてウェイトやっておく

引っかかった所
・Simulationするとき、Animationあるならそれを、ないならBiondPoseにしておくと、布の挙動をマウスで触って確認できる

・APEXをマテリアルで適用するときにThere are no corresponding bones... いうエラー出る
→1枚の布に対して一つのジョイントでインフルエンス100%にする、例えばスカートに複数のジョイントのウェイトが入っているとこのエラーが出る
→→LODがめんどくさそう?
→→スペックやらなんやらで通常のジョイント構造も必要になる場合、APEX専用のジョイントを用意しないと行けないのでめんどくさい

・APEXをImportするとき、Apex Clothing Error - No reference to RootNode いうエラー出る
→ルートジョイントの名前を、APEX出力で"RootNode"なっているぽく(ちゃんと調べてない)、インポート時に当該ジョイントが無いといわれる
→→ルートジョイントの名前を予め"RootNode"としておくといける、リターゲットとかやるなら全アセットで共通のレギュレーションとなるので早めに注意しておく

・apxファイルを保存するとき、Inputで該当する布だけ選択するようにする
→全部選択しているとSubmeshがうんたらみたいなエラーがでる、詳しくはわかりません
→複数布があるばあい、布毎にapxファイルを作成すればよさそう(やっていない)

https://i.gyazo.com/05898b9d76db92c251ee03a44ec96aa4.gif
無事できました

疑問
・表裏で2ジオメトリになってるようなモデルうまいこといくのか問題
→ウェイト100なのでうまいこと行きそう(?)
→マテリアル側で表裏判定できるので、そっちでやる

・髪はClothできれいに出るのか問題
→アニメつけたほうが気持ちいいきがします