Bullet その8 バネジョイント


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

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の値によって設定する数値を変える
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。