[vtkusers] problems with transient unstructured volume rendering
Dominik Szczerba
dominik at itis.ethz.ch
Wed Dec 16 05:11:24 EST 2009
I have set up an example here:
http://www.cmake.org/Wiki/Unstructured_Transient_Volume_Rendering
I do not believe the time source generates the right thing: the scalar
ranges do not make any sense to me, neither does what I see on the
screen. Please let me know if I do something wrong.
As to the mapper, David, please note I am not re-creating the mapper but
only the volume (actor). Yes, indeed, it looks like color range is (not)
reset, but I can not find any appropriate functions to influence the
behavior - the transfer functions do not change. How would you force the
desired behavior other than re-creating the volume?
Dominik
David E DeMarle wrote:
> 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