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

Alex Taylor alextaylor at gmail.com
Thu Feb 11 11:49:00 PST 2016


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20160211/66724437/attachment-0003.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: osg34Iso.jpg
Type: image/jpeg
Size: 46466 bytes
Desc: not available
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20160211/66724437/attachment-0006.jpg>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: osg30Isosurface.jpg
Type: image/jpeg
Size: 76932 bytes
Desc: not available
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20160211/66724437/attachment-0007.jpg>


More information about the osg-users mailing list