[vtk-developers] Volume rendering implementation
Sason Ohanian Saki
sason at kth.se
Mon May 9 09:31:27 EDT 2011
Hi!
I am wondering If anyone knows how volume rendering with ray casting is implemented in VTK? Is it a software implementation or hardware-accelerated with shaders?
Thanks!
/Sason
7 maj 2011 kl. 23.25 skrev David Gobbi:
> The only way that I know of is to get the range directly from the scalars,
>
> double range[2];
> data->GetPointData()->GetScalars()->GetRange(range, component);
>
> Personally, I would not be opposed to changing vtkDataSet::ComputeRange()
> so that it computed the range over all components.
>
> David
>
>
> On Sat, May 7, 2011 at 1:37 PM, Nicolas Rannou
> <Nicolas_Rannou at hms.harvard.edu> wrote:
>> Hi David,
>>
>> Thanks for the clarification.
>> Which is the best practice to get the scalar range of each component then?
>>
>>
>> On May 6, 2011, at 5:53 PM, David Gobbi wrote:
>>
>>> Hi Nicolas,
>>>
>>> The GetScalarRange() method computes the scalar range of the first component.
>>>
>>> - David
>>>
>>>
>>> On Fri, May 6, 2011 at 3:00 PM, Nicolas Rannou
>>> <nicolas_rannou at hms.harvard.edu> wrote:
>>>> Hello,
>>>>
>>>> I'm experiencing a strange behavior in VTK which might be a bug.
>>>> It took me a while to locate the issue:
>>>>
>>>> if I create a LUT with a NULL red component:
>>>> iRed = 0;
>>>> iGreen = 255;
>>>> iBlue = 255;
>>>> iAlpha = 255;
>>>> double iRange[2] = {0, 255};
>>>>
>>>> vtkSmartPointer<vtkLookupTable> lut =
>>>> vtkSmartPointer<vtkLookupTable>::New();
>>>> double* HSV = vtkMath::RGBToHSV(iRed,iGreen,iBlue);
>>>> lut->SetAlpha(iAlpha);
>>>> lut->SetHueRange(HSV[0], HSV[0]);
>>>> lut->SetSaturationRange(1, 1);
>>>> lut->SetValueRange(0, 1);
>>>> lut->SetRange(iRange);
>>>> lut->Build();
>>>>
>>>> I color my image with this LUT:
>>>>
>>>> vtkSmartPointer<vtkImageMapToColors> coloredImage =
>>>> vtkSmartPointer<vtkImageMapToColors>::New();
>>>> coloredImage->SetLookupTable(iLUT);
>>>> coloredImage->SetInput( iImage );
>>>> coloredImage->PassAlphaToOutputOff();
>>>> coloredImage->SetOutputFormatToRGB();
>>>> coloredImage->Update();
>>>>
>>>> then:
>>>> double* range = coloredImage->GetOutput()->GetScalarRange();
>>>> returns [0,0].
>>>> then everything I do with this image is messed up...
>>>>
>>>> If iRed != 0, the scalar range of the "coloredImage" will be correct then my
>>>> pipeline is working.
>>>>
>>>> Am I doing something wrong?
>>>>
>>>> Thanks,
>>>>
>>>> Nicolas
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtk-developers
>
More information about the vtk-developers
mailing list