remove visual and collision if there is no vertices
This commit is contained in:
parent
92e7b07c98
commit
0870c49be0
|
@ -1146,10 +1146,15 @@ protected:
|
|||
//viss->push_back(plink->visual);
|
||||
//plink->visual_groups.insert(std::make_pair("default", viss));
|
||||
|
||||
if( !plink->visual->geometry ) {
|
||||
plink->visual.reset();
|
||||
plink->collision.reset();
|
||||
} else {
|
||||
// collision
|
||||
plink->collision.reset(new Collision());
|
||||
plink->collision->geometry = plink->visual->geometry;
|
||||
plink->collision->origin = plink->visual->origin;
|
||||
}
|
||||
|
||||
// collision_groups deprecated
|
||||
//boost::shared_ptr<std::vector<boost::shared_ptr<Collision > > > cols;
|
||||
|
@ -1162,26 +1167,22 @@ protected:
|
|||
|
||||
boost::shared_ptr<Geometry> _CreateGeometry(const std::string& name, const std::list<GEOMPROPERTIES>& listGeomProperties)
|
||||
{
|
||||
boost::shared_ptr<Mesh> geometry(new Mesh());
|
||||
geometry->type = Geometry::MESH;
|
||||
geometry->scale.x = 1;
|
||||
geometry->scale.y = 1;
|
||||
geometry->scale.z = 1;
|
||||
|
||||
std::vector<std::vector<Vector3> > vertices;
|
||||
std::vector<std::vector<int> > indices;
|
||||
std::vector<Color> ambients;
|
||||
std::vector<Color> diffuses;
|
||||
unsigned int index;
|
||||
unsigned int index, vert_counter;
|
||||
vertices.resize(listGeomProperties.size());
|
||||
indices.resize(listGeomProperties.size());
|
||||
ambients.resize(listGeomProperties.size());
|
||||
diffuses.resize(listGeomProperties.size());
|
||||
index = 0;
|
||||
vert_counter = 0;
|
||||
FOREACHC(it, listGeomProperties) {
|
||||
vertices[index].resize(it->vertices.size());
|
||||
for(size_t i = 0; i < it->vertices.size(); ++i) {
|
||||
vertices[index][i] = _poseMult(it->_t, it->vertices[i]);
|
||||
vert_counter++;
|
||||
}
|
||||
indices[index].resize(it->indices.size());
|
||||
for(size_t i = 0; i < it->indices.size(); ++i) {
|
||||
|
@ -1204,6 +1205,18 @@ protected:
|
|||
index++;
|
||||
}
|
||||
|
||||
if (vert_counter == 0) {
|
||||
boost::shared_ptr<Mesh> ret;
|
||||
ret.reset();
|
||||
return ret;
|
||||
}
|
||||
|
||||
boost::shared_ptr<Mesh> geometry(new Mesh());
|
||||
geometry->type = Geometry::MESH;
|
||||
geometry->scale.x = 1;
|
||||
geometry->scale.y = 1;
|
||||
geometry->scale.z = 1;
|
||||
|
||||
// have to save the geometry into individual collada 1.4 files since URDF does not allow triangle meshes to be specified
|
||||
std::stringstream daedata;
|
||||
daedata << str(boost::format("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\
|
||||
|
|
Loading…
Reference in New Issue