個人用メモ
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