[osg-users] Changes in osgVolume from 3.0 to 3.4

Alex Taylor alextaylor at gmail.com
Thu Feb 11 12:47:52 PST 2016


Also, if it matters, I found that I can get the rendering I'd expect if I
explicitly set the BlendFunc in the special case of Isosurface:

  if (volumeProperties.useIsosurface){
            stateset->setAttribute(new osg::BlendFunc(GL_ONE, GL_ZERO),
osg::StateAttribute::ON);
   }

I'm not sure why I need to do this in OSG 3.4 when I didn't in OSG 3.0,
probably another issue with the viewer or something on my end.

- Alex



On Thu, Feb 11, 2016 at 2:49 PM Alex Taylor <alextaylor at gmail.com> wrote:

> Hi Robert,
>
> Thanks so much, the thread you referenced, "osgViewer/Renderer ctor
> set wrong defaults for SceneView" has mostly resolved the blending issues
> I was having. I now call:
>
>         osg::ref_ptr<osg::StateSet> stateSet =
> osgCamera->getOrCreateStateSet();
>         stateSet->setGlobalDefaults();
>
> When setting up my Camera. Things *mostly* look good now. I am still
> having one lingering problem with the way my isosurfaces are rendering with
> RayTracedTechnique as a result of the OSG 3.4 upgrade from OSG 3.0. I'm
> using RayTracedTechnique with the default shaders used by
> RayTracedTechnique, no hardcoded shaders paths or anything like that.
>
>         if (volumeProperties.volumeTechnique ==
> VolumeTechnique::RayTraced){
>             osg::ref_ptr<osgVolume::RayTracedTechnique> rayTraced = new
> osgVolume::RayTracedTechnique();
>             tile->setVolumeTechnique(rayTraced.get());
>             osg::ref_ptr<osg::FrontFace> frontFace(new
> osg::FrontFace(osg::FrontFace::CLOCKWISE));
>             stateset->setAttribute(frontFace.get(),
> osg::StateAttribute::PROTECTED);
>
>         } else if (volumeProperties.volumeTechnique ==
> VolumeTechnique::FixedFunction) {
>             tile->setVolumeTechnique(new
> osgVolume::FixedFunctionTechnique());
>             stateset->setMode(GL_LIGHTING,osg::StateAttribute::OFF |
> osg::StateAttribute::OVERRIDE);
>         } else {
>             throw hg::PropertyException("VolumeTechnique");
>         }
>
>         layer->addProperty(new
> osgVolume::TransferFunctionProperty(volumeProperties.transferFunction.get()));
>         layer->addProperty(new
> osgVolume::AlphaFuncProperty(volumeProperties.alphaFunc));
>         layer->addProperty(new
> osgVolume::SampleDensityProperty(volumeProperties.sampleDensity));
>         layer->addProperty(new
> osgVolume::SampleDensityWhenMovingProperty(volumeProperties.sampleDensityWhenMoving));
>         if (volumeProperties.useLighting) layer->addProperty(new
> osgVolume::LightingProperty);
>         if (volumeProperties.useIsosurface) layer->addProperty(new
> osgVolume::IsoSurfaceProperty(volumeProperties.alphaFunc));
>         if (volumeProperties.useMaximumIntensityProjection)
> layer->addProperty(new osgVolume::MaximumIntensityProjectionProperty());
>
> Attached is what I see for isosurfaces in OSG 3.4 vs. OSG 3.0. The OSG 3.4
> isosurfaces are rendering very "washed out" looking. I suspect I'm still
> having some sort of Blending issue with the Isosurface specifically. Any
> thoughts on what that might be happening?
>
> Either way, I have really appreciated your help.
>
> - Alex
>> ________________________________________
> From: osg-users <osg-users-bounces at lists.openscenegraph.org> on behalf of
> Robert Osfield <robert.osfield at gmail.com>
> Sent: Thursday, February 4, 2016 6:43 AM
> To: OpenSceneGraph Users
>
> Subject: Re: [osg-users] Changes in osgVolume from 3.0 to 3.4
>
> Hi Alex,
>
> The blending difference might be down to a bug fix elsewhere in the
> OSG.  Have a look at yesterdays discussion "osgViewer/Renderer ctor
> set wrong defaults for SceneView", in particular my replies that
> explain how a bug fix (in OSG-3.2 onwards) to the way that global
> State is managed reveals a deficiency in the viewer set up.
>
> As the light direction issue, the new way is more general purpose, the
> old behaviour isn't required, the old shaders aren't maintained.  If
> you want the old shaders and uniform set up you'll need to write these
> yourself, or just adopt the new approach and have your viewer
> manipulate the main light source using the viewer's Light or an
> osg::LightSource placed in the scene.
>
> Robert.
>
> osg-users
> x
>
> On 3 February 2016 at 21:11, Alex Taylor <alextaylor at gmail.com> wrote:
> > Robert,
> >
> > Thanks. There are two main culprits the behavior change I was seeing. The
> > first is that for some reason, between OSG 3.0 and 3.4, I now need to
> > explicitly set a BlendFunc. With the exception of MIP, it looks like the
> > rest of osgVolume just renders with a default BlendFunc and doesn't
> > explictly set anything.
> >
> > I found that by setting
> >
> >  stateset->setAttribute(new osg::BlendFunc(GL_SRC_ALPHA,
> > GL_ONE_MINUS_SRC_ALPHA), osg::StateAttribute::ON);
> >
> > There is a second issue I want to ask about:
> >
> > It looks to me there was a change to the shaders I'm using regarding the
> > position of the light source between OSG 3.0 and OSG 3.4:
> >
> >
> https://github.com/openscenegraph/osg/commit/4525ec49a386b48608fdb3107033a1c915d928e6
> >
> > The change is to honor the lightDirection from GL_LIGHT0 rather than use
> the
> > eye direction as the direction of the light source.
> >
> > If I wanted to get the old behavior of using the eyeDirection, is there
> an
> > easy way to go about that?
> >
> > Thanks,
> >
> > Alex
> >
> >
> > On Thu, Jan 28, 2016 at 3:16 PM Robert Osfield <robert.osfield at gmail.com
> >
> > wrote:
> >>
> >> Hi Alex,
> >>
> >> There were quite a few improvements to osgVolume between OSG-3.0 and
> >> OSG-3.4, both in shaders and the introduction of the new
> MultiPassTechnique.
> >> One thing to look at with your own setup is that you aren't picking up
> on
> >> old
> >>  shaders such as by having your own path to old shaders.
> >>
> >> It's quite a while since I did the work on osgVolume, around two years,
> so
> >> won't be able to be specific without viewing code and being able to
> >> reproduce the problems you are seeing first hand.
> >>
> >> Robert.
> >>
> >> On 28 January 2016 at 15:25, Alex Taylor <alextaylor at gmail.com> wrote:
> >>>
> >>> Hi,
> >>>
> >>> I'm working on upgrading the OSG version used in the product I work on.
> >>> When OSG is upgraded with the same client code, I'm noticing
> differences is
> >>> the way my volumes are rendered with all of the rendering algorithms
> that I
> >>> can't explain. I've fixed the parameters I'm using to define the
> osgVolume
> >>> in both versions, so it can't be a matter of picking up a different
> default
> >>> option for a parameter.
> >>>
> >>> OSG 3.4 Fixed Function
> >>>
> >>> OSG 3.0 Fixed Function
> >>>
> >>>
> >>> OSG 3.4 Ray Traced Lit
> >>>
> >>>
> >>> OSG 3.0 Ray Traced Lit
> >>>
> >>>
> >>>
> >>> OSG 3.4 Isosurface
> >>>
> >>> OSG 3.0 Isosurface
> >>>
> >>>
> >>> In the Ray Traced cases, I'm using the properties:
> >>>
> >>> AlphaFunc = 0.02;
> >>> SampleDensity = 0.005;
> >>>
> >>> I'm using setting the TransferFunctionProperty, so I'm using the
> shaders
> >>> to do the alpha/color mapping.
> >>>
> >>> For the FixedFunctionTechnique, I'm using AlphaFunc = 0.02, and using
> the
> >>> applyTransferFunction function to obtain an RGBA mapped osg::Image
> buffer.
> >>>
> >>> It's very possible that the upgrade to 3.4 has changed something else
> in
> >>> my overall use of OSG elsewhere in the pipeline, unrelated to
> osgVolume,
> >>> that is causing this issue. That said, I thought i'd ask if visually
> anyone
> >>> has a guess it what might have changed between osg 3.0 and osg 3.4 that
> >>> might explain these visual differences.
> >>>
> >>> Thanks for your help,
> >>>
> >>> Alex
> >>>
> >>>
> >>>
> >>> _______________________________________________
> >>> osg-users mailing list
> >>> osg-users at lists.openscenegraph.org
> >>>
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> >>>
> >>
> >> _______________________________________________
> >> osg-users mailing list
> >> osg-users at lists.openscenegraph.org
> >>
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> >
> >
> > _______________________________________________
> > osg-users mailing list
> > osg-users at lists.openscenegraph.org
> >
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> >
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20160211/dcb514d7/attachment-0003.htm>


More information about the osg-users mailing list