Bulet その8はBulletで使えるジョイントのひとつである、バネジョイントを扱います。
バネジョイントは、その名の通りバネのような動きをするジョイントです。
追加のヘッダ
#include <BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h>
生成方法
btRigidBody body1; //剛体1
btRigidBody body2; //剛体2
btTransform local1; //剛体1のローカル行列
btTransform local2; //剛体2のローカル行列
btTypedConstraint* constraint = new btGeneric6DofSpringConstraint( body1, body2, local1, local2 );
constaint->buldJacobian();
g_World->addConstraint( constraint );
削除方法
ポイントジョイントと同じ
バネの設定
int index = 0; //0~2が平行移動x,y,z 3~5は回転移動x,y,z
constaint->enableSpring( index, true ); //バネを有効にする
constaint->setStiffness( index, 1.0f ); //バネの柔らかさ
constaint->setDamping( 1.0f ); //減衰率
モーターとして使う
btRotationalLimitMotor* rotateDesc; //回転モーター記述子
btTranslationalLimitMotor* transDesc; //平行移動モーター記述子]
rotateDesc = constaint->getRoatationLimitMoter();
transDesc = constaint->getTranslationalLimitMoter();
制限をかける
btVector3 limit;
constaint->setLinearLowerLimit( limit ); //移動下限
constaint->setLinearUpperLimit( limit ); //移動上限
btVector3 angLimit; //ラジアンで指定
constaint->setAngularLowerLimit( angLimit );
constaint->setAngularUpperLimit( angLimit );
int axis = 0; //バネの設定時のindexと同じ
constaint->setLimit( axis, 0.0f, 1.0f ); //axisの値によって設定する数値を変える
最終更新:2011年02月21日 17:48