[vtkusers] vtkFixedPointVolumeRayCastMapper question
Lisa Avila
lisa.avila at kitware.com
Wed May 25 14:35:30 EDT 2005
Looking quickly at your code I don't see anything obviously wrong. However,
I would suggest trying a few things to isolate the problem:
1) Make sure your first component is the one you want mapped to color, and
the second is the one you want mapped to opacity.
2) Try volProp->ShadeOff(). Perhaps you do not have good gradients in your
data and that is causing the problem (although you have a high ambient so
that shouldn't be the problem...)
3) Leave your ImageSampleDistance at 1.0 (the default). Keep in mind that a
distance of 0.5 means that you cast 4 rays for every pixels on the screen.
I believe when OpenGL maps this texture to the screen, it will sample it
for the pixel value, meaning that you are throwing away 3/4 of the
information you created during ray casting.
4) If all these fail, try using a solid color transfer function (all values
map to red for example) - do you get what you expect?
Lisa
At 02:15 PM 5/25/2005, Randall Hand wrote:
>I have a long pipeline setup to render a multifield dataset. one field I
>want mapped to opacity, and the other one is a vector that I want
>magnitude mapped to color.
>My pipeline resembles the following:
>
>
>vtkDataSetReader -> vtkArrayCalculator (to calculate magnitude) ->
>vtkGaussianSplatter -> vtkImageShiftScale = Dataset with ColorField single
>component scalar
> +-> vtkGaussianSplatter -> ImageShiftScale = Dataset with
> OpacityField single component scalar.
>
>I then do a
>OpacityData->GetPointData()->AddArray(Colordata->GetPointData()->GetArray("colorField")),
>and pass the result through a vtkMergeFields to combine the 2 fields into
>a single dual-component field, and make the new field the Active Scalar.
>
>
>I then construct my volume parts:
> vtkVolumeProperty *volProp = vtkVolumeProperty::New();
> volProp->IndependentComponentsOff();
> volProp->SetColor(xf_Color);
> volProp->SetScalarOpacity(xf_Opacity);
> volProp->SetInterpolationTypeToLinear();
> volProp->ShadeOn();
> volProp->SetAmbient(0.7);
>
> // Now setup the Ray Caster
> vtkFixedPointVolumeRayCastMapper *modelMapper =
> vtkFixedPointVolumeRayCastMapper::New();
> modelMapper->SetImageSampleDistance(0.5);
> modelMapper->SetSampleDistance(0.1);
> modelMapper->SetInput(mergeFilter->GetOutput());
>
> // Creating Volume
> vtkVolume *volume = vtkVolume::New();
> volume->SetMapper(modelMapper);
> volume->SetProperty(volProp);
> volume->Update();
>
>When all is said and done, however, I just get a darkish blurry spot
>(image Attached). Can anyone see what's wrong, or have I exposed a bug in
>the FixedPointVolumeRayCastMapper ? I've been waiting to do this since I
>figured out that the old VolumeRayCastMapper couldn't handle
>multi-component data, and i'm anxious to see this work for once :)
>--
>Randall Hand
><http://www.yeraze.com>http://www.yeraze.com
>_______________________________________________
>This is the private VTK discussion list.
>Please keep messages on-topic. Check the FAQ at:
>http://www.vtk.org/Wiki/VTK_FAQ
>Follow this link to subscribe/unsubscribe:
>http://www.vtk.org/mailman/listinfo/vtkusers
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20050525/b595c8ec/attachment.htm>
More information about the vtkusers
mailing list