前回はラグドールを作りながらバグ取りを行いました。
今回は手のモデル作成を行います。
思い返せば今から 5年と 2ヶ月前、001話で目標を立てた時から
この手のモデル作成を目指して頑張ってきました。
まだまだ当時の目標レベルには到達していないツールですが、近づいてきていると思います。
まぁ、入力インタフェースの作成に途中から力を入れ始めて、これができればゴールみたいな流れになりつつありますが…
そんな入力インタフェースの構想は大学生の頃から抱いていました。
つまり着想からここまで 8年くらいでしょうか。(ほんと、さっさと結果出したいです…)
088話にて大きさの基準となるモデルを用意しています。
これに重なるように物理オブジェクトとコンストレイントを設定し、まずは左手のモデルを作成します。
どんなの作りましょう?
色々構想はしてきましたが、作業するとちょっとむずかしい。
また地味な作業が延々と続きます。(誰か…代わって…)
仮止めです。これを読み込むと…
バラバラ…
では、パーツに名前を付けて、コンストレイントで繋げます。
…リネームしました。(疲れる)
コンストレイントを一つ一つ丁寧に設置していきます。(疲れます…)
コツコツと進めます。
とりあえず全部繋げました。
落下させてもバラバラにはならないはずです。
…何この変な振動、そしてそんなに指の付け根は開きません。
こういう不具合の対策としてストッパーなるオブジェクトをCompoundします。
Compound しました。
狙い通りおかしな関節動作はなくなり、振動も抑制されました。
続いて関節角度の設定を行います。
TwistSpan を 1.6 にしてみました。
なんの拷問を受けた後かと思う状態ですね…これはいけない。同様にストッパーを付けます。
少しずつ調整を重ねていきます。
だいぶそれらしく動くようになってきました。
気づいたことに、人差し指の付け根がうまく曲がりません。
人差し指、小指の開き角も調整する必要があります。
手のひらの部分をどうにか固定できないかと、Compoudシェイプでまとめてみたりはしたのですが…
安定はするのにオフセットが発生して、人間の手の形を保てなくなりました。
どうしてCompoundシェイプを使うとコンストレイントがここまでズレてしまうのか…別の方向性で模索してみます。
だいぶモデルが安定してきました。
手首のスイング角はこんな設定で自然な気がします。
指の関節には上記のとおりオフセットを与えます。
先ほどオフセットを与えた関節にはTwistSpan 0.9 を与えました。
ひとまず握る、という表現はできそうですね。
指の付け根のスイング角、両端は 0.5, ミドルとリングには 0.3 を設定しました。
インデックスからピンキーまではこれくらいの自由度で十分な気がします。
かなり自然な手の表現ができることを確認しています。
サムの付け根はこんな感じの設定でいきます。
サムの基骨と末節骨は硬めの値を設定しました。
ここで訂正ですが、サムの付け根はさらに自由度を広げて次のとおりに修正しました。
インデックスとサムを使って輪っかを作ることが出来ないことに気づいたので、インデックスの付け根は
次に示す通りの修正を加えました。
これで調整はひと通り完了です。
振る舞いを見てみましょう。
手ですね。手です。
良いでしょう。
今回は手のモデルを作成しました。
次回は087話で求めた指先位置に
モデルの指先位置を持っていく処理を追加して、それらしい仮想空間の手というものを実現してみます。
いよいよ私の研究が始まりそうです。
テンション上がってきたー!
2014/09/25 初記。
2014/10/04 更新。