Show
Ignore:
Timestamp:
10/25/04 20:23:42 (10 years ago)
Author:
robert
Message:

From Rainer, updates to osgplanet.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/examples/osgplanets/osgplanets.cpp

    r3522 r3532  
    77#include <osg/Geode> 
    88#include <osg/ShapeDrawable> 
     9#include <osg/Texture2D> 
     10 
    911 
    1012#include <osgUtil/Optimizer> 
     
    8789 
    8890 
    89 osg::Geode* createPlanet( double radius, std::string name, osg::Vec4 color ) 
     91osg::Geode* createPlanet( double radius, const std::string& name, const osg::Vec4& color , const std::string& textureName ) 
    9092{ 
    9193    // create a cube shape 
     
    9496    // create a container that makes the sphere drawable 
    9597    osg::ShapeDrawable *sPlanetSphere = new osg::ShapeDrawable( planetSphere ); 
    96   
     98 
    9799    // set the object color 
    98100    sPlanetSphere->setColor( color ); 
     101 
     102    if( !textureName.empty() ) 
     103    { 
     104        osg::Image* image = osgDB::readImageFile( textureName ); 
     105        if ( image ) 
     106        { 
     107            sPlanetSphere->getOrCreateStateSet()->setTextureAttributeAndModes( 0, new osg::Texture2D( image ), osg::StateAttribute::ON ); 
     108 
     109            // reset the object color to white to allow the texture to set the colour. 
     110            sPlanetSphere->setColor( osg::Vec4(1.0f,1.0f,1.0f,1.0f) ); 
     111        } 
     112    } 
     113  
    99114    
    100115    // create a geode object to as a container for our drawable sphere object 
     
    107122    return( geodePlanet ); 
    108123}// end createPlanet 
    109  
     124//--radiusSun 5.0 --radiusEarth 2.0 --RorbitEarth 10.0 --RorbitMoon 2.0 --radiusMoon 0.5 --tiltEarth 18.0 --rotateSpeedEarth 1.0  
     125//--rotateSpeedMoon 1.0 --rotateSpeedEarthAndMoon 1.0 
    110126 
    111127class SolarSystem 
     
    123139    double _rotateSpeedMoon; 
    124140     
    125     SolarSystem( 
    126         double _radiusSun = 20.0, 
    127         double _radiusEarth = 10.0, 
    128         double _RorbitEarth = 100.0, 
    129         double _tiltEarth = 5.0, 
    130         double _rotateSpeedEarthAndMoon = 5.0, 
    131         double _rotateSpeedEarth = 5.0, 
    132         double _radiusMoon = 2.0, 
    133         double _RorbitMoon = 20.0, 
    134         double _rotateSpeedMoon = 5.0 ) 
    135     {} 
     141    SolarSystem() 
     142    { 
     143        _radiusSun = 5.0; 
     144        _radiusEarth = 2.0; 
     145        _RorbitEarth = 10.0; 
     146        _tiltEarth = 18.0; 
     147        _rotateSpeedEarthAndMoon = 1.0; 
     148        _rotateSpeedEarth = 1.0; 
     149        _radiusMoon = 0.5; 
     150        _RorbitMoon = 2.0; 
     151        _rotateSpeedMoon = 1.0; 
     152    } 
    136153     
    137154    osg::Group* built() 
     
    141158         
    142159        // create the sun 
    143         osg::Node* sun = createPlanet( _radiusSun, "Sun", osg::Vec4( 1.0f, 1.0f, 0.5f, 1.0f) ); 
     160        osg::Node* sun = createPlanet( _radiusSun, "Sun", osg::Vec4( 1.0f, 1.0f, 0.5f, 1.0f), "" ); 
    144161         
    145162        // stick sun right under root, no transformations for the sun 
     
    151168         
    152169        // create earth and moon 
    153         osg::Node* earth = createPlanet( _radiusEarth, "Earth", osg::Vec4( 0.0f, 0.0f, 1.0f, 1.0f) ); 
    154         osg::Node* moon = createPlanet( _radiusMoon, "Moon", osg::Vec4( 1.0f, 1.0f, 1.0f, 1.0f) ); 
     170        osg::Node* earth = createPlanet( _radiusEarth, "Earth", osg::Vec4( 0.0f, 0.0f, 1.0f, 1.0f), "Images/land_shallow_topo_2048.jpg" ); 
     171        osg::Node* moon = createPlanet( _radiusMoon, "Moon", osg::Vec4( 1.0f, 1.0f, 1.0f, 1.0f), "Images/moon256128.TGA" ); 
    155172         
    156173        // create transformations for the earthMoonGroup 
     
    233250    while (arguments.read("--rotateSpeedMoon",solarSystem._rotateSpeedMoon)) { } 
    234251 
    235  
    236     // solarSystem.printParameters(); 
     252    solarSystem.printParameters(); 
    237253 
    238254    // if user request help write it out to cout.