[Paraview] Accessing GetAnimationScene() from the ProgrammableSource
Utkarsh Ayachit
utkarsh.ayachit at kitware.com
Wed Apr 24 23:09:26 EDT 2013
I'm am little confused, what is that you exactly want to see? I can
figure out how to show that.
Utkarsh
On Wed, Apr 24, 2013 at 5:54 PM, Bill Sherman <shermanw at indiana.edu> wrote:
> Hello again Utkarsh, ParaView list people,
>
>
>> You cannot access animation scene from ProgrammableSource. Anything
>> from simple.py/servermanager.py cannot be accessed in
>> ProgrammableSource/Filter. You can add Python scripts as an animation
>> track, however. In the animation view, choose "Python" in the first
>> combo-box next to the "+" button.
>
>
> Thanks again for this, this is a great tool to know about -- I was
> doing animations stuff all day yesterday and didn't notice it.
>
> I have a couple of updates:
>
> First, with the Animation Python script, I'm not sure how the
> geometry I generate can be placed into the scene.
>
> Second, I managed to figure out a way to use a Programmable Filter
> fed by an "AnnotateTime" source to make a geometry that is based on
> time! So that's the good news -- example Python script below.
>
> The bad news is that I didn't quite think this through. What I want
> is basically a time/progress bar at the top, and I can do that now,
> but what I forgot is that the camera moves in the animation, and I
> don't want my progress bar to move! I should have thought of that
> from the outset!
>
> I've been doing some research and experimenting with vanilla VTK, and
> it doesn't seem to be the case that I can have a 2D geometric object
> that is immune to the camera's movements. (And if anyone knows anything
> different than that, I'd love to hear about it.)
>
> So, I decided to just try something simple for now, but of course nothing
> is simple. I was thinking that I'd just create a text representation of
> time -- ie a bunch of ohs in a string ("oooooo..."), but now I don't
> know if I can produce a Text object other than from a source -- ie. can
> I programatically create a text object that will be immune to camera
> moves (ie. using a vtkActor2D underneath the hood).
>
> Thoughts? ... Hang on, I just discovered that links can do more than
> link cameras! So any thoughts on how I might take advantage of a link
> to create a text string in a programmable filter and pipe that into a
> Text object?
>
>
> As always when working with ParaView, even after I feel like I've learned
> a lot, the amount of knowledge of what I don't know about it seems
> to have expanded even more!
>
> For example: the programmable filter has three places for scripts:
> - Script
> - RequestInformation Script
> - RequestUpdateExtent Script
> Each have popups, but the message is self referential -- I have to
> know what the RequestInformation pass or the RequestUpdateExtent pipeline
> pass means to know how these work.
>
>
> Okay, as promised, thanks to some code from Utkarsh, and a lot of
> trial an error, I present a programmable filter script that modifies
> the shape of this triangle based on animation time:
>
> -----------------------------------------------------------
> time = self.GetInput().GetValue(0,0).ToFloat();
> #print time;
>
>
> # Create a poly-data instance
> #pd = vtk.vtkPolyData()
>
> # Instead link to the poly-data created for the output
> pd = self.GetPolyDataOutput();
>
>
> # Set up the containter to save the
> # point locations (geometry)
> points = vtk.vtkPoints()
> pd.SetPoints(points)
>
> # Add the point coordinates
> points.SetNumberOfPoints(3)
> points.SetPoint(0, 0, 0, 0)
> points.SetPoint(1, 2, time, 0)
>
> points.SetPoint(2, 3, 0, 0)
>
> # We are adding a single triangle with
> # 3 points. Create a id-list to refer to
> # the point ids that form the triangle.
> ids = vtk.vtkIdList()
> ids.SetNumberOfIds(3)
> ids.SetId(0, 0)
> ids.SetId(1, 1)
> ids.SetId(2, 2)
>
> # Since this polydata has only 1 cell,
> # allocate it.
> pd.Allocate(1, 1)
>
> # Insert the cell giving its type and
> # the point ids that form the cell.
> pd.InsertNextCell(vtk.VTK_POLYGON, ids)
> -----------------------------------------------------------
>
> So, in order to get time, the Programmable Filter must have as its
> input an "AnnotateTime" module that just outputs a numeric value for
> time. And then the output type for the filter must be set to "vtkPolyData".
>
>> Utkarsh
>
>
> more to learn, more to learn ... thanks!
> Bill
>
>
>>
>> On Wed, Apr 24, 2013 at 10:02 AM, Bill Sherman<shermanw at indiana.edu>
>> wrote:
>>>
>>> Hello,
>>>
>>> I have a question about how to access internal ParaView data from the
>>> Programmable Source source.
>>>
>>> Specifically, I want to have a source that changes based on the animation
>>> time, and so I would like to know how to get the current data-time
>>> from within the python code of a Programmable Source.
>>>
>>> So, using the Python_Scripting wiki entry on paraview.org, I have
>>> found that from the Python Shell I can get information about the
>>> current time of the animation using the GetAnimationScene() method,
>>> so I'm hoping that there is a quick trick to accessing this data
>>> from the ProgrammableSource python code.
>>>
>>> Eg.
>>> >>> scene=GetAnimationScene()
>>> >>> print scene.AnimationTime
>>> 30.0466
>>>
>>> I think from there I can do some interesting stuff.
>>>
>>> Thanks in advance,
>>> Bill
>>>
>>> --
>>> Bill Sherman
>>> Sr. Technology Advisor
>>> Advanced Visualization Lab
>>> Pervasive Technology Inst
>>> Indiana University
>>> shermanw at indiana.edu
>
>
More information about the ParaView
mailing list