<br><font size=2 face="sans-serif">First, thank you for the quick response
I appreciate the input.</font>
<br>
<br><font size=2 face="sans-serif">I took at look at the state file you
provided, and my first thoughts are suggesting that the Transform Filter
may not provide exactly what I need. &nbsp;</font>
<br>
<br><font size=2 face="sans-serif">In your example you are using the Animation
Control to interpolate parameters of the Transform Filter over time. &nbsp;However
I don't believe that any of the functions exposed </font>
<br><font size=2 face="sans-serif">by the Transform filter will help me
actually remove Points along with the data in their associated Data Arrays.
&nbsp;</font>
<br>
<br><font size=2 face="sans-serif">In terms of viewing the &quot;Information&quot;
tab in the Object Inspector - I have a Dataset which has 2 Points, Several
Arrays of Length 2 - and I would like to create multiple filters; each
</font>
<br><font size=2 face="sans-serif">which would contain only 1 Point with
Data Arrays of size 1. &nbsp;</font>
<br>
<br><font size=2 face="sans-serif">Would it be helpful if I provided a
state file with my test datasets?</font>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">From:</font>
<td><font size=1 face="sans-serif">&quot;Deij, Menno&quot; &lt;M.Deij@marin.nl&gt;</font>
<br>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">To:</font>
<td><font size=1 face="sans-serif">John CTR Mick/ACT/CNTR/FAA@FAA, &quot;paraview@paraview.org&quot;
&lt;paraview@paraview.org&gt;</font>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">Date:</font>
<td><font size=1 face="sans-serif">03/22/2012 12:39 PM</font>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">Subject:</font>
<td><font size=1 face="sans-serif">RE: [Paraview] Assistance/Suggestion
With Animating Relatively Small Datasets Over Many Timesteps</font></table>
<br>
<hr noshade>
<br>
<br>
<br><font size=3>&nbsp;</font>
<p><font size=2 color=#004080 face="Calibri">How about using a Transform
Filter, possibly using scripting? Not sure if that works with timesteps,
but I suppose it can be done.</font>
<p><font size=2 color=#004080 face="Calibri">&nbsp;</font>
<p><font size=2 color=#004080 face="Calibri">I made the following example
for someone on the list recently, that shows animation of a transformfilter:</font>
<p><font size=2 color=#004080 face="Calibri">&nbsp;</font>
<p><a href="http://markmail.org/download.xqy?id=wjep757breylvtao&amp;number=1"><font size=2 color=blue face="Calibri"><u>http://markmail.org/download.xqy?id=wjep757breylvtao&amp;number=1</u></font></a><font size=2 color=#004080 face="Calibri">
(downloads a state file)</font>
<p><font size=2 color=#004080 face="Calibri">&nbsp;</font>
<p><font size=2 color=#004080 face="Calibri">&nbsp;</font>
<p>
<table>
<tr>
<td colspan=2><img src=cid:_2_079A57E8079A5698005D9C22852579C9><img src=cid:_2_079A59EC079A5698005D9C22852579C9>
<tr>
<td colspan=2><font size=2 color=#808080 face="Arial">dr. ir. Menno A.
Deij</font>
<tr>
<td><font size=2 color=#808080 face="Arial">Software Engineer</font>
<td>
<tr>
<td><font size=2 color=#808080 face="Arial">Maritime Simulation Group</font>
<td></table>
<p>
<table>
<tr>
<td><font size=3>&nbsp;</font>
<td><font size=2 color=#808080 face="Arial"><b>MARIN</b></font>
<td><font size=3>&nbsp;</font>
<tr>
<td>
<td><font size=2 color=#808080 face="Arial">2, Haagsteeg</font>
<td>
<tr>
<td><font size=2 color=#808080 face="Arial">E</font><font size=2 color=#424282 face="Arial">
</font><a href=mailto:M.Deij@marin.nl><font size=2 color=blue face="Arial"><u>M.Deij@marin.nl</u></font></a>
<td><font size=2 color=#808080 face="Arial">P.O. Box 28</font>
<td><font size=2 color=#808080 face="Arial">T +31 317 49 39 11</font>
<tr>
<td>
<td><font size=2 color=#808080 face="Arial">6700 AA Wageningen</font>
<td>
<tr>
<td><font size=2 color=#808080 face="Arial">T &nbsp;+31 317 49 35 06</font>
<td><font size=2 color=#808080 face="Arial">The Netherlands</font>
<td><font size=2 color=#808080 face="Arial">I &nbsp;</font><a href=http://www.marin.nl/ target=_top><font size=2 color=#424282 face="Arial"><u>www.marin.nl</u></font></a></table>
<br><font size=3>&nbsp;</font>
<p><font size=2 color=#808080 face="Arial">MARIN news: </font><a href="http://www.marin.nl/web/News/News-items/Exploratory-study-on-the-working-principles-of-Energy-Saving-Devices.htm"><font size=1 color=#424282 face="Arial"><u>Exploratory
study on the working principles of Energy Saving Devices</u></font></a>
<br><font size=2 color=#808080 face="Arial">This e-mail may be confidential,
privileged and/or protected by copyright. If you are not the intended recipient,
you should return it to the sender immediately and delete your copy from
your system.</font>
<br><font size=3>&nbsp;</font>
<p><font size=2 face="Tahoma"><b>From:</b> paraview-bounces@paraview.org
[</font><a href="mailto:paraview-bounces@paraview.org"><font size=2 face="Tahoma">mailto:paraview-bounces@paraview.org</font></a><font size=2 face="Tahoma">]
<b>On Behalf Of </b>John.CTR.Mick@faa.gov<b><br>
Sent:</b> Thursday, March 22, 2012 5:13 PM<b><br>
To:</b> paraview@paraview.org<b><br>
Subject:</b> [Paraview] Assistance/Suggestion With Animating Relatively
Small Datasets Over Many Timesteps</font>
<p><font size=3>&nbsp;</font>
<p><font size=2 face="Arial"><br>
 &nbsp; &nbsp; This is my first experience posting to the ParaView Mailing
List; as well as my first project I am exploring with ParaView. &nbsp;I
hope I am posting this question to the correct audience.</font><font size=3>
<br>
</font><font size=2 face="Arial"><br>
 &nbsp; &nbsp; I am attempting to create an animation of our Solar System
- at an extremely high update interval - perhaps plotting the position
and velocity of significant solar system bodies over 165 Earth years at</font><font size=3>
</font><font size=2 face="Arial"><br>
a one day interval. &nbsp;Initially I thought I would be able to work with
CSV files to define a dataset which includes time, positional coordinates,
and velocity vectors. &nbsp;While testing this approach I managed to use
the TableToPoints filter to create a visualization of a sample dataset;
but I was not able to sequence over the individual timesteps. &nbsp;So
in effect you see all the positions a particular planet was at for the
entire duration of the dataset.</font><font size=3> <br>
</font><font size=2 face="Arial"><br>
I created a video of this test and made it available online:</font><font size=3>
</font><font size=2 face="Arial"><br>
 &nbsp; &nbsp; </font><a href="http://www.youtube.com/watch?v=XLPxx-2Zc9Q"><font size=3 color=blue><u>http://www.youtube.com/watch?v=XLPxx-2Zc9Q</u></font></a><font size=3>
<br>
<br>
 &nbsp; &nbsp; Next I thought perhaps the CSV format was a little too general
for what I needed, so I read the VTK file format document and migrated
over to the XML VTK format. &nbsp;It seems like there is no way to define
time sequenced data natively within the file format itself? &nbsp;ParaView
expects the user to break the timesteps into individual files - with a
numeric indicator in the filename to define the sequence. &nbsp;If I were
to take this approach, I could be looking at creating nearly 500,000 individual
files to represent the entire duration of time I'm interested in plotting.
&nbsp;I feel like there must be a better way to do this. <br>
<br>
 &nbsp; &nbsp; As a small improvement I thought I could at least combine
all of the unique solar system bodies (Earth, Sun, etc.), into a single
timestep file such as this: <br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(filename: timeseries_2455562.vtu) <br>
</font><font size=2 face="Lucida Console"><br>
&lt;?xml version=&quot;1.0&quot;?&gt;</font><font size=3> </font><font size=2 face="Lucida Console"><br>
&lt;VTKFile type=&quot;UnstructuredGrid&quot; version=&quot;0.1&quot; byte_order=&quot;LittleEndian&quot;
compressor=&quot;vtkZLibDataCompressor&quot;&gt;</font><font size=3> </font><font size=2 face="Lucida Console"><br>
 &nbsp;&lt;UnstructuredGrid&gt;</font><font size=3> </font><font size=2 face="Lucida Console"><br>
 &nbsp; &nbsp;&lt;Piece NumberOfPoints=&quot;2&quot; NumberOfCells=&quot;2&quot;&gt;</font><font size=3>
</font><font size=2 face="Lucida Console"><br>
 &nbsp; &nbsp; &nbsp;&lt;PointData Vectors=&quot;Velocity&quot; Scalars=&quot;Radius&quot;&gt;</font><font size=3>
</font><font size=2 face="Lucida Console"><br>
 &nbsp; &nbsp; &nbsp; &nbsp;&lt;DataArray Name=&quot;Time&quot; type=&quot;Float32&quot;
format=&quot;ascii&quot;&gt;2455562 2455562&lt;/DataArray&gt;</font><font size=3>
</font><font size=2 face="Lucida Console"><br>
 &nbsp; &nbsp; &nbsp; &nbsp;&lt;DataArray Name=&quot;Radius&quot; type=&quot;Float32&quot;
format=&quot;ascii&quot;&gt;6371 696000&lt;/DataArray&gt;</font><font size=3>
</font><font size=2 face="Lucida Console"><br>
 &nbsp; &nbsp; &nbsp; &nbsp;&lt;DataArray Name=&quot;Velocity&quot; type=&quot;Float32&quot;
NumberOfComponents=&quot;3&quot; format=&quot;ascii&quot;&gt;</font><font size=3>
</font><font size=2 face="Lucida Console"><br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-2.982651603443954E+01 -5.304542013817379E+00
-7.226846229160870E-04</font><font size=3> </font><font size=2 face="Lucida Console"><br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0 0 0</font><font size=3> </font><font size=2 face="Lucida Console"><br>
 &nbsp; &nbsp; &nbsp; &nbsp;&lt;/DataArray&gt;</font><font size=3> </font><font size=2 face="Lucida Console"><br>
 &nbsp; &nbsp; &nbsp;&lt;/PointData&gt;</font><font size=3> </font><font size=2 face="Lucida Console"><br>
 &nbsp; &nbsp; &nbsp;&lt;Points&gt;</font><font size=3> </font><font size=2 face="Lucida Console"><br>
 &nbsp; &nbsp; &nbsp; &nbsp;&lt;DataArray type=&quot;Float32&quot; NumberOfComponents=&quot;3&quot;
format=&quot;ascii&quot;&gt;</font><font size=3> </font><font size=2 face="Lucida Console"><br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-2.567030301930377E+07 1.448508985971261E+08
-3.607762965630511E+03</font><font size=3> </font><font size=2 face="Lucida Console"><br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0 0 0</font><font size=3> </font><font size=2 face="Lucida Console"><br>
 &nbsp; &nbsp; &nbsp; &nbsp;&lt;/DataArray&gt;</font><font size=3> </font><font size=2 face="Lucida Console"><br>
 &nbsp; &nbsp; &nbsp;&lt;/Points&gt;</font><font size=3> </font><font size=2 face="Lucida Console"><br>
 &nbsp; &nbsp; &nbsp;&lt;Cells&gt;</font><font size=3> </font><font size=2 face="Lucida Console"><br>
 &nbsp; &nbsp; &nbsp; &nbsp;&lt;DataArray Name=&quot;connectivity&quot;
type=&quot;Int32&quot; format=&quot;ascii&quot;&gt;0 1&lt;/DataArray&gt;</font><font size=3>
</font><font size=2 face="Lucida Console"><br>
 &nbsp; &nbsp; &nbsp; &nbsp;&lt;DataArray Name=&quot;offsets&quot; type=&quot;Int32&quot;
format=&quot;ascii&quot;&gt;1 2&lt;/DataArray&gt;</font><font size=3> </font><font size=2 face="Lucida Console"><br>
 &nbsp; &nbsp; &nbsp; &nbsp;&lt;DataArray Name=&quot;types&quot; type=&quot;UInt8&quot;
format=&quot;ascii&quot;&gt;1 1&lt;/DataArray&gt;</font><font size=3> </font><font size=2 face="Lucida Console"><br>
 &nbsp; &nbsp; &nbsp;&lt;/Cells&gt;</font><font size=3> </font><font size=2 face="Lucida Console"><br>
 &nbsp; &nbsp;&lt;/Piece&gt;</font><font size=3> </font><font size=2 face="Lucida Console"><br>
 &nbsp;&lt;/UnstructuredGrid&gt;</font><font size=3> </font><font size=2 face="Lucida Console"><br>
&lt;/VTKFile&gt;</font><font size=3> <br>
<br>
The idea of this approach was to list all of the scalars and vectors for
each corresponding body in a single file. &nbsp;In this example the first
listed scalar, vector, or coordinate point, is the Earth while the second
set of values indicates the Sun's data. &nbsp;By combining the bodies into
a single file I could reduce the 500,000 files required down to some 60,000
files....still undesirable but better. <br>
<br>
However I would also like to segment the Points once inside the ParaView
environment; so I can create a distinct pipeline for each body in the dataset.
&nbsp;One application for this would be to allow different Glyph rendering
rules for the Sun and the Earth so I can make the Sun...have a Sun texture
- and the Earth an Earth texture. &nbsp; <br>
<br>
After experimenting with this for awhile I found myself trying to implement
a Programmable Filter. &nbsp;The filter would take the Unstructured Grid
for the given timestep, and given an index, extract the Point, Scalar,
and Vector data from its input - then set only those values to the Output
Unstructured Grid. &nbsp;I currently have a script that looks something
like this: <br>
</font><font size=2 face="Lucida Console"><br>
# CELLID 0 = EARTH</font><font size=3> </font><font size=2 face="Lucida Console"><br>
cellId = 0</font><font size=3> <br>
</font><font size=2 face="Lucida Console"><br>
# Obtain References To Input/Output Data</font><font size=3> </font><font size=2 face="Lucida Console"><br>
gridI = self.GetUnstructuredGridInput()</font><font size=3> </font><font size=2 face="Lucida Console"><br>
gridO = self.GetUnstructuredGridOutput()</font><font size=3> </font><font size=2 face="Lucida Console"><br>
dataI = self.GetInput()</font><font size=3> </font><font size=2 face="Lucida Console"><br>
dataO = self.GetOutput()</font><font size=3> </font><font size=2 face="Lucida Console"><br>
scalarI = dataI.GetPointData().GetScalars()</font><font size=3> </font><font size=2 face="Lucida Console"><br>
vectorI = dataI.GetPointData().GetVectors()</font><font size=3> <br>
</font><font size=2 face="Lucida Console"><br>
# Initialize Local Storage Arrays</font><font size=3> </font><font size=2 face="Lucida Console"><br>
newVector = vtk.vtkFloatArray()</font><font size=3> </font><font size=2 face="Lucida Console"><br>
newVector.SetName(vectorI.GetName())</font><font size=3> </font><font size=2 face="Lucida Console"><br>
newVector.SetNumberOfComponents(3)</font><font size=3> </font><font size=2 face="Lucida Console"><br>
newScalar = vtk.vtkFloatArray()</font><font size=3> </font><font size=2 face="Lucida Console"><br>
newScalar.SetName(scalarI.GetName())</font><font size=3> </font><font size=2 face="Lucida Console"><br>
newPoint = vtk.vtkPoints()</font><font size=3> </font><font size=2 face="Lucida Console"><br>
newPoint.SetNumberOfPoints(1)</font><font size=3> </font><font size=2 face="Lucida Console"><br>
newCell = vtk.vtkCellArray()</font><font size=3> <br>
</font><font size=2 face="Lucida Console"><br>
# Lookup CellId References</font><font size=3> </font><font size=2 face="Lucida Console"><br>
idCell = gridI.GetCell(cellId)</font><font size=3> </font><font size=2 face="Lucida Console"><br>
idCellType = gridI.GetCellType(cellId)</font><font size=3> </font><font size=2 face="Lucida Console"><br>
idPoint = gridI.GetPoints().GetPoint(cellId)</font><font size=3> </font><font size=2 face="Lucida Console"><br>
idScalar = scalarI.GetTuple(cellId)</font><font size=3> </font><font size=2 face="Lucida Console"><br>
idVector = vectorI.GetTuple(cellId)</font><font size=3> <br>
</font><font size=2 face="Lucida Console"><br>
# Populate New Local Cell Array with CellId Cell</font><font size=3> </font><font size=2 face="Lucida Console"><br>
newCell.InsertNextCell(idCell)</font><font size=3> <br>
</font><font size=2 face="Lucida Console"><br>
# Populate New Local Point Array With CellId Point</font><font size=3>
</font><font size=2 face="Lucida Console"><br>
newPoint.SetPoint(0, idPoint)</font><font size=3> <br>
</font><font size=2 face="Lucida Console"><br>
# Populate New Local Scalars with CellId Scalar Tuples</font><font size=3>
</font><font size=2 face="Lucida Console"><br>
newScalar.InsertNextTuple(idScalar)</font><font size=3> <br>
</font><font size=2 face="Lucida Console"><br>
# Populate New Local Vectors with CellID Vector Tuples</font><font size=3>
</font><font size=2 face="Lucida Console"><br>
newVector.InsertNextTuple(idVector)</font><font size=3> <br>
</font><font size=2 face="Lucida Console"><br>
# Copy Local Cells, Scalars, Vectors, and Points Into Output Pipeline Data</font><font size=3>
</font><font size=2 face="Lucida Console"><br>
gridO.SetPoints(newPoint)</font><font size=3> </font><font size=2 face="Lucida Console"><br>
gridO.SetCells(idCellType, newCell)</font><font size=3> </font><font size=2 face="Lucida Console"><br>
dataO.GetPointData().SetScalars(newScalar)</font><font size=3> </font><font size=2 face="Lucida Console"><br>
dataO.GetPointData().SetVectors(newVector)</font><font size=3> <br>
</font><font size=2 face="Arial"><br>
The filter does achieve the desired effect for the cellID 0 - but when
I switch the value of cellID to 1 (which should refer to the Sun's index)
ParaView crashes hard - where I assume I am missing something, possibly
requesting something out of bounds in memory.</font><font size=3> <br>
</font><font size=2 face="Arial"><br>
I've been struggling with this problem for a little while now and thought
to share my progress here; hopefully there is somebody out there with a
little more insight that could help guide me towards either a conclusion
with this implementation or a suggestion for a better approach.</font><font size=3>
<br>
</font><font size=2 face="Arial"><br>
Essentially - How can one give ParaView Point and Velocity vectors over
a vast sequence of time without creating potentially hundreds of thousands
of files on disc? &nbsp;Does this Programmable Filter seem like a reasonable
approach? &nbsp;Is there a native feature I am missing that does this already?
&nbsp;Is there some other file format other than VTK I could use to have
ParaView understand this format of data?</font><font size=3> <br>
</font><font size=2 face="Arial"><br>
Any thoughts, comments, or questions will be greatly appreciated. &nbsp;:)</font><font size=3>
<br>
</font><font size=2 face="Arial"><br>
Thanks,</font><font size=3> </font><font size=2 face="Arial"><br>
 &nbsp; &nbsp; John</font><font size=3> </font>
<p>
<p>