Revision: 7141
          http://playerstage.svn.sourceforge.net/playerstage/?rev=7141&view=rev
Author:   natepak
Date:     2008-11-14 01:53:24 +0000 (Fri, 14 Nov 2008)

Log Message:
-----------
Fixed the stereo camera to output correct depth maps

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

Modified: code/gazebo/trunk/server/sensors/camera/StereoCameraSensor.cc
===================================================================
--- code/gazebo/trunk/server/sensors/camera/StereoCameraSensor.cc       
2008-11-13 20:45:50 UTC (rev 7140)
+++ code/gazebo/trunk/server/sensors/camera/StereoCameraSensor.cc       
2008-11-14 01:53:24 UTC (rev 7141)
@@ -128,16 +128,12 @@
   for (i = 2; i<4; i++)
   {
     this->renderTexture[i] = this->CreateRTT(this->textureName[i], true);
+    printf("RTT WH[%d 
%d]\n",this->renderTexture[i]->getWidth(),this->renderTexture[i]->getHeight());
     this->renderTargets[i] = 
this->renderTexture[i]->getBuffer()->getRenderTarget();
     this->renderTargets[i]->setAutoUpdated(false);
   }
 
-  // Create the camera
-  /*this->camera = OgreCreator::CreateCamera(this->GetName(),
-                 this->nearClip, this->farClip, this->hfov, 
-                 this->renderTargets[D_LEFT]);
-                 */
-  this->renderTarget = this->renderTargets[D_LEFT];
+    this->renderTarget = this->renderTargets[D_LEFT];
 
   this->InitCam();
 
@@ -158,6 +154,10 @@
     matPtr = Ogre::MaterialManager::getSingleton().create(
              this->materialName[i],
              Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
+    matPtr->getTechnique(0)->getPass(0)->setDepthCheckEnabled(false);
+    matPtr->getTechnique(0)->getPass(0)->setDepthWriteEnabled(false);
+    matPtr->getTechnique(0)->getPass(0)->setLightingEnabled(false);
+    
 
     matPtr->getTechnique(0)->getPass(0)->createTextureUnitState(
         this->textureName[i] );
@@ -172,12 +172,6 @@
   this->textureHeight = mBuffer->getHeight();
 
 
-  //this->leftCameraListener.Init(this, this->renderTargets[0], true);
-  //this->rightCameraListener.Init(this, this->renderTargets[1], false);
-
-  //this->renderTargets[0]->addListener(&this->leftCameraListener);
-  //this->renderTargets[1]->addListener(&this->rightCameraListener);
- 
   this->rgbBufferSize = this->imageSizeP->GetValue().x * 
this->imageSizeP->GetValue().y * 3;
   this->depthBufferSize = 
this->imageSizeP->GetValue().x*this->imageSizeP->GetValue().y;
 
@@ -187,41 +181,19 @@
   this->rgbBuffer[0] = new unsigned char[this->rgbBufferSize];
   this->rgbBuffer[1] = new unsigned char[this->rgbBufferSize];
 
-  Ogre::MaterialPtr debugMat = Ogre::MaterialManager::getSingleton().create(
-      "Ogre/DebugShadowMap0", 
-      Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
+  // Uncomment this section to create a debug overaly
+  /*{
+    Ogre::Overlay *overlay = 
Ogre::OverlayManager::getSingletonPtr()->create("__GAZEBO_STEREO_DEBUG_OVERLAY__");
 
-  debugMat->getTechnique(0)->getPass(0)->setLightingEnabled(false);
-  Ogre::TexturePtr shadowTex = 
OgreAdaptor::Instance()->sceneMgr->getShadowTexture(0);
-  Ogre::TextureUnitState *t = 
debugMat->getTechnique(0)->getPass(0)->createTextureUnitState(shadowTex->getName());
-  t->setTextureAddressingMode(Ogre::TextureUnitState::TAM_CLAMP);
+    Ogre::OverlayContainer *overlayPanel = 
(Ogre::OverlayContainer*)(Ogre::OverlayManager::getSingletonPtr()->createOverlayElement("Panel",
 "__GAZEBO_PANEL"));
+    overlayPanel->setPosition(0.5, 0);
+    overlayPanel->_setDimensions(0.5, 0.5);
+    overlayPanel->setMaterialName(this->materialName[D_LEFT]);
 
-  /*debugMat = Ogre::MaterialManager::getSingleton().create(
-      "Ogre/DebugShadowMap1", 
-      Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
-  debugMat->getTechnique(0)->getPass(0)->setLightingEnabled(false);
-  shadowTex = OgreAdaptor::Instance()->sceneMgr->getShadowTexture(1);
-  t = 
debugMat->getTechnique(0)->getPass(0)->createTextureUnitState(shadowTex->getName());
-  t->setTextureAddressingMode(Ogre::TextureUnitState::TAM_CLAMP);
+    overlay->add2D(overlayPanel);
 
-
-  Ogre::OverlayContainer* debugPanel = (Ogre::OverlayContainer*)
-    (Ogre::OverlayManager::getSingleton().createOverlayElement("Panel", 
"Ogre/DebugShadowPanel0"));
-  debugPanel->_setPosition(0.8, 0);
-  debugPanel->_setDimensions(0.2, 0.2);
-  debugPanel->setMaterialName("Ogre/DebugShadowMap0");
-  Ogre::Overlay* debugOverlay = 
Ogre::OverlayManager::getSingleton().getByName("Core/DebugOverlay");
-  if (!debugOverlay)
-    printf("NULL\n");
-  debugOverlay->add2D(debugPanel);
-                          
-  debugPanel = (Ogre::OverlayContainer*)
-    (Ogre::OverlayManager::getSingleton().createOverlayElement("Panel", 
"Ogre/DebugShadowPanel1"));
-  debugPanel->_setPosition(0.8, 0.2);
-  debugPanel->_setDimensions(0.2, 0.2);
-  debugPanel->setMaterialName("Ogre/DebugShadowMap1");
-  debugOverlay->add2D(debugPanel);
-  */
+    overlay->show();
+  }*/
 }
 
 //////////////////////////////////////////////////////////////////////////////
@@ -262,8 +234,6 @@
 
   sceneMgr->_suppressRenderStateChanges(true);
 
-  //prev_pass = sceneMgr->getPass();
-
   // Get pointer to the material pass
   pass = this->depthMaterial->getBestTechnique()->getPass(0);
 
@@ -292,7 +262,10 @@
     autoParamDataSource.setCurrentSceneManager(sceneMgr);
     autoParamDataSource.setCurrentCamera(this->GetOgreCamera(), true);
     pass->_updateAutoParamsNoLights(&autoParamDataSource);
-
+    
+    renderSys->setLightingEnabled(false);
+    renderSys->_setFog(Ogre::FOG_NONE);
+    
     // These two lines don't seem to do anything useful
     
renderSys->_setProjectionMatrix(this->GetOgreCamera()->getProjectionMatrixRS());
 
     renderSys->_setViewMatrix(this->GetOgreCamera()->getViewMatrix(true));
@@ -310,22 +283,24 @@
       renderSys->bindGpuProgram( 
pass->getFragmentProgram()->_getBindingDelegate() );
       renderSys->bindGpuProgramParameters(Ogre::GPT_FRAGMENT_PROGRAM, 
           pass->getFragmentProgramParameters());
-    }   
+    }
+    
+
     this->renderTargets[i]->update();
   }
 
   sceneMgr->_suppressRenderStateChanges(false); 
 
   // Render the image texture
-  /*for (i=0; i<2; i++)
+  for (i=0; i<2; i++)
   {
     this->renderTargets[i]->update();
-  }*/
+  }
 
   if (gridNode)
     gridNode->setVisible(true);
 
-  this->FillBuffers();
+    this->FillBuffers();
 
   if (this->saveFramesP->GetValue())
     this->SaveFrame();
@@ -389,7 +364,8 @@
     else
     {
       hardwareBuffer->blitToMemory (Ogre::Box(left,top,right,bottom),
-          Ogre::PixelBox( this->imageSizeP->GetValue().x, 
this->imageSizeP->GetValue().y,
+          Ogre::PixelBox( this->imageSizeP->GetValue().x, 
+            this->imageSizeP->GetValue().y,
             1, PF_FLOAT, this->depthBuffer[i-2])
           );
     }
@@ -417,9 +393,9 @@
 
   fprintf( fp, "P6\n# Gazebo\n%d %d\n255\n", this->imageSizeP->GetValue().x, 
this->imageSizeP->GetValue().y);
 
-  for (unsigned int i = 0; i< (unsigned int)this->imageSizeP->GetValue().x; 
i++)
+  for (unsigned int i = 0; i< (unsigned int)this->imageSizeP->GetValue().y; 
i++)
   {
-    for (unsigned int j =0; j<(unsigned int)this->imageSizeP->GetValue().y; 
j++)
+    for (unsigned int j =0; j<(unsigned int)this->imageSizeP->GetValue().x; 
j++)
     {
       double f = this->depthBuffer[0][i*this->imageSizeP->GetValue().x+j];
      

Modified: code/gazebo/trunk/worlds/bandit.world
===================================================================
--- code/gazebo/trunk/worlds/bandit.world       2008-11-13 20:45:50 UTC (rev 
7140)
+++ code/gazebo/trunk/worlds/bandit.world       2008-11-14 01:53:24 UTC (rev 
7141)
@@ -124,8 +124,9 @@
   </model:physical>
 
   <model:physical name="cylinder1_model">
-    <xyz>10 0 0.5</xyz>
+    <xyz>5 0 0.5</xyz>
     <rpy>0.0 0.0 0.0</rpy>
+    <static>true</static>
 
     <body:cylinder name="cylinder1_body">
       <geom:cylinder name="cylinder1_geom">
@@ -139,15 +140,33 @@
     </body:cylinder>
   </model:physical>
 
+
+  <model:physical name="cylinder2_model">
+    <xyz>10 0 2.5</xyz>
+    <rpy>0.0 0.0 0.0</rpy>
+    <static>true</static>
+
+    <body:cylinder name="cylinder2_body">
+      <geom:cylinder name="cylinder2_geom">
+        <size>0.5 1</size>
+        <mass>1.0</mass>
+        <visual>
+          <mesh>unit_cylinder</mesh>
+          <material>Gazebo/RustyBarrel</material>
+        </visual>
+      </geom:cylinder>
+    </body:cylinder>
+  </model:physical>
+
   <!-- White Directional light -->
-  <model:renderable name="directional_white">
+  <model:renderable name="point_white">
+    <xyz>0 2 2</xyz>
     <light>
-      <type>directional</type>
-      <direction>-1 1.0 -0.5</direction>
-      <diffuseColor>0.2 0.2 0.2</diffuseColor>
-      <specularColor>0.0 0.0 0.0</specularColor>
-      <attenuation>100 0.0 1.0 0.4</attenuation>
+      <type>point</type>
+      <diffuseColor>0.8 0.8 0.8</diffuseColor>
+      <specularColor>0.1 0.1 0.1</specularColor>
+      <attenuation>10 0.8 0.1 0.0</attenuation>
     </light>
   </model:renderable>
-
+ 
 </gazebo:world>

Modified: code/gazebo/trunk/worlds/models/bandit.model
===================================================================
--- code/gazebo/trunk/worlds/models/bandit.model        2008-11-13 20:45:50 UTC 
(rev 7140)
+++ code/gazebo/trunk/worlds/models/bandit.model        2008-11-14 01:53:24 UTC 
(rev 7141)
@@ -73,8 +73,8 @@
       <imageSize>320 240</imageSize>
       <hfov>60</hfov>
       <nearClip>0.1</nearClip>
-      <farClip>100</farClip>
-      <saveFrames>true</saveFrames>
+      <farClip>10</farClip>
+      <saveFrames>false</saveFrames>
       <saveFramePath>frames</saveFramePath>
       <baseline>0.2</baseline>
 


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

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Playerstage-commit mailing list
Playerstage-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/playerstage-commit

Reply via email to