読者です 読者をやめる 読者になる 読者になる

妹でもわかるUnrealEngine4

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

Blender修行(20) IKとFK

「骨が入ったということで、それを動かせるように準備をする」

妹「あれ? 今までも動いてたと思うんだけど」

「あれはFKで動かしていた。でも手足を動かすのにはIKを使いたい」

妹「また知らない言葉が出てきた」

「FKというのは、フォワードキネマティクスの略。日本語で言えば順運動ってとこだと思う。関節を正しく動かしていけば、手足も正しい位置にいくという考え方。 IKはインバースキネマティクス、逆運動。手足の位置を決めれば、それに合わせて関節の位置もだいたいわかるだろって考え方」

妹「具体的にどういうことなのかさっぱり」

「SpriteStudioにも両方あったと思うんだけど。普通のがFKで、IKもあったような気が」

妹「……記憶にございません」

「おおざっぱに説明すると、FKっていうのは関節がカタいフィギュアの動かし方。手首を動かす時は手首のとこをもってひねる。肘や肩も同じように。その点IKはもっと関節がユルいフィギュア。手首をひっぱると肘や肩も適当に動いちゃう感じ」

妹「あ、なんかわかってきたかも」

「ユルいって言っても、CGなわけだから、何もしなくてもダランってなったりはしないんだけど。動かす時だけはそうなる」

f:id:una_unagi:20160706223403p:plain
f:id:una_unagi:20160706224039p:plain

「これがお手本のように、足にIKを設定した状態。くるぶしのあたりと、ひざのところに、肉を動かすためのボーンとは別に、IK制御用ボーンを追加してあって、そこを動かすと動かす」

妹「そのボーン足から離れてるみたいなんだけど」

「ボーンの接続を切ってあるから自由に動く、IKの側でもなるべく近くまで行こうと努力する。今回は足の2つのボーンだけが対象だからこれ以上いけない。でももっとIKの範囲を広げて、全身軟体状態にすると届く範囲は広がる。磁石みたいな感じかな」

妹「足先が磁石に反応する、関節の作りが甘いフィギュア……謎すぎる」

「イメージの話だから。もっと近づけた場合は足が届くけど、そうすると今度は途中の関節をどういう風に曲げるかという問題が出る。人間やフィギュアは可動の限界があるけど、CGの場合放っておくとどうとでも動く。IKが頑張るのは目標に近づけるためで、人間らしく動くことじゃないから」

妹「いやそこは人間らしく動いてくれないと」

「その設定方法も色々あるんだけど、とりあえず膝のところにある追加のIKで、膝の位置関係を調整してある」

妹「太ももらへんをFKで動かしてもいいのでは? フィギュアだとそうするでしょ」

「それも出来る。足の位置は動かせないけど、ふとももを回して、膝の向きを変えることは出来る。今回のケースだと動かす必要がある関節も少ないから、それで良さそうな気もする」

妹「というか全部FKでも良かったのでは?」

「出来なくはないんだけど、足を地面に付けるとかはIKがやりやすい。足を地面のとこに持っていくだけで、足がちょうど地面につくように曲がってくれるのはありがたいんだよ」

docs.unrealengine.com

「最近はゲームエンジン側でのリアルタイム表示でもIKを使って、地面に足がつくように調整しているものがある。Blenderの分とは別に設定しないと駄目だと思うけど、UnrealEngine4でも出来る。坂登る時に足が突き抜けたり、浮いたりするのって見たことあるでしょ?」

妹「見たことある気がする。ハシゴに足がかかってないのとか。あれはしょうがないものだと思ってたけど」

「固定のアニメーションよりも負荷がかかるし、プログラムも複雑になるから、そこまでこだわるのは厳しかったんだと思う。周囲の状況に応じて自然にアニメーションさせる時にはIKの考え方が便利」