diff --git a/examples/ExampleBrowser/CollisionShape2TriangleMesh.cpp b/examples/ExampleBrowser/CollisionShape2TriangleMesh.cpp index 6443df29d..ee106cdd5 100644 --- a/examples/ExampleBrowser/CollisionShape2TriangleMesh.cpp +++ b/examples/ExampleBrowser/CollisionShape2TriangleMesh.cpp @@ -141,6 +141,7 @@ void CollisionShape2TriangleMesh(btCollisionShape* collisionShape, const btTrans if (pol) { + int baseIndex = vertexPositions.size(); for (int v = 0; v < pol->m_vertices.size(); v++) { vertexPositions.push_back(pol->m_vertices[v]); @@ -152,9 +153,9 @@ void CollisionShape2TriangleMesh(btCollisionShape* collisionShape, const btTrans { for (int ii = 2; ii < pol->m_faces[f].m_indices.size(); ii++) { - indicesOut.push_back(pol->m_faces[f].m_indices[0]); - indicesOut.push_back(pol->m_faces[f].m_indices[ii - 1]); - indicesOut.push_back(pol->m_faces[f].m_indices[ii]); + indicesOut.push_back(baseIndex+pol->m_faces[f].m_indices[0]); + indicesOut.push_back(baseIndex + pol->m_faces[f].m_indices[ii - 1]); + indicesOut.push_back(baseIndex + pol->m_faces[f].m_indices[ii]); } } } diff --git a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp index 1696b2e9f..a0cec405a 100644 --- a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp +++ b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp @@ -5029,8 +5029,13 @@ bool PhysicsServerCommandProcessor::processCreateCollisionShapeCommand(const str convexHull->addPoint(pt * meshScale, false); } + if (clientCmd.m_createUserShapeArgs.m_shapes[i].m_collisionFlags & GEOM_INITIALIZE_SAT_FEATURES) + { + convexHull->initializePolyhedralFeatures(); + } convexHull->recalcLocalAabb(); convexHull->optimizeConvexHull(); + compound->addChildShape(childTransform, convexHull); } } @@ -12217,6 +12222,8 @@ bool PhysicsServerCommandProcessor::processRequestCollisionShapeInfoCommand(cons if (bodyHandle->m_multiBody) { b3CollisionShapeData* collisionShapeStoragePtr = (b3CollisionShapeData*)bufferServerToClient; + collisionShapeStoragePtr->m_objectUniqueId = bodyUniqueId; + collisionShapeStoragePtr->m_linkIndex = linkIndex; int totalBytesPerObject = sizeof(b3CollisionShapeData); int maxNumColObjects = bufferSizeInBytes / totalBytesPerObject - 1; btTransform childTrans; diff --git a/examples/SharedMemory/SharedMemoryPublic.h b/examples/SharedMemory/SharedMemoryPublic.h index 0ab9df78d..c2267829c 100644 --- a/examples/SharedMemory/SharedMemoryPublic.h +++ b/examples/SharedMemory/SharedMemoryPublic.h @@ -940,6 +940,7 @@ enum eUrdfCollisionFlags { GEOM_FORCE_CONCAVE_TRIMESH = 1, GEOM_CONCAVE_INTERNAL_EDGE = 2, + GEOM_INITIALIZE_SAT_FEATURES = URDF_INITIALIZE_SAT_FEATURES, }; enum eUrdfVisualFlags