void RobotVisualization::setModelFile(QString modelFile) { //Extact file extension QStringList tokens = modelFile.split(QChar('.')); QString ext = tokens.back(); LOG_INFO("loading %s", modelFile.toLatin1().data()); bool st; st = load(modelFile); if(!st) LOG_FATAL_S << "cannot load " << modelFile.toStdString() << ", it either does not exist or is not a proper robot model file"; else _modelFile = modelFile; //emit propertyChanged("modelFile"); // Now create a RBS visualization for each of the frames in the model deleteFrameVisualizers(); vector<string> segments = getSegmentNames(); for (std::size_t i = 0; i != segments.size(); ++i) { OSGSegment* segment = getSegment(segments[i]); assert(segment); vizkit3d::RigidBodyStateVisualization* frame = new vizkit3d::RigidBodyStateVisualization(this); frame->setPluginName(QString::fromStdString(segments[i])); osg::ref_ptr<osg::Group> frame_attachment = frame->getRootNode(); osg::ref_ptr<osg::StateSet> state = frame_attachment->getOrCreateStateSet(); state->setMode(GL_DEPTH_TEST, osg::StateAttribute::OFF); segment->getGroup()->addChild(frame_attachment); _frameVisualizers[segments[i]] = frame; } setFramesEnabled(areFramesEnabled()); setSegmentNamesEnabled(areSegmentNamesEnabled()); emit childrenChanged(); }
void RobotVisualization::createFrameVisualizers() { deleteFrameVisualizers(); vector<string> segments = getSegmentNames(); for (std::size_t i = 0; i != segments.size(); ++i) { OSGSegment* segment = getSegment(segments[i]); assert(segment); vizkit3d::RigidBodyStateVisualization* frame = new vizkit3d::RigidBodyStateVisualization(this); frame->setPluginName(QString::fromStdString(segments[i])); osg::ref_ptr<osg::Group> frame_attachment = frame->getRootNode(); osg::ref_ptr<osg::StateSet> state = frame_attachment->getOrCreateStateSet(); state->setMode(GL_DEPTH_TEST, osg::StateAttribute::OFF); segment->getGroup()->addChild(frame_attachment); _frameVisualizers[segments[i]] = frame; } setFramesEnabled(areFramesEnabled()); setSegmentNamesEnabled(areSegmentNamesEnabled()); emit childrenChanged(); }