• Breaking News

    Bilateral Advancement Separation Functions Hello, I have recently implemented continuous collision detection using Conservative Advancement and I am currently trying to switch to Bilateral Advancement as described by Erin Catto in his GDC 2013 talk "Continuous Collision". However I am having trouble finding the right separation functions to use in 3D. I think I have the Vertex-Vertex, Vertex-Face, Edge-Face and Face-Face separation functions working correctly but I am unsure of the Vertex-Edge and Edge-Edge case. I have found (from the bullet forums) how to get the separation axis for the Edge-Edge case using: Vector3 EdgeA = closestFeatures.verticesA[1] - closestFeatures.verticesA[0]; EdgeA.Normalize(); Vector3 EdgeB = closestFeatures.verticesB[1] - closestFeatures.verticesB[0]; EdgeB.Normalize(); Vector3 Axis = Vector3::CrossProduct(EdgeA, EdgeB); if (Vector3::DotProduct(closestFeatures.verticesB[0] - closestFeatures.verticesA[0], Axis) < 0.0f) { Axis = -Axis; EdgeB = -EdgeB; } But I am unsure of where to go from here, I'm sure it is something simple that I am missing. If anyone who has implemented technique before could help me, it would be greatly appreciated. Thanks https://ift.tt/eA8V8J

    Hello, I have recently implemented continuous collision detection using Conservative Advancement and I am currently trying to switch to Bilateral Advancement as described by Erin Catto in his GDC 2013 talk "Continuous Collision". However I am having trouble finding the right separation functions to use in 3D. I think I have the Vertex-Vertex, Vertex-Face, Edge-Face and Face-Face separation functions working correctly but I am unsure of the Vertex-Edge and Edge-Edge case. I have found (from the bullet forums) how to get the separation axis for the Edge-Edge case using: Vector3 EdgeA = closestFeatures.verticesA[1] - closestFeatures.verticesA[0]; EdgeA.Normalize(); Vector3 EdgeB = closestFeatures.verticesB[1] - closestFeatures.verticesB[0]; EdgeB.Normalize(); Vector3 Axis = Vector3::CrossProduct(EdgeA, EdgeB); if (Vector3::DotProduct(closestFeatures.verticesB[0] - closestFeatures.verticesA[0], Axis) < 0.0f) { Axis = -Axis; EdgeB = -EdgeB; } But I am unsure of where to go from here, I'm sure it is something simple that I am missing. If anyone who has implemented technique before could help me, it would be greatly appreciated. Thanks

    from GameDev.net http://bit.ly/2VLXvWY

    ليست هناك تعليقات

    Post Top Ad

    ad728

    Post Bottom Ad

    ad728