View Issue Details

IDProjectCategoryView StatusLast Update
0032570CommunityOCCT:Visualizationpublic2023-02-12 18:17
Reporterkgv Assigned Tomzernova  
PrioritynormalSeverityfeature 
Status verifiedResolutionfixed 
Product Version7.1.0 
Target Version7.8.0 
Summary0032570: Visualization, AIS_AnimationObject - define rotation around axis
DescriptionCurrently AIS_AnimationObject is defined as linear interpolation of gp_Trsf decomposition (scale, translation, rotation).

Due to generalized gp_Trsf definition as 3x3 matrix and translation vector, transformation defined by axis and rotation angle ends up as additional translation and rotation around object center.
In this case, original intention (rotating around specific axis) is lost, although final transformation is the same, which doesn't make any problem when gp_Trsf is used as designed.
However, when using rotation transformation for defining animation via AIS_AnimationObject, such disparity leads to unexpected transition.

Therefore, it is proposed extended AIS_AnimationObject with a syntax defining rotation around specific point explicitly (and maybe some other specific transitions) which would internally implement expected interpolation.

The interpolation itself might be defined to handle specifically rotation or other scenarios, or it might be possible defining an anchor point / local coordinate system of the object to apply general gp_Trsf transformation.

https://dev.opencascade.org/content/aisanimation-how-rotation-arround-axis-parallel-y-axis
Steps To Reproduce
pload MODELING VISUALIZATION
box b1 2 100 100 -preview
box b2 2 100 100 -preview

vinit View1
vpoint p0 2 100 0
vpoint p1 2 100 100
vsegment s p0 p1
vdisplay b1 -dispMode 0

vdisplay b2 -dispMode 1
vlocation b2

vlocation b2 -reset -rotate 2 100 0 0 0 1 90
vlocation b2
vfit

vlocation b2 -reset
#vanim a -object b2 -loc1 0 0 0 -loc2 102 98 0
vanim a -object b2 -loc1 0 0 0 -rot1 0 0 0 1 -loc2 102 98 0 -rot2 0 0 0.707107 0.707107 -duration 2
vanim a -play 0 10
TagsNo tags attached.
Test case numberv3d bugs bug32570

Relationships

child of 0027764 closedapn Open CASCADE Visualization - add functionality for animation of 3D camera and interactive objects 

Activities

git

2021-12-28 03:01

administrator   ~0106222

Branch CR32570 has been created by CheskoArt.

SHA-1: 02a3d45883c7ef14826e3727ec4ced0fab7631fa


Detailed log of new commits:

Author: achesnok
Date: Tue Dec 28 02:57:13 2021 +0300

    0032570: Visualization, AIS_AnimationObject - define rotation around axis

CheskoArt

2021-12-28 03:10

reporter   ~0106223

Please review the patch.

szy

2022-10-04 16:53

manager   ~0111389

Review request.

vpozdyayev

2022-10-10 11:46

administrator   ~0111450

Please fix typos and inconsistent formatting: "{0.0 , 0.0}", "roation", "roatation".

Rather than the "proposed extended AIS_AnimationObject", the current implementation effectively provides a separate object animation type, which deserves a separate class. I.e., instead of manually dispatching on ''myToUseLerp'', we should dispatch via vtables.

That said, implementing a custom anchor point seems to be a more natural solution.

git

2022-11-18 17:29

administrator   ~0112175

Branch CR32570 has been updated forcibly by mzernova.

SHA-1: 7351039b7d7afa2a7e514daf643c986262b18ccc

mzernova

2022-11-18 17:29

developer   ~0112176

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

git

2022-11-18 20:01

administrator   ~0112177

Branch CR32570 has been updated forcibly by mzernova.

SHA-1: 621482111d3240932437c9098c2852f215d8d773

git

2022-11-18 20:02

administrator   ~0112178

Branch CR32570_1 has been created by mzernova.

SHA-1: 97a4f5f0fe886d8687b3a960a9d02175ac3ef5c2


Detailed log of new commits:

Author: achesnok
Date: Tue Dec 28 02:57:13 2021 +0300

    0032570: Visualization, AIS_AnimationObject - define rotation around axis

git

2022-11-18 20:12

administrator   ~0112179

Branch CR32570_1 has been updated forcibly by mzernova.

SHA-1: fcf10261922d6fca957b4fff10b782f2c60c5cae

git

2022-11-18 20:12

administrator   ~0112180

Branch CR32570 has been updated forcibly by mzernova.

SHA-1: 24c4e0e8b003f8321c07c8a36893bd9e9018d1fb

mzernova

2022-11-19 11:38

developer   ~0112185

OCCT Branch: CR32570_1

mzernova

2022-11-19 11:39

developer   ~0112186

Ready for review

vpozdyayev

2022-11-25 12:00

administrator   ~0112301

Do we expect `AIS_BaseAnimationObject::invalidateViewer` to be useful to derived classes, or would it be better off as a private function?

git

2023-01-30 12:36

administrator   ~0113017

Branch CR32570_1 has been updated forcibly by mzernova.

SHA-1: 6ca533a4bd24afb87199e3b1046d08d78e99418b

mzernova

2023-01-31 03:06

developer   ~0113023

Dear rodrlyra,
please review OCCT - CR32570_1

Tests:
http://jenkins-test-10.nnov.opencascade.com/view/CR32570-master-mzernova/view/COMPARE/
Some tests are failed for technical reasons.

dpasukhi

2023-01-31 13:18

administrator   ~0113024

Dear @mzernova, there are few only style remarks. Please check ( it is only recommendations )

Please update year in the new created files
// Copyright (c) 2022 OPEN CASCADE SAS

src / AIS / AIS_AnimationAxisRotation.hxx
It is not correct doxygen style, please use
  26   //! Constructor with initialization.
  27   //! @param theAnimationName animation identifier

->
  26   //! Constructor with initialization.
  27   //! @param[in] theAnimationName animation identifier
@param[in] or @param[out]

The best practices is use protected method and privet fields, so. I very recommented to update your new classes accrording this point
  40 protected:
  41 
  42   //! Update the progress.
  43   Standard_EXPORT virtual void update (const AIS_AnimationProgress& theProgress) Standard_OVERRIDE;
  44 
  45 protected:
  46 
  47   gp_Ax1         myRotAxis;     //!< rotation axis
  48   Standard_Real  myAngleStart;  //!< start angle for rotation
  49   Standard_Real  myAngleEnd;    //!< end angle for rotation

Artefact, do not needed
  53 DEFINE_STANDARD_HANDLE(AIS_AnimationAxisRotation, AIS_BaseAnimationObject)

Update an author please.
author	achesnok <achesnok@opencascade.com>	
Mon, 27 Dec 2021 23:57:13 +0000 (23:57 +0000)

git

2023-01-31 15:20

administrator   ~0113029

Branch CR32570_1 has been updated forcibly by mzernova.

SHA-1: 840d976d45afc1543970c9d5e5f0a1cca14d713b

mzernova

2023-01-31 15:22

developer   ~0113030

Dear @dpasukhi, @rodrlyra
The branch has been updated in accordance with the remarks.

git

2023-01-31 15:31

administrator   ~0113031

Branch CR32570_1 has been updated forcibly by mzernova.

SHA-1: 53a424aedbef8b5e8b2c5832edc8ebe0f8b78d20

git

2023-01-31 15:49

administrator   ~0113032

Branch CR32570_1 has been updated forcibly by mzernova.

SHA-1: 383c246244b468dc05d2afdcbeadb4bf6d125cd1

rodrlyra

2023-02-02 01:28

developer   ~0113041

No remarks.

Dear bugmaster,
please integrate:
OCCT - CR32570_1

vglukhik

2023-02-05 16:31

administrator   ~0113071

IR-2023-02-03

Number of compiler warnings:
No new/fixed warnings

Regressions/Differences/Improvements:
No regressions/differences

CPU differences:
Ubuntu2004-64:
OCCT
Total CPU difference: 18415.850000000257 / 19028.28000000029 [-3.22%]
Products
Total CPU difference: 12109.420000000147 / 11752.84000000013 [+3.03%]
Windows-64-VC142:
OCCT
Total CPU difference: 20947.078125 / 20944.328125 [+0.01%]
Products
Total CPU difference: 13490.453125 / 13069.734375 [+3.22%]


Image differences :
No differences that require special attention

Memory differences :
No differences that require special attention

git

2023-02-12 18:17

administrator   ~0113125

Branch CR32570 has been deleted by mnt.

SHA-1: 24c4e0e8b003f8321c07c8a36893bd9e9018d1fb

git

2023-02-12 18:17

administrator   ~0113126

Branch CR32570_1 has been deleted by mnt.

SHA-1: 383c246244b468dc05d2afdcbeadb4bf6d125cd1

Related Changesets

occt: master 53eae1a9

2021-12-28 02:57:13

mzernova


Committer: vglukhik Details Diff
0032570: Visualization, AIS_AnimationObject - define rotation around axis

When using AIS_AnimationObject, linear interpolation is performed from one gp_Trsf transformation to another.
But when an object rotates around a specific axis, the object moves not along a linear trajectory,
but along a circle. Therefore, a separate class AIS_AnimationAxisRotation was created that
allows to animate rotation around a specific axis.

Test case tests/v3d/bugs/bug32570 was added.
Affected Issues
0032570
add - src/AIS/AIS_AnimationAxisRotation.cxx Diff File
add - src/AIS/AIS_AnimationAxisRotation.hxx Diff File
mod - src/AIS/AIS_AnimationObject.cxx Diff File
mod - src/AIS/AIS_AnimationObject.hxx Diff File
add - src/AIS/AIS_BaseAnimationObject.cxx Diff File
add - src/AIS/AIS_BaseAnimationObject.hxx Diff File
mod - src/AIS/FILES Diff File
mod - src/ViewerTest/ViewerTest_ViewerCommands.cxx Diff File
add - tests/v3d/bugs/bug32570 Diff File

Issue History

Date Modified Username Field Change
2021-09-15 10:21 kgv New Issue
2021-09-15 10:21 kgv Assigned To => kgv
2021-09-15 10:30 kgv Description Updated
2021-09-15 10:30 kgv Steps to Reproduce Updated
2021-09-15 10:33 kgv Relationship added child of 0027764
2021-09-15 10:33 kgv Product Version 7.5.0 => 7.1.0
2021-10-22 15:54 age Assigned To kgv => CheskoArt
2021-12-28 03:01 git Note Added: 0106222
2021-12-28 03:04 CheskoArt Assigned To CheskoArt => kgv
2021-12-28 03:10 CheskoArt Note Added: 0106223
2022-01-14 13:15 bugmaster Status new => resolved
2022-10-04 16:53 szy Assigned To kgv => vpozdyayev
2022-10-04 16:53 szy Note Added: 0111389
2022-10-10 11:46 vpozdyayev Note Added: 0111450
2022-10-10 15:56 vpozdyayev Assigned To vpozdyayev => mzernova
2022-10-10 15:57 vpozdyayev Status resolved => assigned
2022-10-24 10:43 szy Target Version 7.7.0 => 7.8.0
2022-11-18 17:29 git Note Added: 0112175
2022-11-18 17:29 mzernova Note Added: 0112176
2022-11-18 20:01 git Note Added: 0112177
2022-11-18 20:02 git Note Added: 0112178
2022-11-18 20:12 git Note Added: 0112179
2022-11-18 20:12 git Note Added: 0112180
2022-11-19 11:38 mzernova Note Added: 0112185
2022-11-19 11:39 mzernova Assigned To mzernova => vpozdyayev
2022-11-19 11:39 mzernova Status assigned => resolved
2022-11-19 11:39 mzernova Note Added: 0112186
2022-11-25 12:00 vpozdyayev Note Added: 0112301
2022-11-25 12:00 vpozdyayev Status resolved => assigned
2022-12-29 10:56 vpozdyayev Assigned To vpozdyayev => mzernova
2023-01-30 12:36 git Note Added: 0113017
2023-01-31 03:06 mzernova Assigned To mzernova => rodrlyra
2023-01-31 03:06 mzernova Status assigned => resolved
2023-01-31 03:06 mzernova Note Added: 0113023
2023-01-31 13:18 dpasukhi Note Added: 0113024
2023-01-31 15:20 git Note Added: 0113029
2023-01-31 15:22 mzernova Note Added: 0113030
2023-01-31 15:31 git Note Added: 0113031
2023-01-31 15:49 git Note Added: 0113032
2023-02-02 01:13 rodrlyra Steps to Reproduce Updated
2023-02-02 01:13 rodrlyra Test case number => v3d bugs bug32570
2023-02-02 01:28 rodrlyra Assigned To rodrlyra => bugmaster
2023-02-02 01:28 rodrlyra Status resolved => reviewed
2023-02-02 01:28 rodrlyra Note Added: 0113041
2023-02-05 16:31 vglukhik Note Added: 0113071
2023-02-05 16:32 vglukhik Changeset attached => occt master 53eae1a9
2023-02-05 16:32 mzernova Assigned To bugmaster => mzernova
2023-02-05 16:32 mzernova Status reviewed => verified
2023-02-05 16:32 mzernova Resolution open => fixed
2023-02-12 18:17 git Note Added: 0113125
2023-02-12 18:17 git Note Added: 0113126