public void 剛体と剛体の間に6軸バネ拘束を追加する(六軸ジョイントにつながる剛体のペア つなぐ剛体のペア, 六軸可動制限 六軸可動制限, 六軸バネ剛性 六軸バネ) { var bodyA = つなぐ剛体のペア.剛体A.剛体; var bodyB = つなぐ剛体のペア.剛体B.剛体; var frameInA = つなぐ剛体のペア.剛体A.ワールド変換行列; var frameInB = つなぐ剛体のペア.剛体B.ワールド変換行列; var 拘束 = new Generic6DofSpringConstraint(bodyA, bodyB, frameInA.ToBulletSharp(), frameInB.ToBulletSharp(), true); // 第五引数の効果は謎。どちらでも同じ様に見える……。 var c_p1 = 六軸可動制限.移動制限.移動制限1; var c_p2 = 六軸可動制限.移動制限.移動制限2; var c_r1 = 六軸可動制限.回転制限.回転制限1; var c_r2 = 六軸可動制限.回転制限.回転制限2; 拘束.LinearLowerLimit = new BulletSharp.Math.Vector3(c_p1.X, c_p1.Y, c_p1.Z); // 型はベクトルだがベクトル量ではないのでZは反転しない。 拘束.LinearUpperLimit = new BulletSharp.Math.Vector3(c_p2.X, c_p2.Y, c_p2.Z); 拘束.AngularLowerLimit = new BulletSharp.Math.Vector3(c_r1.X, c_r1.Y, c_r1.Z); 拘束.AngularUpperLimit = new BulletSharp.Math.Vector3(c_r2.X, c_r2.Y, c_r2.Z); 拘束にある一つの自由度へのバネを設定する(六軸バネ.平行移動成分.X, 0, 拘束); 拘束にある一つの自由度へのバネを設定する(六軸バネ.平行移動成分.Y, 1, 拘束); 拘束にある一つの自由度へのバネを設定する(六軸バネ.平行移動成分.Z, 2, 拘束); 拘束にある一つの自由度へのバネを設定する(六軸バネ.回転移動成分.X, 3, 拘束); 拘束にある一つの自由度へのバネを設定する(六軸バネ.回転移動成分.Y, 4, 拘束); 拘束にある一つの自由度へのバネを設定する(六軸バネ.回転移動成分.Z, 5, 拘束); _dynamicsWorld.AddConstraint(拘束); }
public void 剛体と剛体の間に6軸バネ拘束を追加する(六軸ジョイントにつながる剛体のペア つなぐ剛体のペア, 六軸可動制限 六軸可動制限, 六軸バネ剛性 六軸バネ) { _拘束ファクトリ.剛体と剛体の間に6軸バネ拘束を追加する(つなぐ剛体のペア, 六軸可動制限, 六軸バネ); }