/// <summary> /// 6軸可動制限を作る /// </summary> /// <param name="jointParam">6軸ジョイントパラメータ</param> /// <returns>6軸可動制限</returns> private Joint6Restriction CreateRestriction(Spring6DofJointParam jointParam) { var movementRestriction = new Joint6MovementRestriction(jointParam.MoveLimitationMin, jointParam.MoveLimitationMax); var rotationRestriction = new Joint6RotationRestriction(jointParam.RotationLimitationMin, jointParam.RotationLimitationMax); return(new Joint6Restriction(movementRestriction, rotationRestriction)); }
/// <summary> /// 6軸ジョイントに繋がる剛体のペアを作る /// </summary> /// <param name="jointParam">6軸ジョイントパラメータ</param> /// <returns>6軸ジョイントに繋がる剛体のペア</returns> private Joint6ConnectedBodyPair CreateConnectedBodyPair(Spring6DofJointParam jointParam) { var bodyA = rigidBodies[jointParam.RigidBodyAIndex]; var bodyAworld_inv = Matrix.Invert(bulletManager.GetWorld(bodyA)); var bodyB = rigidBodies[jointParam.RigidBodyBIndex]; var bodyBworld_inv = Matrix.Invert(bulletManager.GetWorld(bodyB)); var jointRotation = jointParam.Rotation; var jointPosition = jointParam.Position; var jointWorld = Matrix.RotationYawPitchRoll(jointRotation.Y, jointRotation.X, jointRotation.Z) * Matrix.Translation(jointPosition.X, jointPosition.Y, jointPosition.Z); var connectedBodyA = new Joint6ConnectedBody(bodyA, jointWorld * bodyAworld_inv); var connectedBodyB = new Joint6ConnectedBody(bodyB, jointWorld * bodyBworld_inv); return(new Joint6ConnectedBodyPair(connectedBodyA, connectedBodyB)); }
private Joint6Stiffness CreateStiffness(Spring6DofJointParam jointParam) { return(new Joint6Stiffness(jointParam.SpringMoveCoefficient, jointParam.SpringRotationCoefficient)); }