From: Carsten N. <neu...@us...> - 2009-04-07 17:10:07
|
Update of /cvsroot/opensg/OpenSG/Source/Contrib/Terrain In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv7872/Source/Contrib/Terrain Modified Files: OSGTerrain.cpp OSGTerrain.fcd OSGTerrain.h OSGTerrain.inl OSGTiledTerrain.cpp OSGTiledTerrain.fcd OSGTiledTerrain.h OSGTiledTerrain.inl testTerrain.cpp testTiledTerrain.cpp Log Message: fixed: converted files to unix line endings Index: OSGTiledTerrain.h =================================================================== RCS file: /cvsroot/opensg/OpenSG/Source/Contrib/Terrain/OSGTiledTerrain.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** OSGTiledTerrain.h 24 Apr 2005 19:45:49 -0000 1.1 --- OSGTiledTerrain.h 7 Apr 2009 17:09:29 -0000 1.2 *************** *** 1,124 **** ! /*---------------------------------------------------------------------------*\ ! * OpenSG * ! * * ! * * ! * Copyright (C) 2000-2002 by the OpenSG Forum * ! * * ! * www.opensg.org * ! * * ! * contact: di...@op..., ger...@vo..., jb...@zg... * ! * * ! \*---------------------------------------------------------------------------*/ ! /*---------------------------------------------------------------------------*\ ! * License * ! * * ! * This library is free software; you can redistribute it and/or modify it * ! * under the terms of the GNU Library General Public License as published * ! * by the Free Software Foundation, version 2. * ! * * ! * This library 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 * ! * Library General Public License for more details. * ! * * ! * You should have received a copy of the GNU Library General Public * ! * License along with this library; if not, write to the Free Software * ! * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * ! * * ! \*---------------------------------------------------------------------------*/ ! /*---------------------------------------------------------------------------*\ ! * Changes * ! * * ! * * ! * * ! * * ! * * ! * * ! \*---------------------------------------------------------------------------*/ ! ! #ifndef _OSGTILEDTERRAIN_H_ ! #define _OSGTILEDTERRAIN_H_ ! #ifdef __sgi ! #pragma once ! #endif ! ! #include <OSGConfig.h> ! ! #include <OSGTiledTerrainBase.h> ! ! OSG_BEGIN_NAMESPACE ! ! /*! \brief TiledTerrain class. See \ref ! PageContribTiledTerrain for a description. ! */ ! ! class OSG_CONTRIBLIB_DLLMAPPING TiledTerrain : public TiledTerrainBase ! { ! private: ! ! typedef TiledTerrainBase Inherited; ! ! /*========================== PUBLIC =================================*/ ! public: ! ! /*---------------------------------------------------------------------*/ ! /*! \name Sync */ ! /*! \{ */ ! ! virtual void changed(BitVector whichField, ! UInt32 origin ); ! Action::ResultE renderEnter (Action* action); ! ! /*! \} */ ! /*---------------------------------------------------------------------*/ ! /*! \name Output */ ! /*! \{ */ ! ! virtual void dump( UInt32 uiIndent = 0, ! const BitVector bvFlags = 0) const; ! ! /*! \} */ ! /*========================= PROTECTED ===============================*/ ! protected: ! ! // Variables should all be in TiledTerrainBase. ! ! /*---------------------------------------------------------------------*/ ! /*! \name Constructors */ ! /*! \{ */ ! ! TiledTerrain(void); ! TiledTerrain(const TiledTerrain &source); ! ! /*! \} */ ! /*---------------------------------------------------------------------*/ ! /*! \name Destructors */ ! /*! \{ */ ! ! virtual ~TiledTerrain(void); ! ! /*! \} */ ! ! /*========================== PRIVATE ================================*/ ! private: ! ! friend class FieldContainer; ! friend class TiledTerrainBase; ! ! static void initMethod(void); ! ! // prohibit default functions (move to 'public' if you need one) ! ! void operator =(const TiledTerrain &source); ! }; ! ! typedef TiledTerrain *TiledTerrainP; ! ! OSG_END_NAMESPACE ! ! #include <OSGTiledTerrainBase.inl> ! #include <OSGTiledTerrain.inl> ! ! #define OSGTILEDTERRAIN_HEADER_CVSID "@(#)$Id$" ! ! #endif /* _OSGTILEDTERRAIN_H_ */ --- 1,124 ---- ! /*---------------------------------------------------------------------------*\ ! * OpenSG * ! * * ! * * ! * Copyright (C) 2000-2002 by the OpenSG Forum * ! * * ! * www.opensg.org * ! * * ! * contact: di...@op..., ger...@vo..., jb...@zg... * ! * * ! \*---------------------------------------------------------------------------*/ ! /*---------------------------------------------------------------------------*\ ! * License * ! * * ! * This library is free software; you can redistribute it and/or modify it * ! * under the terms of the GNU Library General Public License as published * ! * by the Free Software Foundation, version 2. * ! * * ! * This library 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 * ! * Library General Public License for more details. * ! * * ! * You should have received a copy of the GNU Library General Public * ! * License along with this library; if not, write to the Free Software * ! * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * ! * * ! \*---------------------------------------------------------------------------*/ ! /*---------------------------------------------------------------------------*\ ! * Changes * ! * * ! * * ! * * ! * * ! * * ! * * ! \*---------------------------------------------------------------------------*/ ! ! #ifndef _OSGTILEDTERRAIN_H_ ! #define _OSGTILEDTERRAIN_H_ ! #ifdef __sgi ! #pragma once ! #endif ! ! #include <OSGConfig.h> ! ! #include <OSGTiledTerrainBase.h> ! ! OSG_BEGIN_NAMESPACE ! ! /*! \brief TiledTerrain class. See \ref ! PageContribTiledTerrain for a description. ! */ ! ! class OSG_CONTRIBLIB_DLLMAPPING TiledTerrain : public TiledTerrainBase ! { ! private: ! ! typedef TiledTerrainBase Inherited; ! ! /*========================== PUBLIC =================================*/ ! public: ! ! /*---------------------------------------------------------------------*/ ! /*! \name Sync */ ! /*! \{ */ ! ! virtual void changed(BitVector whichField, ! UInt32 origin ); ! Action::ResultE renderEnter (Action* action); ! ! /*! \} */ ! /*---------------------------------------------------------------------*/ ! /*! \name Output */ ! /*! \{ */ ! ! virtual void dump( UInt32 uiIndent = 0, ! const BitVector bvFlags = 0) const; ! ! /*! \} */ ! /*========================= PROTECTED ===============================*/ ! protected: ! ! // Variables should all be in TiledTerrainBase. ! ! /*---------------------------------------------------------------------*/ ! /*! \name Constructors */ ! /*! \{ */ ! ! TiledTerrain(void); ! TiledTerrain(const TiledTerrain &source); ! ! /*! \} */ ! /*---------------------------------------------------------------------*/ ! /*! \name Destructors */ ! /*! \{ */ ! ! virtual ~TiledTerrain(void); ! ! /*! \} */ ! ! /*========================== PRIVATE ================================*/ ! private: ! ! friend class FieldContainer; ! friend class TiledTerrainBase; ! ! static void initMethod(void); ! ! // prohibit default functions (move to 'public' if you need one) ! ! void operator =(const TiledTerrain &source); ! }; ! ! typedef TiledTerrain *TiledTerrainP; ! ! OSG_END_NAMESPACE ! ! #include <OSGTiledTerrainBase.inl> ! #include <OSGTiledTerrain.inl> ! ! #define OSGTILEDTERRAIN_HEADER_CVSID "@(#)$Id$" ! ! #endif /* _OSGTILEDTERRAIN_H_ */ Index: testTerrain.cpp =================================================================== RCS file: /cvsroot/opensg/OpenSG/Source/Contrib/Terrain/testTerrain.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** testTerrain.cpp 24 Apr 2005 19:45:49 -0000 1.1 --- testTerrain.cpp 7 Apr 2009 17:09:29 -0000 1.2 *************** *** 1,269 **** ! /*---------------------------------------------------------------------------*\ ! * OpenSG * ! * * ! * * ! * Copyright (C) 2000,2001 by the OpenSG Forum * ! * * ! * www.opensg.org * ! * * ! * contact: di...@op..., ger...@vo..., jb...@zg... * ! * * ! \*---------------------------------------------------------------------------*/ ! /*---------------------------------------------------------------------------*\ ! * License * ! * * ! * This library is free software; you can redistribute it and/or modify it * ! * under the terms of the GNU Library General Public License as published * ! * by the Free Software Foundation, version 2. * ! * * ! * This library 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 * ! * Library General Public License for more details. * ! * * ! * You should have received a copy of the GNU Library General Public * ! * License along with this library; if not, write to the Free Software * ! * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * ! * * ! \*---------------------------------------------------------------------------*/ ! /*---------------------------------------------------------------------------*\ ! * Changes * ! * * ! * * ! * * ! * * ! * * ! * * ! \*---------------------------------------------------------------------------*/ ! ! // Minimalistic OpenSG program ! ! // GLUT is used for window handling ! #include <OSGGLUT.h> ! ! // General OpenSG configuration, needed everywhere ! #include <OSGConfig.h> ! ! // The GLUT-OpenSG connection class ! #include <OSGGLUTWindow.h> ! ! // A little helper to simplify scene management and interaction ! #include <OSGSimpleSceneManager.h> ! ! // Methods to create simple geometry: boxes, spheres, tori etc. ! #include <OSGSimpleGeometry.h> ! ! ! #include <OSGSceneFileHandler.h> ! #include <OSGGeoFunctions.h> ! #include <OSGPointLight.h> ! #include <OSGTransform.h> ! #include <OSGTerrain.h> ! #include <OSGImageFileHandler.h> ! #include <OSGTextureChunk.h> ! ! // Activate the OpenSG namespace ! OSG_USING_NAMESPACE ! ! SimpleSceneManager *mgr; ! ! NodePtr scene; ! ! Real32 speed = 1.; ! ! // Standard GLUT callback functions ! void display( void ) ! { ! mgr->idle(); ! mgr->redraw(); ! SINFO << "frametime=" << mgr->getWindow()->getPort(0)->getDrawTime() << " ms" << std::endl; ! } ! ! void reshape( int w, int h ) ! { ! mgr->resize( w, h ); ! glutPostRedisplay(); ! } ! ! void ! motion(int x, int y) ! { ! mgr->mouseMove( x, y ); ! glutPostRedisplay(); ! } ! ! void ! mouse(int button, int state, int x, int y) ! { ! if ( state ) ! mgr->mouseButtonRelease( button, x, y ); ! else ! mgr->mouseButtonPress( button, x, y ); ! glutPostRedisplay(); ! } ! ! void ! key(unsigned char key, int x, int y) ! { ! switch(key) ! { ! case 27: exit(1); ! case 'a': mgr->setHighlight( scene ); ! break; ! case 's': mgr->setHighlight( NullFC ); ! break; ! case ' ': { ! GLint current = GL_LINE; ! glGetIntegerv(GL_POLYGON_MODE, ¤t); ! if (current == GL_FILL) { ! glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); ! } else { ! glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); ! } ! break; ! } ! case 'l': mgr->useOpenSGLogo(); ! break; ! case 'f': mgr->setNavigationMode(Navigator::FLY); ! break; ! case 't': mgr->setNavigationMode(Navigator::TRACKBALL); ! break; ! case 'w': mgr->setNavigationMode(Navigator::WALK); ! break; ! case 'x': mgr->getNavigator()->set( ! Pnt3f(0,0,2),Pnt3f(0,0,0),Vec3f(0,1,0)); ! break; ! case 'c': mgr->getNavigator()->set( ! Pnt3f(0,0,2),Pnt3f(2,2,1),Vec3f(0,1,0)); ! break; ! case 'v': speed *= .9; ! FLOG(("Speed set to %f\n", speed )); ! mgr->getNavigator()->setMotionFactor(speed); ! break; ! case 'b': speed *= 1.1; ! FLOG(("Speed set to %f\n", speed )); ! mgr->getNavigator()->setMotionFactor(speed); ! break; ! } ! mgr->key(key,x,y); ! glutPostRedisplay(); ! } ! ! MaterialPtr makeTexture (const char* texname) ! { ! ImagePtr image = ImageFileHandler::the().read(texname); ! ! SLOG << "Create ChunkMaterial" << std::endl; ! ChunkMaterialPtr texMatPtr = ChunkMaterial::create(); ! TextureChunkPtr texChunkPtr = TextureChunk::create(); ! BlendChunkPtr blendChunkPtr = BlendChunk::create(); ! MaterialChunkPtr phongChunk = MaterialChunk::create(); ! beginEditCP(phongChunk); ! { ! phongChunk->setDiffuse (Color4f(1.0f, 1.0f, 1.0f, 1.0f)); ! phongChunk->setAmbient (Color4f(0.1f, 0.1f, 0.1f, 1.0f)); ! phongChunk->setSpecular(Color4f(0.2f, 0.2f, 0.2f, 1.0f)); ! phongChunk->setShininess(6); ! } ! endEditCP (phongChunk); ! beginEditCP (texChunkPtr); ! { ! texChunkPtr->setImage ( image); ! ! texChunkPtr->setWrapS ( GL_CLAMP ); ! texChunkPtr->setWrapT ( GL_CLAMP ); ! texChunkPtr->setWrapR ( GL_CLAMP ); ! ! texChunkPtr->setMinFilter ( GL_LINEAR ); ! texChunkPtr->setMagFilter ( GL_LINEAR ); ! texChunkPtr->setEnvMode(GL_MODULATE); ! } ! endEditCP (texChunkPtr); ! beginEditCP (blendChunkPtr); ! { ! blendChunkPtr->setSrcFactor ( GL_SRC_ALPHA ); ! blendChunkPtr->setDestFactor ( GL_ONE_MINUS_SRC_ALPHA ); ! } ! endEditCP (blendChunkPtr); ! beginEditCP (texMatPtr); ! { ! texMatPtr->addChunk(texChunkPtr, 0); ! texMatPtr->addChunk(phongChunk); ! //texMatPtr->addChunk(blendChunkPtr); ! } ! endEditCP (texMatPtr); ! return texMatPtr; ! } ! ! ! // Initialize GLUT & OpenSG and set up the scene ! int main (int argc, char **argv) ! { ! // OSG init ! osgInit(argc,argv); ! Window::ignoreExtensions("GL_EXT_compiled_vertex_array"); ! ! // GLUT init ! glutInit(&argc, argv); ! glutInitDisplayMode( GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); ! int winid = glutCreateWindow("OpenSG"); ! glutReshapeFunc(reshape); ! glutDisplayFunc(display); ! glutMouseFunc(mouse); ! glutMotionFunc(motion); ! glutKeyboardFunc(key); ! //glutIdleFunc(display); ! ! // the connection between GLUT and OpenSG ! GLUTWindowPtr gwin= GLUTWindow::create(); ! gwin->setId(winid); ! gwin->init(); ! glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); ! ! // create the scene ! ImagePtr height; ! MaterialPtr mat; ! if (argc < 2) { ! height = ImageFileHandler::the().read("Default_HeightMap.png"); ! mat = makeTexture("Default_TexMap.png"); ! } else { ! char buffer[200]; ! sprintf(buffer, "%s_HeightMap.png", argv[1]); ! height = ImageFileHandler::the().read(buffer); ! sprintf(buffer, "%s_TexMap.png", argv[1]); ! mat = makeTexture(buffer); ! } ! ! TerrainPtr terrain = Terrain::create(); ! beginEditCP(terrain); ! terrain->setHeightData(height); ! terrain->setMaterial(mat); ! terrain->setVertexSpacing(30.0f/256.0f); ! terrain->setHeightScale (5.0f); ! terrain->setGeoMorphing(true); ! terrain->setDetail (25.0f); ! // terrain->setPerPixelLighting (true); ! terrain->setPerPixelLighting (true); ! endEditCP (terrain); ! scene = Node::create(); ! beginEditCP(scene); ! scene->setCore(terrain); ! endEditCP (scene); ! ! // create the SimpleSceneManager helper ! mgr = new SimpleSceneManager; ! ! mgr->setWindow( gwin ); ! mgr->setRoot( scene ); ! ! WalkNavigator *walker=mgr->getNavigator()->getWalkNavigator(); ! walker->setGroundDistance(1); ! walker->setPersonDimensions(3,1,1); ! ! mgr->showAll(); ! ! // GLUT main loop ! glutMainLoop(); ! ! return 0; ! } --- 1,269 ---- ! /*---------------------------------------------------------------------------*\ ! * OpenSG * ! * * ! * * ! * Copyright (C) 2000,2001 by the OpenSG Forum * ! * * ! * www.opensg.org * ! * * ! * contact: di...@op..., ger...@vo..., jb...@zg... * ! * * ! \*---------------------------------------------------------------------------*/ ! /*---------------------------------------------------------------------------*\ ! * License * ! * * ! * This library is free software; you can redistribute it and/or modify it * ! * under the terms of the GNU Library General Public License as published * ! * by the Free Software Foundation, version 2. * ! * * ! * This library 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 * ! * Library General Public License for more details. * ! * * ! * You should have received a copy of the GNU Library General Public * ! * License along with this library; if not, write to the Free Software * ! * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * ! * * ! \*---------------------------------------------------------------------------*/ ! /*---------------------------------------------------------------------------*\ ! * Changes * ! * * ! * * ! * * ! * * ! * * ! * * ! \*---------------------------------------------------------------------------*/ ! ! // Minimalistic OpenSG program ! ! // GLUT is used for window handling ! #include <OSGGLUT.h> ! ! // General OpenSG configuration, needed everywhere ! #include <OSGConfig.h> ! ! // The GLUT-OpenSG connection class ! #include <OSGGLUTWindow.h> ! ! // A little helper to simplify scene management and interaction ! #include <OSGSimpleSceneManager.h> ! ! // Methods to create simple geometry: boxes, spheres, tori etc. ! #include <OSGSimpleGeometry.h> ! ! ! #include <OSGSceneFileHandler.h> ! #include <OSGGeoFunctions.h> ! #include <OSGPointLight.h> ! #include <OSGTransform.h> ! #include <OSGTerrain.h> ! #include <OSGImageFileHandler.h> ! #include <OSGTextureChunk.h> ! ! // Activate the OpenSG namespace ! OSG_USING_NAMESPACE ! ! SimpleSceneManager *mgr; ! ! NodePtr scene; ! ! Real32 speed = 1.; ! ! // Standard GLUT callback functions ! void display( void ) ! { ! mgr->idle(); ! mgr->redraw(); ! SINFO << "frametime=" << mgr->getWindow()->getPort(0)->getDrawTime() << " ms" << std::endl; ! } ! ! void reshape( int w, int h ) ! { ! mgr->resize( w, h ); ! glutPostRedisplay(); ! } ! ! void ! motion(int x, int y) ! { ! mgr->mouseMove( x, y ); ! glutPostRedisplay(); ! } ! ! void ! mouse(int button, int state, int x, int y) ! { ! if ( state ) ! mgr->mouseButtonRelease( button, x, y ); ! else ! mgr->mouseButtonPress( button, x, y ); ! glutPostRedisplay(); ! } ! ! void ! key(unsigned char key, int x, int y) ! { ! switch(key) ! { ! case 27: exit(1); ! case 'a': mgr->setHighlight( scene ); ! break; ! case 's': mgr->setHighlight( NullFC ); ! break; ! case ' ': { ! GLint current = GL_LINE; ! glGetIntegerv(GL_POLYGON_MODE, ¤t); ! if (current == GL_FILL) { ! glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); ! } else { ! glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); ! } ! break; ! } ! case 'l': mgr->useOpenSGLogo(); ! break; ! case 'f': mgr->setNavigationMode(Navigator::FLY); ! break; ! case 't': mgr->setNavigationMode(Navigator::TRACKBALL); ! break; ! case 'w': mgr->setNavigationMode(Navigator::WALK); ! break; ! case 'x': mgr->getNavigator()->set( ! Pnt3f(0,0,2),Pnt3f(0,0,0),Vec3f(0,1,0)); ! break; ! case 'c': mgr->getNavigator()->set( ! Pnt3f(0,0,2),Pnt3f(2,2,1),Vec3f(0,1,0)); ! break; ! case 'v': speed *= .9; ! FLOG(("Speed set to %f\n", speed )); ! mgr->getNavigator()->setMotionFactor(speed); ! break; ! case 'b': speed *= 1.1; ! FLOG(("Speed set to %f\n", speed )); ! mgr->getNavigator()->setMotionFactor(speed); ! break; ! } ! mgr->key(key,x,y); ! glutPostRedisplay(); ! } ! ! MaterialPtr makeTexture (const char* texname) ! { ! ImagePtr image = ImageFileHandler::the().read(texname); ! ! SLOG << "Create ChunkMaterial" << std::endl; ! ChunkMaterialPtr texMatPtr = ChunkMaterial::create(); ! TextureChunkPtr texChunkPtr = TextureChunk::create(); ! BlendChunkPtr blendChunkPtr = BlendChunk::create(); ! MaterialChunkPtr phongChunk = MaterialChunk::create(); ! beginEditCP(phongChunk); ! { ! phongChunk->setDiffuse (Color4f(1.0f, 1.0f, 1.0f, 1.0f)); ! phongChunk->setAmbient (Color4f(0.1f, 0.1f, 0.1f, 1.0f)); ! phongChunk->setSpecular(Color4f(0.2f, 0.2f, 0.2f, 1.0f)); ! phongChunk->setShininess(6); ! } ! endEditCP (phongChunk); ! beginEditCP (texChunkPtr); ! { ! texChunkPtr->setImage ( image); ! ! texChunkPtr->setWrapS ( GL_CLAMP ); ! texChunkPtr->setWrapT ( GL_CLAMP ); ! texChunkPtr->setWrapR ( GL_CLAMP ); ! ! texChunkPtr->setMinFilter ( GL_LINEAR ); ! texChunkPtr->setMagFilter ( GL_LINEAR ); ! texChunkPtr->setEnvMode(GL_MODULATE); ! } ! endEditCP (texChunkPtr); ! beginEditCP (blendChunkPtr); ! { ! blendChunkPtr->setSrcFactor ( GL_SRC_ALPHA ); ! blendChunkPtr->setDestFactor ( GL_ONE_MINUS_SRC_ALPHA ); ! } ! endEditCP (blendChunkPtr); ! beginEditCP (texMatPtr); ! { ! texMatPtr->addChunk(texChunkPtr, 0); ! texMatPtr->addChunk(phongChunk); ! //texMatPtr->addChunk(blendChunkPtr); ! } ! endEditCP (texMatPtr); ! return texMatPtr; ! } ! ! ! // Initialize GLUT & OpenSG and set up the scene ! int main (int argc, char **argv) ! { ! // OSG init ! osgInit(argc,argv); ! Window::ignoreExtensions("GL_EXT_compiled_vertex_array"); ! ! // GLUT init ! glutInit(&argc, argv); ! glutInitDisplayMode( GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); ! int winid = glutCreateWindow("OpenSG"); ! glutReshapeFunc(reshape); ! glutDisplayFunc(display); ! glutMouseFunc(mouse); ! glutMotionFunc(motion); ! glutKeyboardFunc(key); ! //glutIdleFunc(display); ! ! // the connection between GLUT and OpenSG ! GLUTWindowPtr gwin= GLUTWindow::create(); ! gwin->setId(winid); ! gwin->init(); ! glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); ! ! // create the scene ! ImagePtr height; ! MaterialPtr mat; ! if (argc < 2) { ! height = ImageFileHandler::the().read("Default_HeightMap.png"); ! mat = makeTexture("Default_TexMap.png"); ! } else { ! char buffer[200]; ! sprintf(buffer, "%s_HeightMap.png", argv[1]); ! height = ImageFileHandler::the().read(buffer); ! sprintf(buffer, "%s_TexMap.png", argv[1]); ! mat = makeTexture(buffer); ! } ! ! TerrainPtr terrain = Terrain::create(); ! beginEditCP(terrain); ! terrain->setHeightData(height); ! terrain->setMaterial(mat); ! terrain->setVertexSpacing(30.0f/256.0f); ! terrain->setHeightScale (5.0f); ! terrain->setGeoMorphing(true); ! terrain->setDetail (25.0f); ! // terrain->setPerPixelLighting (true); ! terrain->setPerPixelLighting (true); ! endEditCP (terrain); ! scene = Node::create(); ! beginEditCP(scene); ! scene->setCore(terrain); ! endEditCP (scene); ! ! // create the SimpleSceneManager helper ! mgr = new SimpleSceneManager; ! ! mgr->setWindow( gwin ); ! mgr->setRoot( scene ); ! ! WalkNavigator *walker=mgr->getNavigator()->getWalkNavigator(); ! walker->setGroundDistance(1); ! walker->setPersonDimensions(3,1,1); ! ! mgr->showAll(); ! ! // GLUT main loop ! glutMainLoop(); ! ! return 0; ! } Index: OSGTerrain.h =================================================================== RCS file: /cvsroot/opensg/OpenSG/Source/Contrib/Terrain/OSGTerrain.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** OSGTerrain.h 24 Apr 2005 19:45:49 -0000 1.1 --- OSGTerrain.h 7 Apr 2009 17:09:29 -0000 1.2 *************** *** 1,159 **** ! /*---------------------------------------------------------------------------*\ ! * OpenSG * ! * * ! * * ! * Copyright (C) 2000-2002 by the OpenSG Forum * ! * * ! * www.opensg.org * ! * * ! * contact: di...@op..., ger...@vo..., jb...@zg... * ! * * ! \*---------------------------------------------------------------------------*/ ! /*---------------------------------------------------------------------------*\ ! * License * ! * * ! * This library is free software; you can redistribute it and/or modify it * ! * under the terms of the GNU Library General Public License as published * ! * by the Free Software Foundation, version 2. * ! * * ! * This library 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 * ! * Library General Public License for more details. * ! * * ! * You should have received a copy of the GNU Library General Public * ! * License along with this library; if not, write to the Free Software * ! * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * ! * * ! \*---------------------------------------------------------------------------*/ ! /*---------------------------------------------------------------------------*\ ! * Changes * ! * * ! * * ! * * ! * * ! * * ! * * ! \*---------------------------------------------------------------------------*/ ! ! #ifndef _OSGTERRAIN_H_ ! #define _OSGTERRAIN_H_ ! #ifdef __sgi ! #pragma once ! #endif ! ! #include <OSGConfig.h> ! #include <OSGTerrainBase.h> ! #include <OSGSHLChunk.h> ! #include <OSGVertexProgramChunk.h> ! #include <OSGFragmentProgramChunk.h> ! ! OSG_BEGIN_NAMESPACE ! ! /*! \brief Terrain class. See \ref ! PageExperimentalTerrain for a description. ! */ ! ! class OSG_CONTRIBLIB_DLLMAPPING Terrain : public TerrainBase ! { ! private: ! ! typedef TerrainBase Inherited; ! ! /*========================== PUBLIC =================================*/ ! public: ! ! /*---------------------------------------------------------------------*/ ! /*! \name Sync */ ! /*! \{ */ ! ! virtual void changed(BitVector whichField, ! UInt32 origin ); ! ! /*! \} */ ! /*---------------------------------------------------------------------*/ ! /*! \name Output */ ! /*! \{ */ ! ! virtual void dump( UInt32 uiIndent = 0, ! const BitVector bvFlags = 0) const; ! ! /*! \} */ ! /*========================= PROTECTED ===============================*/ ! protected: ! ! // Variables should all be in TerrainBase. ! ! /*---------------------------------------------------------------------*/ ! /*! \name Constructors */ ! /*! \{ */ ! ! Terrain(void); ! Terrain(const Terrain &source); ! ! /*! \} */ ! VertexProgramChunkPtr createVPChunk () const; ! FragmentProgramChunkPtr createFPChunk () const; ! SHLChunkPtr createSHLChunk () const; ! ImagePtr createNormalMap () const; ! void addMaterialChunks () const; ! Real32 getHeightDataScaled (UInt32 i) const; ! void getVertex (UInt32 i, Pnt3f& point) const; ! const Pnt3f& getVertex (UInt32 i) const; ! Real32 getHeightAboveGround (const Pnt3f& eye); ! Real32 getHeight(Int32 index, Int32 width, Int32 dirToFather, Int32 neswc, Real32 blend, ! Real32 rhNW, Real32 rhNE, Real32 rhSW, Real32 rhSE); ! Real32 calcSubDiv(Int32 nodeIndex, Int32 width); ! Real32 calcBlend(Real32 subDiv); ! ! UInt32 getNumVertices () const; ! void calcD2ErrorMatrix (); ! void calcD2ErrorMatrixRec(Int32 centerX, Int32 centerZ, Int32 width, Int32 level); ! Real32 calcD2Value (Int32 centerX, Int32 centerZ, Int32 width); ! void propagateD2Errors (); ! ! void deleteNode (Int32 index, Int32 width); ! void triangulateMeshRec (const FrustumVolume& frustum, ! Int32 c, Int32 width, Int32 level); ! bool renderMeshRec (const FrustumVolume& frustum, ! Int32 x, Int32 z, Int32 width, Int32 level, Int32 dirToFather, ! Real32 rhNW, Real32 rhNE, Real32 rhSW, Real32 rhSE); ! void createFanAround (Int32 x, Int32 z, Int32 width, bool* corners, bool isLeaf, ! Real32 hC, Real32 hN, Real32 hS, Real32 hW, Real32 hE, ! Real32 hNW, Real32 hNE, Real32 hSW, Real32 hSE); ! void setInterleaved(Int32 index, Real32 height); ! ! Action::ResultE renderEnter (Action* action); ! void adjustVolume (Volume& volume); ! ! /*---------------------------------------------------------------------*/ ! /*! \name Destructors */ ! /*! \{ */ ! ! virtual ~Terrain(void); ! ! /*! \} */ ! ! /*========================== PRIVATE ================================*/ ! private: ! ! friend class FieldContainer; ! friend class TerrainBase; ! ! static void initMethod(void); ! ! // prohibit default functions (move to 'public' if you need one) ! ! void operator =(const Terrain &source); ! }; ! ! typedef Terrain *TerrainP; ! ! OSG_END_NAMESPACE ! ! #include <OSGTerrainBase.inl> ! #include <OSGTerrain.inl> ! ! #define OSGTERRAIN_HEADER_CVSID "@(#)$Id$" ! ! #endif /* _OSGTERRAIN_H_ */ --- 1,159 ---- ! /*---------------------------------------------------------------------------*\ ! * OpenSG * ! * * ! * * ! * Copyright (C) 2000-2002 by the OpenSG Forum * ! * * ! * www.opensg.org * ! * * ! * contact: di...@op..., ger...@vo..., jb...@zg... * ! * * ! \*---------------------------------------------------------------------------*/ ! /*---------------------------------------------------------------------------*\ ! * License * ! * * ! * This library is free software; you can redistribute it and/or modify it * ! * under the terms of the GNU Library General Public License as published * ! * by the Free Software Foundation, version 2. * ! * * ! * This library 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 * ! * Library General Public License for more details. * ! * * ! * You should have received a copy of the GNU Library General Public * ! * License along with this library; if not, write to the Free Software * ! * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * ! * * ! \*---------------------------------------------------------------------------*/ ! /*---------------------------------------------------------------------------*\ ! * Changes * ! * * ! * * ! * * ! * * ! * * ! * * ! \*---------------------------------------------------------------------------*/ ! ! #ifndef _OSGTERRAIN_H_ ! #define _OSGTERRAIN_H_ ! #ifdef __sgi ! #pragma once ! #endif ! ! #include <OSGConfig.h> ! #include <OSGTerrainBase.h> ! #include <OSGSHLChunk.h> ! #include <OSGVertexProgramChunk.h> ! #include <OSGFragmentProgramChunk.h> ! ! OSG_BEGIN_NAMESPACE ! ! /*! \brief Terrain class. See \ref ! PageExperimentalTerrain for a description. ! */ ! ! class OSG_CONTRIBLIB_DLLMAPPING Terrain : public TerrainBase ! { ! private: ! ! typedef TerrainBase Inherited; ! ! /*========================== PUBLIC =================================*/ ! public: ! ! /*---------------------------------------------------------------------*/ ! /*! \name Sync */ ! /*! \{ */ ! ! virtual void changed(BitVector whichField, ! UInt32 origin ); ! ! /*! \} */ ! /*---------------------------------------------------------------------*/ ! /*! \name Output */ ! /*! \{ */ ! ! virtual void dump( UInt32 uiIndent = 0, ! const BitVector bvFlags = 0) const; ! ! /*! \} */ ! /*========================= PROTECTED ===============================*/ ! protected: ! ! // Variables should all be in TerrainBase. ! ! /*---------------------------------------------------------------------*/ ! /*! \name Constructors */ ! /*! \{ */ ! ! Terrain(void); ! Terrain(const Terrain &source); ! ! /*! \} */ ! VertexProgramChunkPtr createVPChunk () const; ! FragmentProgramChunkPtr createFPChunk () const; ! SHLChunkPtr createSHLChunk () const; ! ImagePtr createNormalMap () const; ! void addMaterialChunks () const; ! Real32 getHeightDataScaled (UInt32 i) const; ! void getVertex (UInt32 i, Pnt3f& point) const; ! const Pnt3f& getVertex (UInt32 i) const; ! Real32 getHeightAboveGround (const Pnt3f& eye); ! Real32 getHeight(Int32 index, Int32 width, Int32 dirToFather, Int32 neswc, Real32 blend, ! Real32 rhNW, Real32 rhNE, Real32 rhSW, Real32 rhSE); ! Real32 calcSubDiv(Int32 nodeIndex, Int32 width); ! Real32 calcBlend(Real32 subDiv); ! ! UInt32 getNumVertices () const; ! void calcD2ErrorMatrix (); ! void calcD2ErrorMatrixRec(Int32 centerX, Int32 centerZ, Int32 width, Int32 level); ! Real32 calcD2Value (Int32 centerX, Int32 centerZ, Int32 width); ! void propagateD2Errors (); ! ! void deleteNode (Int32 index, Int32 width); ! void triangulateMeshRec (const FrustumVolume& frustum, ! Int32 c, Int32 width, Int32 level); ! bool renderMeshRec (const FrustumVolume& frustum, ! Int32 x, Int32 z, Int32 width, Int32 level, Int32 dirToFather, ! Real32 rhNW, Real32 rhNE, Real32 rhSW, Real32 rhSE); ! void createFanAround (Int32 x, Int32 z, Int32 width, bool* corners, bool isLeaf, ! Real32 hC, Real32 hN, Real32 hS, Real32 hW, Real32 hE, ! Real32 hNW, Real32 hNE, Real32 hSW, Real32 hSE); ! void setInterleaved(Int32 index, Real32 height); ! ! Action::ResultE renderEnter (Action* action); ! void adjustVolume (Volume& volume); ! ! /*---------------------------------------------------------------------*/ ! /*! \name Destructors */ ! /*! \{ */ ! ! virtual ~Terrain(void); ! ! /*! \} */ ! ! /*========================== PRIVATE ================================*/ ! private: ! ! friend class FieldContainer; ! friend class TerrainBase; ! ! static void initMethod(void); ! ! // prohibit default functions (move to 'public' if you need one) ! ! void operator =(const Terrain &source); ! }; ! ! typedef Terrain *TerrainP; ! ! OSG_END_NAMESPACE ! ! #include <OSGTerrainBase.inl> ! #include <OSGTerrain.inl> ! ! #define OSGTERRAIN_HEADER_CVSID "@(#)$Id$" ! ! #endif /* _OSGTERRAIN_H_ */ Index: OSGTiledTerrain.inl =================================================================== RCS file: /cvsroot/opensg/OpenSG/Source/Contrib/Terrain/OSGTiledTerrain.inl,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** OSGTiledTerrain.inl 24 Apr 2005 19:45:49 -0000 1.1 --- OSGTiledTerrain.inl 7 Apr 2009 17:09:29 -0000 1.2 *************** *** 1,48 **** ! /*---------------------------------------------------------------------------*\ ! * OpenSG * ! * * ! * * ! * Copyright (C) 2000-2002 by the OpenSG Forum * ! * * ! * contact: di...@op..., ger...@vo..., jb...@zg... * ! * * ! \*---------------------------------------------------------------------------*/ ! /*---------------------------------------------------------------------------*\ ! * License * ! * * ! * This library is free software; you can redistribute it and/or modify it * ! * under the terms of the GNU Library General Public License as published * ! * by the Free Software Foundation, version 2. * ! * * ! * This library 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 * ! * Library General Public License for more details. * ! * * ! * You should have received a copy of the GNU Library General Public * ! * License along with this library; if not, write to the Free Software * ! * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * ! * * ! \*---------------------------------------------------------------------------*/ ! /*---------------------------------------------------------------------------*\ ! * Changes * ! * * ! * * ! * * ! * * ! * * ! * * ! \*---------------------------------------------------------------------------*/ ! ! //--------------------------------------------------------------------------- ! // Includes ! //--------------------------------------------------------------------------- ! ! #include <OSGConfig.h> ! ! OSG_BEGIN_NAMESPACE ! ! OSG_END_NAMESPACE ! ! #define OSGTILEDTERRAIN_INLINE_CVSID "@(#)$Id$" ! --- 1,48 ---- ! /*---------------------------------------------------------------------------*\ ! * OpenSG * ! * * ! * * ! * Copyright (C) 2000-2002 by the OpenSG Forum * ! * * ! * contact: di...@op..., ger...@vo..., jb...@zg... * ! * * ! \*---------------------------------------------------------------------------*/ ! /*---------------------------------------------------------------------------*\ ! * License * ! * * ! * This library is free software; you can redistribute it and/or modify it * ! * under the terms of the GNU Library General Public License as published * ! * by the Free Software Foundation, version 2. * ! * * ! * This library 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 * ! * Library General Public License for more details. * ! * * ! * You should have received a copy of the GNU Library General Public * ! * License along with this library; if not, write to the Free Software * ! * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * ! * * ! \*---------------------------------------------------------------------------*/ ! /*---------------------------------------------------------------------------*\ ! * Changes * ! * * ! * * ! * * ! * * ! * * ! * * ! \*---------------------------------------------------------------------------*/ ! ! //--------------------------------------------------------------------------- ! // Includes ! //--------------------------------------------------------------------------- ! ! #include <OSGConfig.h> ! ! OSG_BEGIN_NAMESPACE ! ! OSG_END_NAMESPACE ! ! #define OSGTILEDTERRAIN_INLINE_CVSID "@(#)$Id$" ! Index: OSGTiledTerrain.fcd =================================================================== RCS file: /cvsroot/opensg/OpenSG/Source/Contrib/Terrain/OSGTiledTerrain.fcd,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** OSGTiledTerrain.fcd 24 Apr 2005 19:45:49 -0000 1.1 --- OSGTiledTerrain.fcd 7 Apr 2009 17:09:29 -0000 1.2 *************** *** 1,148 **** ! <?xml version="1.0"?> ! ! <FieldContainer ! name="TiledTerrain" ! parent="MaterialGroup" ! library="Contrib" ! pointerfieldtypes="both" ! structure="concrete" ! systemcomponent="true" ! parentsystemcomponent="true" ! decoratable="false" ! useLocalIncludes="false" ! > ! Tiled terrain node core ! <Field ! name="heightTiles" ! type="ImagePtr" ! cardinality="multi" ! visibility="external" ! access="public" ! > ! Terrain tile array ! </Field> ! <Field ! name="heightTextures" ! type="MaterialPtr" ! cardinality="multi" ! visibility="external" ! access="public" ! > ! Terrain textures ! </Field> ! <Field ! name="sizeX" ! type="UInt32" ! cardinality="single" ! visibility="external" ! defaultValue="1" ! access="public" ! > ! x-size of 2-dimensional tile array ! </Field> ! <Field ! name="sizeY" ! type="UInt32" ! cardinality="single" ! visibility="external" ! defaultValue="1" ! access="public" ! > ! y-size of 2-dimensional tile array ! </Field> ! <Field ! name="heightScale" ! type="Real32" ! cardinality="single" ! visibility="external" ! defaultValue="1.0f" ! access="public" ! > ! </Field> ! <Field ! name="vertexSpacing" ! type="Real32" ! cardinality="single" ! visibility="external" ! defaultValue="0.1f" ! access="public" ! > ! </Field> ! <Field ! name="geoMorphing" ! type="bool" ! cardinality="single" ! visibility="external" ! defaultValue="false" ! access="public" ! > ! </Field> ! <Field ! name="detail" ! type="Real32" ! cardinality="single" ! visibility="external" ! defaultValue="22.0f" ! access="public" ! > ! detail of terrain tesselation ! </Field> ! <Field ! name="currentX" ! type="Int32" ! cardinality="single" ! visibility="external" ! defaultValue="0" ! access="public" ! > ! </Field> ! <Field ! name="currentY" ! type="Int32" ! cardinality="single" ! visibility="external" ! defaultValue="0" ! access="public" ! > ! </Field> ! <Field ! name="sizeROI" ! type="Int32" ! cardinality="single" ! visibility="external" ! defaultValue="1" ! access="public" ! > ! number of tiles (0, 1, 2, 3) around current eye point ! </Field> ! <Field ! name="update" ! type="bool" ! cardinality="single" ! visibility="external" ! defaultValue="true" ! access="public" ! > ! perform any updates (tiling, terrain tiles) ! </Field> ! <Field ! name="updateTerrain" ! type="bool" ! cardinality="single" ! visibility="external" ! defaultValue="false" ! access="public" ! > ! update terrain tiles in the next frame ! </Field> ! <Field ! name="perPixelLighting" ! type="bool" ! cardinality="single" ! visibility="external" ! defaultValue="true" ! access="public" ! > ! Do per-pixel lighting with normalmap; otherwise generate per-vertex normals ! </Field> ! </FieldContainer> --- 1,148 ---- ! <?xml version="1.0"?> ! ! <FieldContainer ! name="TiledTerrain" ! parent="MaterialGroup" ! library="Contrib" ! pointerfieldtypes="both" ! structure="concrete" ! systemcomponent="true" ! parentsystemcomponent="true" ! decoratable="false" ! useLocalIncludes="false" ! > ! Tiled terrain node core ! <Field ! name="heightTiles" ! type="ImagePtr" ! cardinality="multi" ! visibility="external" ! access="public" ! > ! Terrain tile array ! </Field> ! <Field ! name="heightTextures" ! type="MaterialPtr" ! cardinality="multi" ! visibility="external" ! access="public" ! > ! Terrain textures ! </Field> ! <Field ! name="sizeX" ! type="UInt32" ! cardinality="single" ! visibility="external" ! defaultValue="1" ! access="public" ! > ! x-size of 2-dimensional tile array ! </Field> ! <Field ! name="sizeY" ! type="UInt32" ! cardinality="single" ! visibility="external" ! defaultValue="1" ! access="public" ! > ! y-size of 2-dimensional tile array ! </Field> ! <Field ! name="heightScale" ! type="Real32" ! cardinality="single" ! visibility="external" ! defaultValue="1.0f" ! access="public" ! > ! </Field> ! <Field ! name="vertexSpacing" ! type="Real32" ! cardinality="single" ! visibility="external" ! defaultValue="0.1f" ! access="public" ! > ! </Field> ! <Field ! name="geoMorphing" ! type="bool" ! cardinality="single" ! visibility="external" ! defaultValue="false" ! access="public" ! > ! </Field> ! <Field ! name="detail" ! type="Real32" ! cardinality="single" ! visibility="external" ! defaultValue="22.0f" ! access="public" ! > ! detail of terrain tesselation ! </Field> ! <Field ! name="currentX" ! type="Int32" ! cardinality="single" ! visibility="external" ! defaultValue="0" ! access="public" ! > ! </Field> ! <Field ! name="currentY" ! type="Int32" ! cardinality="single" ! visibility="external" ! defaultValue="0" ! access="public" ! > ! </Field> ! <Field ! name="sizeROI" ! type="Int32" ! cardinality="single" ! visibility="external" ! defaultValue="1" ! access="public" ! > ! number of tiles (0, 1, 2, 3) around current eye point ! </Field> ! <Field ! name="update" ! type="bool" ! cardinality="single" ! visibility="external" ! defaultValue="true" ! access=... [truncated message content] |