Revision: 8396
          http://playerstage.svn.sourceforge.net/playerstage/?rev=8396&view=rev
Author:   natepak
Date:     2009-11-12 19:36:29 +0000 (Thu, 12 Nov 2009)

Log Message:
-----------
Added ability to switch between cameras

Modified Paths:
--------------
    code/gazebo/trunk/server/gui/GLFrame.cc
    code/gazebo/trunk/server/gui/GLWindow.cc
    code/gazebo/trunk/server/rendering/OgreCamera.hh
    code/gazebo/trunk/server/rendering/UserCamera.cc
    code/gazebo/trunk/server/rendering/UserCamera.hh
    code/gazebo/trunk/worlds/willowgarage.world

Modified: code/gazebo/trunk/server/gui/GLFrame.cc
===================================================================
--- code/gazebo/trunk/server/gui/GLFrame.cc     2009-11-12 17:36:32 UTC (rev 
8395)
+++ code/gazebo/trunk/server/gui/GLFrame.cc     2009-11-12 19:36:29 UTC (rev 
8396)
@@ -144,6 +144,12 @@
 
   CameraManager::Instance()->ConnectAddCameraSignal( 
boost::bind(&GLFrame::CameraAddedSlot, this, _1) );
 
+  // Add all the current cameras
+  for (unsigned int i=0; i < CameraManager::Instance()->GetNumCameras(); i++)
+  {
+    this->CameraAddedSlot( CameraManager::Instance()->GetCamera(i) );
+  }
+
   this->show();
   this->redraw();
 }

Modified: code/gazebo/trunk/server/gui/GLWindow.cc
===================================================================
--- code/gazebo/trunk/server/gui/GLWindow.cc    2009-11-12 17:36:32 UTC (rev 
8395)
+++ code/gazebo/trunk/server/gui/GLWindow.cc    2009-11-12 19:36:29 UTC (rev 
8396)
@@ -33,6 +33,7 @@
 
 #include <GL/glx.h>
 
+#include <Ogre.h>
 #include "Param.hh"
 #include "Entity.hh"
 #include "Body.hh"
@@ -786,7 +787,8 @@
   }
   else
   {
-    this->activeCamera = CameraManager::Instance()->GetCamera( view );
+    OgreCamera *cam = CameraManager::Instance()->GetCamera( view );
+    ((UserCamera*)this->activeCamera)->SetCamera(cam);
   }
 
   cam->SetWorldPose( pose );

Modified: code/gazebo/trunk/server/rendering/OgreCamera.hh
===================================================================
--- code/gazebo/trunk/server/rendering/OgreCamera.hh    2009-11-12 17:36:32 UTC 
(rev 8395)
+++ code/gazebo/trunk/server/rendering/OgreCamera.hh    2009-11-12 19:36:29 UTC 
(rev 8396)
@@ -236,7 +236,7 @@
     protected: Ogre::PixelFormat imageFormat;
     protected: unsigned int visibilityMask;
 
-    protected: Ogre::RenderTarget *renderTarget;
+    public: Ogre::RenderTarget *renderTarget;
 
     protected: Ogre::TexturePtr renderTexture;
 

Modified: code/gazebo/trunk/server/rendering/UserCamera.cc
===================================================================
--- code/gazebo/trunk/server/rendering/UserCamera.cc    2009-11-12 17:36:32 UTC 
(rev 8395)
+++ code/gazebo/trunk/server/rendering/UserCamera.cc    2009-11-12 19:36:29 UTC 
(rev 8396)
@@ -138,19 +138,28 @@
 
   this->visual->AttachObject(line);
 
+  //this->renderTarget = this->window;
 
-  this->viewport = this->window->addViewport(this->GetOgreCamera());
+  this->SetCamera(this);
+  this->lastUpdate = Simulator::Instance()->GetRealTime();
+}
+
+void UserCamera::SetCamera( OgreCamera *cam )
+{
+  this->window->removeAllViewports();
+
+  if (cam == NULL)
+    cam = this;
+
+  this->viewport = this->window->addViewport(cam->GetOgreCamera());
   this->viewport->setBackgroundColour(Ogre::ColourValue::Black);
 
   this->SetAspectRatio( Ogre::Real(this->viewport->getActualWidth()) / 
Ogre::Real(this->viewport->getActualHeight()) );
 
   this->viewport->setVisibilityMask(this->visibilityMask);
+}
 
-  this->renderTarget = this->window;
 
-  this->lastUpdate = Simulator::Instance()->GetRealTime();
-}
-
 
////////////////////////////////////////////////////////////////////////////////
 /// Update
 void UserCamera::Update()

Modified: code/gazebo/trunk/server/rendering/UserCamera.hh
===================================================================
--- code/gazebo/trunk/server/rendering/UserCamera.hh    2009-11-12 17:36:32 UTC 
(rev 8395)
+++ code/gazebo/trunk/server/rendering/UserCamera.hh    2009-11-12 19:36:29 UTC 
(rev 8396)
@@ -55,6 +55,8 @@
     /// \brief Initialize
     public: void Init();
 
+    public: void SetCamera( OgreCamera *cam );
+
     /// \brief Update
     public: void Update();
 

Modified: code/gazebo/trunk/worlds/willowgarage.world
===================================================================
--- code/gazebo/trunk/worlds/willowgarage.world 2009-11-12 17:36:32 UTC (rev 
8395)
+++ code/gazebo/trunk/worlds/willowgarage.world 2009-11-12 19:36:29 UTC (rev 
8396)
@@ -95,6 +95,20 @@
     <include embedded="true">
       <xi:include href="models/pr2.model" />
     </include>
+
+    <body:box name="camera_body">
+      <xyz>-0.5 0 1.5</xyz>
+      <rpy>0 30 0</rpy>
+      <sensor:camera name="r_forearm_cam_sensor">
+        <imageSize>640.0 480.0</imageSize>
+        <imageFormat>L8</imageFormat>
+        <hfov>90.0</hfov>
+        <nearClip>0.1</nearClip>
+        <farClip>100</farClip>
+        <updateRate>20.0</updateRate>
+      </sensor:camera>
+    </body:box>
+
   </model:physical>
 
   <!--


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit

Reply via email to