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
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit