Hi Hans,

Fog most likely will be working correctly, just the values involved
need tweaking. The best thing to do is read up on OpenGL Fog settings,
the OSG just passes the settings it has on to OpenGL.  osg::Fog is
effectively glFog, all the variable and naming conventions are the
same.

Robert.

On Nov 12, 2007 12:25 PM, Elbers, H.P. <[EMAIL PROTECTED]> wrote:
>
>
> 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
>
>
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to