Browse Source

去除后方视角下UI抖动的问题

fujiankuan 3 years ago
parent
commit
680e8bed02
3 changed files with 41 additions and 32 deletions
  1. 13 10
      src/ui/ui_osgviewer/main.cpp
  2. 1 0
      src/ui/ui_osgviewer/ui_osgviewer.pro
  3. 27 22
      src/ui/ui_osgviewer/viewer.cpp

+ 13 - 10
src/ui/ui_osgviewer/main.cpp

@@ -302,7 +302,8 @@ void createosgbox()
 
 int SetupADCIVCar( viewer::Viewer *viewer)
 {
-    int carModelID = 2;
+//    int carModelID = 2;
+    int carModelID = 0;
     Car *car_ = new Car;
     // Higher speeds in lanes closer to reference lane
     car_->speed_factor = 0.5 ;  // Speed vary between 0.5 to 1.0 times default speed
@@ -313,8 +314,8 @@ int SetupADCIVCar( viewer::Viewer *viewer)
  //   car_->pos->SetHeadingRelative(lane->GetId() < 0 ? 0 : M_PI);
  //   car_->heading_init = car_->pos->GetHRelative();
 
-    viewer->AddOSGBEnv("/home/nvidia/xin_beijing_xiali0716.opt.osgb",osg::Vec3(0.5, 0.5, 0.5),"env");
-    viewer->AddOSGBEnv("/home/nvidia/xin_beijing_xiali0716.shadow.osgb",osg::Vec3(0.5, 0.5, 0.5),"env1");
+//    viewer->AddOSGBEnv("/home/nvidia/xiali_fangzhen.opt.osgb",osg::Vec3(1.0, 1.0, 1.0),"env");
+//    viewer->AddOSGBEnv("/home/nvidia/xiali_fangzhen.shadow.osgb",osg::Vec3(0.5, 0.5, 0.5),"env1");
 
     if ((car_->model = viewer->AddEntityModel(carModelsFiles_[carModelID], osg::Vec3(0.5, 0.5, 0.5),
         viewer::EntityModel::EntityType::ENTITY_TYPE_VEHICLE, false, "", 0)) == 0)
@@ -632,6 +633,7 @@ int main(int argcx, char** argvx)
     argv[2] = "/home/nvidia/map/map.xodr";
 
     std::string mappath = getenv("HOME");
+//    mappath = mappath + "/map/mapa.xodr";
     mappath = mappath + "/map/map.xodr";
     argv[2] =  new char[256];
     strncpy(argv[2],mappath.c_str(),256);
@@ -648,7 +650,7 @@ int main(int argcx, char** argvx)
     std::string strgpsmsg = xp.GetParam("gpsmsg","hcp2_gpsimu");
     std::string strradarmsg = xp.GetParam("radarmsg","radar");
     std::string strcnnmsg = xp.GetParam("cnnmsg","lidar_track");
-    std::string strheightajust = xp.GetParam("heightajust","-1.0");
+    std::string strheightajust = xp.GetParam("heightajust","-1.6");
     gvehicleheight = atof(strheightajust.data());
 
 
@@ -746,11 +748,11 @@ int main(int argcx, char** argvx)
 
 	try
 	{
-//		if (!roadmanager::Position::LoadOpenDrive(odrFilename.c_str()))
-//		{
-//			printf("Failed to load ODR %s\n", odrFilename.c_str());
-//			return -1;
-//		}
+        if (!roadmanager::Position::LoadOpenDrive(odrFilename.c_str()))
+        {
+            printf("Failed to load ODR %s\n", odrFilename.c_str());
+            return -1;
+        }
 		roadmanager::OpenDrive *odrManager = roadmanager::Position::GetOpenDrive();
 
 		osg::ArgumentParser arguments(&argc, argv);
@@ -788,8 +790,9 @@ int main(int argcx, char** argvx)
 			viewer->GetNodeMaskBit(viewer::NodeMask::NODE_MASK_OSI_POINTS) ? "on" : "off");
 
          SetupADCIVCar(viewer);
-         SetupRadar(viewer);
+//         SetupRadar(viewer);
          SetupLidar(viewer);
+         viewer->AddBackModel(osg::Vec3(0.5, 0.5, 0.5),"");
 //         gtestRadar = viewer->AddRadarModel(osg::Vec3(0.5, 0.5, 0.5),"");
 //         gtestRadar = viewer->AddEntityModel(carModelsFiles_[0], osg::Vec3(0.5, 0.5, 0.5),
 //                                             viewer::EntityModel::EntityType::ENTITY_TYPE_VEHICLE, false, "", 0);

+ 1 - 0
src/ui/ui_osgviewer/ui_osgviewer.pro

@@ -68,6 +68,7 @@ LIBS += $$PWD/../../../thirdpartylib/osglib/lib/osgPlugins-3.7.0/osgdb_serialize
 LIBS += $$PWD/../../../thirdpartylib/osglib/lib/osgPlugins-3.7.0/osgdb_osg.so
 LIBS += $$PWD/../../../thirdpartylib/osglib/lib/osgPlugins-3.7.0/osgdb_serializers_osgsim.so
 LIBS += $$PWD/../../../thirdpartylib/osglib/lib/osgPlugins-3.7.0/osgdb_jpeg.so
+LIBS += $$PWD/../../../thirdpartylib/osglib/lib/osgPlugins-3.7.0/osgdb_openflight.so
 
 
 

+ 27 - 22
src/ui/ui_osgviewer/viewer.cpp

@@ -725,7 +725,8 @@ Viewer::Viewer(roadmanager::OpenDrive* odrManager, const char* modelFilename, co
 	keyRight_ = false;
 	quit_request_ = false;
 	showInfoText = true;  // show info text HUD per default
-	camMode_ = osgGA::RubberbandManipulator::RB_MODE_ORBIT;
+//	camMode_ = osgGA::RubberbandManipulator::RB_MODE_ORBIT;
+    camMode_ = osgGA::RubberbandManipulator::RB_MODE_RUBBER_BAND;//更改初始化时候的视角
 	shadow_node_ = NULL;
 	environment_ = NULL;
 	roadGeom = NULL;
@@ -902,20 +903,20 @@ Viewer::Viewer(roadmanager::OpenDrive* odrManager, const char* modelFilename, co
 		}
 	}
 
-	if (odrManager->GetNumOfRoads() > 0 && !CreateRoadLines(odrManager))
-	{
-		LOG("Viewer::Viewer Failed to create road lines!\n");
-	}
+    if (odrManager->GetNumOfRoads() > 0 && !CreateRoadLines(odrManager))
+    {
+        LOG("Viewer::Viewer Failed to create road lines!\n");
+    }
 
-	if (odrManager->GetNumOfRoads() > 0 && !CreateRoadMarkLines(odrManager))
-	{
-		LOG("Viewer::Viewer Failed to create road mark lines!\n");
-	}
+    if (odrManager->GetNumOfRoads() > 0 && !CreateRoadMarkLines(odrManager))
+    {
+        LOG("Viewer::Viewer Failed to create road mark lines!\n");
+    }
 
-	if (odrManager->GetNumOfRoads() > 0 && CreateRoadSignsAndObjects(odrManager) != 0)
-	{
-		LOG("Viewer::Viewer Failed to create road signs!\n");
-	}
+    if (odrManager->GetNumOfRoads() > 0 && CreateRoadSignsAndObjects(odrManager) != 0)
+    {
+        LOG("Viewer::Viewer Failed to create road signs!\n");
+    }
 
 #if 0
 	osgViewer_->setSceneData(shadowedScene);
@@ -1153,7 +1154,7 @@ EntityModel* Viewer::AddBackModel(osg::Vec3 trail_color,std::string name)
     EntityModel* model;
     int i;
     int j;
-    osg::ref_ptr<osg::Texture2D> xtexture =  new osg::Texture2D(osgDB::readImageFile("/home/yuchuli/git/esmini/resources/models/grass.jpg"));
+    osg::ref_ptr<osg::Texture2D> xtexture =  new osg::Texture2D(osgDB::readImageFile("/home/nvidia/map/models/grass.jpg"));
     for(i=0;i<100;i++)
     {
 
@@ -1365,15 +1366,15 @@ int Viewer::AddOSGBEnv(const char* filename,osg::Vec3 trail_color,  std::string
 
     model = new EntityModel(osgViewer_, group, rootnode_, trails_, dot_node_, trail_color, name);
 
-    model->state_set_ = model->lod_->getOrCreateStateSet(); // Creating material
-    model->blend_color_ = new osg::BlendColor(osg::Vec4(1, 1, 1, 1));
-    model->state_set_->setAttributeAndModes(model->blend_color_);
-    model->blend_color_->setDataVariance(osg::Object::DYNAMIC);
+//    model->state_set_ = model->lod_->getOrCreateStateSet(); // Creating material
+//    model->blend_color_ = new osg::BlendColor(osg::Vec4(1, 1, 1, 1));
+//    model->state_set_->setAttributeAndModes(model->blend_color_);
+//    model->blend_color_->setDataVariance(osg::Object::DYNAMIC);
 
-    osg::BlendFunc* bf = new osg::BlendFunc(osg::BlendFunc::CONSTANT_ALPHA, osg::BlendFunc::ONE_MINUS_CONSTANT_ALPHA);
-    model->state_set_->setAttributeAndModes(bf);
-    model->state_set_->setMode(GL_DEPTH_TEST, osg::StateAttribute::ON);
-    model->state_set_->setRenderingHint(osg::StateSet::TRANSPARENT_BIN);
+//    osg::BlendFunc* bf = new osg::BlendFunc(osg::BlendFunc::CONSTANT_ALPHA, osg::BlendFunc::ONE_MINUS_CONSTANT_ALPHA);
+//    model->state_set_->setAttributeAndModes(bf);
+//    model->state_set_->setMode(GL_DEPTH_TEST, osg::StateAttribute::ON);
+//    model->state_set_->setRenderingHint(osg::StateSet::TRANSPARENT_BIN);
 
     model->SetPosition(0,0,0);
 
@@ -1413,6 +1414,8 @@ EntityModel* Viewer::AddEntityModel(std::string modelFilepath, osg::Vec3 trail_c
 		}
 	}
 
+//    group = LoadEntityModel("/home/nvidia/beijing_0719_bus.rpj.opt.osgb");
+
 	if (boundingBox || group == 0)
 	{
 		// Create a bounding box visual representation
@@ -1561,6 +1564,7 @@ osg::ref_ptr<osg::Group> Viewer::LoadEntityModel(const char *filename)
 	osg::ref_ptr<osg::Node> node;
 	osg::ref_ptr<osg::Group> group = new osg::Group;
 
+
 	node = osgDB::readNodeFile(filename);
 	if (!node)
 	{
@@ -2343,6 +2347,7 @@ bool ViewerEventHandler::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActi
 	case(osgGA::GUIEventAdapter::KEY_K):
 		if (ea.getEventType() & osgGA::GUIEventAdapter::KEYDOWN)
 		{
+            std::cout<<"mode is "<<viewer_->camMode_ <<std::endl;
 			viewer_->camMode_ += 1;
 			if (viewer_->camMode_ >= osgGA::RubberbandManipulator::RB_NUM_MODES)
 			{