1http://www.cc.gatech.edu/~jarekJarek Rossignac ã PROJECT 3: ICE DANCE CS4497 Spring 2022 Your First LAST name here Your photo here Put here a nice picture of your result 2http://www.cc.gatech.edu/~jarekJarek Rossignac ã Video of singing blobs https://youtu.be/ZfLYuXi6sDI?t=6 https://artsandculture.google.com/experiment/blob- opera/AAHWrq360NcGbw?hl=en&cp=e30 3http://www.cc.gatech.edu/~jarekJarek Rossignac ã Videos on duo improvisation for P2 https://youtube.com/watch?v=QjInbqxqrbQ&feature=share https://youtube.com/watch?v=IPUnG52lY3Q&feature=share 4http://www.cc.gatech.edu/~jarekJarek Rossignac ã Project 3: Problem statement Interactive tool for designing and playing an ice-dance performance. • 2D (top view only) Animate blobs that show position & orientation & connectivity of body, arms, feet 5http://www.cc.gatech.edu/~jarekJarek Rossignac ã Parts A. Annotated (timing, figures) Piecewise-Circular Motion B. Smooth motion of local frame, acceleration C. Skates (feet), “inverse dynamics” D. Arms (kinematics, sync with music/motion) Extra credit towards A++ E. Two synchronized skaters Variants (make proposal ahead of time) F. Tango dancers G. Choreography for motion of several dancers 1 01 6http://www.cc.gatech.edu/~jarekJarek Rossignac ã Olpympics 2022 and more Nathan Chen: https://youtu.be/MXrOQTwX5CA?t=33 , https://youtu.be/-h0_wqfV-i8?t=31 Gabriella Papadakis / Guillaume Cizeron: https://youtu.be/gdnCP7fxR0k?t=24 , https://youtu.be/nbelrZHSCjU Molly Cesanek & Yehor Yehorov: https://youtu.be/T0dHWmXdAbg Vanessa James and Morgan Cipres: https://youtu.be/WOCuxsRnVTQ 7http://www.cc.gatech.edu/~jarekJarek Rossignac ã Deliverables For each part: • Implementation 1. Representation & initialization 2. Display/animation 3. GUI to specify & modify 4. Archive (save, load, print) • Validation 1. Images illustrating various cases 2. Videos of GUI design/editing 3. Cool video of result • Write-up 1. Concise, but clear & complete problem statement and its ambiguities 2. Outline of your solution (your choices, representation, operations, smoothing, interpolation…) 3. Non-trivial challenges (what was hard, how you solved it, figures, pseudocode) 4. Useful overview of relevant prior art (what exactly it teaches) and references 8http://www.cc.gatech.edu/~jarekJarek Rossignac ã A: Suggested arrangement of kissing circles How to draw this arrangement To fit with a margin on the canvas (full screen?) 9http://www.cc.gatech.edu/~jarekJarek Rossignac ã A – Nominal Piecewise-Circular Motion 1. Arrangement of 8 kissing circles 2. Graph of kissing points and arcs • Representation and data structure 3. Traversal operators 4. Design • Easy to use GUI to specify path (where, when) • Synced w music, changing velocities 5. Animation • Move the orange blob 6. Visualization • Breadcrumbs (one per x frames) 7. Archival • Save path for later, load… 1 01 10http://www.cc.gatech.edu/~jarekJarek Rossignac ã A: Graph of kissing points and arcs How many centers? How many kissing points? How many arcs? How to identify each arc? How to draw a chosen arc? Continuity of smooth motion? Valid options for next arc? C K K K K C K 11http://www.cc.gatech.edu/~jarekJarek Rossignac ã 12http://www.cc.gatech.edu/~jarekJarek Rossignac ã Inventing a representation of this graph? You may design your own representation or some variant of this one In your report: Define the problem clearly and completely We want to represent a network of circular arcs, where each vertex connects 4 arcs, two on one circle and two on the other. We need to support traversal cw and ccw… Explain what you store for each arc (center, start vertex, ID of…) and how Define access and traversal operators Below is what I would do 13http://www.cc.gatech.edu/~jarekJarek Rossignac ã A: Roads and oriented sidewalks Each arc is a road Each road has 2 sidewalks Sidewalk s is oriented with road on its left s = tuple: {arc, start vertex, face (side)} Sidewalk operators: s.C = center of circle (PNT P[s.C]) s.K = kissing (tangency) point (P[s.X]) s.o = opposite sidewalk s.n = next around face s.p = previous around face s.C s.Ks.o s.n s.p s 14http://www.cc.gatech.edu/~jarekJarek Rossignac ã A: Representation of network PNT [] P = new …; // Holds circle center P[s.C] and kissing points P[s.K] int [] C = new…; // C[s] holds s.C, center point is P[C[s]] int [] K = new…; // K[s] holds s.K, kissing point is P[K[s]] int [] n = new…; // n[s] holds s.n int [] p = new…; // p[s] holds s.p int [] o = new…; // o[s] holds s.o, and s.n.o is o[n[s]] How to represent a particular motion …? • Concisely? How to edit your motion …? • Challenging. Why? 15http://www.cc.gatech.edu/~jarekJarek Rossignac ã A: Representation of a particular motion Boolean [] c ; // choices at junctions (same / other circle) int [] v ; // speed on sidewalk v[]=1 slow, … v[]=4 very fast float [] t ; // absolute time of each figure during whole routine String [] f ; // encoding of name of figure + parameter (e.g., “S3”) 16http://www.cc.gatech.edu/~jarekJarek Rossignac ã Images: Motions 17http://www.cc.gatech.edu/~jarekJarek Rossignac ã Images: Motions 18http://www.cc.gatech.edu/~jarekJarek Rossignac ã A: Figures (at least a dozen, some more elaborate) Some figures should involve: • Stopping • Executing the figure in place (e.g., spinning in place…) • Resuming the forward motion Use one or two letter combos for figures (stop or not, what to do) and additional parameters (number of turns during spin) Examples: Rotate by -pi to skate backwards Rotate body by +pi/2 to skate sideways Spin cw in place with arms spread, then tuck the arms in and spin faster Spin ccw 3 while moving with arms spread 19http://www.cc.gatech.edu/~jarekJarek Rossignac ã Images: Figures 20http://www.cc.gatech.edu/~jarekJarek Rossignac ã Images: Figures 21http://www.cc.gatech.edu/~jarekJarek Rossignac ã Videos of skating figures https://youtube.com/shorts/oP152KfQt8E?feature=share 22http://www.cc.gatech.edu/~jarekJarek Rossignac ã A: Design options How to delete/add figures or change their time? • Use mouse and keys on Timeline at the bottom? pr • Just-in-time while listening to the music? How to change the speed of a sidewalk? • User presses ‘1’, ‘2’, ‘3’, ‘4’ keys while placing the mouse on consecutive sidewalks How to select a sidewalk use? How to know which use you selected? Validity: No cusp when switching circles (keep moving in the same direction) • Extra credit: While the tune plays, the user draws a path near the sidewalks and your program guesses the sequence of sidewalks and the velocity v[s] for each. How to edit (change) the path? • Extra credit: While keeping it valid Maybe too hard for you? 23http://www.cc.gatech.edu/~jarekJarek Rossignac ã A: Animation Test: Design a motion that visits ALL sidewalks at least once some cw, some ccw …? Advance to next sidewalk around this circle: …? if(cw) s=s.n; else s=s.p; Cross over to the other circle: …? s=s.o; if(??) cw=!cw; Provide keys to increase/decrease overall animation speed The whole routine should be 1 mn? Move at constant speed v[s] along sidewalk s: …? Show figure f[s] • First pass (debugging): only write figure name next to the skater • Later: implement that animation of the figure 24http://www.cc.gatech.edu/~jarekJarek Rossignac ã A: Visualization At each frame, Advance by same distance d along sidewalk d is computed from v[s] and the radius of the circle Show forward velocity (tangent) vector and ellipse (dancer) During animation Draw previous, current, next sidewalk in blue, red, green How to draw the whole path? Crumbs for constant time-intervals Color coded using a ramp 1 23 0 4 25http://www.cc.gatech.edu/~jarekJarek Rossignac ã A: Archival How to encode path and velocities as ? Concise, regular, human-readable format Implement read/write and human-readable display Start at top of inner circle. For example: One bit of info (Boolean) at each kissing junction • 0 = Stay on this sidewalk • 1 = Switch to other kissing sidewalk Save/load to/from (named) files Export/import from clipboard 26http://www.cc.gatech.edu/~jarekJarek Rossignac ã B - Smooth motion of local frame Starting from the nominal motion, produce a smooth body motion Position & orientation and their 1st and 2nd derivatives are continuous functions of time Gentle ease-in/ease-out stop and start May use the ducklings row provided At each display frame Compute and display (colors) estimates of local velocity and acceleration vectors Compute and display (another color) the local body frame (defined by figure) Show body as ellipse aligned with that frame Show ISC (instantaneous support center) (PNT) where a single skate would be placed 27http://www.cc.gatech.edu/~jarekJarek Rossignac ã Ducklings Mother duck moves as programmed on the arcs First duckling follows the mother • How? Each other duckling follows the previous one The last duckling locates the body of the scater Demo 28http://www.cc.gatech.edu/~jarekJarek Rossignac ã Scarf Use ducklings Add inertia / dynamics 29http://www.cc.gatech.edu/~jarekJarek Rossignac ã Instantaneous velocity, acceleration, jerk Let A, B, C, D be four consecutive samples (position of the dancer’s body) at constant (one 1/30 sec) time intervals We want to define and compute a good estimate of the velocity, acceleration, and jerk for one of them A B C D B’ B’’ 30http://www.cc.gatech.edu/~jarekJarek Rossignac ã Velocity at vertex B: V(B)=(AB+BC)/2 Let A,B,C,D,E… be consecutive vertices in L (A,B), (B,C),… are the edges of L J is the unknown smooth curve passing through the vertices When traveling along J from A to B, it takes 1 sec. Hence the average velocity vector for that segment is AB. Hence the velocity at B is estimated as V(B)=(AB+BC)/2 Average velocity of a 2 sec trip (A,C) Unit tangent vector at B = AC A B C V(B) V(B) L AB 31http://www.cc.gatech.edu/~jarekJarek Rossignac ã Normal at a vertex: N(B)=AC° The normal N(B) at B is the unit vector orthogonal to AC. We pick the one pointing left: N(B)= -AC° A B C N(B) V(B) 32http://www.cc.gatech.edu/~jarekJarek Rossignac ã Acceleration at a vertex: G(B)=BC–AB The acceleration at B is the velocity change G(B)=BC–AB G(B)=BC+BA Half acceleration = (C+A)/2 –B… smoothing strategy? It is useful for computing forces during animation (dynamics) Write a method for the pt class that computes the acceleration at point B vec acceleration (pt A, pt C) {…}; A B C V(B) G(B) 33http://www.cc.gatech.edu/~jarekJarek Rossignac ã Radius of curvature: r(B)=V2/(2ABN(B)) The radius r(B) of curvature (sharpness of turn in the path) at B could be estimated as the radius of the circle through A, B, and C, but this approach yields unexpected results when the angle at b is acute. I prefer to use the parabolic curvature, r(B)=V2/(2h), where V is the magnitude of V(B) and where h is the distance from B to the Line(A,C). h=ABN(B) is the normal component of g(B) It measures the centrifugal force Curvature = 1/r(B) Write a method for the pt class that computes the r(B) at point B vec radiusOfCurvature (pt A, pt C) {…}; 34http://www.cc.gatech.edu/~jarekJarek Rossignac ã Jerk: J(B,C)=AD+3CB It is the change of acceleration between B and C. It measures the change in the force felt by a person traveling along the curve J(B,C) = g(C)–g(B) = (CD–BC)–(BC–AB) = CD+CB+CB+AB = AB+BC+CD + CB+CB+CB = AD+3CB To show the second-degree discontinuities in the curve, draw the normal component of J(B,C) at (B+C)/2 Parabola extrapolator: D = A +3BC AD+3CB==0 “No jerk” A B C J(B,C) G(B) D G(C) –G(B) 35http://www.cc.gatech.edu/~jarekJarek Rossignac ã C – Skates (feet) Display skates and connections to the body If one skate is up, the other one is at ISC If both are down, the ISC is between them (at some ratio r) Ratio r changes smoothly and puts the weight at the ISC when the other foot just touched the ice or will be lifted Show support and lifted skate using shade/tone of colors… 36http://www.cc.gatech.edu/~jarekJarek Rossignac ã Suggestion: Smoothing the motion (body, head, feet) Nominal path = Mother duck First duckling tries to follow mother D1 = D1 + m D1M pick m Each other duckling tries to follow the previous Dj = Dj + m DjDi pick count n of duckling Actual body path = last duckling Dn Estimate velocity V and acceleration G from Dn-2 , Dn-1 , and Dn Place head at H = D + hG Support center at S = D = hG And feel (L and G) around S V H R L feet Support center G 37http://www.cc.gatech.edu/~jarekJarek Rossignac ã D - Arms Attach arms to body and move to help, beautify figures Each arm has 3 parts, 3 angles Use 3 caplets? Arms need not be symmetric Whip effect when starting/stopping a figure (rotation) Close to body for fast spinning (oriented) Or 3 caplets3 ellipses 38http://www.cc.gatech.edu/~jarekJarek Rossignac ã Figures 39http://www.cc.gatech.edu/~jarekJarek Rossignac ã IMAGES 40http://www.cc.gatech.edu/~jarekJarek Rossignac ã Images: Annotated motions 41http://www.cc.gatech.edu/~jarekJarek Rossignac ã LINKS 42http://www.cc.gatech.edu/~jarekJarek Rossignac ã Links: Terminology https://nanoka12.tumblr.com/post/182240211241/figure-skating-stepsturns 43http://www.cc.gatech.edu/~jarekJarek Rossignac ã Links: Layout https://ach-nein.tumblr.com/post/80683848672/ice-dance-technical-elements-pattern- dances 44http://www.cc.gatech.edu/~jarekJarek Rossignac ã Links: Labanotation for dance https://www.britannica.com/art/labanotation 45http://www.cc.gatech.edu/~jarekJarek Rossignac ã Links: Rules https://en.wikipedia.org/wiki/Competition_elements_in_ice_dance 46http://www.cc.gatech.edu/~jarekJarek Rossignac ã Links: Judging https://www.isu.org/figure-skating/rules/id-handbooks-faq/26036-handbook-for-ice- dance-officials-pattern-dances-2021-22/file 47http://www.cc.gatech.edu/~jarekJarek Rossignac ã Links: Figures http://www.skatingaheadofthecurve.com/SpecialFigures.html 48http://www.cc.gatech.edu/~jarekJarek Rossignac ã Links: Abbreviations https://www.ice-dance.com/site/protocols-abbreviations/ 49http://www.cc.gatech.edu/~jarekJarek Rossignac ã Links: Dance language https://www.theparisreview.org/blog/2015/02/04/how-to-write-a-dance/ 50http://www.cc.gatech.edu/~jarekJarek Rossignac ã Extra credit: Sync with music Synch the acquisition and the replay with music start Start playing music and tracking the path and speed with same key press Synch arms/feet with music 51http://www.cc.gatech.edu/~jarekJarek Rossignac ã E - Two synchronized skaters Symmetric around last duckling Spinning around it Angular velocity changes defined by user specified events Smoothing: Each dancer’s path smoothened by a different duckling chain? Or angular momentum of the pair is smoothened Annotate each arc with how the pair evolves • Spin around each other • Skate facing each other • Skate side by side • Separate and rejoin • … 52http://www.cc.gatech.edu/~jarekJarek Rossignac ã OTHER OPTIONS 53http://www.cc.gatech.edu/~jarekJarek Rossignac ã G - Choreography for motion of several dancers How to specify their motion Avoid collision Smooth flow when close to each other See SAMBA paper 54http://www.cc.gatech.edu/~jarekJarek Rossignac ã F - Tango dancers 55http://www.cc.gatech.edu/~jarekJarek Rossignac ã Other options/ideas: Dance and more Tool to design and visualize other dance synced with music Aszure Barton: https://youtu.be/sI6yNILmdXM Camille: https://youtu.be/LxdoirRXYa4 Momix: https://youtu.be/6ONrj-q2OKY Diana Vishneva: https://youtu.be/2h2fdZ6XpR8
欢迎咨询51作业君