Robert,

Thanks for your help, at work I'm asked to work with 1.2 because no one has any experience with 2.0 so they won' be able to help me, so I'm going to try from another angle, if nothing works I'll upgrade to 2.0

    Thanks again

       Carlos

----Original Message Follows----
From: "Robert Osfield" <[EMAIL PROTECTED]>
Reply-To: osg users <osg-users@openscenegraph.net>
To: "osg users" <osg-users@openscenegraph.net>
Subject: Re: [osg-users] Triying to create objects and receiving WarningMessages
Date: Thu, 12 Jul 2007 09:20:14 +0100

Hi Carlos,

This type or error usually comes from picking code that is trying to
handle models of zero radius.  I can't see any picking code in your
app though...

Could you try upgrading to 2.0 and see if the warning persists.

Robert.

On 7/11/07, Carlos Nava <[EMAIL PROTECTED]> wrote:
I´m trying to make a very simple SceneGraph, with a model and 3 planes, but
when I run it I get ha next warning twice:
     Warning: invalid line segment passed to IntersectVisitor::addLine
Segment<..>
                  0 0 0 0 0 0 segment ignored
and then get a blank console...

I saw many other mails about this kind of error but none of them seems to
apply, here's y code:



#include <osg/Node>
#include <osg/Geometry>
#include <osg/Geode>
#include <osg/Notify>
#include <osg/MatrixTransform>
#include <osg/BlendFunc>
#include <osg/ColorMask>
#include <osgDB/ReadFile>
#include <osgUtil/Optimizer>
#include <osgProducer/Viewer>

osg::Node* createMirrors(float xMin,float xMax,float zMin,float zMax,float
y)
{

    // set up the Geometry.
    osg::Geometry* geom = new osg::Geometry;

    osg::Vec3Array* coords = new osg::Vec3Array(6);
   coords->push_back( osg::Vec3(   0,0,zMax) ); // front top
   coords->push_back( osg::Vec3(xMin,0,zMin) ); // front left
   coords->push_back( osg::Vec3(xMax,0,zMin) ); // front right
   coords->push_back( osg::Vec3(   0,y,zMax) ); // back top
   coords->push_back( osg::Vec3(xMin,y,zMin) ); // back left
   coords->push_back( osg::Vec3(xMax,y,zMin) ); // back right
   geom->setVertexArray(coords);

   osg::DrawElementsUInt* espejoBase =
      new osg::DrawElementsUInt(osg::PrimitiveSet::QUADS, 0);
   espejoBase->push_back(4);
   espejoBase->push_back(5);
   espejoBase->push_back(2);
   espejoBase->push_back(1);
   geom->addPrimitiveSet(espejoBase);

   osg::DrawElementsUInt* espejoIzq =
      new osg::DrawElementsUInt(osg::PrimitiveSet::QUADS, 0);
   espejoIzq->push_back(1);
   espejoIzq->push_back(0);
   espejoIzq->push_back(3);
   espejoIzq->push_back(4);
   geom->addPrimitiveSet(espejoIzq);

   osg::DrawElementsUInt* espejoDer =
      new osg::DrawElementsUInt(osg::PrimitiveSet::QUADS, 0);
   espejoDer->push_back(2);
   espejoDer->push_back(5);
   espejoDer->push_back(3);
   espejoDer->push_back(0);
   geom->addPrimitiveSet(espejoDer);

   osg::Vec3Array* norms = new osg::Vec3Array(1);
    (*norms)[0].set(0.0f,0.0f,1.0f);
    geom->setNormalArray(norms);
    geom->setNormalBinding(osg::Geometry::BIND_OVERALL);

    osg::Vec4Array* colours = new osg::Vec4Array(1);
    (*colours)[0].set(1.0f,1.0f,1.0,1.0f);
    geom->setColorArray(colours);
    geom->setColorBinding(osg::Geometry::BIND_OVERALL);

        osg::Geode* geode = new osg::Geode;
    geode->addDrawable(geom);

        return geode;
}

osg::Node* createCaleidoscope(osg::Node* model)
{

    // calculate where to place the mirror according to the
    // loaded models bounding sphere.
    const osg::BoundingSphere& bs = model->getBound();

    float xMin = bs.center().x()-bs.radius()*.9129;
    float xMax = bs.center().x()+bs.radius()*.9129;
    float zMin = bs.center().z()-bs.radius();
    float zMax = bs.center().z()+bs.radius()*1.5;
    float y = bs.center().y()-bs.radius()*10.5;

        osg::Group* rootNode = new osg::Group;
    // create a textured, transparent node at the appropriate place.
    osg::Node* mirrors = createMirrors(xMin,xMax,zMin,zMax,y);

        rootNode->addChild(mirrors);

    return rootNode;
}

int main( int argc, char **argv )
{

    // use an ArgumentParser object to manage the program arguments.
    osg::ArgumentParser arguments(&argc,argv);

    // construct the viewer.
    osgProducer::Viewer viewer(arguments);

    // set up the value with sensible default event handlers.
    viewer.setUpViewer(osgProducer::Viewer::STANDARD_SETTINGS);

// any option left unread are converted into errors to write out later.
    arguments.reportRemainingOptionsAsUnrecognized();

    // report any errors if they have occured when parsing the program
aguments.
    if (arguments.errors())
    {
        arguments.writeErrorMessages(std::cout);
        return 1;
    }

    if (arguments.argc()<=1)
    {

arguments.getApplicationUsage()->write(std::cout,osg::ApplicationUsage::COMMAND_LINE_OPTION);
        return 1;
    }


    // read the scene from the list of file specified commandline args.
    osg::ref_ptr<osg::Node> loadedModel = osgDB::readNodeFiles(arguments);

    // if no model has been successfully loaded report failure.
    if (!loadedModel)
    {
std::cout << arguments.getApplicationName() <<": No data loaded" <<
std::endl;
        return 1;
    }


    // optimize the scene graph, remove rendundent nodes and state etc.
    osgUtil::Optimizer optimizer;
    optimizer.optimize(loadedModel.get());

    // add a transform with a callback to animate the loaded model.
    osg::ref_ptr<osg::MatrixTransform> loadedModelTransform = new
osg::MatrixTransform;
    loadedModelTransform->addChild(loadedModel.get());

    osg::ref_ptr<osg::Node> rootNode =
createCaleidoscope(loadedModelTransform.get());


    // set the scene to render
    viewer.setSceneData(rootNode.get());

    // create the windows and run the threads.
    viewer.realize();

    while( !viewer.done() )
    {
        // wait for all cull and draw threads to complete.
        viewer.sync();

        // update the scene by traversing it with the the update visitor
which will
        // call all node update callbacks and animations.
        viewer.update();

        // fire off the cull and draw traversals of the scene.
        viewer.frame();

    }

    // wait for all cull and draw threads to complete.
    viewer.sync();

    // run a clean up frame to delete all OpenGL objects.
    viewer.cleanup_frame();

    // wait for all the clean up frame to complete.
    viewer.sync();

    return 0;

}

Thanks for any elp you can provide...

_________________________________________________________________
El mejor destino, con los mejores contenidos http://www.prodigy.msn.com

_______________________________________________
osg-users mailing list
osg-users@openscenegraph.net
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/

_______________________________________________
osg-users mailing list
osg-users@openscenegraph.net
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/

_________________________________________________________________
Te gusta estar en control, crea tu propia experiencia en Internet http://live.com

_______________________________________________
osg-users mailing list
osg-users@openscenegraph.net
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/

Reply via email to