From: <na...@us...> - 2008-09-21 22:47:49
|
Revision: 7032 http://playerstage.svn.sourceforge.net/playerstage/?rev=7032&view=rev Author: natepak Date: 2008-09-21 22:47:47 +0000 (Sun, 21 Sep 2008) Log Message: ----------- Applied patch 2106098 Modified Paths: -------------- code/gazebo/trunk/server/rendering/MovableText.cc code/gazebo/trunk/server/rendering/MovableText.hh Modified: code/gazebo/trunk/server/rendering/MovableText.cc =================================================================== --- code/gazebo/trunk/server/rendering/MovableText.cc 2008-09-21 22:42:08 UTC (rev 7031) +++ code/gazebo/trunk/server/rendering/MovableText.cc 2008-09-21 22:47:47 UTC (rev 7032) @@ -228,7 +228,6 @@ Ogre::VertexBufferBinding *bind = NULL; Ogre::HardwareVertexBufferSharedPtr ptbuf; Ogre::HardwareVertexBufferSharedPtr cbuf; - size_t charlen = this->text.size(); float *pVert = NULL; float largestWidth = 0; float left = 0; Modified: code/gazebo/trunk/server/rendering/MovableText.hh =================================================================== --- code/gazebo/trunk/server/rendering/MovableText.hh 2008-09-21 22:42:08 UTC (rev 7031) +++ code/gazebo/trunk/server/rendering/MovableText.hh 2008-09-21 22:47:47 UTC (rev 7032) @@ -117,32 +117,30 @@ /// \brief Get the squared view depth (from MovableObject) protected: float getSquaredViewDepth(const Ogre::Camera *cam) const; - private: float viewportAspectCoef; - private: std::string fontName; private: Ogre::UTFString text; - private: HorizAlign horizAlign; - private: VertAlign vertAlign; - private: Ogre::ColourValue color; private: Ogre::RenderOperation renderOp; private: Ogre::AxisAlignedBox aabb; private: Ogre::LightList lightList; private: float charHeight; - private: float spaceWidth; private: bool needUpdate; - private: bool updateColors; - private: bool onTop; private: float radius; - private: float baseline; private: Ogre::Camera *camera; private: Ogre::RenderWindow *renderWindow; + private: float viewportAspectCoef; private: Ogre::Font *font; + private: float spaceWidth; + private: bool updateColors; + private: VertAlign vertAlign; + private: HorizAlign horizAlign; + private: bool onTop; + private: float baseline; private: Ogre::MaterialPtr material; private: Ogre::MaterialPtr backgroundMaterial; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <na...@us...> - 2008-09-24 18:07:33
|
Revision: 7040 http://playerstage.svn.sourceforge.net/playerstage/?rev=7040&view=rev Author: natepak Date: 2008-09-24 18:07:24 +0000 (Wed, 24 Sep 2008) Log Message: ----------- add svn properties Modified Paths: -------------- code/gazebo/trunk/server/rendering/CameraManager.cc code/gazebo/trunk/server/rendering/CameraManager.hh code/gazebo/trunk/server/rendering/OgreCamera.cc code/gazebo/trunk/server/rendering/OgreCamera.hh code/gazebo/trunk/server/rendering/OgreVisual.cc code/gazebo/trunk/server/rendering/UserCamera.cc code/gazebo/trunk/server/rendering/UserCamera.hh Property Changed: ---------------- code/gazebo/trunk/server/rendering/ code/gazebo/trunk/server/rendering/CameraManager.cc code/gazebo/trunk/server/rendering/CameraManager.hh code/gazebo/trunk/server/rendering/MovableText.cc code/gazebo/trunk/server/rendering/MovableText.hh code/gazebo/trunk/server/rendering/OgreAdaptor.cc code/gazebo/trunk/server/rendering/OgreAdaptor.hh code/gazebo/trunk/server/rendering/OgreCamera.cc code/gazebo/trunk/server/rendering/OgreCamera.hh code/gazebo/trunk/server/rendering/OgreCreator.cc code/gazebo/trunk/server/rendering/OgreCreator.hh code/gazebo/trunk/server/rendering/OgreDynamicLines.cc code/gazebo/trunk/server/rendering/OgreDynamicLines.hh code/gazebo/trunk/server/rendering/OgreDynamicRenderable.cc code/gazebo/trunk/server/rendering/OgreDynamicRenderable.hh code/gazebo/trunk/server/rendering/OgreFrameListener.cc code/gazebo/trunk/server/rendering/OgreFrameListener.hh code/gazebo/trunk/server/rendering/OgreHUD.cc code/gazebo/trunk/server/rendering/OgreHUD.hh code/gazebo/trunk/server/rendering/OgreSimpleShape.cc code/gazebo/trunk/server/rendering/OgreSimpleShape.hh code/gazebo/trunk/server/rendering/OgreVisual.cc code/gazebo/trunk/server/rendering/OgreVisual.hh code/gazebo/trunk/server/rendering/UserCamera.cc code/gazebo/trunk/server/rendering/UserCamera.hh Property changes on: code/gazebo/trunk/server/rendering ___________________________________________________________________ Modified: svn:ignore - *.os + .player *.os *.so *.o *.a config.log .scon* Ogre.log gazebo Doxyfile gazeborc *.pc .settings .cproject .project bandit Modified: code/gazebo/trunk/server/rendering/CameraManager.cc =================================================================== --- code/gazebo/trunk/server/rendering/CameraManager.cc 2008-09-24 18:06:29 UTC (rev 7039) +++ code/gazebo/trunk/server/rendering/CameraManager.cc 2008-09-24 18:07:24 UTC (rev 7040) @@ -21,7 +21,7 @@ /* Desc: Class to manage all cameras * Author: Nate Koenig * Date: 3 Apr 2007 - * SVN: $Id: CameraManager.cc 4436 2008-03-24 17:42:45Z robotos $ + * SVN: $Id$ */ #include "OgreCamera.hh" Property changes on: code/gazebo/trunk/server/rendering/CameraManager.cc ___________________________________________________________________ Added: svn:keywords + Id Revision Modified: code/gazebo/trunk/server/rendering/CameraManager.hh =================================================================== --- code/gazebo/trunk/server/rendering/CameraManager.hh 2008-09-24 18:06:29 UTC (rev 7039) +++ code/gazebo/trunk/server/rendering/CameraManager.hh 2008-09-24 18:07:24 UTC (rev 7040) @@ -21,7 +21,7 @@ /* Desc: Class to manage all cameras * Author: Andrew Howard and Nate Koenig * Date: 3 Apr 2007 - * SVN: $Id: CameraManager.hh 251 2008-01-31 12:23:30Z robotos $ + * SVN: $Id$ */ #ifndef CAMERAMANAGER_HH Property changes on: code/gazebo/trunk/server/rendering/CameraManager.hh ___________________________________________________________________ Added: svn:keywords + Id Revision Property changes on: code/gazebo/trunk/server/rendering/MovableText.cc ___________________________________________________________________ Modified: svn:keywords - Id + Id Revision Property changes on: code/gazebo/trunk/server/rendering/MovableText.hh ___________________________________________________________________ Modified: svn:keywords - Id + Id Revision Property changes on: code/gazebo/trunk/server/rendering/OgreAdaptor.cc ___________________________________________________________________ Modified: svn:keywords - Id + Id Revision Property changes on: code/gazebo/trunk/server/rendering/OgreAdaptor.hh ___________________________________________________________________ Modified: svn:keywords - Id + Id Revision Modified: code/gazebo/trunk/server/rendering/OgreCamera.cc =================================================================== --- code/gazebo/trunk/server/rendering/OgreCamera.cc 2008-09-24 18:06:29 UTC (rev 7039) +++ code/gazebo/trunk/server/rendering/OgreCamera.cc 2008-09-24 18:07:24 UTC (rev 7040) @@ -21,7 +21,7 @@ /* Desc: A camera sensor using OpenGL * Author: Nate Koenig * Date: 15 July 2003 - * CVS: $Id: OgreCamera.cc 6338 2008-04-16 17:24:32Z natepak $ + * CVS: $Id$ */ #include <sstream> Property changes on: code/gazebo/trunk/server/rendering/OgreCamera.cc ___________________________________________________________________ Added: svn:keywords + Id Revision Modified: code/gazebo/trunk/server/rendering/OgreCamera.hh =================================================================== --- code/gazebo/trunk/server/rendering/OgreCamera.hh 2008-09-24 18:06:29 UTC (rev 7039) +++ code/gazebo/trunk/server/rendering/OgreCamera.hh 2008-09-24 18:07:24 UTC (rev 7040) @@ -21,7 +21,7 @@ /* Desc: A persepective OGRE Camera * Author: Nate Koenig * Date: 15 July 2003 - * CVS: $Id: OgreCamera.hh 6338 2008-04-16 17:24:32Z natepak $ + * CVS: $Id$ */ #ifndef CAMERASENSOR_HH Property changes on: code/gazebo/trunk/server/rendering/OgreCamera.hh ___________________________________________________________________ Added: svn:keywords + Id Revision Property changes on: code/gazebo/trunk/server/rendering/OgreCreator.cc ___________________________________________________________________ Added: svn:keywords + Id Revision Property changes on: code/gazebo/trunk/server/rendering/OgreCreator.hh ___________________________________________________________________ Added: svn:keywords + Id Revision Property changes on: code/gazebo/trunk/server/rendering/OgreDynamicLines.cc ___________________________________________________________________ Modified: svn:keywords - Id + Id Revision Property changes on: code/gazebo/trunk/server/rendering/OgreDynamicLines.hh ___________________________________________________________________ Modified: svn:keywords - Id + Id Revision Property changes on: code/gazebo/trunk/server/rendering/OgreDynamicRenderable.cc ___________________________________________________________________ Modified: svn:keywords - Id + Id Revision Property changes on: code/gazebo/trunk/server/rendering/OgreDynamicRenderable.hh ___________________________________________________________________ Modified: svn:keywords - Id + Id Revision Property changes on: code/gazebo/trunk/server/rendering/OgreFrameListener.cc ___________________________________________________________________ Modified: svn:keywords - Id + Id Revision Property changes on: code/gazebo/trunk/server/rendering/OgreFrameListener.hh ___________________________________________________________________ Modified: svn:keywords - Id + Id Revision Property changes on: code/gazebo/trunk/server/rendering/OgreHUD.cc ___________________________________________________________________ Modified: svn:keywords - Id + Id Revision Property changes on: code/gazebo/trunk/server/rendering/OgreHUD.hh ___________________________________________________________________ Modified: svn:keywords - Id + Id Revision Property changes on: code/gazebo/trunk/server/rendering/OgreSimpleShape.cc ___________________________________________________________________ Modified: svn:keywords - Id + Id Revision Property changes on: code/gazebo/trunk/server/rendering/OgreSimpleShape.hh ___________________________________________________________________ Modified: svn:keywords - Id + Id Revision Modified: code/gazebo/trunk/server/rendering/OgreVisual.cc =================================================================== --- code/gazebo/trunk/server/rendering/OgreVisual.cc 2008-09-24 18:06:29 UTC (rev 7039) +++ code/gazebo/trunk/server/rendering/OgreVisual.cc 2008-09-24 18:07:24 UTC (rev 7040) @@ -21,7 +21,7 @@ /* Desc: Ogre Visual Class * Author: Nate Koenig * Date: 14 Dec 2007 - * SVN: $Id:$ + * SVN: $Id$ */ #include <Ogre.h> #include "Entity.hh" Property changes on: code/gazebo/trunk/server/rendering/OgreVisual.cc ___________________________________________________________________ Added: svn:keywords + Id Revision Property changes on: code/gazebo/trunk/server/rendering/OgreVisual.hh ___________________________________________________________________ Added: svn:keywords + Id Revision Modified: code/gazebo/trunk/server/rendering/UserCamera.cc =================================================================== --- code/gazebo/trunk/server/rendering/UserCamera.cc 2008-09-24 18:06:29 UTC (rev 7039) +++ code/gazebo/trunk/server/rendering/UserCamera.cc 2008-09-24 18:07:24 UTC (rev 7040) @@ -21,7 +21,7 @@ /* Desc: Camera for viewing the world * Author: Nate Koenig * Date: 19 Jun 2008 - * SVN: $Id:$ + * SVN: $Id$ */ #include <Ogre.h> Property changes on: code/gazebo/trunk/server/rendering/UserCamera.cc ___________________________________________________________________ Added: svn:keywords + Id Revision Modified: code/gazebo/trunk/server/rendering/UserCamera.hh =================================================================== --- code/gazebo/trunk/server/rendering/UserCamera.hh 2008-09-24 18:06:29 UTC (rev 7039) +++ code/gazebo/trunk/server/rendering/UserCamera.hh 2008-09-24 18:07:24 UTC (rev 7040) @@ -21,7 +21,7 @@ /* Desc: Camera for viewing the world * Author: Nate Koenig * Date: 19 Jun 2008 - * SVN: $Id:$ + * SVN: $Id$ */ #ifndef USERCAMERA_HH Property changes on: code/gazebo/trunk/server/rendering/UserCamera.hh ___________________________________________________________________ Added: svn:keywords + Id Revision This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <na...@us...> - 2008-10-12 00:44:58
|
Revision: 7094 http://playerstage.svn.sourceforge.net/playerstage/?rev=7094&view=rev Author: natepak Date: 2008-10-12 00:44:49 +0000 (Sun, 12 Oct 2008) Log Message: ----------- Windows now resize properly when using Ogre 1.6 Modified Paths: -------------- code/gazebo/trunk/server/rendering/OgreCreator.cc code/gazebo/trunk/server/rendering/UserCamera.cc Modified: code/gazebo/trunk/server/rendering/OgreCreator.cc =================================================================== --- code/gazebo/trunk/server/rendering/OgreCreator.cc 2008-10-10 16:18:50 UTC (rev 7093) +++ code/gazebo/trunk/server/rendering/OgreCreator.cc 2008-10-12 00:44:49 UTC (rev 7094) @@ -388,20 +388,18 @@ Ogre::SceneNode* gridObjectNode = OgreAdaptor::Instance()->sceneMgr->getRootSceneNode()->createChildSceneNode("__OGRE_GRID_NODE__"); - Ogre::MaterialPtr gridObjectMaterialX = Ogre::MaterialManager::getSingleton().create("__OGRE_GRID_MATERIAL_X__","debugger1"); - gridObjectMaterialX->setReceiveShadows(true); + Ogre::MaterialPtr gridObjectMaterialX = Ogre::MaterialManager::getSingleton().create("__OGRE_GRID_MATERIAL_X__","General"); gridObjectMaterialX->getTechnique(0)->setLightingEnabled(true); - gridObjectMaterialX->getTechnique(0)->getPass(0)->setDiffuse(0.2,0.2,0.2,0); + gridObjectMaterialX->getTechnique(0)->getPass(0)->setDiffuse(0.2,0.2,0.2,1); gridObjectMaterialX->getTechnique(0)->getPass(0)->setAmbient(0.2,0.2,0.2); - gridObjectMaterialX->getTechnique(0)->getPass(0)->setSelfIllumination(0.0,0.0,0.0); + //gridObjectMaterialX->getTechnique(0)->getPass(0)->setSelfIllumination(0.0,0.0,0.0); gridObjectMaterialX->setReceiveShadows(false); - Ogre::MaterialPtr gridObjectMaterialY = Ogre::MaterialManager::getSingleton().create("__OGRE_GRID_MATERIAL_Y__","debugger2"); - gridObjectMaterialY->setReceiveShadows(true); + Ogre::MaterialPtr gridObjectMaterialY = Ogre::MaterialManager::getSingleton().create("__OGRE_GRID_MATERIAL_Y__","General"); gridObjectMaterialY->getTechnique(0)->setLightingEnabled(true); - gridObjectMaterialY->getTechnique(0)->getPass(0)->setDiffuse(0.2,0.2,0.2,0); + gridObjectMaterialY->getTechnique(0)->getPass(0)->setDiffuse(0.2,0.2,0.2,1); gridObjectMaterialY->getTechnique(0)->getPass(0)->setAmbient(0.2,0.2,0.2); - gridObjectMaterialY->getTechnique(0)->getPass(0)->setSelfIllumination(0.0,0.0,0.0); + //gridObjectMaterialY->getTechnique(0)->getPass(0)->setSelfIllumination(0.0,0.0,0.0); gridObjectMaterialY->setReceiveShadows(false); @@ -540,6 +538,7 @@ // etc gridObject->end(); gridObjectNode->attachObject(gridObject); + } //////////////////////////////////////////////////////////////////////////////// @@ -571,9 +570,20 @@ Ogre::NameValuePairList params; Ogre::RenderWindow *window = NULL; - params["parentWindowHandle"] = Ogre::StringConverter::toString(display) + ":" + Ogre::StringConverter::toString(screen) + ":" + Ogre::StringConverter::toString(winId); - //params["FSAA"] = Ogre::StringConverter::toString(2); + /// Ogre 1.4 required this method to create windows + /*params["parentWindowHandle"] = Ogre::StringConverter::toString(display) + + ":" + Ogre::StringConverter::toString(screen) + + ":" + Ogre::StringConverter::toString(winId); + */ + /// As of Ogre 1.6 this is the params method that makes a resizable window + params["externalWindowHandle"] = Ogre::StringConverter::toString(display) + + ":" + Ogre::StringConverter::toString(screen) + + ":" + Ogre::StringConverter::toString(winId) + + ":" + Ogre::StringConverter::toString(fl_visual); + + params["FSAA"] = "2"; + std::ostringstream stream; stream << "OgreWindow(" << windowCounter++ << ")"; Modified: code/gazebo/trunk/server/rendering/UserCamera.cc =================================================================== --- code/gazebo/trunk/server/rendering/UserCamera.cc 2008-10-10 16:18:50 UTC (rev 7093) +++ code/gazebo/trunk/server/rendering/UserCamera.cc 2008-10-12 00:44:49 UTC (rev 7094) @@ -98,14 +98,8 @@ /// Resize the camera void UserCamera::Resize(unsigned int w, unsigned int h) { - //this->window->resize(w, h); - //this->viewport->setDimensions(0,0,1,1); - //this->SetAspectRatio( Ogre::Real(this->viewport->getActualWidth()) / Ogre::Real(this->viewport->getActualHeight()) ); - //this->viewport->update(); - //this->viewport->_updateDimensions(); - - this->window->windowMovedOrResized(); - printf("Resize[%d %d] new[%d %d]\n", w, h, this->window->getWidth(), this->window->getHeight()); + this->window->resize(w, h); + this->viewport->setDimensions(0,0,1,1); } //////////////////////////////////////////////////////////////////////////////// This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <na...@us...> - 2009-05-13 13:18:53
|
Revision: 7643 http://playerstage.svn.sourceforge.net/playerstage/?rev=7643&view=rev Author: natepak Date: 2009-05-13 13:18:38 +0000 (Wed, 13 May 2009) Log Message: ----------- Added OgreHeightmap Added Paths: ----------- code/gazebo/trunk/server/rendering/OgreHeightmap.cc code/gazebo/trunk/server/rendering/OgreHeightmap.hh Added: code/gazebo/trunk/server/rendering/OgreHeightmap.cc =================================================================== --- code/gazebo/trunk/server/rendering/OgreHeightmap.cc (rev 0) +++ code/gazebo/trunk/server/rendering/OgreHeightmap.cc 2009-05-13 13:18:38 UTC (rev 7643) @@ -0,0 +1,178 @@ +/* + * Gazebo - Outdoor Multi-Robot Simulator + * Copyright (C) 2003 + * Nate Koenig & Andrew Howard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +/* Desc: Heightmap geometry + * Author: Nate Keonig + * Date: 12 May 2009 + * SVN: $Id$ + */ + +#include <Ogre.h> +#include <iostream> +#include <string.h> +#include <math.h> + +#include "Image.hh" +#include "GazeboError.hh" +#include "OgreAdaptor.hh" +#include "Simulator.hh" +#include "OgreHeightmap.hh" + +using namespace gazebo; + +////////////////////////////////////////////////////////////////////////////// +// Constructor +OgreHeightmap::OgreHeightmap() +{ +} + + +////////////////////////////////////////////////////////////////////////////// +// Destructor +OgreHeightmap::~OgreHeightmap() +{ + Simulator::Instance()->GetRenderEngine()->sceneMgr->destroyQuery(this->rayQuery); +} + +////////////////////////////////////////////////////////////////////////////// +/// get height at a point +float OgreHeightmap::GetHeightAt(const Vector2<float> &pos) +{ + Ogre::Vector3 pos3(pos.x, this->terrainSize.z,pos.y); + + this->ray.setOrigin(pos3); + this->rayQuery->setRay(this->ray); + this->distToTerrain = 0; + this->rayQuery->execute(this); + + return this->terrainSize.z - this->distToTerrain; +} + +//////////////////////////////////////////////////////////////////////////////// +/// Overloaded Ogre function for Ray Scene Queries +bool OgreHeightmap::queryResult(Ogre::MovableObject *obj, Ogre::Real dist) +{ + return false; +} + +//////////////////////////////////////////////////////////////////////////////// +/// Overloaded Ogre function for Ray Scene Queries +bool OgreHeightmap::queryResult(Ogre::SceneQuery::WorldFragment *frag, Ogre::Real dist) +{ + this->distToTerrain = dist; + return false; +} + +//////////////////////////////////////////////////////////////////////////////// +// Load the heightmap +void OgreHeightmap::Load( std::string imageFilename, + std::string worldTexture, + std::string detailTexture, + Vector3 _terrainSize) +{ + std::ostringstream stream; + unsigned int terrainVertSize; + int tileSize; + Image img; + + this->terrainSize = _terrainSize; + + // Use the image to get the size of the heightmap + img.Load(imageFilename); + + // Width and height must be the same + if (img.GetWidth() != img.GetHeight()) + { + gzthrow("Heightmap image must be square\n"); + } + + terrainVertSize = img.GetWidth(); + + float nf = (float)(log(terrainVertSize-1)/log(2)); + int ni = (int)(log(terrainVertSize-1)/log(2)); + + // Make sure the heightmap image size is (2^n)+1 in size + if ( nf - ni != 0) + { + gzthrow("Heightmap image size must be (2^n)+1\n"); + } + + // Calculate a good tile size + tileSize = (int)(pow( 2, ni/2 )); + + if (tileSize <= 2) + { + tileSize = 4; + } + + tileSize++; + + /*std::cout << "ODE Scale[" << this->odeScale << "]\n"; + std::cout << "Terrain Image[" << this->imageFilenameP->GetValue() << "] Size[" << this->terrainSize << "]\n"; + printf("Terrain Size[%f %f %f]\n", this->terrainSize.x, this->terrainSize.y, this->terrainSize.z); + printf("VertSize[%d] Tile Size[%d]\n", terrainVertSize, tileSize); + */ + + stream << "WorldTexture=" << worldTexture << "\n"; + //The detail texture + stream << "DetailTexture=" << detailTexture << "\n"; + // number of times the detail texture will tile in a terrain tile + stream << "DetailTile=3\n"; + // Heightmap source + stream << "PageSource=Heightmap\n"; + // Heightmap-source specific settings + stream << "Heightmap.image=" << imageFilename << "\n"; + // How large is a page of tiles (in vertices)? Must be (2^n)+1 + stream << "PageSize=" << terrainVertSize << "\n"; + // How large is each tile? Must be (2^n)+1 and be smaller than PageSize + stream << "TileSize=" << tileSize << "\n"; + // The maximum error allowed when determining which LOD to use + stream << "MaxPixelError=4\n"; + // The size of a terrain page, in world units + stream << "PageWorldX=" << this->terrainSize.x << "\n"; + stream << "PageWorldZ=" << this->terrainSize.y << "\n"; + // Maximum height of the terrain + stream << "MaxHeight="<< this->terrainSize.z << "\n"; + // Upper LOD limit + stream << "MaxMipMapLevel=2\n"; + + // Create a data stream for loading the terrain into Ogre + char *mstr = strdup(stream.str().c_str()); + + Ogre::DataStreamPtr dataStream( + new Ogre::MemoryDataStream(mstr,strlen(mstr)) ); + + // Set the static terrain in Ogre + OgreAdaptor::Instance()->sceneMgr->setWorldGeometry(dataStream); + + // HACK to make the terrain oriented properly + Ogre::SceneNode *tnode = OgreAdaptor::Instance()->sceneMgr->getSceneNode("Terrain"); + tnode->pitch(Ogre::Degree(90)); + tnode->translate(Ogre::Vector3(-this->terrainSize.x*0.5, this->terrainSize.y*0.5, 0)); + + // Setup the ray scene query, which is used to determine the heights of + // the vertices for ODE + this->ray = Ogre::Ray(Ogre::Vector3::ZERO, Ogre::Vector3::NEGATIVE_UNIT_Y); + this->rayQuery = OgreAdaptor::Instance()->sceneMgr->createRayQuery(this->ray); + this->rayQuery->setQueryTypeMask(Ogre::SceneManager::WORLD_GEOMETRY_TYPE_MASK); + this->rayQuery->setWorldFragmentType(Ogre::SceneQuery::WFT_SINGLE_INTERSECTION); + + free(mstr); +} Added: code/gazebo/trunk/server/rendering/OgreHeightmap.hh =================================================================== --- code/gazebo/trunk/server/rendering/OgreHeightmap.hh (rev 0) +++ code/gazebo/trunk/server/rendering/OgreHeightmap.hh 2009-05-13 13:18:38 UTC (rev 7643) @@ -0,0 +1,71 @@ +/* + * Gazebo - Outdoor Multi-Robot Simulator + * Copyright (C) 2003 + * Nate Koenig & Andrew Howard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +/* Desc: Heightmap geometry + * Author: Nate Keonig + * Date: 12 May 2009 + * SVN: $Id:$ + */ + +#ifndef OGREHEIGHTMAP_HH +#define OGREHEIGHTMAP_HH + +#include <Ogre.h> + +#include "Vector2.hh" +#include "Vector3.hh" + +namespace gazebo +{ + + /// \brief Height map geom + class OgreHeightmap : public Ogre::RaySceneQueryListener + { + /// \brief Constructor + public: OgreHeightmap(); + + /// \brief Destructor + public: virtual ~OgreHeightmap(); + + /// \brief Get the height of the heightmap as a specific coordinate + public: float GetHeightAt(const Vector2<float> &pos); + + /// \brief Overloaded Ogre function for Ray Scene Queries + public: virtual bool queryResult(Ogre::MovableObject *obj, Ogre::Real dist); + + /// \brief Overloaded Ogre function for Ray Scene Queries + public: virtual bool queryResult(Ogre::SceneQuery::WorldFragment *frag, Ogre::Real dist); + + /// \brief Load the heightmap + public: virtual void Load( std::string imageFilename, + std::string worldTexture, + std::string detialTexture, + Vector3 terrainSize); + + private: Vector3 terrainSize; + + private: Ogre::Ray ray; + private: Ogre::RaySceneQuery *rayQuery; + + private: double distToTerrain; + }; +} + +#endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2009-06-06 01:26:18
|
Revision: 7794 http://playerstage.svn.sourceforge.net/playerstage/?rev=7794&view=rev Author: robotos Date: 2009-06-06 01:26:07 +0000 (Sat, 06 Jun 2009) Log Message: ----------- missing X include Modified Paths: -------------- code/gazebo/trunk/server/rendering/OgreAdaptor.cc code/gazebo/trunk/server/rendering/OgreCreator.hh Modified: code/gazebo/trunk/server/rendering/OgreAdaptor.cc =================================================================== --- code/gazebo/trunk/server/rendering/OgreAdaptor.cc 2009-06-05 19:02:15 UTC (rev 7793) +++ code/gazebo/trunk/server/rendering/OgreAdaptor.cc 2009-06-06 01:26:07 UTC (rev 7794) @@ -176,7 +176,7 @@ glXMakeCurrent(this->dummyDisplay, this->dummyWindowId, this->dummyContext); - OgreCreator::Instance()->CreateWindow((long)this->dummyDisplay, screen, + OgreCreator::Instance()->CreateWindow(this->dummyDisplay, screen, (long)this->dummyWindowId,1,1); } Modified: code/gazebo/trunk/server/rendering/OgreCreator.hh =================================================================== --- code/gazebo/trunk/server/rendering/OgreCreator.hh 2009-06-05 19:02:15 UTC (rev 7793) +++ code/gazebo/trunk/server/rendering/OgreCreator.hh 2009-06-06 01:26:07 UTC (rev 7794) @@ -26,6 +26,7 @@ #ifndef OGRECREATOR #define OGRECREATOR +#include <X11/Xlib.h> #include <string> #include <vector> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <na...@us...> - 2009-08-14 00:33:47
|
Revision: 8197 http://playerstage.svn.sourceforge.net/playerstage/?rev=8197&view=rev Author: natepak Date: 2009-08-14 00:33:40 +0000 (Fri, 14 Aug 2009) Log Message: ----------- Added a tube shape to the OgreSimpleShape Modified Paths: -------------- code/gazebo/trunk/server/rendering/OgreSimpleShape.cc code/gazebo/trunk/server/rendering/OgreSimpleShape.hh Modified: code/gazebo/trunk/server/rendering/OgreSimpleShape.cc =================================================================== --- code/gazebo/trunk/server/rendering/OgreSimpleShape.cc 2009-08-13 01:06:05 UTC (rev 8196) +++ code/gazebo/trunk/server/rendering/OgreSimpleShape.cc 2009-08-14 00:33:40 UTC (rev 8197) @@ -1,3 +1,28 @@ +/* + * Gazebo - Outdoor Multi-Robot Simulator + * Copyright (C) 2003 + * Nate Koenig & Andrew Howard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +/* Desc: Create various 3d shapes + * Author: Nathan Koenig + * Date: 3 Jan 2008 + */ + #include <cmath> #include <iostream> @@ -22,6 +47,8 @@ { } +//////////////////////////////////////////////////////////////////////////////// +// Create a sphere void OgreSimpleShape::CreateSphere(const std::string &name, float radius, int rings, int segments) { Ogre::MeshPtr mesh; @@ -784,3 +811,227 @@ } } + +//////////////////////////////////////////////////////////////////////////////// +/// Create a tube mesh +void OgreSimpleShape::CreateTube(const std::string &name, float innerRadius, float outterRadius, float height, int rings, int segments) +{ + Ogre::MeshPtr mesh; + Ogre::SubMesh *subMesh; + Ogre::VertexData *vertexData; + Ogre::VertexDeclaration* vertexDecl; + Ogre::HardwareVertexBufferSharedPtr vBuf; + Ogre::HardwareIndexBufferSharedPtr iBuf; + float *vertices, *vertStart; + unsigned short *indices, *indStart; + Vector3 vert, norm; + unsigned short verticeIndex = 0; + size_t currOffset = 0; + int ring, seg; + float deltaSegAngle = (2.0 * M_PI / segments); + + try + { + // Create a new mesh specifically for manual definition. + mesh = Ogre::MeshManager::getSingleton().createManual(name, + Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); + + subMesh = mesh->createSubMesh(); + + mesh->sharedVertexData = new Ogre::VertexData(); + vertexData = mesh->sharedVertexData; + + // define the vertex format + vertexDecl = vertexData->vertexDeclaration; + + // The vertexDecl should contain positions, blending weights, normals, + // diffiuse colors, specular colors, tex coords. In that order. + + // positions + vertexDecl->addElement(0, currOffset, Ogre::VET_FLOAT3, Ogre::VES_POSITION); + currOffset += Ogre::VertexElement::getTypeSize(Ogre::VET_FLOAT3); + + // TODO: blending weights + + // normals + vertexDecl->addElement(0, currOffset, Ogre::VET_FLOAT3, Ogre::VES_NORMAL); + currOffset += Ogre::VertexElement::getTypeSize(Ogre::VET_FLOAT3); + + // TODO: diffuse colors + + // TODO: specular colors + + // two dimensional texture coordinates + vertexDecl->addElement(0, currOffset, Ogre::VET_FLOAT2, + Ogre::VES_TEXTURE_COORDINATES, 0); + currOffset += Ogre::VertexElement::getTypeSize(Ogre::VET_FLOAT2); + + + // Needs at lest 2 rings, and 3 segments + rings = std::max(rings,1); + segments = std::max(segments,3); + + // allocate the vertex buffer + vertexData->vertexCount = (rings+1) * (segments+1) * 2; + + vBuf = Ogre::HardwareBufferManager::getSingleton().createVertexBuffer( + vertexDecl->getVertexSize(0), + vertexData->vertexCount, + Ogre::HardwareBuffer::HBU_STATIC_WRITE_ONLY, + false); + + vertexData->vertexBufferBinding->setBinding(0, vBuf); + vertices = static_cast<float*>(vBuf->lock(Ogre::HardwareBuffer::HBL_DISCARD)); + + // allocate index buffer + subMesh->indexData->indexCount = (6 * rings * (segments+1)) * 2 + ((segments+1) * 6) * 2; + + subMesh->indexData->indexBuffer = + Ogre::HardwareBufferManager::getSingleton().createIndexBuffer( + Ogre::HardwareIndexBuffer::IT_16BIT, + subMesh->indexData->indexCount, + Ogre::HardwareBuffer::HBU_STATIC_WRITE_ONLY, + false); + + iBuf = subMesh->indexData->indexBuffer; + indices = static_cast<unsigned short*>(iBuf->lock(Ogre::HardwareBuffer::HBL_DISCARD)); + + vertStart = vertices; + indStart = indices; + + float radius= 0; + + radius = outterRadius; + + // Generate the group of rings for the outsides of the cylinder + for (ring = 0; ring <= rings; ring++) + { + printf("RING[%d]\n", ring); + vert.z = ring * height/rings - height/2.0; + + // Generate the group of segments for the current ring + for (seg = 0; seg <= segments; seg++) + { + printf("Seg[%d]\n", seg); + vert.y = radius * cosf(seg * deltaSegAngle); + vert.x = radius * sinf(seg * deltaSegAngle); + printf("Vertexp[%f %f %f]\n", vert.x, vert.y, vert.z); + + // TODO: Don't think these normals are correct. + norm = vert; + norm.Normalize(); + + // Add one vertex to the strip which makes up the tube + *vertices++ = vert.x; + *vertices++ = vert.y; + *vertices++ = vert.z; + + *vertices++ = norm.x; + *vertices++ = norm.y; + *vertices++ = norm.z; + + // Texture coords + *vertices++ = (float) seg / (float) segments; + *vertices++ = (float) ring / (float) rings; + + if (ring != rings) + { + // each vertex (except the last) has six indices + *indices++ = verticeIndex + segments + 1; + *indices++ = verticeIndex; + *indices++ = verticeIndex + segments; + *indices++ = verticeIndex + segments + 1; + *indices++ = verticeIndex + 1; + *indices++ = verticeIndex; + } + else + { + // This indices form the top cap + *indices++ = verticeIndex; + *indices++ = verticeIndex + segments + 1; + *indices++ = verticeIndex+1; + *indices++ = verticeIndex+1; + *indices++ = verticeIndex + segments + 1; + *indices++ = verticeIndex + segments + 2; + } + + // There indices form the bottom cap + if (ring == 0 && seg < segments) + { + *indices++ = verticeIndex+1; + *indices++ = verticeIndex + (segments+1) * (((rings+1)*2)-1); + *indices++ = verticeIndex; + *indices++ = verticeIndex + (segments+1) * (((rings+1)*2)-1) + 1; + *indices++ = verticeIndex + (segments+1) * (((rings+1)*2)-1); + *indices++ = verticeIndex+1; + } + + verticeIndex++; + } + } + + // Generate the group of rings for the inside of the cylinder + radius = innerRadius; + for (ring = 0; ring <= rings; ring++) + { + vert.z = (height/2.0) - (ring * height/rings); + + // Generate the group of segments for the current ring + for (seg = 0; seg <= segments; seg++) + { + vert.y = radius * cosf(seg * deltaSegAngle); + vert.x = radius * sinf(seg * deltaSegAngle); + + // TODO: Don't think these normals are correct. + norm = vert; + norm.Normalize(); + + // Add one vertex to the strip which makes up the tube + *vertices++ = vert.x; + *vertices++ = vert.y; + *vertices++ = vert.z; + + *vertices++ = norm.x; + *vertices++ = norm.y; + *vertices++ = norm.z; + + // Texture coords + *vertices++ = (float) seg / (float) segments; + *vertices++ = (float) ring / (float) rings; + + if (ring != rings) + { + // each vertex (except the last) has six indices + *indices++ = verticeIndex + segments + 1; + *indices++ = verticeIndex; + *indices++ = verticeIndex + segments; + + *indices++ = verticeIndex + segments + 1; + *indices++ = verticeIndex + 1; + *indices++ = verticeIndex; + } + + verticeIndex++; + } + } + + // Unlock + vBuf->unlock(); + iBuf->unlock(); + + // Generate face list + subMesh->useSharedVertices = true; + + mesh->_setBounds( Ogre::AxisAlignedBox( + Ogre::Vector3(-outterRadius, -height/2, -outterRadius), + Ogre::Vector3(outterRadius, height/2, outterRadius)), + false ); + + // this line makes clear the mesh is loaded (avoids memory leaks) + mesh->load(); + } + catch (Ogre::Exception e) + { + std::cerr << "Unable to create a basic Unit cylinder object" << std::endl; + } +} Modified: code/gazebo/trunk/server/rendering/OgreSimpleShape.hh =================================================================== --- code/gazebo/trunk/server/rendering/OgreSimpleShape.hh 2009-08-13 01:06:05 UTC (rev 8196) +++ code/gazebo/trunk/server/rendering/OgreSimpleShape.hh 2009-08-14 00:33:40 UTC (rev 8197) @@ -1,3 +1,28 @@ +/* + * Gazebo - Outdoor Multi-Robot Simulator + * Copyright (C) 2003 + * Nate Koenig & Andrew Howard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +/* Desc: Create various 3d shapes + * Author: Nathan Koenig + * Date: 3 Jan 2008 + */ + #ifndef OGRESIMPLESHAPE_HH #define OGRESIMPLESHAPE_HH @@ -34,6 +59,12 @@ /// \brief Create a cone mesh public: static void CreateCone(const std::string &name, float radius, float height, int rings, int segments); + + /// \brief Create a tube mesh + public: static void CreateTube(const std::string &name, float innerRadius, + float outterRadius, float height, int rings, + int segments); + }; /// \} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |