【UE4】カノちゃんの腕をLeapMotionで動かす【AdventCalendar11日目_前編】
UE4のAdventCalendar11日目です。
今回はLeapJamの時に借りっぱなしのLeapMotionを使ってみたいと思います。
本来やろうとしてたことが思ったより長くなってしまったので分離しました。
UE4.10です。
カノちゃんの手とLeapを連動させる
正直アドカレ用のネタとして考えてたのですが、出来るかどうかわかってなかったので賭けでしたw
すごい初歩的なミスだった模様
これ多分服の外側しかないからペラペラな肘になるのかな
腕を伸ばして動かせばいい話なんだけどね pic.twitter.com/KVRXKVDY3O
— てんちょー (@shop_0761) November 26, 2015
以下はLeapMotionコンテンツ内のLeapBasicRiggedCharacterを参考対象に話を進めていきます。頭のない黄色いモデルのやつです。
プラグインとかの導入方法はこちらを参考にしてください。今回は省略します。
肝となる部分はこの辺だと思われます。
- 操作したいActorへのInterfaceの追加
- 子要素になるLeapAnimBodyChildActorの追加
- BasicCharacter_AnimBlueprintの中身のコピー
- Initialize Variables if New関数 ★
- Set Local Variables From Anim Body関数 ★
- ArmScalingの初期値
★印のやつはマジでどのタイミングで呼ばれてるか分かりませんw BPデバッガ、ブレークポイント、C++のコードを追ってみたものの見つけられず困惑 (PrintStringが出力されるので確実に動いている…
これどこから呼ばれてるかわからない関数がある上にbreakPoint仕込んでも止まらない、けど関数の最初のノードにつながってるとこ切ると正常に動かないものが…
— てんちょー (@shop_0761) November 25, 2015
だれか知ってる方がいれば教えてほしいです。
なので今回は動けばいいやくらいのスタンスでいきます。
やることは大きく分けて4つです。
BasicCharacter_AnimBlueprintから拝借
以下では貼り付けていくとどんどん変数が追加されるので、ノードを右クリック->変数"--"を作成 みたいな感じでひたすら追加しました。(なんかいい方法ないのかな
まずはAnimGraphから IK周りを貼っつけたものがこちらです。
Headは今回はいらないなと思って切り捨てました。
そしてEventGraphからはこの辺を頂きました。 先に★印の関数を作成して、中身をコピーしてからこっちのほうを貼り付けるとよいです。
これはEventBluePrintUpdateAnimationにつながってればおkです。
今回はこのノードの出番ではなさそうなのでコピーしてきませんでした。(きっとこれもやると他の全部の関数をお引越しさせなきゃならなくなりそう…
これがなくても必要なところは動いてくれてるのでよしとしました。
で、忘れてはならないのはArmScalingの初期値の設定です。これを忘れてたばっかりにこうなりました。
ダメかと思ってた矢先に進捗出ました
ロックバスター風の手になっちゃうのはさておきとりあえずLeapで他キャラの腕が動きました pic.twitter.com/CiPj2txSFs
— てんちょー (@shop_0761) November 26, 2015
その後なぜか奇跡的に発見できたので滞り無く進められましたw
でこの変数、いじってみるとなかなかシュールでこんなこともできました。
@shop_0761 カノカノのギガントピストル!! pic.twitter.com/gNWhmz5Kux
— てんちょー (@shop_0761) 2015, 11月 26
動かしたいActorにChildActorを追加
一応LeapAnimBodyChildActorに名前変えておきます。
で、設定はこんな感じ
LeapAnimBodyConnectorをChildActorClassにします。 このActorの位置はキャラによると思うので高さとか調整しました。
ActorのBPの設定
BeginPlayのところにこれらを繋いであげます。コメントで言うSet convenience pointersの部分です。
Interfaceの追加
こちらはActorのBPにあるクラスの設定から追加できます。
追加したら、AnimBodyの中身も設定します。 Interfaceのところにあると思うので設定。
だいたいこんなところです。抜けがあるかもしれませんが、Leap側のActorやAnimBPを参考にするとよさそうです。
間違ってるところとか気になるところがあればtwitter等で気軽に声かけてください
これを使って遊んでみたの(後編)がこちら