道迷いの繰り言 その続き

旧 道迷いの繰り言 移行作業のみ実施

個人用メモ

VCによるdemura.netのODEsample2の反発係数設定について

//  衝突検出のコールバック関数
static void nearCallback(void *data, dGeomID o1, dGeomID o2)
{
static const int N = 4;    // 接触点数の上限は4個 staticを忘れずにつけてください.

static dContact contact[N];

int isGround = *1; // 衝突する2つのうちどちらかが大地なら大地の旗を立てます。
int n = dCollide(o1,o2,N,&contact[0].geom,sizeof(dContact)); // nは衝突点数
if (isGround) { // 大地の旗が立っていたら衝突検出機能を働かせる
for (int i = 0; i < n; i++) {
contact[i].surface.mode = dContactBounce; // 地面の反発係数を設定
contact[i].surface.bounce = 0.5; // (0.0~1.0) 反発係数は0から1まで

   // コンタクトジョイント生成
dJointID c = dJointCreateContact(world,contactgroup,&contact[i]);
  // 接触している2つのgeometryをコンタクトジョイントで拘束
  dJointAttach (c,dGeomGetBody(contact[i].geom.g1),
dGeomGetBody(contact[i].geom.g2));
}} }

修正点は上記

*1:ground == o1) || (ground == o2