Hello All,
 
I'm new to osg, and trying to use Fog...
 
I get no fog at all, unless I use LINEAR mode with negative start and
end values, wich I find strange: I would expect that positive values are
required. If I try EXP mode, I cannot get any fog at al.
 
Am I overlooking something obvious? 
  Please help!
 
Hans Elbers
 
==========================================================
I'm using OSG 2.2 on linux, installed in a default way.
Here is a small test example (with red fog):
 
I compile like this:
  g++ -c  -g main.cpp -o main.o
  g++ -o osgtest  -g  main.o  -losg -losgViewer -losgSim
 
main.cpp:
==========================================================
#include <osg/Group>
#include <osg/Fog>
#include <osgDB/ReadFile>
#include <osg/MatrixTransform>
#include <osg/PositionAttitudeTransform>
#include <osgViewer/Viewer>
#include <osgGA/TrackballManipulator>
 
using namespace osg;
using namespace std;
 
int main(int argc, char *argv[]) {
  osgViewer::Viewer viewer;
  Group *world = new Group();
 
  StateSet *state= world->getOrCreateStateSet();
 
  Fog *fog =
dynamic_cast<Fog*>(state->getAttribute(StateAttribute::FOG));
  if (!fog) fog = new Fog;
  fog->setColor(osg::Vec4(1.,0.,0., 1.));
  fog->setDensity(0.15f);
 
  // ====> FOG works !?!?!
  fog->setMode(Fog::LINEAR); fog->setStart(-200.f); fog->setEnd(-300.f);
 
  // ====> NO FOG !?!?!?
  //fog->setMode(Fog::LINEAR); fog->setStart(200.f); fog->setEnd(300.f);
  //fog->setMode(Fog::EXP); fog->setStart(200.f); fog->setEnd(300.f);
 
  state->setAttributeAndModes(fog,StateAttribute::ON);
 
  Node *obj = osgDB::readNodeFile("obj.osg");
  if (obj) for (int i=-5; i<=5; i++) for (int j=-5; j<=5; j++) {
     PositionAttitudeTransform *T = new PositionAttitudeTransform();
     world->addChild(T);
     T->setPosition(Vec3(10.*i, 10.*j, 0.));
     T->addChild(obj);
  }
 
  viewer.setSceneData(world);
  osgGA::TrackballManipulator *manip = new
osgGA::TrackballManipulator();
  viewer.setCameraManipulator(manip);
  viewer.realize();
 
  viewer.run();
}
==========================================================
 
 
obj.osg contains a small cube:
==========================================================
Group {
  UniqueID Group_0
  DataVariance UNSPECIFIED
  name "root"
  nodeMask 0xffffffff
  cullingActive TRUE
  num_children 1
    Geode {
      UniqueID Geode_7
      DataVariance UNSPECIFIED
      name "geode19"
      nodeMask 0xffffffff
      cullingActive TRUE
      num_drawables 1
      ShapeDrawable {
        UniqueID ShapeDrawable_8
        DataVariance UNSPECIFIED
        Box {
          DataVariance UNSPECIFIED
          Center 0 0 0
          HalfLengths .5 .5 .5
          Rotation 0 0 0 1
        }
        useDisplayList FALSE
        useVertexBufferObjects TRUE
        color 1 1 1 1
      }
    }
}
==========================================================
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to