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(拘束);
        }
Esempio n. 2
0
 public void 剛体と剛体の間に6軸バネ拘束を追加する(六軸ジョイントにつながる剛体のペア つなぐ剛体のペア, 六軸可動制限 六軸可動制限, 六軸バネ剛性 六軸バネ)
 {
     _拘束ファクトリ.剛体と剛体の間に6軸バネ拘束を追加する(つなぐ剛体のペア, 六軸可動制限, 六軸バネ);
 }