Interpolating 3D data (X, Y, Z, value)...and adding a time component.

Hi,

I’m interested in the possibility of interpolating a set of X/Y/Z/value data in 3D, and then working towards incorporating a time component to it so that animations can be generated. I tried to follow the information here (link), but wasn’t able to get those filters to work for me…and the descriptions of them did not sound like the would do the right thing?

I have been able to (sort of) do the first part with the Gaussian Resampling filter but it’s not a very good 3D interpolation of the data and looks more like a discrete blob placed around each data point, and points in proximity to each other do not interact in the interpolation in the sort of way that you would expect form something like Kriging (for example).

  • Are there any other more sophisticated ways to interpolate data in 3D within ParaView, e.g. Kriging? My data is likely to be very dense and pretty uniformly distributed so something simple may suffice.
  • Would the best way to extend this work-flow to include the time dimension? I am aware of the capability of using VTK files for each time step and a pvd file to organize it all…but I cannot get an XML format file to work for points only (question here). Also, it seems like it should be easier to just have a ‘time’ category in the data and somehow link that to the ‘time’ in ParaView so that when time advances in the animation it simply updates the data set to use only those from the current time step? Is something like this possible?

[Edit] I have discovered that I might be able to just use simple XYZval format in a text file if the naming convention is consistent. I can import these as a group:
image
…but I am struggling to figure out how I can assign these to different time steps other than 0,1,2,3,4…etc. The output times from my modelling are not guaranteed to be of uniform timestep length, so is there any way to associate these with actual times rather than 0,1,2,3,4 etc…?

Thanks!

I have the same question here. I couldn’t get my “.vts” format to tell ParaView about the physical time value for my data which is really quite simple structured mesh. I looked into writing netCDF4 format or HDF5 format, but I’m wondering if anyone knows an easier workaround. Thanks!

@datathing : GaussianResampling is the best you can get. There is no Kriging method implemented in ParaView yet. You can implement anything in a programmable filter though.

Uses a .series file to manage the time values.

Thanks! With help on another question (link) I have this partially working. Using .vtp XML format files and a .pvd file with the content below:

<?xml version="1.0"?>
<VTKFile type="Collection" version="0.1"
         byte_order="LittleEndian"
         compressor="vtkZLibDataCompressor">
  <Collection>
    <DataSet timestep="0" group="" part="0"
         file="pointTest_01.vtp"/>
    <DataSet timestep="1" group="" part="0"
         file="pointTest_02.vtp"/>
    <DataSet timestep="2" group="" part="0"
         file="pointTest_03.vtp"/>
    <DataSet timestep="4" group="" part="0"
         file="pointTest_04.vtp"/>
    <DataSet timestep="8" group="" part="0"
         file="pointTest_05.vtp"/>
  </Collection>
</VTKFile>

However, the animation seems to have an unexpected behavior (to me at least) in that:

  • The data set for time step 0 is only visible at time = 0 and is then immediately superseded by the date for time step 1.
  • The data set for time step 1 continues to be visible until time = 1 and is then immediately superseded by the date for time step 2.

This pattern continues for each following time step, so that in my example the one defined for time step 8 is actually visible for all time steps > 4. E.g.

image

…rather than what I had expected:

Is this the intended behavior, and if yes, is there a way to change it? Logically with my data I want the image to update on the time step that corresponds with the time step that it was defined.

@mwestphal Thank you so much. I’ll look into that!

please share your data

particle_tracking_pointTest.zip (40.5 KB)

vtp, pvd and pvsm files are attached. The strange particle movement described above is visible when you play the animation using the ‘real time’ setting. Thanks!

This is the expected behavior. It could be controlled with a settings though.

@nicolas.vuaille

Just reviewing this again and wondered if you had any thoughts about work arounds? This type of time interpolation is really unintuitive and I’m a little perplexed as to why this would be the default option in scientific visualisation. Data is typically defined at a point in time at which it occurs, and I can’t think of a good reason why we would want to have that data rendered at a preceding time-step which could be offset by any amount of time. This was made quite obvious when I tried using the temporal interpolator with this simple example. The data at t=8 is displayed 4 time units before it actually happens and then the animation ceases at t=4, which is 4 time units before the last data point. This is really misleading for my purposes because this is long term temporal data that is simply not in sync with what is happening in the real world. i.e. there is a 4 year offset in my visualisation and my real world data.

I think I have to manually edit my data in a really unintuitive way and slide all my time stamps to the next observed data?

@nicolas.vuaille : I think you merged a new temporal filter, right ?

Hi,
Animation and temporal mode are a tricky thing in ParaView. The recommended mode is still Snap to Time Step. You can find some details in this (quite long) discussion:

As a workaround in your case, you can use the Temporal Snap To Timestep filter, with Snap Mode to Next Below or Equal.

Thanks, I will try the Snap To Time Step. I read through the discussion and it was interesting, but it does sound like it is partly a case of my particular field of science (geoscience) not currently being a major user of the software in comparison to some of the engineering type applications being discussed there. I know that the clients that I present to are interested in seeing the results in sped-up real time such that what they see on the screen exactly matches the time stamp that is displayed. It would be incredibly confusing for them to see a contaminant plume reaching their well-field earlier than expected, for example. It’s a little disheartening after all the time I have invested into ParaView (and more importantly the time I have taken up from all the helpful people on this Discourse) to see the negative opinions of the animation functions amongst the developers etc. To me, when I selected a software for the purpose of generating these animations, there was no reason to believe that ParaView isn’t really intended for this purpose.

FYI - over the next few years I suspect there will be an increased interest in this sort of capability, I know that other open source tools are being developed that will make the access to the VTK file conversion from our modeling software much more streamlined for the larger geoscience community, and along with that will come more questions about why the rendered imaged doesn’t match the time stamp of the input data.

Anyway, thanks again! I will try your suggestions.

@nicolas.vuaille the Snap to Time Step filter seems to partially work. It makes the animation align with the data (good!) but won’t display the last time step (not too bad, I can always append some dummy data to force it to display), but the main issue seems to be that I can’t apply a temporal interpolate filter to the results of the Snap To Time Step filter. I get the following error:

Any ideas? Again, thanks for your help, and thanks @mwestphal.

No idea for this, sorry … Did you try the Interpolate first and then Snap ?