CS 4204 Computer Graphics

Similar documents
Computer Animation. Computer Animation. Principles of Traditional Animation. Outline. Principles of Traditional Animation

Computer Animation. Jason Lawrence CS 4810: Graphics

The 3D rendering pipeline (our version for this class)

Graphics. Computer Animation 고려대학교 컴퓨터 그래픽스 연구실. kucg.korea.ac.kr 1

Interactive Computer Graphics

CIS 536/636 Introduction to Computer Graphics. Kansas State University. CIS 536/636 Introduction to Computer Graphics

Fundamentals of Computer Animation

The Fundamental Principles of Animation

CG T17 Animation L:CC, MI:ERSI. Miguel Tavares Coimbra (course designed by Verónica Orvalho, slides adapted from Steve Marschner)

CS 4300 Computer Graphics. Prof. Harriet Fell Fall 2012 Lecture 33 November 26, 2012

animation animation shape specification as a function of time

Outline. Animation. 1. Squash and Stretch. Overview: Traditional Animation. Squash and Stretch Cont. 2. Timing and Motion

Computer Animation. CS 445/645 Fall 2001

Computer Animation. Connelly Barnes CS 4810: Graphics

animation shape specification as a function of time

Mocap in a 3D Pipeline

Lesson Plan. Performance Objective: Upon completion of this assignment, the student will be able to identify the Twelve Principles of Animation.

Logistics. Projects. Announcement. Animation pipeline. Plan for today. Animation Pipeline, Principles, Tools. Test . Test file in mycourses

Tutorial: Biped Character in 3D Studio Max 7, Easy Animation

Animation. The Twelve Principles of Animation

COMP Visualization. Lecture 15 Animation

CHAPTER 6 TEXTURE ANIMATION

Maya 2014 Basic Animation & The Graph Editor

Introduction to. With Slides from Dongho Kim and Karen Liu. School of Computer Soongsil University Animation. Computer Animation

CS 4620 Practicum Programming Assignment 6 Animation

Animation (-4, -2, 0 ) + (( 2, 6, -4 ) - (-4, -2, 0 ))*.75 = (-4, -2, 0 ) + ( 6, 8, -4)*.75 = (.5, 4, -3 ).

MA 323 Geometric Modelling Course Notes: Day 02 Model Construction Problem

This week. CENG 732 Computer Animation. Challenges in Human Modeling. Basic Arm Model

Blender 3D Animation

MOBILE ROBOT TRACKING OF PRE-PLANNED PATHS. Department of Computer Science, York University, Heslington, York, Y010 5DD, UK

C O M P U C O M P T U T E R G R A E R G R P A H I C P S Computer Animation Guoying Zhao 1 / 66 /

the points are called control points approximating curve

Goldsmiths, University of London. Computer Animation. Goldsmiths, University of London

Animations in Creo 3.0

Kinematical Animation

CATIA V5 Tutorials. Mechanism Design & Animation. Release 18. Nader G. Zamani. University of Windsor. Jonathan M. Weaver. University of Detroit Mercy

Computer Graphics. Geometric Modeling. Page 1. Copyright Gotsman, Elber, Barequet, Karni, Sheffer Computer Science - Technion. An Example.

Introduction to Computer Graphics Marie-Paule Cani & Estelle Duveau

Athletics (Throwing) Questions Javelin, Shot Put, Hammer, Discus

A Short Introduction to Computer Graphics

CUFANM501A Create 3D digital character animation

CIS 536/636 Introduction to Computer Graphics. Kansas State University. CIS 536/636 Introduction to Computer Graphics

DIGITAL ANIMATION I (Currently Art Intro to 3D animation) Syllabus - SJSU

Computer Animation in Future Technologies

If there are any questions, students are encouraged to or call the instructor for further clarification.

MT. DIABLO UNIFIED SCHOOL DISTRICT COURSE OF STUDY

CARTOON BUILDER. Character animation the art of. Creating animated characters with Blender KNOW-HOW. Pulling Strings

Today. Keyframing. Procedural Animation. Physically-Based Animation. Articulated Models. Computer Animation & Particle Systems

(Refer Slide Time: 1:42)

CMSC 425: Lecture 13 Animation for Games: Basics Tuesday, Mar 26, 2013

Chapter 1. Animation. 1.1 Computer animation

Animator V2 for DAZ Studio. Reference Manual

Our One-Year 3D Animation Program is a comprehensive training in 3D using Alias

Creating Scenes and Characters for Virtools in OpenFX

Lecture Notes, CEng 477

Acceleration Introduction: Objectives: Methods:

Model Answers. A good answer of the questions from 2 to 8 should contain the belowmentioned

Computer Animation. Lecture 2. Basics of Character Animation

Voice Driven Animation System

Computer Games. CSCI-GA Spring Hubertus Franke. ( frankeh@cims.nyu.edu )

2.5 Physically-based Animation

3. Interpolation. Closing the Gaps of Discretization... Beyond Polynomials

Chapter 9- Animation Basics

Project 2: Character Animation Due Date: Friday, March 10th, 11:59 PM

Curves and Surfaces. Goals. How do we draw surfaces? How do we specify a surface? How do we approximate a surface?

Character Animation Tutorial

Computer Animation and Visualisation. Lecture 1. Introduction

SimFonIA Animation Tools V1.0. SCA Extension SimFonIA Character Animator

Program of Study. Animation (1288X) Level 1 (390 hrs)

Particles, Flocks, Herds, Schools

Character Animation from 2D Pictures and 3D Motion Data ALEXANDER HORNUNG, ELLEN DEKKERS, and LEIF KOBBELT RWTH-Aachen University

CHAPTER 1 Splines and B-splines an Introduction

Salt Lake City School District Student Learning Objectives (SLOs) Writing Template

We can display an object on a monitor screen in three different computer-model forms: Wireframe model Surface Model Solid model

Georgia Department of Education Kathy Cox, State Superintendent of Schools 7/19/2005 All Rights Reserved 1

Module1. x y 800.

Introduction to time series analysis

Fundamentals of Computer Animation

Chapter 1. Introduction. 1.1 The Challenge of Computer Generated Postures

Using Autodesk HumanIK Middleware to Enhance Character Animation for Games

IMD4003 3D Computer Animation

Animation. Persistence of vision: Visual closure:

ART 269 3D Animation Fundamental Animation Principles and Procedures in Cinema 4D

INTRODUCTION TO RENDERING TECHNIQUES

CS130 - Intro to computer graphics. Dr. Victor B. Zordan vbz@cs.ucr.edu Objectives

Math for Game Programmers: Dual Numbers. Gino van den Bergen

An Interactive method to control Computer Animation in an intuitive way.

FAV CMPTR ANIMATION: INSTRUCTOR GINA KAMENTSKY

Outline. srgb DX9, DX10, XBox 360. Tone Mapping. Motion Blur

Thnkwell s Homeschool Precalculus Course Lesson Plan: 36 weeks

In order to describe motion you need to describe the following properties.

DIGITAL MEDIA ARTS. DMA 225 Computer Animation lecture/4 studio hours Hours: lecture/laboratory/other (specify)

Exercises for older people

3D Tranformations. CS 4620 Lecture 6. Cornell CS4620 Fall 2013 Lecture Steve Marschner (with previous instructors James/Bala)

TRIGONOMETRY FOR ANIMATION

Republic Polytechnic School of Information and Communications Technology C391 Animation and Visual Effect Automation.

Design-Simulation-Optimization Package for a Generic 6-DOF Manipulator with a Spherical Wrist

Transcription:

CS 4204 Computer Graphics Computer Animation Adapted from notes by Yong Cao Virginia Tech 1

Outline Principles of Animation Keyframe Animation Additional challenges in animation 2

Classic animation Luxo Jr. (1986) http://www.youtube.com/watch?v=-vskdrmqqqi

Principles of Traditional Animation Disney Squash and Stretch Slow In and Out Anticipation Exaggeration Follow Through and Overlapping Action Timing Staging Straight Ahead Action and Pose-to-Pose Action Arcs Secondary Action Appeal http://www.siggraph.org/education/materials/hypergraph/animation/character_animation/principles/prin_trad_anim.htm

Squash and Stretch

Slow In and Out

Anticipation

Exaggeration

Timing and Follow through

Secondary actions

Keyframe Animation Define Character Poses at Specific Time Steps Called Keyframes

Keyframe Animation Interpolate Variables Describing Keyframes to Determine Poses for Character in between

In-betweening Linear Interpolation Usually not enough continuity

In-betweening Spline Interpolation Maybe good enough

In-betweening Cubic Spline Interpolation Maybe good enough May not follow physical laws!!

In-betweening Cubic Spline Interpolation Maybe good enough May not follow physical laws!!

Articulated Figures Character Poses Described by Set of Rigid Bodies Connected by Joints Base Arm Hand Scene Graph

Articulated Figures Well-Suited for Humanoid Characters

Articulated Figures Joints Provide Handles for Moving Articulated Figure

In-betweening Compute Joint Angles between Keyframes

Example: Walk Cycle Articulated Figure: Upper Leg Hip Knee Lower Leg Upper Leg (Hip Rotate) Hip Rotate Lower Leg (Knee Rotate) Hip Rotate + Knee Rotate Ankle Foot Foot (Ankle Rotate)

Example: Walk Cycle Hip Joint Orientation:

Example: Walk Cycle Knee Joint Orientation:

Example: Walk Cycle Ankle Joint Orientation:

Animation When we speak of an animation,, we refer to the data required to pose a skeleton over some range of time This should include information to specify all necessary DOF values over the entire time range Sometimes, this is referred to as a clip or even a move (as animation can be ambiguous)

Pose Space If a character has N DOFs,, then a pose can be thought of as a point in N-dimensional pose space An animation can be thought of as a point moving through pose space, or alternately as a fixed curve in pose space One-shot animations are an open curve, while loop animations form a closed loop Generally, we think of an individual animation as being a continuous curve, but there s s no strict reason why we couldn t t have discontinuities (cuts)

Channels If the entire animation is an N-dimensional curve in pose space, we can separate that into N 1-dimensional curves, one for each DOF We call these channels A A channel stores the value of a scalar function over some 1D domain (either finite or infinite) A A channel will refer to pre-recorded or pre-animated data for a DOF, and does not refer to the more general case of a DOF changing over time (which includes physics, procedural animation )

Channels

Array of Channels An animation can be stored as an array of channels A A simple means of storing a channel is as an array of regularly spaced samples in time Using this idea, one can store an animation as a 2D array of floats (NumDOFs x NumFrames) However, if one wanted to use some other means of storing a channel, they could still store an animation as an array of channels, where each channel is responsible for storing data however it wants

Array of Poses An alternative way to store an animation is as an array of poses This also forms a 2D array of floats (NumFrames x NumDOFs) Which is better, poses or channels?

Poses vs. Channels Which is better? It depends on your requirements. The bottom line: Poses are faster Channels are far more flexible and can potentially use less memory

Array of Poses The array of poses method is about the fastest possible way to playback animation data A pose (vector of floats) is exactly what one needs in order to pose a rig Data is contiguous in memory, and can all be directly accessed from one address

Array of Channels As each channel is stored independently, they have the flexibility to take advantage of different storage options and maximize memory efficiency Also, in an interactive editing situation, new channels can be independently created and manipulated However, they need to be independently evaluated to access the current frame,, which takes time and implies discontinuous memory access

Poses vs. Channels Array of poses is great if you just need to play back some relatively simple animation and you need maximum performance. This corresponds to many video games Array of channels is essential if you want flexibility for an animation system or are interested in generality over raw performance Array of channels can also be useful in more sophisticated game situations or in cases where memory is more critical than CPU performance (which is not uncommon)

Keyframe Channel A A channel can be stored as a sequence of keyframes Each keyframe has a time and a value and usually some information describing the tangents at that location The curves of the individual spans between the keys are defined by 1-D interpolation (usually piecewise Hermite) class Keyframe; class Channel { float *m_keyframe_array; float Evaluate(float time); bool Load(FILE*); };

Keyframe Channel

Keyframe Tangent In Tangent Out Value Keyframe (time,value) Time

Why Use Keyframes? Good user interface for adjusting curves Gives the user control over the value of the DOF and the velocity of the DOF Define a perfectly smooth function (if desired) Can offer good compression (not always) Every animation system offers some variation on keyframing Video games may consider keyframes for compression purposes, even though they have a performance cost

Tangent Rules Rather than store explicit numbers for tangents, it is often more convenient to store a rule and recompute the actual tangent as necessary Usually, separate rules are stored for the incoming and outgoing tangents Common rules for Hermite tangents include: Flat (tangent = 0) Linear Smooth Fixed (tangent points to next/last key) (automatically adjust tangent for smooth results) (user can arbitrarily specify a value) Remember that the tangent equals the rate of change of the DOF (or the velocity)

Flat Tangents Flat tangents are particularly useful for making slow in and slow out motions (acceleration from a stop and deceleration to a stop) v = 0

Linear Tangents v 1 in (p 1,t 1 ) (p 0,t 0 ) v 0 out

Smooth Tangents (p 0,t 0 ) v 1 in (p 1,t 1 ) v 1 out (p 2,t 2 ) Keep in mind that this won t t work on the first or last tangent (just use the linear rule)

Cubic Coefficients Keyframes are stored in order of their time Between every two successive keyframes is a span of a cubic curve The span is defined by the value of the two keyframes and the outgoing tangent of the first and incoming tangent of the second Those 4 values are multiplied by the Hermite basis matrix and converted to cubic coefficients for the span For simplicity, the coefficients can be stored in the first keyframe for each span

Extrapolation Modes Channels can specify extrapolation modes to define how the curve is extrapolated before t min and after t max Usually, separate extrapolation modes can be set for before and after the actual data Common choices: Constant value (hold first/last key value) Linear (use tangent at first/last key) Cyclic (repeat the entire channel) Cyclic Offset (repeat with value offset) Bounce (repeat alternating backwards & forwards)

Extrapolation Flat: Linear: t min t max

Extrapolation Cyclic: Cyclic Offset:

Extrapolation Bounce:

Keyframe Evaluation The main runtime function for a channel is something like: float Channel::Evaluate(float time); This function will be called many times For an input time t, there are 4 cases to consider: t is before the first key (use extrapolation) t is after the last key (use extrapolation) t falls exactly on some key (return key value) t falls between two keys (evaluate cubic equation)

Channel::Evaluate() The Channel::Evaluate function needs to be very efficient, as it is called many times while playing back animations There are two main components to the evaluation: Find the proper span Evaluate the cubic equation for the span

Random Access To evaluate a channel at some arbitrary time t, we need to first find the proper span of the channel and then evaluate its equation As the keyframes are irregularly spaced, this means we have to search for the right one If the keyframes are stored as a linked list, there is little we can do except walk through the list looking for the right span If they are stored in an array, we can use a binary search, which should do reasonably well

Higher-level animation issues Using motion capture data for animation (video( video) Sequencing, blending, or adding multiple animations (video) Generating animations Procedurally (video( video) Based on physical simulation (video( video) Animation of phenomena that don t t fit the articulated body model (smoke, water, explosions, hair, cloth, etc.) (video)