Hi Alex, I'm a bit too busy to go rummaging through code to answer your questions so will do my best by providing some general questions. I vaguely recall OSG-3.0 alpha, transparency and isosurface all overlapped a bit, so there was a bit of cross over. In OSG-3.4 transparency and isosurface value is now separate and can be applied together within the same shader. There is also AlphaFunc which clips out fragments below a specific alpha value. I hope this makes sense.
Robert. On 16 February 2016 at 14:59, Alex Taylor <[email protected]> wrote: > Robert, > > Thanks again. I do have one quick follow up question related to something > you said. > > "Check the alpha values settings that you have set up for the VolumeTile." > > I'm trying to figure out exactly what you mean by the "alpha values > settings" on the VolumeTile. I define my VolumeTile as shown below. As you > can see, I'm not setting Alpha anywhere in the setup of my tile. The one > place where alpha comes in is when I set the TransferFunctionProperty on my > tile. This brings me to my question. > > It looks to me like the intention of Isosurface property is to specify the > isovalue for the isosurface rendering. What happens if you specify an > Isosurface property but your transfer function contains alpha values between > the ranges of (0,1)? Meaning, if you are defining an isosurface at isovalue > = X, do you also have to specify the alpha in your transfer function as a > unit step function U(I-X) with transition at X? > > I'm trying to understand the motivation for blending being on for the > Isosurface codepath in RayTracedTechnique and how the alpha in the transfer > function interacts with the specification of an IsosurfaceProperty. I had > originally thought/guessed that the alpha in your transfer function would > just be ignored if you specify an IsosurfaceProperty. > > - Alex > > osg::ref_ptr<osg::Image> intensityImage = createTexture3D(data); > > osg::ref_ptr<osg::Image> image_3d = > (volumeProperties.volumeTechnique == VolumeTechnique::FixedFunction) ? > > > osgVolume::applyTransferFunction(intensityImage.get(),volumeProperties.transferFunction.get()) > : > > > intensityImage.release(); > > > > osg::ref_ptr<osgVolume::ImageLayer> layer = new > osgVolume::ImageLayer(image_3d); > > tile->setLayer(layer.get()); > > Where createTexture3D is defined as: > > osg::Image* createTexture3D(const mxArray* src) { > > if (src == NULL || mxGetNumberOfDimensions(src) != 3 || > mxGetClassID(src) != mxUINT8_CLASS) { > > return NULL; > > } > > size_t num_s = mxGetDimensions(src)[0]; > > size_t num_t = mxGetDimensions(src)[1]; > > size_t num_r = mxGetDimensions(src)[2]; > > // now allocate the 3d texture; > > osg::ref_ptr<osg::Image> image_3d = new osg::Image; > > image_3d->setImage(num_s, num_t, num_r, > > GL_LUMINANCE, GL_LUMINANCE, GL_UNSIGNED_BYTE, > > static_cast<uint8_T *>(mxGetData(src)), > > osg::Image::NO_DELETE); > > > > return image_3d.release(); > > } > > Other than that, the only other specification Alpha comes from setting the > TransferFunctionProperty on the tile with my TransferFunction. This brings > me to my question. > > When > > > > On Fri, Feb 12, 2016 at 5:42 AM Robert Osfield <[email protected]> > wrote: >> >> Hi Alex, >> >> On 11 February 2016 at 20:47, Alex Taylor <[email protected]> wrote: >> > 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. >> >> From the details above and the picture it looks to me that OSG-3.4 is >> probably doing the right thing w.r.t the settings, such as alpha >> settings, you are using and OSG-3.0 implementation was incorrect and >> ignored these settings so you never saw this. >> >> Check the alpha values settings that you have set up for the VolumeTile. >> >> Robert. >> _______________________________________________ >> 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 > _______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

