GNOME Bugzilla – Bug 609135
Draw a ripple when the hot corner is hit
Last modified: 2010-02-08 19:08:45 UTC
The appearance here could definitely be tweaked more; this may be a little too subtle to really give a good hint. (To make it less subtle, redraw corner-ripple.png to have a more opaque/less-blurred edge line and/or a brighter color.) But I think it's close enough to right to allow evaluating the idea - to see if it makes sense or is just visual noise without a purpose.
Created attachment 153121 [details] [review] Draw a ripple when the hot corner is hit Animate an expanding ripple from the hot corner using multiple scaling copies of a PNG of a single ripple. The idea here is to give the user a clue as to what happened. Based on initial version implemented live at MIT IAP GNOME Shell intro session; thanks to all the attendees for coming!
Actually on my screen it is certainly not too subtle. It also makes it really clear that we need to restyle the activities item/button when in the overview. The blue box doesn't look very nice. Anyway... :) I think the effect looks pretty good. But maybe it would be better if it acted a bit more physically? Like say a water drop without all the weird surface tension effects. Or a critically damped impulse. Right now, it seems like the rings are continuing to come from the source of the impulse at more or less the same intensity even after it is gone. Thought probably I'm being too nit picky.
Just two quick observations: (1) the modifications to shell-drawing.h look left-over code (2) corner-ripple.png has to be added to the Makefile
(In reply to comment #2) > Actually on my screen it is certainly not too subtle. It also makes it really > clear that we need to restyle the activities item/button when in the overview. > The blue box doesn't look very nice. Anyway... :) Probably the subtleness thing is the same thing going on when I can't see much of the text of the overview on my display. > I think the effect looks pretty good. But maybe it would be better if it acted > a bit more physically? Like say a water drop without all the weird surface > tension effects. Or a critically damped impulse. Right now, it seems like the > rings are continuing to come from the source of the impulse at more or less the > same intensity even after it is gone. Thought probably I'm being too nit > picky. I didn't really want to pull out the physics. (Let's see, a 1-dimensional solution to the shallow water wave equation assuming circular symmetry and an initial condition with a sharply peaked Guassian in the middle ...) Also note that along with the physics of the waves there's an implied lighting model involved here - what is the source of these rings that we are seeing - are they reflections? Things that are encoded in the completely heuristic parameters that I think are somewhat physical. - The waves have a constant velocity independent of amplitude - The waves spread out slightly over time (due to dispersive effect) As you've noted there's a bit of a weird thing where the 3rd ripple can be seen to sail out with an empty space following it as if someone agitated the water for a bit and then stopped agitating it. This could be fixed to make it look more like expanding rings from a brief stimulus by decreasing the intensity of the second and third ripple further, or adding a fourth ripple. Both could easily be fooled around in the JS code by: // delay time scale opacity => scale opacity this._addRipple(0.0, 0.83, 0.25, 1.0, 1.5, 0.0); this._addRipple(0.05, 1.0, 0.0, 0.7, 1.25, 0.0); this._addRipple(0.35, 1.0, 0.0, 0.3, 1, 0.0); Adjust the 4th column to make ripple lighter or darker. Add another line for a 4th ripple. I decided to stop fooling around with it after a while.
(In reply to comment #4) > Both could easily be fooled around in the JS code by: > > // delay time scale opacity => scale opacity > this._addRipple(0.0, 0.83, 0.25, 1.0, 1.5, 0.0); > this._addRipple(0.05, 1.0, 0.0, 0.7, 1.25, 0.0); > this._addRipple(0.35, 1.0, 0.0, 0.3, 1, 0.0); > > Adjust the 4th column to make ripple lighter or darker. Add another line for a > 4th ripple. I decided to stop fooling around with it after a while. Quick addendum - the main culprit here seems seems to be the Math.sqrt() call I added in addRipple to keep the rings visible as they expand instead of fading out quickly - if you remove the two calls there you get a pretty realistic looking damped ripple, but it's barely visible on my screen. Probably with enough fooling around you could get a ripple that is both brief and visible (you'd probably want to try doing that both with and without the sqrt). I'm not going to do that at the moment. Committing as is, with the fixes pointed out by Florian. We'll see what people think.
Attachment 153121 [details] pushed as caaa543 - Draw a ripple when the hot corner is hit