Hi,

Thank you very much, it works great.

To be precise, I've added the Geode with ParticleSystem to the root node,
and the ParticleSystemUpdater and the Emitter to the target node, which
permit to work in relative coords and to render the particles well.

Thanks,

Vincent

2008/2/28, J.P. Delport <[EMAIL PROTECTED]>:
>
> Hi,
>
>
> Vincent Bourdier wrote:
> > Hi,
> >
> > I'm trying to make a Particle System.
> >
> > It looks easy but I have a little problem : my ModularEmitter, my
> > ParticleSystemUpdater and my geode are on the same group.
> > To have the particles on the viewer, I must add this group as a child of
> > the root group. If I put it child of another group, nothing appear...
> >
> > I that normal ?
>
>
> It is the current behaviour. If it's normal is another question :)
>
>
>   > Is it possible to had my particleSystemGroup as a child
>   > of any other group in the scene graph ?
>
>
> Yes, but you have to split up the particle system. One part must be
> connected to the thing that you are moving around and another part must
> be connected to some static point as far as I remember.
>
> Look at the osgparticleeffects example around the line
> if (handleMovingModels)
> there is some explanation.
>
> I also attach some code that I use when I load a model possibly
> containing a particle system. The visitor finds the particle system that
> you can then remove from the loaded model and attach to the root (or
> where you find appropriate).
>
> regards
> jp
>
>
>
> ---8<---
> CViewParticleSystemGeodeFinder psgf = CViewParticleSystemGeodeFinder();
>
> shape->accept(psgf);
> if (psgf.foundGeode) {
>         mParticleSystemGroup->addChild(psgf.foundGeode);
>         ((osg::Group*)shape)->removeChild(psgf.foundGeode);
> }
>
>
> ---8<---
> #include <osg/NodeVisitor>
> #include <osg/Geode>
> #include <osgParticle/ParticleSystem>
>
> class CViewParticleSystemGeodeFinder : public osg::NodeVisitor
> {
>   public:
>          CViewParticleSystemGeodeFinder():
>            osg::NodeVisitor(osg::NodeVisitor::TRAVERSE_ALL_CHILDREN),
>                    foundGeode(0) {}
>
>      virtual void apply(osg::Node& node)
>      {
>                 // if the node is a geode, check if it contains a particle
> system
>                 osg::Geode* geode = dynamic_cast<osg::Geode*>(&node);
>                 if (geode) {
>                         for (unsigned int i=0; i<geode->getNumDrawables();
> i++) {
>                                 osgParticle::ParticleSystem *psDrawable =
> dynamic_cast<osgParticle::ParticleSystem*>(geode->getDrawable(i));
>                                 if(psDrawable) {
>                                         if (!foundGeode) foundGeode =
> geode;
>                                 }
>                         }
>                 }
>          traverse(node);
>      }
>
>         void reset() {foundGeode = 0;}
>
>         osg::Geode *foundGeode;
> };
>
> >
> > Thanks.
> >
> > Vincent.
> >
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > osg-users mailing list
> > [email protected]
> >
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
> --
> This message is subject to the CSIR's copyright terms and conditions,
> e-mail legal notice, and implemented Open Document Format (ODF) standard.
> The full disclaimer details can be found at
> http://www.csir.co.za/disclaimer.html.
>
> This message has been scanned for viruses and dangerous content by
> MailScanner,
> and is believed to be clean.  MailScanner thanks Transtec Computers for
> their support.
>
> _______________________________________________
> 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