diff --git a/examples/SharedMemory/plugins/tinyRendererPlugin/TinyRendererVisualShapeConverter.cpp b/examples/SharedMemory/plugins/tinyRendererPlugin/TinyRendererVisualShapeConverter.cpp index 90ddbb4d8..11f207132 100644 --- a/examples/SharedMemory/plugins/tinyRendererPlugin/TinyRendererVisualShapeConverter.cpp +++ b/examples/SharedMemory/plugins/tinyRendererPlugin/TinyRendererVisualShapeConverter.cpp @@ -243,10 +243,13 @@ void convertURDFToVisualShape(const UrdfShape* visual, const char* urdfPathPrefi vertices.push_back(vert); } } - btVector3 pole1 = p1 - dir * rad; - btVector3 pole2 = p2 + dir * rad; - vertices.push_back(pole1); - vertices.push_back(pole2); + if (visual->m_geometry.m_type==URDF_GEOM_CAPSULE) + { + btVector3 pole1 = p1 - dir * rad; + btVector3 pole2 = p2 + dir * rad; + vertices.push_back(pole1); + vertices.push_back(pole2); + } } else { //assume a capsule along the Z-axis, centered at the origin @@ -260,10 +263,13 @@ void convertURDFToVisualShape(const UrdfShape* visual, const char* urdfPathPrefi vert[2] = -len / 2.; vertices.push_back(vert); } - btVector3 pole1(0, 0, + len / 2. + rad); - btVector3 pole2(0, 0, - len / 2. - rad); - vertices.push_back(pole1); - vertices.push_back(pole2); + if (visual->m_geometry.m_type==URDF_GEOM_CAPSULE) + { + btVector3 pole1(0, 0, + len / 2. + rad); + btVector3 pole2(0, 0, - len / 2. - rad); + vertices.push_back(pole1); + vertices.push_back(pole2); + } } visualShapeOut.m_localVisualFrame[0] = tr.getOrigin()[0]; visualShapeOut.m_localVisualFrame[1] = tr.getOrigin()[1]; @@ -612,6 +618,17 @@ void TinyRendererVisualShapeConverter::convertVisualShapes( } //printf("UrdfMaterial %s, rgba = %f,%f,%f,%f\n",mat->m_name.c_str(),mat->m_rgbaColor[0],mat->m_rgbaColor[1],mat->m_rgbaColor[2],mat->m_rgbaColor[3]); //m_data->m_linkColors.insert(linkIndex,mat->m_rgbaColor); + } else + { + ///programmatic created models may have the color in the visual + if (vis && vis->m_geometry.m_hasLocalMaterial) + { + for (int i = 0; i < 4; i++) + { + rgbaColor[i] = vis->m_geometry.m_localMaterial.m_matColor.m_rgbaColor[i]; + } + } + } } diff --git a/examples/pybullet/gym/pybullet_utils/examples/combineUrdf.py b/examples/pybullet/gym/pybullet_utils/examples/combineUrdf.py index 09066451a..77d71ad0a 100644 --- a/examples/pybullet/gym/pybullet_utils/examples/combineUrdf.py +++ b/examples/pybullet/gym/pybullet_utils/examples/combineUrdf.py @@ -32,6 +32,7 @@ jointPivotXYZInChild = [0,0,0] jointPivotRPYInChild = [0,0,0] newjoint = ed0.joinUrdf(ed1, parentLinkIndex , jointPivotXYZInParent, jointPivotRPYInParent, jointPivotXYZInChild, jointPivotRPYInChild, p0._client, p1._client) +newjoint.joint_type = p0.JOINT_FIXED ed0.saveUrdf("combined.urdf") @@ -47,5 +48,5 @@ ed0.createMultiBody([0,0,0],orn, pgui._client) pgui.setRealTimeSimulation(1) while (pgui.isConnected()): - pgui.getCameraImage(320,200) + pgui.getCameraImage(320,200, renderer=pgui.ER_BULLET_HARDWARE_OPENGL) time.sleep(1./240.)