New issue
Advanced search Search tips

Issue 647554 link

Starred by 3 users

Issue metadata

Status: Assigned
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 2
Type: Bug



Sign in to add a comment

3D decomposition of 2D matrix is inverted

Reported by manishsm...@gmail.com, Sep 16 2016

Issue description

UserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:50.0) Gecko/20100101 Firefox/50.0

Example URL:
https://bug1303037.bmoattachments.org/attachment.cgi?id=8791612

Steps to reproduce the problem:
To reproduce, just create a transition from a 3d transform to the 2d matrix `matrix(1, 1, 1, 0, 0, 0)`. In the linked testcase, you can get this to happen by hovering over the yellow area.

What is the expected behavior?
The transition should smoothly go from the initial to the final state. The final state is marked by a transparent blue rhombus in the testcase.

What went wrong?
Instead, it smoothly transitions to a different state (which is basically the final state but flipped across an axis), and after the transition is over, jumps to the "real" final state.

Does it occur on multiple sites: Yes

Is it a problem with a plugin? No 

Did this work before? N/A 

Does this work in other browsers? No Firefox 50

Chrome version: <Copy from: 'about:version'>  Channel: stable
OS Version: OS X 10.11
Flash Version: Shockwave Flash 22.0 r0

Gecko bug at https://bugzilla.mozilla.org/show_bug.cgi?id=1303037

Not sure if this is a spec issue or an implementation one.

Looks like something is wrong with the 3d matrix decomposition algorithm.
 
Attached same test case here.
file_1303037.html
1.0 KB View Download

Comment 2 by bokan@chromium.org, Sep 16 2016

Components: -Blink Blink>Animation
Labels: -OS-Mac Needs-Bisect Update-Monthly OS-All
Status: Available (was: Unconfirmed)
Able to repro on Linux Chrome 53.
Labels: -Update-Monthly
Status: Untriaged (was: Available)

Comment 5 by ajha@chromium.org, Sep 19 2016

Labels: -Needs-Bisect M-55
Able to reproduce the issue on the latest canary(55.0.2865.0) on Windows 10, Mac OS 10.11.6 and Linux Ubuntu 14.04.

This is non regression issue seen from older chrome version: 38.0.2063.0. Chrome version: 30.0.1549.0 doesn't show any animation with the above Test case. Hence confirming this as Non-regression issue and removing the Needs-Bisect label. 
Components: -Blink>Animation Internals>Compositing>Animation
Status: Available (was: Untriaged)
Looks like this is only for composited transform animations.
https://jsfiddle.net/ftv4vL1k/
Cc: suzyh@chromium.org alancutter@chromium.org

Comment 8 by suzyh@chromium.org, Sep 19 2016

Potentially related:  issue 476404 ?

Comment 9 by suzyh@chromium.org, Jun 13 2017

Cc: -suzyh@chromium.org
Labels: Hotlist-Polish
Owner: kevers@chromium.org
Status: Assigned (was: Available)
Assigning to kevers@ as this may be fixed by his recent work to fix up a bunch of matrix behavior across blink + cc. Or it may be another new bug to play with! ;)

kevers - feel free to drop if you're overloaded and won't look at this. Just thought it was in your ballpark.
This appears to be a bug in cc as demonstrated by the fiddle in comment 6. It has not been addressed by recent fixes to transform interpolation. More reason to consolidate the cc and blink implementations.







#12 SGTM, this was done with blink::TimingFunction to remove implementation discrepancies between blink and cc animations.
The transform does not need to be between 2D and 3D.

A transformation from matrix(1, 0, 0, 1, 0, 0) to matrix(1, 1, 1, 0, 0, 0) is sufficient to reproduce.

The transform matrix(1, 1, 1, 0, 0, 0) has some interesting characteristics.  It has a negative determinant indicating a scale inversion despite having no negative values in the matrix.

Sign in to add a comment