前回の続きです。CompoundShape 対応を行います。
Shift + D でメニューを表示し、MargeShape を選択します。
結果は良いですが、セーブしてロードし直すと別のシェイプに置き換わるという不具合がありました。
新しくシェイプ情報を保存できるようにして対応。
一発では解決できず…
オブジェクトには描画用モデルがアタッチされているのですが、シェイプ統合後はそれらのオフセットが無視されていました。
なのでこれにも対応。
さて、更にシェイプ統合には重心位置の決定という問題があります。
この重心位置を決めるには更に CompoundShape でラップして重心位置がシェイプの中心に配置されるようにする必要があります。
さらに統合前の剛体の質量も考慮するようにしました。
詳細は示すまでもなく、配置関係の行列を保存、復元時に利用する、といったことを行うだけです。
誰でも解くことができます。(頭のわるい人でも試行錯誤の末に…つまり私は頭悪い人?)
さて、正しく動作しているか調べてみます。
おっと、その前にオブジェクトにアタッチしている描画ノード情報の編集機能を追加します。
はい、対応しました。これでいつでも非表示の物理オブジェクトや、オフセットをずらした描画が可能になります。
では Blender にて次のオブジェクトを作成します。
Kimberlite で読み込み、内部の球の質量を大きくしてから両者を統合します。
はい、どんなに倒しても起き上がる、「起き上がり小法師」の動作を実現できました。
確認は以上です。
もう一つ重要な機能を加えたいと思います。
ConeTwist のコンストレイントのフレーム再設定機能です。
これが出来るようになると、掌屈、背屈、尺屈、橈屈の制限角度が正確に表現できるようになります。
機能追加中…
BodyA, Bそれぞれの offsetFrame をX, Y, Z 軸で任意回転できるようにしました。
テスト中にエンバグを発見。重心を再設定すると描画オブジェクトのオフセット位置が…
こちら修正します。
はい、修正しました。
そろそろ機能が出揃った感じでしょうか。
簡単なラグドールというものを作ってみます。
Blender でボーンとスキンメッシュ設定を行います。
まだ、関節の制限角度の設定が不十分なのでひと通り設定してみます。
簡単なアゴからいきますか…
Twist Span 0.4, OffsetFrame Rotation X BodyA 0.4
こんな感じでしょうか?
首の可動範囲はこんな感じでしょうか…
背中…
肩とヒジを設定、指の骨が重かったのでぐっと軽くしました。
手首を設定
指の関節を設定…バグなのかな、Swing パラメータが 1 以上にならないと有効にならない。
ヒザ関節を設定、これは単純ですね。
股関節を設定、この作業…だんだん面白くなってきました。
最後に足首と、足の親指の関節を設定して完了です。
適当にパーツを引っぱり上げて、関節設定の確認をします。
おかしいな…なんか、いけないことをしている気になってきた。
はい、ではバグらしき Swing 値の反映関係を修正します。
次回の進捗報告をお楽しみに!
早速不具合の原因を発見、別に不具合ということではなく仕様でした。
Fix Thresh の値より大きくないと Swing 値は有効に働かないだけでした。
なので Swing 値 0.1 を有効にしたい場合は Fix Thresh 値を 0.1 まで下げます。
ただし、動作不安定になるので注意が必要です。
201132/07/28 初記。
201132/09/01 追記。