本文整理汇总了C++中osgviewer::Viewer::addEventHandler方法的典型用法代码示例。如果您正苦于以下问题:C++ Viewer::addEventHandler方法的具体用法?C++ Viewer::addEventHandler怎么用?C++ Viewer::addEventHandler使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类osgviewer::Viewer
的用法示例。
在下文中一共展示了Viewer::addEventHandler方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: createProjection
void
viewerSetUp( osgViewer::Viewer& viewer, unsigned int width, unsigned int height, osg::Node* node )
{
double aspect = (double)width / (double)height;
viewer.setThreadingModel( osgViewer::ViewerBase::SingleThreaded );
viewer.getCamera()->setComputeNearFarMode( osg::CullSettings::DO_NOT_COMPUTE_NEAR_FAR );
viewer.getCamera()->setProjectionMatrix( createProjection( aspect ) );
viewer.getCamera()->setClearMask( 0 );
viewer.setSceneData( backdropFX::Manager::instance()->getManagedRoot() );
// No longer needed, apparently. Seems like Viewer used to focus the
// camera manipulator on the entire SkyDome, putting it too far away from
// the scene. This code compensated for that.
//osgGA::TrackballManipulator* tb = new osgGA::TrackballManipulator();
//viewer.setCameraManipulator( tb );
//tb->setNode( root.get() );
//tb->home( 0 );
viewer.addEventHandler( new osgViewer::StatsHandler );
viewer.addEventHandler( new osgViewer::ThreadingHandler );
viewer.addEventHandler( new ResizeHandler( viewer, width, height ) );
osgGA::TrackballManipulator* tbm = new osgGA::TrackballManipulator;
viewer.setCameraManipulator( tbm );
tbm->setNode( node );
tbm->home( 0 );
}
示例2:
void
viewerSetUp( osgViewer::Viewer& viewer, double aspect, osg::Node* node )
{
viewer.getCamera()->setComputeNearFarMode( osg::CullSettings::DO_NOT_COMPUTE_NEAR_FAR );
viewer.getCamera()->setProjectionMatrixAsPerspective( 35., aspect, .1, 50. );
viewer.getCamera()->setClearMask( 0 );
viewer.setSceneData( backdropFX::Manager::instance()->getManagedRoot() );
// No longer needed, apparently. Seems like Viewer used to focus the
// camera manipulator on the entire SkyDome, putting it too far away from
// the scene. This code compensated for that.
//osgGA::TrackballManipulator* tb = new osgGA::TrackballManipulator();
//viewer.setCameraManipulator( tb );
//tb->setNode( root.get() );
//tb->home( 0 );
viewer.addEventHandler( new osgViewer::StatsHandler );
viewer.addEventHandler( new osgViewer::ThreadingHandler );
osgGA::TrackballManipulator* tbm = new osgGA::TrackballManipulator;
viewer.setCameraManipulator( tbm );
tbm->setNode( node );
tbm->home( 0 );
}
示例3: main
int main(void){
osg::DisplaySettings::instance()->setNumMultiSamples( 4 );
viewer.setUpViewInWindow( 100, 50, 800, 600 );
viewer.getCamera()->setClearColor( osg::Vec4( 0.5,0.5,0.5,1) );
viewer.addEventHandler(new osgViewer::StatsHandler);
scene = new osg::Group;
osg::ref_ptr<osg::LightSource> lumiere = new osg::LightSource;
lumiere->getLight()->setLightNum(0); // GL_LIGHT1
lumiere->getLight()->setPosition(osg::Vec4(1, -1, 10, 0)); // 0 = directionnel
lumiere->getLight()->setAmbient(osg::Vec4(0.5, 0.5, 0.5, 1.0));
lumiere->getLight()->setDiffuse(osg::Vec4(0.9, 0.9, 0.9, 1.0));
lumiere->getLight()->setSpecular(osg::Vec4(1.0, 1.0, 1.0, 1.0));
scene->addChild(lumiere.get());
terrain = creation_terrain();
scene->addChild(terrain.get());
scene->addChild(creation_foret(terrain, 500));
LECHARRR = creation_CHARRR(0,0,terrain);
scene->addChild(LECHARRR);
LECHARRR->accept(rechercheTourelle);
fumeeTank = new osgParticle::SmokeEffect;
fumeeTank->setTextureFileName("fumee.tga");
fumeeTank->setIntensity(2);
fumeeTank->setScale(4);
fumeeTank->setPosition(LECHARRR->getPosition());
scene->addChild(fumeeTank.get());
posCanonX = LECHARRR->getPosition().x();
posCanonY = LECHARRR->getPosition().y() + 3.5;
posCanonZ = LECHARRR->getPosition().z() + 4.0;
viewer.setSceneData(scene);
osg::ref_ptr<GestionEvenements> gestionnaire = new GestionEvenements();
viewer.addEventHandler(gestionnaire.get());
return viewer.run();
}
示例4: addChild
Level::Level(const std::string &mapfile) :
_numDeaths(0),
_reachedFinish(false)
{
_shadowedScene = new osgShadow::ShadowedScene;
_shadowedScene->setReceivesShadowTraversalMask(RECEIVE_SHADOW_MASK);
_shadowedScene->setCastsShadowTraversalMask(CAST_SHADOW_MASK);
_shadowedScene->setShadowTechnique(new osgShadow::ShadowMap);
addChild(_shadowedScene);
_headUpDisplay = new HeadUpDisplay();
addChild(_headUpDisplay->getCamera());
addChild((new Sky())->getCamera());
initializePhysicsWorld();
// load map from file
loadMapFromFile(mapfile);
// add player to level
_shadowedScene->addChild(Player::getInstance());
addChild(Player::getInstance()->getParticleEffects());
// add player ghost object to world
_physicsWorld->addCollisionObject(Player::getInstance()->getGhostObject(),
btBroadphaseProxy::CharacterFilter,
btBroadphaseProxy::StaticFilter | btBroadphaseProxy::DefaultFilter);
// register player controller
_physicsWorld->addAction(Player::getInstance()->getController());
// initialize members
LazyCameraManipulator *cameraManipulator = new LazyCameraManipulator();
// setup manipulator to track the player
cameraManipulator->setTrackNode(Player::getInstance());
cameraManipulator->setHomePosition(LEVEL_CAMERA_HOME_EYE, LEVEL_CAMERA_HOME_CENTER, LEVEL_CAMERA_HOME_UP);
// player must be updated after physic is updated
Player::getInstance()->setUpdateCallback(new PlayerUpdater());
// set _cameraManipulator as manipulator for the scene
viewer.setCameraManipulator(cameraManipulator);
LevelUpdater *stepCallback = new LevelUpdater(this);
setUpdateCallback(stepCallback);
// player keyboard control
_keyboardHandler = new LevelKeyboardHandler();
viewer.addEventHandler(_keyboardHandler);
initializeLighting();
Sound::getInstance()->stop(MENU_MUSIC_FILE);
Sound::getInstance()->playInLoop(LEVEL_MUSIC_FILE);
}
示例5: build_world
void build_world(osg::Group* root, osg::Node* scene, osgViewer::Viewer& viewer)
{
osg::ref_ptr<EffectPanel> effect_panel = build_gui(root);
effect_panel->setScene(scene);
effect_panel->rebuild();
viewer.addEventHandler(new EffectPanel::KeyboardHandler(effect_panel.get()));
root->addChild(effect_panel->getRoot());
}
示例6: MenuKeyboardHandler
LevelMenu::LevelMenu() :
_currentLevel(NULL),
_currentItemIndex(0)
{
_menuPat = new osg::PositionAttitudeTransform();
_menuPat->getOrCreateStateSet()->setMode(GL_LIGHTING, osg::StateAttribute::OFF);
_keyboardHandler = new MenuKeyboardHandler(this);
viewer.addEventHandler(_keyboardHandler);
initializeCamera();
initializeHeader();
initializeBackgroundAnimation();
initializeSelector();
loadLevels();
updateDetails();
viewer.getCamera()->setUpdateCallback(new LevelMenuUpdater(this));
Sound::getInstance()->playInLoop(MENU_MUSIC_FILE);
}
示例7: init
//.........这里部分代码省略.........
}
}
// setup the simulation
READ_MAP = XMLReader::read(std::string(argv[argc-1]));
// setup the offscreen renderer if necessary
#ifdef USE_OSG
if (IMAGE_IVAL > 0) {
// TODO: setup offscreen renderer here
}
#endif
// get the (only) simulation object
for (std::map<std::string, BasePtr>::const_iterator i = READ_MAP.begin(); i != READ_MAP.end(); i++) {
sim = boost::dynamic_pointer_cast<Simulator>(i->second);
if (sim)
break;
}
// make sure that a simulator was found
if (!sim) {
std::cerr << "driver: no simulator found in " << argv[argc-1] << std::endl;
//return -1;
return;
}
// setup osg window if desired
#ifdef USE_OSG
if (ONSCREEN_RENDER) {
// setup any necessary handlers here
viewer.setCameraManipulator(new osgGA::TrackballManipulator());
viewer.addEventHandler(new osgGA::StateSetManipulator(viewer.getCamera()->getOrCreateStateSet()));
viewer.addEventHandler(new osgViewer::WindowSizeHandler);
viewer.addEventHandler(new osgViewer::StatsHandler);
}
// init the main group
MAIN_GROUP = new osg::Group;
#endif
// look for a scene description file
#ifdef USE_OSG
if (scene_path != "") {
std::ifstream in(scene_path.c_str());
if (in.fail()) {
std::cerr << "driver: unable to find scene description from " << scene_path << std::endl;
add_lights();
} else {
in.close();
osg::Node* node = osgDB::readNodeFile(scene_path);
if (!node) {
std::cerr << "driver: unable to open scene description file!" << std::endl;
add_lights();
} else
MAIN_GROUP->addChild(node);
}
} else {
add_lights();
}
#endif
// process XML options
process_xml_options(std::string(argv[argc-1]));
示例8: main
int main( int argc, char **argv )
{
int windowWidth, windowHeight;
std::string osgEarthFileName = "D:/Dev/csp/csp/examples/cspEarth/data/srtm.earth";
// use an ArgumentParser object to manage the program arguments.
osg::ArgumentParser arguments(&argc,argv);
// Allow a debugger to be attached before the interesting parts start
if (arguments.read("-p"))
{
std::cout << "Attach debugger and press a key..." << std::endl;
std::getchar();
}
// if an .earth file definition was specified, use this one instead of the default
arguments.read("-file", osgEarthFileName);
// get screen size
arguments.read("-window", windowWidth, windowHeight);
// =====================================================================
// SETUP
// Make it possible for this application to locate images bound
// to textures.
std::string search_path = ";";
csp::ospath::addpath(search_path, "./data/images/");
csp::ospath::addpath(search_path, "./data/models/");
csp::ObjectModel::setDataFilePathList(search_path);
// Set paths for shader files.
Shader::instance()->setShaderPath("./data/shaders/");
// =====================================================================
// Manual creation of a object model.
Ref<ObjectModel> my_model = new ObjectModel();
// An external is used to handle the path to the scene graph file.
// It is also ensuring that paths is handled independent on operating
// system.
External modelPath;
modelPath.setSource("industry/refinery_column01/refinery_column01.osg");
my_model->setModelPath(modelPath);
my_model->setSmooth(true);
// Load the model from disc. This will also apply needed shaders.
// smoothing and more things.
my_model->loadModel();
// read osgEarth config file and create the globe
std::cout << "reading osgEarth config file: " << osgEarthFileName << std::endl;
osg::ref_ptr<osg::Node> globe = osgDB::readNodeFile(osgEarthFileName);
osg::ref_ptr<osg::Node> topNode = new osg::Node;
osg::Group* group = new osg::Group;
group->setName("root group");
// =====================================================================
// construct the viewer
viewer.addEventHandler(new osgViewer::StatsHandler);
viewer.addEventHandler(new osgViewer::HelpHandler);
viewer.addEventHandler(new osgViewer::WindowSizeHandler);
viewer.addEventHandler(new osgViewer::ScreenCaptureHandler);
// modify the key mapping of an osg default event handler
// this is just to demonstrate the principle, no real use case behind it...
osgViewer::View::EventHandlers eventHandlers = viewer.getEventHandlers();
// iterate through the viewer's event handlers and modify their default behavior
for (osgViewer::View::EventHandlers::iterator it = eventHandlers.begin(); it != eventHandlers.end(); ++it)
{
// EventHandlers is a list of osgGA::GUIEventHandlers, so RTTI is used to find out the derived class
if(osgViewer::WindowSizeHandler *winSizeHandler =
dynamic_cast<osgViewer::WindowSizeHandler *>(it->get()))
{
winSizeHandler->setKeyEventToggleFullscreen(osgGA::GUIEventAdapter::KEY_F2);
}
}
// Create overlay data
osg::ref_ptr<osg::Geode> statsGeometry = createStatsGeometry();
group->addChild( statsGeometry );
// add the osgEarth globe to the scene
group->addChild( globe.get() );
group->addChild( my_model->getModel().get() );
//viewer.setSceneData(my_model->getModel().get());
viewer.setSceneData( group );
//viewer.setSceneData(globe.get());
// create camera and context
setupCameraAndContext( viewer, windowWidth, windowHeight );
// the overlay geometry is added to an individual camera
// QUESTION: But why isn't it rendered by the primary cam?!?
statsCamera->addChild( statsGeometry );
//viewer.setCameraManipulator(new osgGA::FlightManipulator);
//.........这里部分代码省略.........
示例9: init
//.........这里部分代码省略.........
READ_MAP = XMLReader::read(std::string(argv[argc-1]));
// setup the offscreen renderer if necessary
#ifdef USE_OSG
if (IMAGE_IVAL > 0)
{
// TODO: setup offscreen renderer here
}
#endif
// get the (only) simulation object
for (std::map<std::string, BasePtr>::const_iterator i = READ_MAP.begin(); i != READ_MAP.end(); i++)
{
sim = boost::dynamic_pointer_cast<Simulator>(i->second);
if (sim)
break;
}
// make sure that a simulator was found
if (!sim)
{
std::cerr << "driver: no simulator found in " << argv[argc-1] << std::endl;
//return -1;
return;
}
// setup osg window if desired
#ifdef USE_OSG
if (ONSCREEN_RENDER)
{
// setup any necessary handlers here
viewer.setCameraManipulator(new osgGA::TrackballManipulator());
viewer.addEventHandler(new osgGA::StateSetManipulator(viewer.getCamera()->getOrCreateStateSet()));
viewer.addEventHandler(new osgViewer::WindowSizeHandler);
viewer.addEventHandler(new osgViewer::StatsHandler);
}
// init the main group
MAIN_GROUP = new osg::Group;
#endif
/**
// Note: In this architecture, Moby doesn't have any direct relationship to
// controllers, so the ability to load control plugins is removed
// call the initializers, if any
if (!INIT.empty())
{
#ifdef USE_OSG
BOOST_FOREACH(init_t i, INIT)
(*i)(MAIN_GROUP, READ_MAP, STEP_SIZE);
#else
BOOST_FOREACH(init_t i, INIT)
(*i)(NULL, READ_MAP, STEP_SIZE);
#endif
}
*/
// look for a scene description file
#ifdef USE_OSG
if (scene_path != "")
{
std::ifstream in(scene_path.c_str());
if (in.fail())
{
示例10: main
int main( int argc, char **argv )
{
if(argc<4) {
usage(argc,argv);
return 1;
}
is = helper::createImageSource(argv[1]);
if(is.empty() || is->done()) {
loglne("[main] createImageSource failed or no valid imagesource!");
return -1;
}
is->pause(false);
is->reportInfo();
is->get(frame);
imgW = frame.cols; imgH = frame.rows;
videoFromWebcam = false;
if( is->classname() == "ImageSource_Camera" ) {
videoFromWebcam = true;
}
loglni("[main] loading K matrix from: "<<argv[2]);
double K[9];
std::ifstream kfile(argv[2]);
for(int i=0; i<9; ++i) kfile >> K[i];
tracker.loadK(K);
loglni("[main] K matrix loaded:");
loglni(helper::PrintMat<>(3,3,K));
loglni("[main] load template image from: "<<argv[3]);
tracker.loadTemplate(argv[3]);
//////////////// TagDetector /////////////////////////////////////////
int tagid = 0; //default tag16h5
if(argc>5) tagid = atoi(argv[5]);
tagFamily = TagFamilyFactory::create(tagid);
if(tagFamily.empty()) {
loglne("[main] create TagFamily fail!");
return -1;
}
detector = new TagDetector(tagFamily);
if(detector.empty()) {
loglne("[main] create TagDetector fail!");
return -1;
}
Mat temp = imread(argv[3]);
if( findAprilTag(temp, 0, HI, true) ) {
namedWindow("template");
imshow("template", temp);
iHI = HI.inv();
} else {
loglne("[main error] detector did not find any apriltag on template image!");
return -1;
}
//////////////// OSG ////////////////////////////////////////////////
osg::ref_ptr<osg::Group> root = new osg::Group;
string scenefilename = (argc>4?argv[4]:("cow.osg"));
osg::ref_ptr<osg::Node> cow = osgDB::readNodeFile(scenefilename);
arscene = new helper::ARSceneRoot;
helper::FixMat<3,double>::Type matK = helper::FixMat<3,double>::ConvertType(K);
CV2CG::cv2cg(matK,0.01,500,imgW,imgH,*arscene);
manipMat = new osg::MatrixTransform(osg::Matrix::identity());
manipMat->addChild(cow);
manipMat->getOrCreateStateSet()->setMode(GL_NORMALIZE, osg::StateAttribute::ON);
arscene->addChild(manipMat);
osg::ref_ptr<osg::Image> backgroundImage = new osg::Image;
helper::cvmat2osgimage(frame,backgroundImage);
arvideo = new helper::ARVideoBackground(backgroundImage);
root->setUpdateCallback(new ARUpdateCallback);
root->addChild(arvideo);
root->addChild(arscene);
viewer.setSceneData(root);
viewer.addEventHandler(new osgViewer::StatsHandler);
viewer.addEventHandler(new osgViewer::WindowSizeHandler);
viewer.addEventHandler(new QuitHandler);
//start tracking thread
OpenThreads::Thread::Init();
TrackThread* thr = new TrackThread;
thr->start();
viewer.run();
delete thr;
loglni("[main] DONE...exit!");
return 0;
}