diff --git a/forms/mainwindow.ui b/forms/mainwindow.ui index 84e4f4dc06d1634c7a8e9b6e83b7bd55bff9c357..85bb30029752c1568eba3119aaa87bde789cb440 100644 --- a/forms/mainwindow.ui +++ b/forms/mainwindow.ui @@ -1095,6 +1095,9 @@ border-color: rgb(255, 255, 255);</string> <property name="text"> <string>Side</string> </property> + <property name="visible"> + <bool>false</bool> + </property> </action> <action name="actionCameraViewFront"> <property name="checkable"> @@ -1106,6 +1109,9 @@ border-color: rgb(255, 255, 255);</string> <property name="text"> <string>Front</string> </property> + <property name="visible"> + <bool>false</bool> + </property> </action> <action name="actionPedestrian_Shape"> <property name="text"> @@ -1149,6 +1155,9 @@ border-color: rgb(255, 255, 255);</string> </property> </action> <action name="actionCameraViewAgent"> + <property name="enabled"> + <bool>false</bool> + </property> <property name="text"> <string>Agent View</string> </property> diff --git a/src/ThreadVisualisation.cpp b/src/ThreadVisualisation.cpp index 1e89378ffa68d1c4fd931a50cf02accb80d2b8e5..0398c1a0656189717e550b126da3168885c2fc08 100644 --- a/src/ThreadVisualisation.cpp +++ b/src/ThreadVisualisation.cpp @@ -139,11 +139,7 @@ void ThreadVisualisation::slotSetFrameRate(float fps){ void ThreadVisualisation::run(){ //deactivate the output windows - vtkObject::GlobalWarningDisplayOff(); -// vtkOutputWindow *w = vtkFileOutputWindow::New(); -// w->SetFileName("vtk_errors.txt"); -// vtkOutputWindow::SetInstance(w); -// w->Delete(); // now SetInstance owns the reference +// vtkObject::GlobalWarningDisplayOff(); //emit signalStatusMessage("running"); @@ -159,7 +155,7 @@ void ThreadVisualisation::run(){ //initialize the datasets - init(); + //init(); initGlyphs2D(); initGlyphs3D(); @@ -244,8 +240,8 @@ void ThreadVisualisation::run(){ //renderWindow->SetSize(1280, 960); // add the legend - if(SystemSettings::getShowLegend()) - initLegend(); + //if(SystemSettings::getShowLegend()) + // initLegend(); //add the running time frame runningTime = vtkTextActor::New(); @@ -283,32 +279,13 @@ void ThreadVisualisation::run(){ //add a light kit - if(SystemSettings::get2D()){ - renderer->GetActiveCamera()->OrthogonalizeViewUp(); - renderer->GetActiveCamera()->ParallelProjectionOn(); - renderer->ResetCamera(); - } +// if(SystemSettings::get2D()){ +// renderer->GetActiveCamera()->OrthogonalizeViewUp(); +// renderer->GetActiveCamera()->ParallelProjectionOn(); +// renderer->ResetCamera(); +// } + - //renderer->GetActiveCamera()->Print(cout); - if(0){//save the actual camera settings - vtkCamera *Camera = renderer->GetActiveCamera(); - - Camera->GetPosition( camPosTop ); - //fprintf( stdout, "Position=%lg,%lg,%lg\n", camPosTop[0], camPosTop[1], camPosTop[2] ); - Camera->GetFocalPoint( camFocalPointTop ); - //fprintf( stdout, "FocalPoint=%lg,%lg,%lg\n", camFocalPointTop[0], camFocalPointTop[1], camFocalPointTop[2] ); - Camera->GetViewUp( camViewUpTop ); - //fprintf( stdout, "ViewUp=%lg,%lg,%lg\n", camViewUpTop[0], camViewUpTop[1], camViewUpTop[2] ); - camViewAngleTop = Camera->GetViewAngle(); - //fprintf( stdout, "ViewAngle=%lg\n", camViewAngleTop ); - camParallelScale = Camera->GetParallelScale(); - //fprintf( stdout, "ParallelScale=%lg\n", camParallelScale ); - - renderer->GetActiveCamera()->GetPosition(camPosTop); - renderer->GetActiveCamera()->GetClippingRange(camClipTop); - //renderer->GetActiveCamera()->GetViewPlaneNormal(camViewPlan); - renderer->GetActiveCamera()->GetFocalPoint(camFocalPointTop); - } //create a timer for rendering the window TimerCallback *renderingTimer = new TimerCallback(); @@ -337,8 +314,9 @@ void ThreadVisualisation::run(){ //create special camera for the virtual reality feeling //renderer->GetActiveCamera()->SetRoll(90); //renderer->GetRenderers()->GetFirstRenderer()->GetActiveCamera(); - Pedestrian::setCamera(renderer->GetActiveCamera()); - renderer->ResetCamera(); + + //Pedestrian::setCamera(renderer->GetActiveCamera()); + //renderer->ResetCamera(); // just a workaround @@ -357,14 +335,17 @@ void ThreadVisualisation::run(){ // should be called after the observer has been added //renderWindow->Modified(); + //save the top view camera + _topViewCamera=vtkCamera::New(); + //renderer->GetActiveCamera()->Modified(); + _topViewCamera->DeepCopy(renderer->GetActiveCamera()); + renderWinInteractor->Start(); //emit signalStatusMessage("Idle"); emit signal_controlSequences("CONTROL_RESET"); - //renderWinInteractor->RemoveAllObservers(); - //renderWinInteractor->DestroyTimer(timer); //clear some stuffs finalize(); @@ -372,11 +353,12 @@ void ThreadVisualisation::run(){ renderer->Delete(); renderWindow->Delete(); renderWinInteractor->Delete(); + _topViewCamera->Delete(); renderer=NULL; } -void ThreadVisualisation::slotControlSequence(const char* sex){ +void ThreadVisualisation::slotControlSequence(const char* para){ //cout <<"control sequence received: " <<sex<<endl; } @@ -409,62 +391,18 @@ void ThreadVisualisation::showDoors(bool status){ void ThreadVisualisation::initGlyphs2D() { - // //VTK_CREATE (vtkSphereSource, agentShape); - // //agentShape->SetRadius(30); - // //agentShape->SetPhiResolution(20); - // //agentShape->SetThetaResolution(20); - - // //now create the glyphs with ellipses - // VTK_CREATE (vtkDiskSource, agentShape); - // agentShape->SetCircumferentialResolution(20); - // agentShape->SetInnerRadius(0); - // agentShape->SetOuterRadius(30); - - // extern_glyphs_pedestrians->SetSourceConnection(agentShape->GetOutputPort()); - - //#if VTK_MAJOR_VERSION <= 5 - // extern_glyphs_pedestrians->SetSource(agentShape->GetOutput()); - //#else - // extern_glyphs_pedestrians->SetInputConnection(agentShape->GetOutputPort()); - //#endif - - - // extern_glyphs_pedestrians->ThreeGlyphsOff(); - // extern_glyphs_pedestrians->ExtractEigenvaluesOff(); - - // //extern_glyphs_pedestrians->SetColorModeToScalars(); - // //extern_glyphs_pedestrians->SetScaleModeToDataScalingOff(); - // //extern_glyphs_pedestrians->Update(); - - - // VTK_CREATE(vtkPolyDataMapper, mapper); - // mapper->SetInputConnection(extern_glyphs_pedestrians->GetOutputPort()); - - // VTK_CREATE(vtkLookupTable, lut); - // lut->SetHueRange(0.0,0.470); - // //lut->SetSaturationRange(0,0); - // lut->SetValueRange(1.0,1.0); - // lut->SetNanColor(0.2,0.2,0.2,0.5); - // lut->SetNumberOfTableValues(256); - // lut->Build(); - // mapper->SetLookupTable(lut); - - // VTK_CREATE(vtkActor, actor); - // actor->SetMapper(mapper); - // renderer->AddActor(actor); - //glyphs with ellipsoids - VTK_CREATE (vtkSphereSource, agentShape); - agentShape->SetRadius(30); - agentShape->SetPhiResolution(20); - agentShape->SetThetaResolution(20); + // VTK_CREATE (vtkSphereSource, agentShape); + // agentShape->SetRadius(30); + // agentShape->SetPhiResolution(20); + // agentShape->SetThetaResolution(20); //now create the glyphs with ellipses - //VTK_CREATE (vtkDiskSource, agentShape); - //agentShape->SetCircumferentialResolution(20); - //agentShape->SetInnerRadius(0); - //agentShape->SetOuterRadius(30); + VTK_CREATE (vtkDiskSource, agentShape); + agentShape->SetCircumferentialResolution(20); + agentShape->SetInnerRadius(0); + agentShape->SetOuterRadius(30); //speed the rendering using triangles stripers vtkTriangleFilter *tris = vtkTriangleFilter::New(); @@ -476,7 +414,7 @@ void ThreadVisualisation::initGlyphs2D() //strip->GetOutput()->ReleaseData(); extern_glyphs_pedestrians->SetSourceConnection(strip->GetOutputPort()); - //_agents2D->SetSourceConnection(agentShape->GetOutputPort()); + //extern_glyphs_pedestrians->SetSourceConnection(agentShape->GetOutputPort()); #if VTK_MAJOR_VERSION <= 5 @@ -508,6 +446,7 @@ void ThreadVisualisation::initGlyphs2D() VTK_CREATE(vtkActor, actor); actor->SetMapper(mapper); actor->GetProperty()->BackfaceCullingOn(); + //actor->Modified(); renderer->AddActor(actor); // structure for the labels @@ -1039,23 +978,10 @@ void ThreadVisualisation::setAxisVisible(bool status){ void ThreadVisualisation::setCameraPerspective(int mode){ if(renderer==NULL) return; - renderer->GetActiveCamera()->Print(cout); switch (mode) { case 1: //TOP oder RESET - { - vtkCamera *camera = renderer->GetActiveCamera(); - - camera->SetPosition(camPosTop); - camera->SetFocalPoint(camFocalPointTop); - camera->SetViewUp(camViewUpTop); - camera->SetViewAngle(camViewAngleTop); - //camera->SetViewPlaneNormal(camViewPlanNormalTop); - camera->SetParallelScale(camParallelScale); - camera->Modified(); - renderer->ResetCameraClippingRange(); - - } + renderer->GetActiveCamera()->DeepCopy(_topViewCamera); break; case 2://SIDE diff --git a/src/ThreadVisualisation.h b/src/ThreadVisualisation.h index 3949e62d632da904d27cc103bad74aaa7291cfde..a2d7201472b834f6e738724ed3b0be3868efbc61 100644 --- a/src/ThreadVisualisation.h +++ b/src/ThreadVisualisation.h @@ -136,14 +136,14 @@ public: public Q_SLOTS: /**control sequence received*/ - void slotControlSequence(const char* sex); + void slotControlSequence(const char* para); /// set the frame rate in frames per second void slotSetFrameRate( float fps); Q_SIGNALS: - void signal_controlSequences(const char* sex); + void signal_controlSequences(const char* para); private: @@ -177,6 +177,7 @@ private: vtkRenderWindowInteractor* renderWinInteractor; vtkAxesActor* axis; vtkTextActor* runningTime; + vtkCamera* _topViewCamera; QString winTitle; float framePerSecond;