これまでのStickManに胴体をつけました。これにより微妙なポーズをつけられるようになりました。
胴体をつくる
これまでのStickManを構成する部品は「円」と太い「線」で、それらを組合せて人型を描画していました。描画は簡単高速なのですが、その分どうしても細かな動作に物足りなさがあります。肩がないので横を向くとか手を伸ばして上半身を傾けるとかが描画できないのです。そこで「胴体」を新たな部品として作ることにしました。
構造図
構造図です。これまでの11のノードを15に増やし、胴体部分の6つのノードを胴体を表現する境界線で囲みます。
滑らかな胴体の形
胴体描画については専用の描画関数を作る必要があります。胴体を形作る4つのNode「左右の肩と腰」を取り囲む境界線です。それぞれのNodeに2ヶ所の接点を持つのでその位置を求める必要があります。
各ノードを線でつなぐ
各ノードには2つの設定がある
2つの円の接線に関してはネットを検索すればいくつか参考になる記事があります。
接線は4本ある
2つの円の境界線はその円が接することがない限り4本あります。人間が見ればどの線を採用するかは一目瞭然ですが、システムを作る際はその選択手順を具体的に記述しなければいけません。
今回は「体の中心から最も遠い点を接点とする」ということにしました。四つの接点と体の中心点を引き数にして最も遠い点を答えとして返す関数を作りました。
ユーザーコントロール
ユーザーコントロール「ボディ」です。両肩、両腰に加え首と「体の中心」の6つのNodeとそれらを取り囲む矩形でできています。
組み立てる
「胴体」に首と手足をくっつけて完成です。
機能は
・首を動かす
・手を動かす
・肘を動かす
・肩を動かす
・腰を動かす
・膝を動かす
・足先を動かす
です、手、肘、肩、腰、足についてはShiftキーを押しながらドラッグすると隣のNodeが連動して動き、実際の人間の動作に近くなるようにしています。
コメント