PC用眼鏡【管理人も使ってますがマジで疲れません】 解約手数料0円【あしたでんき】 Yahoo 楽天 NTT-X Store

無料ホームページ 無料のクレジットカード 海外格安航空券 ふるさと納税 海外旅行保険が無料! 海外ホテル

log

2012.02.18 C++:スプリングボーン


以前ボーンの向きコンストレイントをプログラムで実装しましたが、今回はそれの応用で
動きに合わせて揺れるボーンというのを実装してみました。

実装方法としては以前の機能の他にバネ・ダンパモデルというのを使っているので、少し
ばかり紹介したいと思います。バネ・ダンパモデルはバネ係数k・ダンパ係数dを利用して
現在の併進運動エネルギーFを求めるというもので、以下のようになります。
F(t) = F(t-1) * d + V * k;
V = PrevPos - Pos;
いやぁ、とってもシンプルです。あえてこれ以上説明するとすると、高1物理で教わるバネ
の弾性力の公式F=kxの式に追加エネルギーとなるF*dがくっついただけです(というより
ここではV*k部分が追加エネルギーですが)。Vは前フレーム位置に戻ろうとする相対速度
ベクトルなので係数kを大きくするほど前フレーム方向に戻ろうと振れる力は大きくなり、
そしてdはF(t-1)を徐々の弱める働きをするので動いていない場合は揺れがなくなる、
というわけです。

ちなみに自分で独自に調べたりしたので、「実はkとdは逆なんじゃないかな…」とか、まだ
良く分かっていない処がありますが、まぁkもeもつまるところスケーリング係数という点で
同じなので、学術的な定義があってるかどうかは特に気にしていません笑。

さて、これでボーンを揺らすことができるようになりましたが、、ボーンの角度制限をちゃんと
つけないと駄目みたいです。動画では入れていませんが、試しに攻撃モーションをさせて
みると髪が頭を思いっきり貫通してしまいました;

実はボーンの角度制限読み込みだけでなく、マルチUVやLWSを利用したオブジェクト
単位の背景読み込み等など。LW回りでやりたいことはまだまだあったりします。難しい
ので後回しにしてますが苦笑;