Revision: 4454
          http://playerstage.svn.sourceforge.net/playerstage/?rev=4454&view=rev
Author:   natepak
Date:     2008-03-28 08:43:42 -0700 (Fri, 28 Mar 2008)

Log Message:
-----------
Updates to the stereo camera

Modified Paths:
--------------
    code/gazebo/trunk/server/rendering/OgreAdaptor.cc
    code/gazebo/trunk/server/sensors/camera/StereoCameraSensor.cc
    code/gazebo/trunk/server/sensors/camera/StereoCameraSensor.hh
    code/gazebo/trunk/worlds/models/bandit.model
    code/gazebo/trunk/worlds/stereocamera.world

Modified: code/gazebo/trunk/server/rendering/OgreAdaptor.cc
===================================================================
--- code/gazebo/trunk/server/rendering/OgreAdaptor.cc   2008-03-28 09:31:36 UTC 
(rev 4453)
+++ code/gazebo/trunk/server/rendering/OgreAdaptor.cc   2008-03-28 15:43:42 UTC 
(rev 4454)
@@ -197,6 +197,7 @@
     gzthrow("Unsupported shadow technique:\n" << shadowTechnique);
 
   this->sceneMgr->setShadowTextureSelfShadow(true);
+  this->sceneMgr->setShadowTexturePixelFormat(Ogre::PF_FLOAT32_R);
   this->sceneMgr->setShadowTextureSize(node->GetInt("shadowTextureSize", 512));
   this->sceneMgr->setShadowIndexBufferSize( 
node->GetInt("shadowIndexSize",this->sceneMgr->getShadowIndexBufferSize()) );
 

Modified: code/gazebo/trunk/server/sensors/camera/StereoCameraSensor.cc
===================================================================
--- code/gazebo/trunk/server/sensors/camera/StereoCameraSensor.cc       
2008-03-28 09:31:36 UTC (rev 4453)
+++ code/gazebo/trunk/server/sensors/camera/StereoCameraSensor.cc       
2008-03-28 15:43:42 UTC (rev 4454)
@@ -73,59 +73,130 @@
 // Initialize the camera
 void StereoCameraSensor::InitChild()
 {
-  this->leftOgreTextureName = this->GetName() + "_RttTex_Stereo_Left";
-  this->rightOgreTextureName = this->GetName() + "_RttTex_Stereo_Right";
+  this->ogreTextureName[0] = this->GetName() + "_RttTex_Stereo_Left";
+  this->ogreTextureName[1] = this->GetName() + "_RttTex_Stereo_Right";
 
-  this->leftOgreMaterialName = this->GetName() + "_RttMat_Stereo_Left";
-  this->rightOgreMaterialName = this->GetName() + "_RttMat_Stereo_Right";
+  this->ogreDepthTextureName[0] = this->GetName() +"_RttTex_Stereo_Left_Depth";
+  this->ogreDepthTextureName[1] = this->GetName() 
+"_RttTex_Stereo_Right_Depth";
 
-  // Create the render texture
+  this->ogreMaterialName[0] = this->GetName() + "_RttMat_Stereo_Left";
+  this->ogreMaterialName[1] = this->GetName() + "_RttMat_Stereo_Right";
+
+  this->ogreDepthMaterialName[0] = this->GetName()+"_RttMat_Stereo_Left_Depth";
+  this->ogreDepthMaterialName[1] = 
this->GetName()+"_RttMat_Stereo_Right_Depth";
+
+
+  // Create the left render texture
   this->renderTexture[0] = Ogre::TextureManager::getSingleton().createManual(
-                          this->leftOgreTextureName,
+                          this->ogreTextureName[0],
                           
Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME,
                           Ogre::TEX_TYPE_2D,
                           this->imageWidth, this->imageHeight, 0,
                           Ogre::PF_R8G8B8,
                           Ogre::TU_RENDERTARGET);
 
-  this->leftRenderTarget = 
this->renderTexture[0]->getBuffer()->getRenderTarget();
+  this->renderTarget[0] = 
this->renderTexture[0]->getBuffer()->getRenderTarget();
 
+  // Create the right render texture
   this->renderTexture[1] = Ogre::TextureManager::getSingleton().createManual(
-                          this->rightOgreTextureName,
+                          this->ogreTextureName[1],
                           
Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME,
                           Ogre::TEX_TYPE_2D,
                           this->imageWidth, this->imageHeight, 0,
                           Ogre::PF_R8G8B8,
                           Ogre::TU_RENDERTARGET);
 
-  this->rightRenderTarget = 
this->renderTexture[1]->getBuffer()->getRenderTarget();
+  this->renderTarget[1] = 
this->renderTexture[1]->getBuffer()->getRenderTarget();
 
+  // Create the left depth render texture
+  this->depthRenderTexture[0] = 
+    Ogre::TextureManager::getSingleton().createManual(
+        this->ogreDepthTextureName[0],
+        Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME,
+        Ogre::TEX_TYPE_2D,
+        this->imageWidth, this->imageHeight, 0,
+        Ogre::PF_FLOAT32_R,
+        //Ogre::PF_DEPTH,
+        //Ogre::PF_R8G8B8,
+        Ogre::TU_RENDERTARGET);
+
+  this->depthRenderTarget[0] = 
this->depthRenderTexture[0]->getBuffer()->getRenderTarget();
+
+  // Create the right depth render texture
+  this->depthRenderTexture[1] = 
+    Ogre::TextureManager::getSingleton().createManual(
+        this->ogreDepthTextureName[1],
+        Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME,
+        Ogre::TEX_TYPE_2D,
+        this->imageWidth, this->imageHeight, 0,
+        Ogre::PF_FLOAT32_R,
+        //Ogre::PF_DEPTH,
+        //Ogre::PF_R8G8B8,
+        Ogre::TU_RENDERTARGET);
+
+  this->depthRenderTarget[1] = 
this->depthRenderTexture[1]->getBuffer()->getRenderTarget();
+
+
+
   // Create the camera
   this->camera = OgreCreator::CreateCamera(this->GetName(),
-                 this->nearClip, this->farClip, this->hfov, 
this->leftRenderTarget);
+                 this->nearClip, this->farClip, this->hfov, 
this->renderTarget[0]);
 
   // Hack to make the camera use the right render target too
   {
     Ogre::Viewport *cviewport;
 
     // Setup the viewport to use the texture
-    cviewport = this->rightRenderTarget->addViewport(camera);
+    cviewport = this->renderTarget[1]->addViewport(camera);
     cviewport->setClearEveryFrame(true);
     cviewport->setBackgroundColour( *OgreAdaptor::Instance()->backgroundColor 
);
     cviewport->setOverlaysEnabled(false);
+
+    cviewport = this->depthRenderTarget[0]->addViewport(camera);
+    cviewport->setClearEveryFrame(true);
+    cviewport->setBackgroundColour( *OgreAdaptor::Instance()->backgroundColor 
);
+    cviewport->setOverlaysEnabled(false);
+
+    cviewport = this->depthRenderTarget[1]->addViewport(camera);
+    cviewport->setClearEveryFrame(true);
+    cviewport->setBackgroundColour( *OgreAdaptor::Instance()->backgroundColor 
);
+    cviewport->setOverlaysEnabled(false);
   }
 
   Ogre::MaterialPtr leftmat = Ogre::MaterialManager::getSingleton().create(
-                            this->leftOgreMaterialName,
-                            
Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
+                      this->ogreMaterialName[0],
+                      Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
+
   Ogre::MaterialPtr rightmat = Ogre::MaterialManager::getSingleton().create(
-                            this->rightOgreMaterialName,
-                            
Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
+                      this->ogreMaterialName[1],
+                      Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
 
+  
leftmat->getTechnique(0)->getPass(0)->createTextureUnitState(this->ogreTextureName[0]);
+  
rightmat->getTechnique(0)->getPass(0)->createTextureUnitState(this->ogreTextureName[1]);
 
-  
leftmat->getTechnique(0)->getPass(0)->createTextureUnitState(this->leftOgreTextureName);
-  
rightmat->getTechnique(0)->getPass(0)->createTextureUnitState(this->rightOgreTextureName);
+  Ogre::MaterialPtr leftdepthmat = 
Ogre::MaterialManager::getSingleton().create(
+                      this->ogreDepthMaterialName[0],
+                      Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
 
+  Ogre::MaterialPtr rightdepthmat=Ogre::MaterialManager::getSingleton().create(
+                      this->ogreDepthMaterialName[1],
+                      Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
+
+  
//leftdepthmat->getTechnique(0)->getPass(0)->createTextureUnitState(this->ogreDepthTextureName[0]);
+  Ogre::TextureUnitState *t = 
leftdepthmat->getTechnique(0)->getPass(0)->createTextureUnitState(OgreAdaptor::Instance()->sceneMgr->getShadowTexture(0)->getName());
+  leftdepthmat->getTechnique(0)->getPass(0)->setLightingEnabled(false);
+  t->setTextureAddressingMode(Ogre::TextureUnitState::TAM_CLAMP);
+
+  //leftdepthmat->getTechnique(0)->getPass(0)->setDepthWriteEnabled(true);
+  //leftdepthmat->getTechnique(0)->getPass(0)->setColourWriteEnabled(false);
+
+  
rightdepthmat->getTechnique(0)->getPass(0)->createTextureUnitState(this->ogreDepthTextureName[1]);
+  rightdepthmat->getTechnique(0)->getPass(0)->setLightingEnabled(false);
+  //rightdepthmat->getTechnique(0)->getPass(0)->setDepthWriteEnabled(true);
+  //rightdepthmat->getTechnique(0)->getPass(0)->setColourWriteEnabled(false);
+
+
+
   Ogre::HardwarePixelBufferSharedPtr mBuffer;
 
   // Get access to the buffer and make an image and write it to file
@@ -134,11 +205,11 @@
   this->textureWidth = mBuffer->getWidth();
   this->textureHeight = mBuffer->getHeight();
 
-  this->leftCameraListener.Init(this, this->leftRenderTarget, true);
-  this->rightCameraListener.Init(this, this->rightRenderTarget, false);
+  this->leftCameraListener.Init(this, this->renderTarget[0], true);
+  this->rightCameraListener.Init(this, this->renderTarget[1], false);
 
-  this->leftRenderTarget->addListener(&this->leftCameraListener);
-  this->rightRenderTarget->addListener(&this->rightCameraListener);
+  this->renderTarget[0]->addListener(&this->leftCameraListener);
+  this->renderTarget[1]->addListener(&this->rightCameraListener);
 
   CameraSensor::InitChild();
 }
@@ -160,7 +231,7 @@
 // Return the material the camera renders to
 std::string StereoCameraSensor::GetMaterialName() const
 {
-  return this->leftOgreMaterialName;
+  return this->ogreDepthMaterialName[0];
 }
 
 //////////////////////////////////////////////////////////////////////////////
@@ -177,7 +248,7 @@
   }
 
   // Get access to the buffer and make an image and write it to file
-  mBuffer = this->renderTexture[i]->getBuffer(0, 0);
+  mBuffer = this->depthRenderTexture[i]->getBuffer(0, 0);
 
   size = this->imageWidth * this->imageHeight * 3;
 
@@ -324,13 +395,10 @@
     float *src = depthImage + i * this->imageWidth;
     for (int j = 0; j < this->imageWidth; j++)
     {
-      dst[j] = src[j];
-      printf("%4.2f ",src[j]);
-      /*if (src[j] < 1e-6)
+      if (src[j] < 1e-6)
         dst[j] = 0;
       else
         dst[j] = (int) (255 * (a / src[j] + b));
-        */
     }
     printf("\n");
     fwrite( dst, 1, this->imageWidth, fp);
@@ -377,7 +445,7 @@
 
 void StereoCameraSensor::StereoCameraListener::postViewportUpdate(const 
Ogre::RenderTargetViewportEvent &evt)
 {
-  this->sensor->ReadDepthImage();
+  //this->sensor->ReadDepthImage();
 
        this->camera->setFrustumOffset(0,0);
        this->camera->setPosition(this->pos);

Modified: code/gazebo/trunk/server/sensors/camera/StereoCameraSensor.hh
===================================================================
--- code/gazebo/trunk/server/sensors/camera/StereoCameraSensor.hh       
2008-03-28 09:31:36 UTC (rev 4453)
+++ code/gazebo/trunk/server/sensors/camera/StereoCameraSensor.hh       
2008-03-28 15:43:42 UTC (rev 4454)
@@ -94,15 +94,18 @@
   //private: void UpdateAllDependentRenderTargets();
 
   private: Ogre::TexturePtr renderTexture[2];
-  private: Ogre::RenderTarget *leftRenderTarget;
-  private: Ogre::RenderTarget *rightRenderTarget;
+  private: Ogre::TexturePtr depthRenderTexture[2];
 
+  private: Ogre::RenderTarget *renderTarget[2];
+  private: Ogre::RenderTarget *depthRenderTarget[2];
 
-  private: std::string leftOgreTextureName;
-  private: std::string rightOgreTextureName;
-  private: std::string leftOgreMaterialName;
-  private: std::string rightOgreMaterialName;
 
+  private: std::string ogreTextureName[2];
+  private: std::string ogreMaterialName[2];
+  private: std::string ogreDepthTextureName[2];
+  private: std::string ogreDepthMaterialName[2];
+
+
   private: double baseline;
 
   private: 

Modified: code/gazebo/trunk/worlds/models/bandit.model
===================================================================
--- code/gazebo/trunk/worlds/models/bandit.model        2008-03-28 09:31:36 UTC 
(rev 4453)
+++ code/gazebo/trunk/worlds/models/bandit.model        2008-03-28 15:43:42 UTC 
(rev 4454)
@@ -235,8 +235,8 @@
     <anchor>right_forearm_body</anchor>
     <anchorOffset>0 0 -0.05</anchorOffset>
     <axis>0 0 1</axis>
-    <lowStop>-1</lowStop>
-    <highStop>90</highStop>
+    <lowStop>-90</lowStop>
+    <highStop>1</highStop>
   </joint:hinge>
 
   <body:box name="right_hand_body">

Modified: code/gazebo/trunk/worlds/stereocamera.world
===================================================================
--- code/gazebo/trunk/worlds/stereocamera.world 2008-03-28 09:31:36 UTC (rev 
4453)
+++ code/gazebo/trunk/worlds/stereocamera.world 2008-03-28 15:43:42 UTC (rev 
4454)
@@ -32,6 +32,7 @@
     <sky>
       <material>Gazebo/CloudySky</material>
     </sky>
+    <!--<shadowTechnique>textureAdditive</shadowTechnique>-->
 
   </rendering:ogre>
 


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

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit

Reply via email to