[vtk-developers] UseJitteringOn() has no effect in 7.1.0.rc1

Elvis Stansvik elvis.stansvik at orexplore.com
Sat Oct 15 05:19:46 EDT 2016


2016-10-15 11:16 GMT+02:00 Elvis Stansvik <elvis.stansvik at orexplore.com>:
> 2016-10-14 15:54 GMT+02:00 Alvaro Sanchez <alvaro.sanchez at kitware.com>:
>> Hi Elvis,
>>
>> the mapper uses a vtkPerlinNoise instance to generate the jitter noise and
>> as far as I know there are currently no knobs exposed to tweak the amount of
>> ray perturbation.  Are you using the GL2 backend?  It would also be good to
>> know what features are active along with ray jittering (multiple components,
>> etc.), so if you could provide some sample data or code would be very
>> helpful.
>
> Hi again Alvaro,
>
> Here's a minimal test case including sample data (129 MB):
>
>     https://dl.dropboxusercontent.com/u/22350696/test_grain.tar.gz

In case I ever take that down from Dropbox, this was the code:

#include <vtkCamera.h>
#include <vtkColorTransferFunction.h>
#include <vtkGPUVolumeRayCastMapper.h>
#include <vtkImageData.h>
#include <vtkPiecewiseFunction.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkSmartPointer.h>
#include <vtkVolume.h>
#include <vtkVolumeProperty.h>
#include <vtkXMLImageDataReader.h>

#include <iostream>

int main(int argc, char *argv[])
{
    if (argc != 2) {
        std::cerr << "Usage: test_grain <xmlfile>" << std::endl;
        return 1;
    }

    auto reader = vtkSmartPointer<vtkXMLImageDataReader>::New();
    reader->SetFileName(argv[1]);
    reader->Update();

    auto imageData = reader->GetOutput();

    auto mapper = vtkSmartPointer<vtkGPUVolumeRayCastMapper>::New();
    mapper->SetInputConnection(reader->GetOutputPort());
    mapper->UseJitteringOn();

    auto property = vtkSmartPointer<vtkVolumeProperty>::New();
    property->SetInterpolationTypeToLinear();
    property->SetScalarOpacityUnitDistance(imageData->GetSpacing()[0]);
    property->ShadeOff();

    auto opacity = vtkSmartPointer<vtkPiecewiseFunction>::New();
    opacity->AddPoint(0.000, 0.00);
    opacity->AddPoint(0.800, 0.00);
    opacity->AddPoint(2.000, 0.70);
    opacity->AddPoint(3.500, 1.00);
    opacity->AddPoint(20.000, 1.00);
    property->SetScalarOpacity(opacity);

    auto color = vtkSmartPointer<vtkColorTransferFunction>::New();
    color->AddRGBPoint(0.000, 0.70, 0.70, 0.50);
    color->AddRGBPoint(3.500, 0.00, 0.00, 0.00);
    color->AddRGBPoint(20.000, 0.00, 0.00, 0.00);
    property->SetColor(color);

    auto volume = vtkSmartPointer<vtkVolume>::New();
    volume->SetMapper(mapper);
    volume->SetProperty(property);

    auto renderer = vtkSmartPointer<vtkRenderer>::New();
    renderer->SetBackground(1.0, 1.0, 1.0);
    renderer->AddVolume(volume);

    auto window = vtkSmartPointer<vtkRenderWindow>::New();
    window->AddRenderer(renderer);
    window->SetSize(600, 600);

    auto interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
    interactor->SetRenderWindow(window);

    auto camera = renderer->GetActiveCamera();
    camera->SetParallelProjection(true);
    camera->SetPosition(1.0, 0.0, 0.0);
    camera->SetViewUp(0, 0, 1);

    renderer->ResetCamera();

    window->Render();
    interactor->Start();

    return 0;
}

Elvis

>
> Build with:
>
>     cmake .
>     make
>
> and run with:
>
>     ./test_grain rec-0300mm-0400mm.xml
>
> The result should be as in the attached screenshot.
>
> Elvis
>
>>
>> Thanks!
>> Alvaro
>>
>> On Fri, Oct 14, 2016 at 3:47 AM, Elvis Stansvik
>> <elvis.stansvik at orexplore.com> wrote:
>>>
>>> Hi all,
>>>
>>> I updated our product to use VTK 7.1.0.rc1, as I was interested in
>>> trying out vtkGPUVolumeRayCastMapper::UseJitteringOn() to get rid of
>>> some woodgrain effects we're suffering from in our volume rendering
>>> (mostly when the volumes are rendered very opaque).
>>>
>>> But turning the option on seems to have little to no effect. This is
>>> the result with the option on:
>>>
>>>     https://dl.dropboxusercontent.com/u/22350696/out.ogv
>>>
>>> It looks about the same to me as it does with the option off.
>>>
>>> Are there any knobs for this option? How does it determine how much to
>>> perturbate the rays?
>>>
>>> Thanks for any advise.
>>>
>>> Elvis
>>> _______________________________________________
>>> Powered by www.kitware.com
>>>
>>> Visit other Kitware open-source projects at
>>> http://www.kitware.com/opensource/opensource.html
>>>
>>> Search the list archives at: http://markmail.org/search/?q=vtk-developers
>>>
>>> Follow this link to subscribe/unsubscribe:
>>> http://public.kitware.com/mailman/listinfo/vtk-developers
>>>
>>
>>
>>
>> --
>> Alvaro Sanchez
>> Kitware, Inc.
>> Senior R&D Engineer
>> 21 Corporate Drive
>> Clifton Park, NY 12065-8662
>> Phone: 518-881-4901


More information about the vtk-developers mailing list