Hi,

I haven't heard of the tutorial you mentioned, but I'm quite
interested. Mind sending me a link?

Cheers,
Daniel

On 14/03/2008, Christoph John <[EMAIL PROTECTED]> wrote:
> Hey Daniel,
>  thanks I just found the tutorial. But I remembered that the OpenSG tutorial 
> stated somewhere that ray intersection performs quite weak in presence of 
> larger geometry. It says it should not be used for collision detection and 
> things like that as it checks for ray intersection on each object (polygon? 
> have not checked the source yet).
>  Therefore I was interested if there is a faster way to get to the polygon 
> like color picking.
>  There is an tutorial which uses this technique for fast object picking but 
> not for single polygons. I assume I have to implement it myself :(
>
>  Cheers
>   Christoph
>
>  -------- Original-Nachricht --------
>  > Datum: Fri, 14 Mar 2008 15:35:31 +0100
>  > Von: "Daniel Wickeroth" <[EMAIL PROTECTED]>
>  > An: [email protected]
>  > Betreff: Re: [Opensg-users] color picking in opensg
>
>
>  > Hi,
>  >
>  > there is a picking mechanism included in OpenSG, which intersects a
>  > ray with some geometry. The returned information include the Node that
>  > was hit, the polygon within the node, the exact location on that
>  > polygon, and so on. We have a method within our framework that looks
>  > like this
>  >
>  >
>  > void getObjectAt(int x, int y, OSG::NodePtr &node,
>  >                                       OSG::Pnt3f &hitPoint, OSG::Vec3f
>  > &hitNormal,
>  >                                       OSG::Int32 &hitTriangleIndex)
>  > {
>  >
>  >    Line line;
>  >
>  >    PerspectiveCameraPtr camera = scene->getCamera();
>  >    NodePtr root = scene->getObjectsRoot();
>  >    ViewportPtr vp = getViewport();
>  >
>  >    camera->calcViewRay(line, x, y, *vp);
>  >
>  >    IntersectAction *action = IntersectAction::create(line);
>  >
>  >    action->apply(root);
>  >
>  >    if (action->didHit())
>  >    {
>  >       // cerr << "SGQGLManagedWidgetP::selectObjectAt info: hit
>  > something" << endl;
>  >       node = action->getHitObject();
>  >       hitPoint = action->getHitPoint();
>  >       hitNormal = action->getHitNormal();
>  >       hitTriangleIndex = action->getHitTriangle();
>  >    }
>  >    else
>  >    {
>  >       // cerr << "SGQGLManagedWidgetP::selectObjectAt info: hit
>  > nothing" << endl;
>  >       node = NodePtr(0);
>  >       hitPoint = Pnt3f(0.0f, 0.0f, 0.0f);
>  >       hitNormal = Vec3f(0.0f, 1.0f, 0.0f);
>  >       hitTriangleIndex = 0;
>  >    }
>  >
>  >    delete action;
>  > }
>  >
>  > Maybe you want to look into the IntersectAction to see if there is
>  > some other info you are interested in. I found that the normals are
>  > not always computed the way I expected, so I wrote a little funtion
>  > that computes the normal of the hitPoint based on the index of the hit
>  > Polygon. If you need something like that, let me know.
>  >
>  > Cheers,
>  > Daniel
>  >
>  >
>  >
>  >
>  >
>  >
>  >
>  >
>  >
>  >
>  >
>  >
>  >
>  >
>  >
>  >
>  > On 14/03/2008, Christoph John <[EMAIL PROTECTED]> wrote:
>  > > Hello,
>  > >  I am quite new to opensg and I am searching for a way to obtain a
>  > polygon on which a user has clicked.
>  > >  Is there a kind of color picking or something similar already
>  > integrated into opensg and where do I find it?
>  > >  Thanks for your help
>  > >
>  > >  Cheers
>  > >   Christoph
>  > >  --
>  > >  Psssst! Schon vom neuen GMX MultiMessenger gehört?
>  > >  Der kann`s mit allen: http://www.gmx.net/de/go/multimessenger
>  > >
>  > >
>  > -------------------------------------------------------------------------
>  > >  This SF.net email is sponsored by: Microsoft
>  > >  Defy all challenges. Microsoft(R) Visual Studio 2008.
>  > >  http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
>  > >  _______________________________________________
>  > >  Opensg-users mailing list
>  > >  [email protected]
>  > >  https://lists.sourceforge.net/lists/listinfo/opensg-users
>  > >
>  >
>  >
>  > --
>  > Daniel Wickeroth
>  > Moltkestraße 88
>  > 50674 Köln
>  >
>  > Home  0221 3569325
>  > Work  0221 478 86502
>  > Mobil 0176 700 40 252
>  >
>  > -------------------------------------------------------------------------
>  > This SF.net email is sponsored by: Microsoft
>  > Defy all challenges. Microsoft(R) Visual Studio 2008.
>  > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
>  > _______________________________________________
>  > Opensg-users mailing list
>  > [email protected]
>  > https://lists.sourceforge.net/lists/listinfo/opensg-users
>
>  -------------------------------------------------------------------------
>  This SF.net email is sponsored by: Microsoft
>  Defy all challenges. Microsoft(R) Visual Studio 2008.
>  http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
>  _______________________________________________
>  Opensg-users mailing list
>  [email protected]
>  https://lists.sourceforge.net/lists/listinfo/opensg-users
>


-- 
Daniel Wickeroth
Moltkestraße 88
50674 Köln

Home  0221 3569325
Work  0221 478 86502
Mobil 0176 700 40 252

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Opensg-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensg-users

Reply via email to