View Issue Details

IDProjectCategoryView StatusLast Update
0033114Open CASCADEOCCT:Visualizationpublic2023-03-19 20:23
Reporterkgv Assigned Tomzernova  
PrioritynormalSeverityminor 
Status closedResolutionfixed 
PlatformWindowsOSVC++ 2015 
Product Version7.6.0 
Target Version7.7.0Fixed in Version7.7.0 
Summary0033114: Visualization - AIS_Animation returns 0 elapsed time after finishing playback
DescriptionAfter complication of playback AIS_Animation implicitly stops timer and resets it's value to 0.0.
This behavior is misleading as reported elapsed time becomes inconsistent to what user actually sees - it would be better setting timer exactly to animation's duration.
Steps To Reproduce
pload MODELING VISUALIZATION
vinit View1
vaxo
psphere s 50
box b1 -50 -50 0 100 100 100
vdisplay -dispMode 1 b1 s
vviewparams -scale 2.499 -proj 0.546611 -0.600024 -0.584114 -up -0.411832 0.414728 -0.811415 -at -5.3425 -2.983 49.216
vanimation anim -clear
vanimation anim/obj1 -objectTrsf b1 -loc1 0 0 0 -loc2 -100 0 -100 -start 0 -duration 2
vanimation anim/obj2 -objectTrsf s  -loc1 0 0 0 -loc2  100 0  100 -start 1 -duration 2
vanimation anim -play
vanimation anim -elapsedTime
TagsNo tags attached.
Test case numberNot required

Attached Files

  • image.png (62,280 bytes)

Activities

kgv

2022-08-31 11:05

developer   ~0110466

Random image deviations on v3d anim videorecorder (videorecorder_10.png) might be related to this issue.
image.png (62,280 bytes)

git

2022-09-02 18:09

administrator   ~0110581

Branch CR33114 has been created by mzernova.

SHA-1: 51cb1f35af8475a327b201b603405ceae18f0009


Detailed log of new commits:

Author: mzernova
Date: Fri Sep 2 18:08:46 2022 +0300

    0033114: Visualization - AIS_Animation returns 0 elapsed time after finishing playback

git

2022-09-05 11:30

administrator   ~0110624

Branch CR33114 has been updated forcibly by mzernova.

SHA-1: 595b92ac24084cab5982fb1b7132c84db51b5c64

git

2022-09-05 18:22

administrator   ~0110679

Branch CR33114 has been updated forcibly by mzernova.

SHA-1: 912d681cf6233fc4d57a113f09e262bcc6ea5da5

mzernova

2022-09-06 11:04

developer   ~0110703

http://jenkins-test-occt.nnov.opencascade.com/view/CR33114-master-mzernova/

mzernova

2022-09-06 11:06

developer   ~0110705

The patch CR33114 is ready to review

kgv

2022-09-06 11:17

developer   ~0110708

@@ -220,6 +220,7 @@ void AIS_Animation::Start (const Standard_Boolean theToUpdate)
 
   if (!myTimer.IsNull())
   {
+    myTimer->Seek (0.0);
     myTimer->Start();

It is better to keep old behavior of AIS_Animation::Start() to avoid disruption of existing applications relying on it.

+    theAnimationNew->SetTimer (theAnimation->Timer());
     theAnimation = theAnimationNew;

Please bring some comment here (in the bugtracker or commit message) to clarify a reason for this change.

+  Standard_Boolean isShowElapsedTime = Standard_False;

`toPrintElapsedTime`

+    if (isShowElapsedTime && !anAnimation->Timer().IsNull())
+    {
+      theDI << "Elapsed Time, sec: " << anAnimation->ElapsedTime() << "\n";
+    }

If timer is NULL, then elapsed time is `0`.

@@ -252,6 +253,7 @@ void AIS_Animation::Stop()
   if (!myTimer.IsNull())
   {
     myTimer->Stop();
+    myTimer->Seek (Duration());

This looks like a wrong place to forcefully set Duration() here - user may call Stop() in the middle of animation as well.
But in this place you may put something like clamping - e.g. if Duration() > 0.0 then Seek(Min (Duration(), Elapsed)).

git

2022-09-19 13:46

administrator   ~0111144

Branch CR33114 has been updated forcibly by mzernova.

SHA-1: b2f688dd21756774f646b0fb693548156bd5a226

git

2022-09-19 13:46

administrator   ~0111145

Branch CR33114_1 has been created by mzernova.

SHA-1: 9207365538bd2bf8ba136f3badeae4cf716272ae


Detailed log of new commits:

Author: mzernova
Date: Fri Sep 2 18:08:46 2022 +0300

    0033114: Visualization - AIS_Animation returns 0 elapsed time after finishing playback
    
    Added -elapsedTime option to DRAW vanim command

kgv

2022-09-19 14:00

developer   ~0111146

+      theDI << "Elapsed Time, sec: " << anAnimation->ElapsedTime() << "\n";

theDI << "Elapsed Time: " << anAnimation->ElapsedTime() << " s\n";

-  ViewerTest::CurrentEventManager()->AbortViewAnimation();
-  ViewerTest::CurrentEventManager()->SetObjectsAnimation (Handle(AIS_Animation)());
   if (!toPlay && aRecFile.IsEmpty())
   {
+    if (toPrintElapsedTime)
+    {
+      theDI << "Elapsed Time, sec: " << anAnimation->ElapsedTime() << "\n";
+    }
     return 0;
   }
 
+  ViewerTest::CurrentEventManager()->AbortViewAnimation();
+  ViewerTest::CurrentEventManager()->SetObjectsAnimation (Handle(AIS_Animation)());

Please restore logic with stopping playback and move `if (toPrintElapsedTime)` block outside of `toPlay` checks.

+Standard_Real AIS_Animation::ElapsedTime() const

I'm not sure it worth putting this logic into this method, as it would lead to different values with the timer.
Is there a reason why we cannot Seek() timer instead?

git

2022-09-20 12:03

administrator   ~0111155

Branch CR33114 has been updated forcibly by mzernova.

SHA-1: c64ac693b9a9fc1809da247b0e6cd02f2a275021

git

2022-09-20 12:04

administrator   ~0111156

Branch CR33114_1 has been updated forcibly by mzernova.

SHA-1: b9f787f180253cafe326c4cecef69d296b161924

smoskvin

2022-09-25 13:31

administrator   ~0111243

Combination -
OCCT branch : IR-2022-09-23
master SHA - changes and them, and you can discard any commits you make in this
b3284f3ba911e4d18477ff1788ace3d7201a8827
changes and them, and you can discard any commits you make in this
e0ceb716c70188b98130b1550914140d0502a6f9
Products branch : IR-2022-09-23 SHA - f1708bcb12b969ae6e6578ab6d46bb65e135a733
was compiled on Linux, MacOS and Windows platforms and tested in optimize mode.

Number of compiler warnings:
No new/fixed warnings

Regressions/Differences/Improvements:
No regressions/differences

CPU differences:
Debian80-64:
OCCT
Total CPU difference: 18666.730000000585 / 18776.180000000597 [-0.58%]
Products
Total CPU difference: 11867.75000000012 / 11959.870000000119 [-0.77%]
Windows-64-VC14:
OCCT
Total CPU difference: 20851.8125 / 20857.796875 [-0.03%]
Products
Total CPU difference: 14092.984375 / 14084.640625 [+0.06%]


Image differences :
No differences that require special attention

Memory differences :
No differences that require special attention

git

2022-09-25 13:40

administrator   ~0111253

Branch CR33114 has been deleted by mnt.

SHA-1: c64ac693b9a9fc1809da247b0e6cd02f2a275021

git

2022-09-25 13:40

administrator   ~0111254

Branch CR33114_1 has been deleted by mnt.

SHA-1: b9f787f180253cafe326c4cecef69d296b161924

Related Changesets

occt: master b9f787f1

2022-09-02 18:08:46

mzernova

Details Diff
0033114: Visualization - AIS_Animation returns 0 elapsed time after finishing playback

Added -elapsedTime option to DRAW vanim command
Affected Issues
0033114
mod - src/AIS/AIS_Animation.cxx Diff File
mod - src/ViewerTest/ViewerTest_ViewerCommands.cxx Diff File

Issue History

Date Modified Username Field Change
2022-08-27 16:43 kgv New Issue
2022-08-27 16:43 kgv Assigned To => kgv
2022-08-27 16:43 kgv Assigned To kgv => mzernova
2022-08-27 16:43 kgv Status new => assigned
2022-08-31 11:05 kgv Note Added: 0110466
2022-08-31 11:05 kgv File Added: image.png
2022-09-02 18:09 git Note Added: 0110581
2022-09-05 11:30 git Note Added: 0110624
2022-09-05 18:22 git Note Added: 0110679
2022-09-06 11:04 mzernova Note Added: 0110703
2022-09-06 11:06 mzernova Assigned To mzernova => kgv
2022-09-06 11:06 mzernova Status assigned => resolved
2022-09-06 11:06 mzernova Steps to Reproduce Updated
2022-09-06 11:06 mzernova Note Added: 0110705
2022-09-06 11:17 kgv Note Added: 0110708
2022-09-06 11:17 kgv Assigned To kgv => mzernova
2022-09-06 11:17 kgv Status resolved => assigned
2022-09-06 11:18 kgv Steps to Reproduce Updated
2022-09-19 13:46 git Note Added: 0111144
2022-09-19 13:46 git Note Added: 0111145
2022-09-19 13:49 mzernova Assigned To mzernova => kgv
2022-09-19 13:49 mzernova Status assigned => resolved
2022-09-19 14:00 kgv Note Added: 0111146
2022-09-19 14:00 kgv Assigned To kgv => mzernova
2022-09-19 14:00 kgv Status resolved => assigned
2022-09-20 12:03 git Note Added: 0111155
2022-09-20 12:04 git Note Added: 0111156
2022-09-20 12:05 mzernova Assigned To mzernova => kgv
2022-09-20 12:05 mzernova Status assigned => resolved
2022-09-20 12:23 kgv Assigned To kgv => bugmaster
2022-09-20 12:23 kgv Status resolved => reviewed
2022-09-25 13:31 smoskvin Status reviewed => tested
2022-09-25 13:31 smoskvin Note Added: 0111243
2022-09-25 13:37 smoskvin Test case number => Not required
2022-09-25 13:38 mzernova Changeset attached => occt master b9f787f1
2022-09-25 13:38 mzernova Assigned To bugmaster => mzernova
2022-09-25 13:38 mzernova Status tested => verified
2022-09-25 13:38 mzernova Resolution open => fixed
2022-09-25 13:40 git Note Added: 0111253
2022-09-25 13:40 git Note Added: 0111254
2023-03-19 20:23 vglukhik Status verified => closed
2023-03-19 20:23 vglukhik Fixed in Version => 7.7.0