[vtkusers] Artifacts along bounding box edges in volume rendering

Elvis Stansvik elvis.stansvik at orexplore.com
Mon Mar 13 12:01:10 EDT 2017


2017-03-13 10:43 GMT+01:00 Róbert Špir <spir.robert at gmail.com>:
> I used the default parameters from paraview as described here https://blog.kitware.com/new-fxaa-anti-aliasing-option-in-paraviewvtk/

Ah, thanks.

Elvis

>
> Robert
>
> -----Original Message-----
> From: Elvis Stansvik [mailto:elvis.stansvik at orexplore.com]
> Sent: Monday, March 13, 2017 9:54 AM
> To: Róbert Špir <spir.robert at gmail.com>
> Cc: VTK Users <vtkusers at vtk.org>
> Subject: Re: [vtkusers] Artifacts along bounding box edges in volume rendering
>
> 2017-03-13 8:10 GMT+01:00 Róbert Špir <spir.robert at gmail.com>:
>> Hi Elvis,
>> this is caused by multisampling, if you set
>> window->SetMultiSamples(0); the artifact will disappear. I can
>> reproduce it in your example on windows with nvidia card.
>>
>> If you need antialiasing, you can try using FXAA which doesn't produce
>> these artifacts #include <vtkFXAAOptions.h>
>>
>>         vtkSmartPointer<vtkFXAAOptions> FXAAOptions =
>> vtkSmartPointer<vtkFXAAOptions>::New();
>>         FXAAOptions->SetRelativeContrastThreshold(0.125);
>>         FXAAOptions->SetHardContrastThreshold(0.045);
>>         FXAAOptions->SetSubpixelBlendLimit(0.75);
>>         FXAAOptions->SetSubpixelContrastThreshold(0.25);
>>         FXAAOptions->SetUseHighQualityEndpoints(true);
>>         FXAAOptions->SetEndpointSearchIterations(12);
>>
>>         renderer->SetFXAAOptions(FXAAOptions);
>>         renderer->SetUseFXAA(true);
>>
>> Robert
>
> That indeed did the trick, and I can't see any ill effects of FXAA for my use case. Many thanks!
>
> Just a question: The parameters above, how did you derive them? Manual tuning to your use case, or my test case?
>
> Elvis
>
>>
>> -----Original Message-----
>> From: vtkusers [mailto:vtkusers-bounces at vtk.org] On Behalf Of Elvis
>> Stansvik
>> Sent: Monday, March 13, 2017 7:53 AM
>> To: VTK Users <vtkusers at vtk.org>
>> Subject: Re: [vtkusers] Artifacts along bounding box edges in volume
>> rendering
>>
>> 2017-03-10 10:11 GMT+01:00 Elvis Stansvik <elvis.stansvik at orexplore.com>:
>>> 2017-03-10 10:07 GMT+01:00 Elvis Stansvik <elvis.stansvik at orexplore.com>:
>>>> Hi all,
>>>>
>>>> I'm trying to debug a problem with artifacts appearing around the
>>>> bounding box edges in my volume rendering (at certain camera angles).
>>>> I can reproduce the problem with the minimal test case below. In the
>>>> attached screen shot, notice the faint white artifacts along the
>>>> bounding box edges.
>>>>
>>>> Anyone know where these come from and how I can fix it?
>>>
>>> I forgot to say, this is with VTK 7.1.0.
>>
>> Noone who knows where this comes from? Would be great if someone could
>> confirm that they can reproduce it with my test case, as I'm beginning
>> to suspect it might be graphics card specific (I'm on Linux, Intel graphics).
>>
>> Should I post to vtk-dev perhaps?
>>
>> Elvis
>>
>>>
>>> Elvis
>>>
>>>>
>>>> Thanks in advance,
>>>> Elvis
>>>>
>>>>
>>>> main.cpp:
>>>>
>>>> #include <algorithm>
>>>>
>>>> #include <vtkCamera.h>
>>>> #include <vtkColorTransferFunction.h> #include
>>>> <vtkGPUVolumeRayCastMapper.h> #include <vtkImageData.h> #include
>>>> <vtkNew.h> #include <vtkPiecewiseFunction.h> #include
>>>> <vtkRenderer.h> #include <vtkRenderWindow.h> #include
>>>> <vtkRenderWindowInteractor.h> #include <vtkVolume.h> #include
>>>> <vtkVolumeProperty.h>
>>>>
>>>> int main(int argc, char *argv[])
>>>> {
>>>>     vtkNew<vtkColorTransferFunction> colorFunction;
>>>>     colorFunction->AddRGBPoint(0.0, 0.0, 0.0, 0.0);
>>>>     colorFunction->AddRGBPoint(1.0, 0.0, 0.0, 0.0);
>>>>
>>>>     vtkNew<vtkPiecewiseFunction> opacityFunction;
>>>>     opacityFunction->AddPoint(0.0, 0.0);
>>>>     opacityFunction->AddPoint(1.0, 1.0);
>>>>
>>>>     vtkNew<vtkImageData> data;
>>>>     data->SetExtent(0, 200, 0, 200, 0, 200);
>>>>     data->AllocateScalars(VTK_FLOAT, 1);
>>>>     std::fill_n(static_cast<float *>(data->GetScalarPointer()),
>>>> 8000000, 0.1);
>>>>
>>>>     vtkNew<vtkGPUVolumeRayCastMapper> mapper;
>>>>     mapper->SetInputData(data.Get());
>>>>
>>>>     vtkNew<vtkVolumeProperty> property;
>>>>     property->SetScalarOpacity(opacityFunction.Get());
>>>>     property->SetColor(colorFunction.Get());
>>>>
>>>>     vtkNew<vtkVolume> volume;
>>>>     volume->SetMapper(mapper.Get());
>>>>     volume->SetProperty(property.Get());
>>>>
>>>>     vtkNew<vtkRenderer> renderer;
>>>>     renderer->AddVolume(volume.Get());
>>>>     renderer->SetBackground(1.0, 1.0, 1.0);
>>>>
>>>>     vtkNew<vtkRenderWindow> window;
>>>>     window->AddRenderer(renderer.Get());
>>>>
>>>>     // Position camera such that artifacts appear
>>>>     auto camera = renderer->GetActiveCamera();
>>>>     camera->SetPosition(500.0, 220.0, 500.0);
>>>>     camera->SetFocalPoint(0.0, 80.0, 0.0);
>>>>     renderer->ResetCameraClippingRange();
>>>>
>>>>     vtkNew<vtkRenderWindowInteractor> interactor;
>>>>     interactor->SetRenderWindow(window.Get());
>>>>     interactor->Start();
>>>>
>>>>     return 0;
>>>> }
>>>>
>>>>
>>>> CMakeLists.txt:
>>>>
>>>> cmake_minimum_required(VERSION 3.1)
>>>>
>>>> project(TestCase)
>>>>
>>>> set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} /opt/VTK7)
>>>>
>>>> find_package(VTK 7.1 COMPONENTS
>>>>     vtkCommonCore
>>>>     vtkCommonDataModel
>>>>     vtkCommonExecutionModel
>>>>     vtkCommonMath
>>>>     vtkInteractionStyle
>>>>     vtkRenderingCore
>>>>     vtkRenderingOpenGL2
>>>>     vtkRenderingVolume
>>>>     vtkRenderingVolumeOpenGL2
>>>>     REQUIRED
>>>> )
>>>>
>>>> add_executable(TestCase WIN32 main.cpp)
>>>>
>>>> target_link_libraries(TestCase PUBLIC
>>>>     vtkCommonCore
>>>>     vtkCommonDataModel
>>>>     vtkCommonExecutionModel
>>>>     vtkCommonMath
>>>>     vtkInteractionStyle
>>>>     vtkRenderingCore
>>>>     vtkRenderingOpenGL2
>>>>     vtkRenderingVolume
>>>>     vtkRenderingVolumeOpenGL2
>>>> )
>>>>
>>>> target_include_directories(TestCase PUBLIC
>>>>     ${VTK_INCLUDE_DIRS}
>>>> )
>>>>
>>>> target_compile_definitions(TestCase PUBLIC
>>>>     ${VTK_DEFINITIONS}
>>>> )
>>>>
>>>> set_target_properties(TestCase PROPERTIES
>>>>     CXX_STANDARD 14
>>>>     CXX_STANDARD_REQUIRED ON
>>>> )
>> _______________________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Please keep messages on-topic and check the VTK FAQ at:
>> http://www.vtk.org/Wiki/VTK_FAQ
>>
>> Search the list archives at: http://markmail.org/search/?q=vtkusers
>>
>> Follow this link to subscribe/unsubscribe:
>> http://public.kitware.com/mailman/listinfo/vtkusers
>>
>


More information about the vtkusers mailing list