[vtkusers] problems with transient unstructured volume rendering

David E DeMarle dave.demarle at kitware.com
Wed Dec 16 03:21:34 EST 2009


When you delete the mapper and make a new one each frame you are
rescaling the color lookup table on every frame. Color tables are not
automatically rescaled as time progresses and instead the ranges
correspond to that from the first available time step. Automatic
rescaling can be very misleading. A more intuitive approach would be
to get a global range over all time and use that to scale, but the
global range is prohibitively expensive to compute in general with
large data so we do not do that.

Does this explain the effect you are seeing?

About the vtkTimeSourceExample, how are you getting the time range?
Try this to exercise it:

import vtk
tse = vtk.vtkTimeSourceExample()
ex = tse.GetExecutive()
tse.UpdateInformation()

#inspect available time range and time steps
print ex.GetOutputInformation()

#make it grow because bounds are easy to inspect
tse.SetGrowing(1)

ex.SetUpdateTimeStep(0,0.0)
tse.Update()
print(tse.GetOutput().GetBounds())

#pick some other time inside the time range
ex.SetUpdateTimeStep(0,0.5)
tse.Update()
print(tse.GetOutput().GetBounds())




David E DeMarle
Kitware, Inc.
R&D Engineer
28 Corporate Drive
Clifton Park, NY 12065-8662
Phone: 518-371-3971 x109



On Tue, Dec 15, 2009 at 4:08 PM, Dominik Szczerba <dominik at itis.ethz.ch> wrote:
> Hmmm all I am getting at the output is ONE cell (hexa 8 points) with several
> scalars but all of them constant in time.
>
> I think I will need something a little more realistic to demonstrate the
> problem.
>
> Or at least a small transient ImageData that can be triangulated.
>
> Dominik
>
> David E DeMarle wrote:
>>
>> That particular filter has only four parameters, produce data at
>> discrete locations or analytically across the temporal domain, grow
>> (vary number of cells or not), and x and y amplitude for it to move
>> across over time.
>>
>> It produces at most 5 cells I think, so you will have to write some
>> code if the bug is only exposed by higher resolution data. The point
>> was to make something small and predictable to test vtk's support for
>> time varying data.
>>
>> More details about time in VTK can be found here
>> http://www.vtk.org/Wiki/VTK/Time_Support
>>
>> David E DeMarle
>> Kitware, Inc.
>> R&D Engineer
>> 28 Corporate Drive
>> Clifton Park, NY 12065-8662
>> Phone: 518-371-3971 x109
>>
>>
>>
>> On Tue, Dec 15, 2009 at 3:33 PM, Dominik Szczerba <dominik at itis.ethz.ch>
>> wrote:
>>>
>>> I will be happy to.
>>>
>>> While I download and compile CVS, would you kindly post an example how to
>>> generate such a transient dataset (at a desired resolution for inaccurate
>>> but fast rendering)?
>>>
>>> Dominik
>>>
>>> David E DeMarle wrote:
>>>>
>>>> In CVS, time source produces an unstrucured grid that changes over
>>>> time. Can you reproduce the problem with that?
>>>>
>>>> David E DeMarle
>>>> Kitware, Inc.
>>>> R&D Engineer
>>>> 28 Corporate Drive
>>>> Clifton Park, NY 12065-8662
>>>> Phone: 518-371-3971 x109
>>>>
>>>>
>>>>
>>>> On Tue, Dec 15, 2009 at 3:25 PM, Dominik Szczerba <dominik at itis.ethz.ch>
>>>> wrote:
>>>>>
>>>>> I am quite happy with static unstructured volume rendering.
>>>>>
>>>>> The problems arise when I request subsequent timesteps:
>>>>>
>>>>>      while time<=timeEnd:
>>>>>              executive = reader.GetExecutive()
>>>>>              executive.SetUpdateTimeStep(0,time)
>>>>>              reader.Modified()
>>>>>              window.Render()
>>>>>
>>>>>
>>>>> This results in changing but wrong colors in my volume. Don't know
>>>>> exactly
>>>>> what is rendered, but it is certainly different from rendering the
>>>>> subsequent timestep from scratch. The situation is remedied with the
>>>>> following code:
>>>>>
>>>>>      while time<=timeEnd:
>>>>>              executive = reader.GetExecutive()
>>>>>              executive.SetUpdateTimeStep(0,time)
>>>>>              reader.Modified()
>>>>>              renderer.RemoveVolume(volume)
>>>>>              volume = vtkVolume()
>>>>>              volume.SetMapper(volumeMapper)
>>>>>              volume.SetProperty(volumeProperty)
>>>>>              renderer.AddVolume(volume)
>>>>>              window.Render()
>>>>>
>>>>> Looks like something is not reset, but my color/transfer functions are
>>>>> static (not changing with the changing scalar ranges).
>>>>>
>>>>> I could just shrug and go on, but this does not look fine to me so I
>>>>> thought
>>>>> I'd better ask if it is not a problem somewhere in VTK that should be
>>>>> reported.
>>>>>
>>>>> Dominik
>>>>>
>>>>> PS. Following the great example of David D. I wanted to set up a wiki
>>>>> example, but unfortunately I was unable to find a small (transient
>>>>> unstructured) example dataset or an example code to generate one.
>>>>> _______________________________________________
>>>>> 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
>>>>>
>>>>> Follow this link to subscribe/unsubscribe:
>>>>> http://www.vtk.org/mailman/listinfo/vtkusers
>>>>>
>>>
>>
>
>



More information about the vtkusers mailing list