Browse Source

更改视角 更改小窗口而非全屏显示

fujiankuan 3 years ago
parent
commit
19ed51c7ac

+ 6 - 5
src/ui/ui_osgviewer/RoadManager.cpp

@@ -2528,8 +2528,9 @@ bool OpenDrive::LoadOpenDriveFile(const char *filename, bool replace)
 									{
 										LOG("unknown lane road mark color: %s (road id=%d)\n", roadMark.attribute("color").value(), r->GetId());
 									}
+//
 								}
-
+//roadMark_color = LaneRoadMark::YELLOW;
 								// material
 								LaneRoadMark::RoadMarkMaterial roadMark_material = LaneRoadMark::STANDARD_MATERIAL;
 
@@ -2650,10 +2651,10 @@ bool OpenDrive::LoadOpenDriveFile(const char *filename, bool replace)
 			}
 		}
 
-		pugi::xml_node signals = road_node.child("signals");
-		if (signals != NULL)
-		{
-			for (pugi::xml_node signal = signals.child("signal"); signal; signal = signal.next_sibling())
+        pugi::xml_node signals = road_node.child("signals");
+        if (signals != NULL)
+        {
+            for (pugi::xml_node signal = signals.child("signal"); signal; signal = signal.next_sibling())
 			{
 				double s = atof(signal.attribute("s").value());
 				double t = atof(signal.attribute("t").value());

+ 5 - 3
src/ui/ui_osgviewer/main.cpp

@@ -115,6 +115,7 @@ static const char* carModelsFiles_[] =
 	"truck_yellow.osgb",
 	"van_red.osgb",
 	"bus_blue.osgb",
+    "BMWZ4_10.hdr.ive",
 };
 
 std::vector<osg::ref_ptr<osg::LOD>> carModels_;
@@ -303,7 +304,7 @@ void createosgbox()
 int SetupADCIVCar( viewer::Viewer *viewer)
 {
 //    int carModelID = 2;
-    int carModelID = 0;
+    int carModelID = 7;
     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
@@ -316,6 +317,7 @@ int SetupADCIVCar( viewer::Viewer *viewer)
 
 //    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");
+//    viewer->AddOSGBEnv("/home/nvidia/BMWZ4_10.hdr.ive",osg::Vec3(1.0, 1.0, 1.0),"env");
 
     if ((car_->model = viewer->AddEntityModel(carModelsFiles_[carModelID], osg::Vec3(0.5, 0.5, 0.5),
         viewer::EntityModel::EntityType::ENTITY_TYPE_VEHICLE, false, "", 0)) == 0)
@@ -496,7 +498,7 @@ void updateADCIVCar(Car * car,viewer::Viewer *viewer)
         car->model->quat_.makeRotate(
                     roll, osg::Vec3(1, 0, 0),
                     pitch, osg::Vec3(0, 1, 0),
-                    head, osg::Vec3(0, 0, 1));
+                    head -M_PI/2.0, osg::Vec3(0, 0, 1));//改车头方向
 
         car->model->txNode_->setAttitude(car->model->quat_);
 
@@ -792,7 +794,7 @@ int main(int argcx, char** argvx)
          SetupADCIVCar(viewer);
 //         SetupRadar(viewer);
          SetupLidar(viewer);
-         viewer->AddBackModel(osg::Vec3(0.5, 0.5, 0.5),"");
+//         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);

+ 5 - 0
src/ui/ui_osgviewer/osg.qrc

@@ -0,0 +1,5 @@
+<RCC>
+    <qresource prefix="/">
+        <file>osg.jpeg</file>
+    </qresource>
+</RCC>

+ 8 - 7
src/ui/ui_osgviewer/ui_osgviewer.pro

@@ -63,13 +63,13 @@ INCLUDEPATH += $$PWD/../../../thirdpartylib/esminilib
 LIBS += -L$$PWD/../../../thirdpartylib/osglib/lib -losg -losgDB -losgFX \
         -losgGA -losgViewer -losgSim -losgUtil -losgText
 
-
-LIBS += $$PWD/../../../thirdpartylib/osglib/lib/osgPlugins-3.7.0/osgdb_serializers_osg.so
-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
-
+LIBS += $$PWD/../../../thirdpartylib/osglib/lib/osgPlugins-3.7.0/osgdb_*
+#LIBS += $$PWD/../../../thirdpartylib/osglib/lib/osgPlugins-3.7.0/osgdb_serializers_osg.so
+#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
+#LIBS += $$PWD/../../../thirdpartylib/osglib/lib/osgPlugins-3.7.0/osgdb_ive.so
 
 
 HEADERS += \
@@ -83,3 +83,4 @@ HEADERS += \
     ../../include/msgtype/object.pb.h \
     viewer.hpp \
     RoadManager.hpp
+

+ 21 - 4
src/ui/ui_osgviewer/viewer.cpp

@@ -757,7 +757,8 @@ Viewer::Viewer(roadmanager::OpenDrive* odrManager, const char* modelFilename, co
 
 	// Check if the viewer has been created correctly - window created is a indication
 	osgViewer::ViewerBase::Windows wins;
-	osgViewer_->getWindows(wins);
+    osgViewer_->getWindows(wins);
+
 	if (wins.size() == 0)
 	{
 		// Viewer failed to create window. Probably Anti Aliasing is not supported on executing platform.
@@ -966,6 +967,7 @@ Viewer::Viewer(roadmanager::OpenDrive* odrManager, const char* modelFilename, co
 	{
 		// Default background color
 		osgViewer_->getCamera()->setClearColor(osg::Vec4(0.5f, 0.75f, 1.0f, 0.0f));
+        osgViewer_->getCamera()->setClearColor(osg::Vec4(0.0f, 0.0f, 0.0f, 0.0f));
 	}
 
 	// add the window size toggle handler
@@ -1015,6 +1017,17 @@ Viewer::Viewer(roadmanager::OpenDrive* odrManager, const char* modelFilename, co
 
 	osgViewer_->realize();
 
+    /****************************2021 apollo_fu add****************************************/
+    //设置显示窗口的大小
+    osgViewer::GraphicsWindow *pWnd = dynamic_cast<osgViewer::GraphicsWindow*>(osgViewer_->getCamera()->getGraphicsContext());
+    if (pWnd) {
+        pWnd->setWindowRectangle(400, 200, 800, 600);
+
+        pWnd->setWindowDecoration(true);
+    }
+
+    /**************************************************************************/
+
 	// Overlay text
 	osg::ref_ptr<osg::Geode> textGeode = new osg::Geode;
 	osg::Vec4 layoutColor(0.9f, 0.9f, 0.9f, 1.0f);
@@ -1657,7 +1670,9 @@ bool Viewer::CreateRoadMarkLines(roadmanager::OpenDrive* od)
 									point.set(osi_point2.x, osi_point2.y, osi_point2.z + z_offset);
 									osi_rm_points->push_back(point);
 
-									osi_rm_color->push_back(osg::Vec4(color_white[0], color_white[1], color_white[2], 1.0));
+                                    osi_rm_color->push_back(osg::Vec4(color_white[0], color_white[1], color_white[2], 1.0));
+//                                    osi_rm_color->push_back(osg::Vec4(color_yellow[0], color_yellow[1], color_yellow[2], 1.0));
+
 
 									// Put points at the start and end of the roadmark
 									osi_rm_point->setSize(6.0f);
@@ -1701,7 +1716,8 @@ bool Viewer::CreateRoadMarkLines(roadmanager::OpenDrive* od)
 								{
 									point.set(curr_osi_rm.GetPoint(s).x, curr_osi_rm.GetPoint(s).y, curr_osi_rm.GetPoint(s).z + z_offset);
 									osi_rm_points->push_back(point);
-									osi_rm_color->push_back(osg::Vec4(color_white[0], color_white[1], color_white[2], 1.0));
+                                    osi_rm_color->push_back(osg::Vec4(color_white[0], color_white[1], color_white[2], 1.0));
+//                                    osi_rm_color->push_back(osg::Vec4(color_yellow[0], color_yellow[1], color_yellow[2], 1.0));
 								}
 
 								// Put points on selected locations
@@ -1717,7 +1733,8 @@ bool Viewer::CreateRoadMarkLines(roadmanager::OpenDrive* od)
 
 								// Draw lines between each selected points
 								lineWidth->setWidth(OSI_LINE_WIDTH);
-								color->push_back(osg::Vec4(color_white[0], color_white[1], color_white[2], 1.0));
+                                color->push_back(osg::Vec4(color_white[0], color_white[1], color_white[2], 1.0));
+//                                color->push_back(osg::Vec4(color_yellow[0], color_yellow[1], color_yellow[2], 1.0));
 
 								geom->setVertexArray(osi_rm_points.get());
 								geom->setColorArray(color.get());