<html><head></head><body><div>Dear all,</div><div><br></div><div>My previous question regarding time series and MTime seems to be fixed now (including the memory issues!), but there is still a problem that is obviously really related to animation sequence time handling and which I also need to eventually address. The symptom was that my different output views (render view, table view) in ParaView were often not really all correctly synchronized with the time that I set in the time selector in the toolbar.</div><div><br></div><div>The code that I put into RequestInformation basically defines the timesteps for all output ports: I posted it in my previous question and Utkarsh Ayachit considered it so far ok.</div><div><br></div><div>Now in my RequestData function I am retrieving the required time with the following code:</div><div><br></div><div>
<pre><!--StartFragment--><span style=" color:#c0c0c0;"> </span><span style=" color:#092e64;">info</span><span style=" color:#c0c0c0;"> </span>=<span style=" color:#c0c0c0;"> </span><span style=" color:#092e64;">outputVector</span>-><span style=" color:#00677c;">GetInformationObject</span>(<span style=" color:#000080;">0</span>);</pre>
<pre><span style=" color:#c0c0c0;"> </span><span style=" color:#800080;">vtkUnstructuredGrid</span>*<span style=" color:#c0c0c0;"> </span><span style=" color:#092e64;">outFullGrid</span><span style=" color:#c0c0c0;"> </span>=<span style=" color:#c0c0c0;"> </span><span style=" color:#800080;">vtkUnstructuredGrid</span>::<span style=" color:#00677c;">SafeDownCast</span>(<span style=" color:#092e64;">info</span>-><span style=" color:#00677c;">Get</span>(<span style=" color:#800080;">vtkDataObject</span>::<span style=" color:#00677c;">DATA_OBJECT</span>()));</pre>
<pre><span style="color: rgb(192, 192, 192);"> </span><span style="color: rgb(128, 128, 0);">double</span><span style="color: rgb(192, 192, 192);"> </span><span style="color: rgb(9, 46, 100);">reqTime</span><span style="color: rgb(192, 192, 192);"> </span>=<span style="color: rgb(192, 192, 192);"> </span><span style="color: rgb(0, 0, 128);">0.</span>;</pre>
<pre><span style=" color:#c0c0c0;"> </span><span style=" color:#808000;">if</span>(<span style=" color:#092e64;">info</span>-><span style=" color:#00677c;">Has</span>(<span style=" color:#800080;">vtkStreamingDemandDrivenPipeline</span>::<span style=" color:#00677c;">UPDATE_TIME_STEP</span>()))</pre>
<pre><span style=" color:#c0c0c0;"> </span><span style=" color:#092e64;">reqTime</span><span style=" color:#c0c0c0;"> </span>=<span style=" color:#c0c0c0;"> </span><span style=" color:#092e64;">info</span>-><span style=" color:#00677c;">Get</span>(<span style=" color:#800080;">vtkStreamingDemandDrivenPipeline</span>::<span style=" color:#00677c;">UPDATE_TIME_STEP</span>());</pre>
<pre><br><!--EndFragment--></pre></div><div>In other words: I am referring to the info object for the first output port (which happens to refer to an unstructured grid). This always worked for my simple test cases, and "often" it also works now with the more complex setup with many output ports. BUT: it should ALWAYS work! And first of all: It should never simply "stick to some time" - no matter what I do in the time selection toolbar!</div><div><br></div><div>For testing purposes I added the following code into my RequestData - in order to see whether the time step is the same for all the ports:</div><div><br></div><div>
<pre><!--StartFragment--><span style=" color:#c0c0c0;"> </span><span style=" color:#800080;">std</span>::cout<span style=" color:#c0c0c0;"> </span><<<span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">"SEE</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">WHICH</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">TIMES</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">I</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">GET</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">FROM</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">OUTPUT</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">INFOS"</span><span style=" color:#c0c0c0;"> </span><<<span style=" color:#c0c0c0;"> </span><span style=" color:#800080;">std</span>::endl;</pre>
<pre><span style=" color:#c0c0c0;"> </span><span style=" color:#808000;">for</span>(<span style=" color:#808000;">int</span><span style=" color:#c0c0c0;"> </span><span style=" color:#092e64;">op</span><span style=" color:#c0c0c0;"> </span>=<span style=" color:#c0c0c0;"> </span><span style=" color:#000080;">0</span>;<span style=" color:#c0c0c0;"> </span><span style=" color:#092e64;">op</span><span style=" color:#c0c0c0;"> </span><<span style=" color:#c0c0c0;"> </span><span style=" color:#00677c;">GetNumberOfOutputPorts</span>();<span style=" color:#c0c0c0;"> </span>++<span style=" color:#092e64;">op</span>)</pre>
<pre><span style=" color:#c0c0c0;"> </span>{</pre>
<pre><span style=" color:#c0c0c0;"> </span><span style=" color:#800080;">vtkInformation</span>*<span style=" color:#c0c0c0;"> </span><span style=" color:#092e64;">oinfo</span><span style=" color:#c0c0c0;"> </span>=<span style=" color:#c0c0c0;"> </span><span style=" color:#092e64;">outputVector</span>-><span style=" color:#00677c;">GetInformationObject</span>(<span style=" color:#092e64;">op</span>);</pre>
<pre><span style=" color:#c0c0c0;"> </span><span style=" color:#808000;">if</span>(<span style=" color:#092e64;">oinfo</span>-><span style=" color:#00677c;">Has</span>(<span style=" color:#800080;">vtkStreamingDemandDrivenPipeline</span>::<span style=" color:#00677c;">UPDATE_TIME_STEP</span>()))</pre>
<pre><span style=" color:#c0c0c0;"> </span>{</pre>
<pre><span style=" color:#c0c0c0;"> </span><span style=" color:#808000;">double</span><span style=" color:#c0c0c0;"> </span><span style=" color:#092e64;">ot</span><span style=" color:#c0c0c0;"> </span>=<span style=" color:#c0c0c0;"> </span><span style=" color:#092e64;">oinfo</span>-><span style=" color:#00677c;">Get</span>(<span style=" color:#800080;">vtkStreamingDemandDrivenPipeline</span>::<span style=" color:#00677c;">UPDATE_TIME_STEP</span>());</pre>
<pre><span style=" color:#c0c0c0;"> </span><span style=" color:#800080;">std</span>::cout<span style=" color:#c0c0c0;"> </span><<<span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">"output</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">port</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">"</span><span style=" color:#c0c0c0;"> </span><<<span style=" color:#c0c0c0;"> </span><span style=" color:#092e64;">op</span><span style=" color:#c0c0c0;"> </span><<<span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">"</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">has</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">time</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">"</span><span style=" color:#c0c0c0;"> </span><<<span style=" color:#c0c0c0;"> </span><span style=" color:#092e64;">ot</span><span style=" color:#c0c0c0;"> </span><<<span style=" color:#c0c0c0;"> </span><span style=" color:#800080;">std</span>::endl;</pre>
<pre><span style=" color:#c0c0c0;"> </span>}</pre>
<pre><span style=" color:#c0c0c0;"> </span><span style=" color:#808000;">else</span></pre>
<pre><span style=" color:#c0c0c0;"> </span>{</pre>
<pre><span style=" color:#c0c0c0;"> </span><span style=" color:#800080;">std</span>::cout<span style=" color:#c0c0c0;"> </span><<<span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">"output</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">port</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">"</span><span style=" color:#c0c0c0;"> </span><<<span style=" color:#c0c0c0;"> </span><span style=" color:#092e64;">op</span><span style=" color:#c0c0c0;"> </span><<<span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">"</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">has</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">no</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">time"</span><span style=" color:#c0c0c0;"> </span><<<span style=" color:#c0c0c0;"> </span><span style=" color:#800080;">std</span>::endl;</pre>
<pre><span style=" color:#c0c0c0;"> </span>}</pre>
<pre><span style=" color:#c0c0c0;"> </span>}</pre></div><div><br></div><div>The amazing finding is: no, you do NOT always get the same time for all the output port! By turning the view for different output ports on and off and also moving a little up and down along the time axis, this is a typical kind of output from the above test code:</div><div><br></div><div>
<p><!--StartFragment--><span style=" color:#000000;">SEE WHICH TIMES I GET FROM OUTPUT INFOS</span></p>
<p><span style=" color:#000000;">output port 0 has time 0.05</span></p>
<p><span style=" color:#000000;">output port 1 has time 0.1</span></p>
<p><span style=" color:#000000;">output port 2 has time 0.05</span></p>
<p><span style=" color:#000000;">output port 3 has time 0.2</span></p>
<p><span style=" color:#000000;">output port 4 has time 0.05</span></p>
<p><span style=" color:#000000;">output port 5 has time 0.2</span></p>
<p><span style=" color:#000000;">output port 6 has time 0.2</span></p>
<p><span style=" color:#000000;">output port 7 has time 0.2</span></p>
<p style="color: rgb(0, 0, 0);"><br><!--EndFragment--></p></div><div>Obviously this is not very consitent! The time step that is displayed in the timer tool bar is 0.1 at the same moment (so obviously not even the last move from 0.05 to 0.1 triggered a call to RequestData), and what I was trying to watch was the output from port 4.</div><div><br></div><div>Basically I see that ParaView is that either I am missing still some more checking to find out which of the output port times are really the valid ones, or ParaView is trying to do some optimizations that are not fitting with my "simplistic approach" of just getting the time from output port 0 - or both.</div><div><br></div><div>Any helpful hints on that one?</div><div><br></div><div>Thanks for all and regards,</div><div>Cornelis</div></body></html>