🥋 チート900を数式で動かす
STAGE 5 ― 膝の置き場所 ―
クリア 0 / 9
STAGE 5

膝の置き場所

2関節IK と三平方の定理
🎯 ミッション
股関節と足首の位置から膝の位置を決める2関節IKを、三平方の定理だけで組み立てよう。膝が乗る円の中心と半径を式で出し、「膝が向く向き(ポール)」で1点に決める方法と、脚が伸び切るとその向きが不安定になる理由を説明できれば合格。
未達成
ねこ博士
アニメーションを作るとき、「足をここに置きたい」と先に決めることがよくある。床に着いている足は、前のコマと同じ場所から動かしてはいけない(動くと床の上を滑って見える)。蹴りの瞬間には、つま先をミットの位置に届かせたい。足の位置を決めたら、それに合わせて膝の位置を計算で決め直す。このように、手先や足先の位置から関節の位置を逆に求める計算を、逆運動学(インバース・キネマティクス、IK)という。股関節・膝・足首の2つの関節でつながった脚なら2関節IKだ。
うさ美
太ももとすねの長さは変わらないので、膝は「股関節から太ももの長さ」の所で、しかも「足首からすねの長さ」の所にある、ということですよね。
ねこ博士
そうだ。股関節を H、足首を A、太ももの長さを L₁、すねの長さを L₂ としよう。H から L₁ の点の集まりは、H を中心とする球。A から L₂ の点の集まりは、A を中心とする球。膝は、この2つの球が交わる所にある。2つの球が交わると、どんな形になると思う?
うさ美
シャボン玉が2つくっついたときの境目みたいに、円になると思います。
ねこ博士
その通り。H と A を結ぶ線を軸にした円になる。この円の中心と半径を求めよう。H と A の距離を d とする。膝 K から H と A を結ぶ線へ垂直に線を下ろし、その足を M とする。H から M までの長さを x、M から膝までの高さを h とすると、直角三角形が2つできる。三平方の定理で式を2つ書いてごらん。
H A K(膝) M L₁ L₂ x d − x h x² + h² = L₁²  (d − x)² + h² = L₂²
股関節 H と足首 A を結ぶ線(長さ d)に、膝 K から垂直に下ろした足が M。左の直角三角形 HMK と、右の直角三角形 AMK のそれぞれで、三平方の定理が成り立つ
うさ美
左右の三角形でそれぞれ三平方の定理を書いて、2つの式を引き算すると h² が消えます。それで x が出て、h は1つ目の式から出ます。
左の三角形:x² + h² = L₁² 右の三角形:(d − x)² + h² = L₂² 引き算(h² が消える):x² − (d − x)² = L₁² − L₂² 左辺を展開:x² − d² + 2dx − x² = 2dx − d² → 2dx = L₁² − L₂² + d² 答え:x = (L₁² − L₂² + d²) ÷ (2d) 、 h = √(L₁² − x²)
ねこ博士
見事だ。これで、膝が乗る円の中心は H から A の向きへ x 進んだ点 M、半径は h と分かった。H から A へ向かう長さ1の矢印を u とすると、M = H + x u。膝は M から、u に直角な向きへ h 離れた所にある。でも、u に直角な向きはぐるっと一周いくらでもある。円の上のどこに膝を置くかは、まだ決まっていない。
うさ美
本物の膝は、どこにでも曲がるわけではないですよね。膝はいつも、つま先と同じような向きに出ます。
ねこ博士
そう、その「膝を出したい向き」を矢印で与える。これをポール(極)と呼ぶことが多い。ポールの矢印から、u の向きの成分(内積で取り出せる)を引いて u に直角にし、長さを1にそろえたものを p とすれば、膝は1点に決まる。ふつうは、ポールとしてそのコマの膝の向き(今の膝の位置から作る)を使う。
u に直角にする:p = ポール − (ポール・u) u → 長さを1にそろえる 膝の位置:K = H + x u + h p
ポール:
股関節 H は固定。足首 A を動かすと、x と h が式から決まり、膝は2つの候補(白丸)のうちポールの側に置かれる。H と A の距離 d が L₁+L₂ を越えると、膝をまっすぐ伸ばしても届かない(赤い表示)
うさ美
足首を遠くへ動かすと「届かない」と出ました。d が太ももとすねの長さの合計より長いと、h のルートの中がマイナスになるからですね。
ねこ博士
そうだ。そのときは脚をまっすぐ伸ばすしかないが、それでも足首には届かない。床に着いている足でこれが起きると、足が床から浮いたり、床の上を滑ったりしてしまう。このアニメーションを動画に合わせたときにも、体の位置を動かしたせいで、床に着いている足に脚が届かないコマが出た。そこでは体のほうを、足が届く所まで寄せることで直している。
うさ美
もう1つ気になります。膝がほとんど伸び切っているときは、h がとても小さくなります。そのときもポールの向きはちゃんと決まるんですか?
ねこ博士
鋭いね。今の膝の位置からポールを作ると、それは「H と A を結ぶ線から膝へ向かう矢印」になる。脚がほぼ伸び切っていると、この矢印はとても短い。ステージ2で見た外積と同じで、短い矢印の向きは、点が数 mm ずれるだけで大きく変わる。実際にこのアニメーションでは、インパクトの瞬間に膝を 177° まで伸ばそうとしたとき、膝の曲がる向き(外積で求めた蝶番の軸)が1コマおきに裏返り、つま先が1コマごとにジグザグに動いてしまった。下の図はそれを再現したものだ。
膝を 120° から 179° まで、12 コマかけて伸ばしていく脚(上から見た図。足先の点の軌跡をオレンジで結んでいる)。点の位置にわずかなずれがあると、毎コマ外積で膝の向きを決める方法では、脚が伸び切った所で膝の向きが裏返り、つま先が左右に跳ぶ
うさ美
毎コマ外積で向きを決めると、最後の数コマでつま先が左右に跳んでいます。「引き継ぐ」にすると、まっすぐきれいに伸びていきます。
ねこ博士
直し方は2つ使った。1つは、膝がはっきり曲がっているコマで求めた向きを、伸び切ったコマへ引き継ぐこと。伸び切ったコマの前後で向きをなめらかにつなぎ、裏返ったら向きを反対にそろえる。もう1つは、蹴り脚の形そのものを、問題のなかった前の版の形(骨盤から見た座標で取り出したもの)に戻すことだ。どちらも「不安定な所では、その場の計算に頼らず、安定な所の情報を使う」という考え方だね。
うさ美
膝の向きは、つま先の向きとも関係がありますよね。膝とつま先がばらばらの向きを向いていたら、人の脚ではありえない形になります。
ねこ博士
その通りで、それも確かめている。すねの前の向き(膝が曲がる向き)とつま先の向きのずれは、ふつう 30° 前後までだ。このアニメーションでは一時期、踏み切りの直後に膝の曲がる向きが、つま先に対してぐるっと一周してしまうコマがあった。ずれの角度を内積で毎コマ計算して、大きすぎるコマを見つけ、足の向きや膝の位置を直した。IK は位置だけでなく、向きの約束も守らないと、人の体にならないんだ。
【このステージの成果】 2関節IK:股関節 H・足首 A・太もも L₁・すね L₂ から膝 K を求める。膝は2つの球の交わり= H と A を結ぶ線を軸にした円の上 円の中心までの距離 x = (L₁² − L₂² + d²) ÷ (2d)、半径 h = √(L₁² − x²)(三平方の定理2回を引き算) 膝 K = H + x u + h p(u は H→A の向き、p はポールから u の成分を引いて長さ1にした向き) d > L₁+L₂ なら届かない(床の足なら、体のほうを寄せる) 伸び切ると h もポールも小さくなり、向きが不安定に(つま先のジグザグ)。曲がっているコマの向きを引き継ぐ。膝とつま先の向きのずれも確かめる

確認クイズ

Q1. 太もも 0.4 m、すね 0.4 m、股関節から足首までの距離 d が 0.4 m のとき、股関節と足首を結ぶ線から膝までの距離 h は?

Q2. 股関節から足首までの距離 d が、太ももとすねの長さの合計より長いとどうなる?

Q3. 脚が伸び切ったコマで、その場の膝の位置や外積から膝の向きを決めないほうがよいのはなぜ?

← トップへ