فهرست منبع

余工添加了对外部osgb文件的加载函数实现

fujiankuan 3 سال پیش
والد
کامیت
41c4e98dcf
3فایلهای تغییر یافته به همراه38 افزوده شده و 7 حذف شده
  1. 9 6
      src/ui/ui_osgviewer/main.cpp
  2. 27 0
      src/ui/ui_osgviewer/viewer.cpp
  3. 2 1
      src/ui/ui_osgviewer/viewer.hpp

+ 9 - 6
src/ui/ui_osgviewer/main.cpp

@@ -313,6 +313,9 @@ 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");
+
     if ((car_->model = viewer->AddEntityModel(carModelsFiles_[carModelID], osg::Vec3(0.5, 0.5, 0.5),
         viewer::EntityModel::EntityType::ENTITY_TYPE_VEHICLE, false, "", 0)) == 0)
     {
@@ -645,7 +648,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","-2.8");
+    std::string strheightajust = xp.GetParam("heightajust","-1.0");
     gvehicleheight = atof(strheightajust.data());
 
 
@@ -743,11 +746,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);

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

@@ -1354,6 +1354,33 @@ EntityModel* Viewer::AddRadarModel(osg::Vec3 trail_color,std::string name)
     return entities_Radar.back();
 }
 
+
+int Viewer::AddOSGBEnv(const char* filename,osg::Vec3 trail_color,  std::string name)
+{
+    osg::ref_ptr<osg::Group> group = 0;
+
+    group = LoadEntityModel(filename);
+
+    EntityModel* model;
+
+    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);
+
+    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);
+
+    return 0;
+
+
+}
 EntityModel* Viewer::AddEntityModel(std::string modelFilepath, osg::Vec3 trail_color, EntityModel::EntityType type, 
 	bool road_sensor, std::string name, OSCBoundingBox* boundingBox)
 {

+ 2 - 1
src/ui/ui_osgviewer/viewer.hpp

@@ -74,7 +74,7 @@ namespace viewer
 	class SensorViewFrustum
 	{
 	public:
-		osg::ref_ptr<osg::PositionAttitudeTransform> txNode_;
+        osg::ref_ptr<osg::PositionAttitudeTransform> txNode_;
 		osg::ref_ptr<osg::Group> line_group_;
 		std::vector<Line*> lines_;
 		ObjectSensor *sensor_;
@@ -336,6 +336,7 @@ namespace viewer
 		void RemoveCar(std::string name);
 		int LoadShadowfile(std::string vehicleModelFilename);
 		int AddEnvironment(const char* filename);
+        int AddOSGBEnv(const char* filename,osg::Vec3 trail_color,  std::string name);
 		osg::ref_ptr<osg::Group> LoadEntityModel(const char *filename);
 		void UpdateSensor(PointSensor *sensor);
 		void SensorSetPivotPos(PointSensor *sensor, double x, double y, double z);