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