情報は力ではない

UE4 とか Blender とか。

Blender で Rigify を使ってリグ付け、アニメーションを作った(+ UE4 にインポート)

Blender の Rigify を使ってみたかったので、そのメモ。 おまけでアニメーション付けて UE4 に持っていってみた。

Rigify の使い方は dskjal さんのブログに従った。すごくわかりやすい。 dskjal.com

version

Blender: 2.79

リグの生成

オブジェクトモードで、Shift + A を押し、アーマチュアを選択し、Human (Meta-Rig) を選択すると metarig が作成されます。

f:id:masahiro8080:20171202153647p:plain:w300

metarig を選択し、編集モードで作成しているモデルに metarig を合わせていきます。 T キーを押し、オプションから X 軸ミラーを押しておくと左右対称でボーンを編集できます。

顔のボーンを使うつもりがない場合は、ポーズモードで face ボーンを選択し、Rigify Type の Rig type:: を削除しておきます。

f:id:masahiro8080:20171202155028p:plain:w300

metarig の調整が終わったら、オブジェクトモードでプロパティのデータにある Rigify Buttons から Generate Rig を押し、リグを生成します。

f:id:masahiro8080:20171202155555p:plain:w300

生成されたリグ。

f:id:masahiro8080:20171202155701p:plain:w300

リグとメッシュの親子づけ

リグと親子づけするメッシュを選択してから、リグを選択し、Ctrl + P でアーマチュア変形から自動のウエイトでを選択すると親子づけされます。自動でウエイト付けされますが、調整が必要だと思うので、そこは手作業でウエイトをつける。

IK と FK

N キーを押し、Rig Layers でコントローラーの表示・非表示ができます。

f:id:masahiro8080:20171202160334p:plain:w300

ポーズモードで hand_ik.L 等の IK を選択し、N キーで表示されるプロパティシェルフから Rig Main Properties で IK/FK の編集をします。 IK_FK を 0 にし IK を有効にします。また、IK_Stretch を 0 にしておきます。0 でないとメッシュが伸びます。

f:id:masahiro8080:20171202161655p:plain:w300

forearm_ik.L 等の FK の場合は IK_FK を 1 にすると FK が有効になります。

あとはポーズモードでポーズを付けたり、アクションを付けたりします。

アニメーション

せっかくなので歩行モーションを作った。

f:id:masahiro8080:20171202161537g:plain:w300

おまけ

Blender からエクスポートし、UE4 にインポートしてみた。

f:id:masahiro8080:20171202161832p:plain:w300

UE4 でインポートするときは、Import animations にチェックを入れておく。

Hit Stopの実装の仕方

自分用にメモ。

Version

Unreal Engine 4.16.3

Sample

U-MA/HitStopSample · GitHub

Content

Hit stopの検証用にプロジェクトを作成。今回はTwin Stick Shooterを選択。

f:id:masahiro8080:20170805130733p:plain

敵となるEnemyPawnを作成。 1M_CubeとBox Collisionを設定した簡素なものです。

f:id:masahiro8080:20170805130750p:plain

ブループリントはこんな感じ。

f:id:masahiro8080:20170805130805p:plain

Hit Stopを実装するには次のような感じにします。
1. setCustomTimeDilationを0にする
2. 一定時間後にsetCustomTimeDilationを1にする

THit Stopがわかりやすい?ようにTickでEnemyPawnを一定の速度で回転させています。

動作は次のような感じ。

youtu.be

エフェクト等がないので、弾が当たると回転がただ止まってるように見えるけど 簡単なHit Stop実装はこんな感じです。

仮で目を作る時のメモ

最近、Autodesk Maya キャラクターモデリング造形力矯正バイブルをやってます。
Mayaの本だけど作り方は参考になると思って読みつつモデリングをしてます。

www.borndigital.co.jp

その中で仮の、眼球のシェーダを作る工程があって
blenderではどうすればできるだろうと思ったのでマテリアルノードの練習にと思ってやってみた。

blender versionは2.78b、Blenderレンダーでやってます。

マテリアルノードは次のような感じ。

f:id:masahiro8080:20170518162532p:plain

ジオメトリノードの生成(英語だとOrco。Original Coordinateの略かな?)から
メッシュの座標を取得して、RGB分離でZ座標の値をカラーランプの係数として使う。
カラーランプのカラーと他のマテリアルのスペキュラーをミックスして出力した。
このマテリアルを目に割り当ててみると次のように見える。

f:id:masahiro8080:20170518161938p:plain

正直なところ、ジオメトリノードの生成が何を返しているのかはよくわかってない。
ドキュメントを見ると

Using the Original Coordinates of the mesh.

と書いてあったのだけれど、よくわからなかった。

Geometry Node — Blender Manual

この辺りもちゃんと勉強しないとなぁ。

Level Designer Quick Startをやった。

ちゃんとUE4を1から学び直さないといけないなぁと思ってラーニングをやってる。

f:id:masahiro8080:20170421234431p:plain

Level Designer Quick Start

docs.unrealengine.com

ちっちゃな部屋を作りながら操作の仕方やアセットの配置の仕方、マテリアルの設定の仕方を学べる。
ここでちゃんと知ったことはLightmass Importance Volumeの意味とDirectional Lightで太陽を動かせること。

Lightmass Importance Volume

docs.unrealengine.com

Lightmass Importance Volumeについてはここでざっくりと学んだ。
これを設定することで必要な部分だけ品質の高いライティングをすることができる。 また、これを設定することでこの設定範囲内だけ詳細にライティングを計算すれば良いのでビルドが早くなるはず。

Directional Light

f:id:masahiro8080:20170421234314p:plain

平行光源。Atmosphere Sun Lightにチェックを入れ、Directional Lightを回転させることで 太陽を動かすことができる。太陽を動かすことで夜明けや夕焼け、夜を表現できる。
Atmosphere Fog(じゃなくていいかもだけど)で全体を明るくしておかないと太陽見れないので注意。

所感

この辺りの話は極め本でやったようなきがするのだけど、全く忘れてた。 やっぱりちゃんと毎日UE4に触れて作業をすることが大事だなと改めて思った。

Blender勉強会 Step 3に行ってきた。

Blender勉強会に行ってきた。

https://togebu.doorkeeper.jp/events/57339

今までスカルプトはとっつきづらいと思ってやってこなかったので 良い機会だなと思って参加した。東ゲ部、初参加でした。

@kurosaurusさんによるスカルプト講座

www.slideshare.net

ブラシのショートカットやDyntopo、Multiresolutionの使い方を学んだ。 スカルプトとは関係ないけど、「ビュー>レンズ」で画角を弄れるの知らなかったので学びだった。

@tomB_saikayaさんの講座

即興でskinモディファイアから手を作る方法やZBrushのtrimブラシ?っぽいブラシを作成する方法について解説していただいた。

skinモディファイアから手を作る方法では、頂点を枝分かれさせるときにメッシュが思った通りにならない場合があるけど、その場合はその枝分かれしている頂点を「ルーズとしてマーク」してあげるといいみたい。

f:id:masahiro8080:20170304232017p:plain

trimブラシっぽいブラシを作成する方法はScrape/Peaksを複製して「エリア平面」を「ビュー平面」に変更し、左のロックをオンにすると良い。

もくもくで作ったもの

スカルプト解説の際に作ってた何か。

f:id:masahiro8080:20170304231201p:plain:w300

skinモディファイアから手を作る方法を解説している際に作ってた手。

f:id:masahiro8080:20170304231000p:plain:w300

犬。

f:id:masahiro8080:20170304230518p:plain:w300

感想

初めてBlenderというかCG関係の勉強会に来たけど非常に学びになったし、刺激になった。 スカルプトは今まで使ってこなかったけど、少し慣れたので使えるところでは積極的に使っていきたいと思う。 東ゲ部Blender勉強会に参加して良かったし、非常に楽しかった。 講師の@kurosaurusさん、即興で解説していただいた@tomB_saikayaさん、スタッフのみなさんありがとうございました!

武器をアタッチする方法

武器をActorにアタッチする方法について少し調べたのでメモ。

アタッチする方法

端的に言うとattachToComponentを使えば良い。

f:id:masahiro8080:20170122123531p:plain:w200

これを使うことでParentSocket NameTargetのActorをアタッチすることができる。

docs.unrealengine.com

Targetへの値の渡し方は次の2種類あると思う(他にもあるのかな)。

  1. Add static mesh componentの戻り値を使う
  2. Spawn Actorの戻り値を使う

1.の方法はもんしょの巣穴blog [UE4] 武器切り替えで解説している方法。2.の方法はHow do I attach an Actor Blueprint to a socket in a Character Blueprint? - UE4 AnswerHub で解説している方法。

どちらがどういうメリット・デメリットがあるのかはまだわかってない。あまり違いはないのかもしれない。

短いけど、今日はこれで。

Blenderで作ったモデルをUE4にインポート

f:id:masahiro8080:20170108233709p:plain

Blenderで上図のようなモデルを作ったのでUE4に持ってきた時のメモ。

バージョン

Blender 2.77a
Unreal Engine 4.14.2

Export

Blenderで作ったモデルをfbxでエクスポート。設定は特にいじってないつもり。アニメーションはつけてないので、アニメーションの設定は 見ていない。
f:id:masahiro8080:20170108134736p:plain:w150f:id:masahiro8080:20170108134744p:plain:w150f:id:masahiro8080:20170108134752p:plain:w150

Import

fbxをUE4にインポート。 ここも特に設定はいじってないつもり。 詳しくはらりほまさんのBlender to UE4 (ver.2016) | rarilogを見た方が良いと思います。
f:id:masahiro8080:20170108135239p:plain:w150

インポートした結果がこちら。お腹周りの影が気になるので解消したい。
f:id:masahiro8080:20170108141027p:plain

マップにおいて見た。やはり影が気になる。
f:id:masahiro8080:20170108141322p:plain

インポート時の設定のNormal Import MethodをCompute NormalsからImport Normals and Tangentsに変更してみたら影が消えた。
f:id:masahiro8080:20170108234153p:plain

まだSmooth情報もない気がする。気のせいかもしれないけど。
もう少し調べてみたいと思う。

感想

FBXのExport/Importの設定がまだよく分かっておらず、こうすべきみたいな情報が まだ得られていない。色々試してみる必要がありそう。