180 likes | 279 Views
Project 1: Animation System. Assigned: 01/17/06 Due: 01/31/06. Project description. Hierarchical modeling Use OpenGL code to build a model of your own design Keyframe animation system Implement three types splines to animate your model. Skeleton code. Modeler View vs. Curves View
E N D
Project 1: Animation System Assigned: 01/17/06 Due: 01/31/06
Project description • Hierarchical modeling • Use OpenGL code to build a model of your own design • Keyframe animation system • Implement three types splines to animate your model
Skeleton code • Modeler View vs. Curves View • Graph Widget Interface • How to integrate with my model? • just add replace robotarm.cpp with your model • build a simple testing model first just to see if it works
Requirements • Bezier curve • Splice Bezier curves together with C0 continuity • B-spline • Catmull-Rom splines • C2-interpolating splines (optional)
Where should I put things? • For each type of splines, create a subclass that inherits from CurveEvaluator • Bezier • B-spline • Catmull-Rom • Implement virtual function evaluateCurve() for each subclass • In GraphWidget class • Change the skeleton to call your new constructors in the GraphWidget class.
Extra Credit ideas • Tension control for Catmull-Rom • Dn = 1/2(Cn+1– Cn-1) • Allow control points to have C0, C1, or C2 continuity • This can be VERYhelpful in creating a good animation
Extra Credit ideas • “wrapping” the animation • You can implement “wrapping” feature to ensure C0 continuity between the end and the beginning of the animation • Add more control points without changing the curve • This feature is important when you want to refine your animation in a localize region
Extra Credit ideas • Adaptive Bezier curves • Use divide-and-conquer algorithm to display the Bezier curves, rather than sampling at some arbitrary interval • Use GUI to visualize the change of parameters • Implement a C2-interpolating curve • There is already an entry in the drop-down menu • Allow the user to specify the derivatives of the two endpoints of your C2-interpolating curve
Extra Credit ideas • Procedural modeling • Use procedural algorithm (such as L-systems) to generate all or part of your model • Refine Catmull-Rom splines • Use the two “inner” Bezier control points as the handles of Catmull-Rom splines • Provide GUI to manipulate the control points and the handles
Extra Credit ideas • Selecting body parts • Implement GUI so that you can click on part of your model to select its animation curve • Speed control • Implement “ease-in-ease-out” principle by manipulating the speed control curve • Adding more features to the UI • If there’s anything you don’t like about the UI, change it!
Extra Credit ideas • Talk to me first if you want to implement these features • Quaternion rotation • Motion wapring • Subdivision surfaces
Animating well vs. well… just animating • Timing! • Timing is VERY, VERY important • Consider timing before you bother to get specific about joint rotations or object positions
Animating well vs. well… just animating Good timing
Animating well • Music! • Sound and music can greatly enhance the cohesion of your artifact • If your artifact idea includes a theme or stylization, it can be very effective to time your animation with events in the theme music. Good sound
Light vs. No light Animating well • Light! • Like sound, light is VERY VERY important compositionally • Anything you can do to be creative with lighting will help
Creating Your Artifact • Choice of curve types • I recommend Bezier curves. Why? • Recall the animation of a bouncing ball • When the ball hits the ground, the curve describing its position should have a C1 discontinuity • Without C1 discontinuity here, the animation will look wrong • Catmull-Rom is usually the preferred curve choice… • but unless your project supports the option to add C1 discontinuity at will, you might find yourself trying to fight the Catmull-Rom to create pauses and other timing goodies
Creating Your Artifact • Compositing • Recommended that you break your intended artifact up into shorter clips combining them all in the end. • This will make your life easier for many reasons: • Splitting up work is straightforward • Changing camera angles is GOOD for a composition • You can incrementally complete your artifact • Download a trial of Adobe Premiere • Play around with it, check the website for some details on how to use it. The user interface is pretty intuitive.