Don't do this in ProgrammableFIlter, do it in the "Python" animation script.
On Thu, Apr 25, 2013 at 10:55 AM, Bill Sherman <[email protected]> wrote: > Hey Utkarsh, > > >> Following may help: >> >> - Create a mapper for your polydata. >> - Set that mapper to a vtkFollower. >> - Pass camera to vtkFollower (view.GetActiveCamera()) >> - Add vtkFolllower to view (view.GetRenderer2D().AddActor(follower) >> >> You'll have to figure out what Python modules to import to get the >> vtkFollower/vtkPolyDataMapper, if needed. If all goes well, that may >> work. > > > Right, first thing I'm having difficulty figuring how is how to get > the view from within the Programmable Filter. I'm sure it's because > it's a serverside object, right, but I found what I thought would > help -- I can get the Proxy for the view and the camera -- but I can't > figure out how to actually get the view object, or remotely access > the view via the Proxy. > > E.g.: > view = servermanager.vtkSMViewProxy() > print dir(view) > > camera = servermanager.vtkSMCameraProxy() > print dir(camera) > > I can't find any methods from those method listings that tie me to > actually using the camera or the view. > > It seems like if I can get over this hump I could be in good shape. > > Thanks, > Bill > > >> >> Utkarsh >> >> >> On Thu, Apr 25, 2013 at 12:16 AM, William Sherman<[email protected]> >> wrote: >>> >>> On 4/24/13 11:09 PM, Utkarsh Ayachit wrote: >>>> >>>> I'm am little confused, what is that you exactly want to see? I can >>>> figure out how to show that. >>> >>> >>> Nothing visually complicated. In my animation sequence I have data >>> time repeat over and over again as I represent it using different >>> methods. I currently show that time value using the "AnnotateTime" >>> source, but I feel that that number gets lost in the shuffle, so I >>> want to have something that looks like a progress bar that is tied >>> to data-time and grows as we progress in the simulation. And when >>> the simulation time resets to 0, the bar goes back to the beginning. >>> >>> Like I said, very simple, yet very difficult. >>> >>> I did more exploration with creating a string that I might use >>> instead of a polygonal object, but then I was foiled when I >>> realized that even though I can put a string into a Table output, >>> the "Manage Links" tool doesn't have an option to link data output >>> to a source/filter parameter. Only parameter to parameter! >>> >>> So I'm back to the polygonal object. >>> >>>> Utkarsh >>> >>> >>> Thanks, >>> >>> Bill >>> >>>> On Wed, Apr 24, 2013 at 5:54 PM, Bill Sherman<[email protected]> >>>> 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<[email protected]> >>>>>> 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 >>>>>>> [email protected] >>>>> >>>>> >>>>> > _______________________________________________ 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 ParaView Wiki at: http://paraview.org/Wiki/ParaView Follow this link to subscribe/unsubscribe: http://www.paraview.org/mailman/listinfo/paraview
