Show
Ignore:
Timestamp:
04/13/06 22:21:55 (9 years ago)
Author:
robert
Message:

Added --numberOfParticles, --numberOfCellsX, --numberOfCellsY, --numberOfCellsZ, --boundingBox, --fogEnd and --fogDensity controls

Files:
1 modified

Legend:

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

    r5087 r5088  
    3939        numberOfCellsZ(1), 
    4040        nearTransition(25.0), 
    41         farTransition(100.0) 
     41        farTransition(100.0), 
     42        fogDensity(0.1), 
     43        fogEnd(1000.0) 
    4244    {} 
    4345 
     
    4547    { 
    4648        particleVelocity = osg::Vec3(0.0,0.0,-2.0) + osg::Vec3(0.0,0.0,-10.0)*intensity; 
    47         particleSize = 0.01 + 0.04*intensity; 
     49        particleSize = 0.01 + 0.02*intensity; 
    4850        numberOfParticles = intensity * 100000000; 
    4951        particleColour = osg::Vec4(0.6, 0.6, 0.6, 1.0); 
     52        fogDensity = intensity; 
     53        fogEnd = 250/(0.01 + intensity); 
    5054    } 
    5155 
     
    5357    { 
    5458        particleVelocity = osg::Vec3(0.0,0.0,-1.0) + osg::Vec3(0.0,0.0,-0.5)*intensity; 
    55         particleSize = 0.02 + 0.05*intensity; 
     59        particleSize = 0.02 + 0.03*intensity; 
    5660        numberOfParticles = intensity * 100000000; 
    5761        particleColour = osg::Vec4(0.8, 0.8, 0.8, 1.0); 
     62        fogDensity = intensity; 
     63        fogEnd = 150/(0.01 + intensity); 
    5864    } 
    5965 
     
    6874    float               nearTransition; 
    6975    float               farTransition; 
     76    float               fogDensity; 
     77    float               fogEnd; 
    7078}; 
    7179 
     
    575583    } 
    576584     
    577 #if 1     
     585 
    578586    osgUtil::Optimizer::SpatializeGroupsVisitor sgv; 
    579587    group->accept(sgv); 
    580588    sgv.divide(); 
    581 #endif     
     589 
    582590 
    583591    osg::StateSet* stateset = group->getOrCreateStateSet(); 
     
    650658        osg::Fog* fog = new osg::Fog; 
    651659        fog->setMode(osg::Fog::LINEAR); 
    652         fog->setDensity(0.1f); 
     660        fog->setDensity(parameters.fogDensity); 
    653661        fog->setStart(0.0f); 
    654         fog->setEnd(1000.0f); 
     662        fog->setEnd(parameters.fogEnd); 
    655663        fog->setColor(osg::Vec4(0.5f,0.5f,0.5f,1.0f)); 
    656664        stateset->setAttributeAndModes(fog, osg::StateAttribute::ON); 
     
    704712    while (arguments.read("--rain", intensity)) parameters.rain(intensity); 
    705713 
    706     float particleSize; 
    707     while (arguments.read("--particleSize", particleSize)) parameters.particleSize = particleSize; 
     714    while (arguments.read("--particleSize", parameters.particleSize)) {} 
    708715 
    709716    osg::Vec3 particleVelocity; 
    710717    while (arguments.read("--particleVelocity", particleVelocity.x(), particleVelocity.y(), particleVelocity.z() )) parameters.particleVelocity = particleVelocity; 
    711718 
    712     float transition; 
    713     while (arguments.read("--nearTransition", transition )) parameters.nearTransition = transition; 
    714     while (arguments.read("--farTransition", transition )) parameters.farTransition = transition; 
    715  
     719    while (arguments.read("--nearTransition", parameters.nearTransition )) {} 
     720    while (arguments.read("--farTransition", parameters.farTransition )) {} 
     721 
     722    while (arguments.read("--numberOfParticles", parameters.numberOfParticles )) {} 
     723 
     724    while (arguments.read("--numberOfCellsX", parameters.numberOfCellsX )) {} 
     725    while (arguments.read("--numberOfCellsY", parameters.numberOfCellsY )) {} 
     726    while (arguments.read("--numberOfCellsZ", parameters.numberOfCellsZ )) {} 
     727 
     728    while (arguments.read("--boundingBox", parameters.boundingBox.xMin(), 
     729                                           parameters.boundingBox.yMin(), 
     730                                           parameters.boundingBox.zMin(), 
     731                                           parameters.boundingBox.xMax(), 
     732                                           parameters.boundingBox.yMax(), 
     733                                           parameters.boundingBox.zMax())) {} 
     734 
     735    while (arguments.read("--fogDensity", parameters.fogDensity )) {} 
     736    while (arguments.read("--fogEnd", parameters.fogEnd )) {} 
     737  
    716738    // if user request help write it out to cout. 
    717739    if (arguments.read("-h") || arguments.read("--help"))