The stub of code you had posted earlier should still work. On Thu, Apr 25, 2013 at 11:16 AM, Bill Sherman <[email protected]> wrote: > On 04/25/2013 10:57 AM, Utkarsh Ayachit wrote: >> >> Don't do this in ProgrammableFIlter, do it in the "Python" animation >> script. > > > Okay, but I don't know how to get geometry generated in a Python animation > script to be placed into the pipeline. I've only figured out how > to do that in the ProgrammableFilter. > > Bill > > >> >> 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
