0
我使用BulletSharp到Bullet集成到一個WPF應用程序。我的場景包括CollisionShape是BvhTriangleMeshShape()的CollisionObject的2個實例,以及一個球體。網目子彈碰撞檢測
DefaultCollisionConfiguration collisionConf = new DefaultCollisionConfiguration();
CollisionDispatcher dispatcher = new CollisionDispatcher(collisionConf);
CollisionWorld world;
world = new CollisionWorld(dispatcher, broadphase, collisionConf);
CollisionFilterGroups myGroup = (CollisionFilterGroups) 1;
CollisionFilterGroups collideMask = (CollisionFilterGroups) 4;
foreach(var ob in obstacles)
world.AddCollisionObject(ob.BulletObj.ColObj);
CollisionObject sphere_A = new CollisionObject();
double radius_A = 700;
Point3D ptA = new Point3D(3000, -200, 2800);
BulletSharp.Matrix tr_A = new BulletSharp.Matrix();
tr_A.set_Rows(0, new Vector4(1, 0, 0, 0));
tr_A.set_Rows(1, new Vector4(0, 1, 0, 0));
tr_A.set_Rows(2, new Vector4(0, 0, 1, 0));
tr_A.set_Rows(3, new Vector4((float)ptA.X, (float)ptA.Y, (float)ptA.Z, 1));
sphere_A.WorldTransform = tr_A;
SphereShape sphere_shape_A = new SphereShape((float)radius_A);
//Set the shape of the sphere
sphere_A.CollisionShape = sphere_shape_A;
world.AddCollisionObject(sphere_A);
world.PerformDiscreteCollisionDetection();
球面網格碰撞在兩個模型上都能正常工作。但是,當我嘗試檢查網格物體碰撞檢測時,它不起作用。我看到這可能是更多的Bullet問題,而不是BulletSharp問題。
問題:你球體對象的默認到不同的面具組?是否有不同的配置來啓用網狀網格碰撞檢測?
謝謝@Eivithari。通過「靜態」,你是指其變換未被修改的對象或物理引擎未移動的對象? – Nic
靜態我的意思是轉換不能改變。 BvhTriangleMeshShape不適用於任何轉換,因爲三角形存儲在優化結構中。如果我記得正確,就像AABB樹。改造它將需要不斷的重新計算,這是完全沒有意義的。對於兩個BvhTriangleMeshShapes也沒有碰撞檢測算法。 – Elvithari