def _publish_rviz_sim_cameras(self):
     
     marker_array=MarkerArray()
     for p in self.payloads:
         payload=self.payloads[p]
         msg=payload.payload_msg           
         
         id = 0
         
         for i in xrange(len(msg.visual_geometry.mesh_resources)):
             marker=Marker()
             marker.ns="payload_" + msg.name
             marker.id=id
             marker.type=marker.MESH_RESOURCE
             marker.action=marker.ADD     
             marker.mesh_resource=msg.visual_geometry.mesh_resources[i]
             marker.mesh_use_embedded_materials=True
             
             marker.pose = rox_msg.transform2pose_msg(rox_msg.msg2transform(msg.pose) * rox_msg.msg2transform(msg.visual_geometry.mesh_poses[i]))                     
             marker.header.frame_id = payload.attached_link
             marker.scale=msg.visual_geometry.mesh_scales[i]
             if i < len(msg.visual_geometry.mesh_colors):
                 marker.color=msg.visual_geometry.mesh_colors[i]
             else:                
                 marker.color.a=1
                 marker.color.r=0.5
                 marker.color.g=0.5
                 marker.color.b=0.5            
             marker.header.stamp=rospy.Time.now()
             marker.frame_locked=True
             marker._check_types()
             #marker.colors.append(ColorRGBA(0.5,0.5,0.5,1))
         
             marker_array.markers.append(marker)
             id += 1 
         for i in xrange(len(msg.visual_geometry.primitives)):
             marker=Marker()
             marker.ns="payload_" + msg.name
             marker.id=id
             primitive = msg.visual_geometry.primitives[i]
             primitive_type = primitive.type
             if primitive_type == SolidPrimitive.BOX:
                 marker.type=Marker.CUBE
                 assert len(primitive.dimensions) == 3
                 marker.scale = Vector3(*primitive.dimensions)
             elif primitive_type == SolidPrimitive.CYLINDER:
                 marker.type=Marker.CYLINDER
                 assert len(primitive.dimensions) == 2
                 marker.scale = Vector3(primitive.dimensions[1]*2, primitive.dimensions[1]*2, primitive.dimensions[0])
             elif primitive_type == SolidPrimitive.SPHERE:
                 marker.type=Marker.SPHERE
                 assert len(primitive.dimensions) == 1
                 marker.scale = Vector3(*([primitive.dimensions[0]*2]*3))
                 
             else:
                 assert False, "Invalid geometry specified for SolidPrimitive"
             
             marker.action=marker.ADD                             
             
             marker.pose = rox_msg.transform2pose_msg(rox_msg.msg2transform(msg.pose) * rox_msg.msg2transform(msg.visual_geometry.primitive_poses[i]))                     
             marker.header.frame_id = payload.attached_link                
             if i < len(msg.visual_geometry.primitive_colors):
                 marker.color=msg.visual_geometry.primitive_colors[i]
             else:                
                 marker.color.a=1
                 marker.color.r=0.5
                 marker.color.g=0.5
                 marker.color.b=0.5            
             marker.header.stamp=rospy.Time.now()
             marker.frame_locked=True
             marker._check_types()
             marker_array.markers.append(marker) 
             id += 1
             
     marker_array._check_types
     self.rviz_cam_publisher.publish(marker_array)