Animation from BVH Andrew Slatton. Biovision Hierarchy (BVH) Contains motion capture data 2 Major Components: –Hierarchy Formatted like a scene graph.

Slides:



Advertisements
Similar presentations
Animation in Video Games presented by Jason Gregory
Advertisements

Real-Time Rendering 靜宜大學資工研究所 蔡奇偉副教授 2010©.
FluidDiagrams Framework for 3D/2D Visualisations in JavaScript Developed in TypeScript -> Compiled to JavaScript.
CS123 | INTRODUCTION TO COMPUTER GRAPHICS Andries van Dam © 1/16 Deferred Lighting Deferred Lighting – 11/18/2014.
Line Drawing Algorithms. Rasterization-Process of determining which pixels give the best approximation to a desired line on the screen. Scan Conversion-Digitizing.
Hierarchical Transformation. Summary Alternatively, OpenGL thinks: A transformation updates the coordinate system. For each change, the transformation.
Flash Animation Using Linear Transformations By Kevin Hunter Kevin Hunter Marcus Yu Marcus Yu.
Links and Joints.
1 Characters. 2Introduction The Characters are the Actors of the Games. The Characters are the Actors of the Games. Three Types of Characters : Three.
3D Graphics for Game Programming (J. Han) Chapter XI Character Animation.
WSCG’07 Jonathan Kipling Knight 1 Feb 2007 Copyright © Jonathan Kipling Knight 2007 Fast Skeleton Estimation from Motion Capture Data using Generalized.
Character Setup Character Setup is the process of creating handles and controls for anything that a character animator will need to adjust in order to.
 The success of GL lead to OpenGL (1992), a platform-independent API that was  Easy to use  Close enough to the hardware to get excellent performance.
Computer Animation 2D Animation.
Scenegraph. Scenegraph Nodes - all implement a run function Leaf/Geo Nodes - typedefs of sgNode superclass –Poly Mesh A geo node that stores a list of.
High-Quality Video View Interpolation
Further Programming for 3D applications CE Introduction to Further Programming for 3D application Bob Hobbs Faculty of Computing, Engineering and.
Drawing a Skeleton Fast From Motion Capture Data Jonathan Kipling Knight Nov 7, 2006.
Animation. Outline  Key frame animation  Hierarchical animation  Inverse kinematics.
Animation CS 551 / 651 Kinematics Lecture 09 Kinematics Sarcos Humanoid.
Design and Implementation of Motion Synthesis System Based on Support Phase Quan Yu.
Algirdas Beinaravičius Gediminas Mazrimas.  Introduction  Motion capture and motion data  Used techniques  Animating human body  Problems  Conclusion.
Algirdas Beinaravičius Gediminas Mazrimas.  Introduction  Motion capture and motion data  Used techniques  Animating human body  Problems  Conclusion.
Characters.
Hierarchical Transformations Hierarchical Models Scene Graphs
3D Concepts Coordinate Systems Coordinates specify points in space 3D coords commonly use X, Y, & Z A vertex is a 'corner' of an object Different coordinate.
Advanced Graphics (and Animation) Spring 2002
REAL-TIME VOLUME GRAPHICS Christof Rezk Salama Computer Graphics and Multimedia Group, University of Siegen, Germany Eurographics 2006 Real-Time Volume.
COMP 175: Computer Graphics March 10, 2015
Spatial Data Structures Jason Goffeney, 4/26/2006 from Real Time Rendering.
University of Illinois at Chicago Electronic Visualization Laboratory (EVL) CS 426 Intro to 3D Computer Graphics © 2003, 2004, 2005 Jason Leigh Electronic.
Motion Capture. Animation – A broad Brush Traditional Methods  Cartoons, stop motion Keyframing  Digital inbetweens Motion Capture  What you record.
Computer Animation Rick Parent Computer Animation Algorithms and Techniques Kinematic Linkages.
Created on 29/10/2008yahaya.wordpress.com1 Trees Another common nonlinear data structure is the tree. We have already seen an example of a tree when we.
Character Animation. Contents Keyframe animation Mocap Smooth skin by vertex blending Rigging & retargeting Gait analysis (Ragdoll physics) Fall
Hierarchical Modeling. Instance Transformation Start with a prototype object (a symbol) Each appearance of the object in the model is an instance – Must.
1 Scene Graphs ©Anthony Steed Scene Graph Overview n Building Scene Structures n Traversal n Examples n Instancing and Re-Use n More Transformations.
Algirdas Beinaravičius Gediminas Mazrimas.  Introduction  Motion capture and motion data  Used techniques  Animating human body  Problems  Conclusion.
Kinematics Jehee Lee Seoul National University. Kinematics How to animate skeletons (articulated figures) Kinematics is the study of motion without regard.
# 1 CMPS 450 Syntax-Directed Translations CMPS 450 J. Moloney.
CS-378: Game Technology Lecture #13: Animation Prof. Okan Arikan University of Texas, Austin Thanks to James O’Brien, Steve Chenney, Zoran Popovic, Jessica.
Jul 25, 2014IAT 3551 Scene Graphs.  A data structure that stores information about a graphics scene –Each node has information that structures the interpretation.
© TMC Computer School HC20203 VRML HIGHER DIPLOMA IN COMPUTING Chapter 2 – Basic VRML.
1cs426-winter-2008 Notes  Will add references to splines on web page.
1 Graphics CSCI 343, Fall 2015 Lecture 6 Viewing, Animation, User Interface.
Review on Graphics Basics. Outline Polygon rendering pipeline Affine transformations Projective transformations Lighting and shading From vertices to.
CS 450: COMPUTER GRAPHICS ANIMATION SPRING 2015 DR. MICHAEL J. REALE.
Vertex form Form: Just like absolute value graphs, you will translate the parent function h is positive, shift right; h is negative, shift left K is positive,
Skeletal Animation and Skinning A (hardware friendly) software approach By: Brandon Furtwangler.
What are shaders? In the field of computer graphics, a shader is a computer program that runs on the graphics processing unit(GPU) and is used to do shading.
Mesh Skinning Sébastien Dominé. Agenda Introduction to Mesh Skinning 2 matrix skinning 4 matrix skinning with lighting Complex skinning for character.
Scalable Salient Motions Detection from Skeletal Motion Capture Data Samah Ramadan.
Algirdas Beinaravičius Gediminas Mazrimas.  Introduction  Motion capture and motion data  Used techniques  Animating human body  Problems  Conclusion.
CS777 Project 1 Developing Maya Plug-ins for motion related projects Kyungsuk David Lee.
Animation with OpenGL Hsiao Chun-Tse 2007/03/27. I’ll present the simplest method to generate animation. Without much efforts, you can improve the system.
Kinematics Intro :a branch of dynamics that deals with aspects of motion apart from considerations of mass and force Merriam-Webster.
Computer Graphics I, Fall 2008 Hierarchical Modeling I.
GLSL Review Monday, Nov OpenGL pipeline Command Stream Vertex Processing Geometry processing Rasterization Fragment processing Fragment Ops/Blending.
COMP 175 | COMPUTER GRAPHICS Remco Chang1/XX13 – GLSL Lecture 13: OpenGL Shading Language (GLSL) COMP 175: Computer Graphics April 12, 2016.
CGDD 4003 Character Animation. The Skeletal Hierarchy (aka the “rig”) Based on the concept of bones Each bone has exactly one parent Each bone has a transform.
© TMC Computer School HC20203 VRML HIGHER DIPLOMA IN COMPUTING Chapter 4 – Object Manipulation in VRML.
Reflective Shadow Mapping By: Mitchell Allen.
IAT 355 Scene Graphs Feb 23, 2017 IAT 355.
Jacky Bibliowicz’s Results
Deferred Lighting.
Lecture 26 and 27 Animation Overview
CS451Real-time Rendering Pipeline
Graphics Processing Unit
ICG 2018 Fall Homework1 Guidance
Motion Graphs Davey Krill May 3, 2006.
Presentation transcript:

Animation from BVH Andrew Slatton

Biovision Hierarchy (BVH) Contains motion capture data 2 Major Components: –Hierarchy Formatted like a scene graph with parents, children, etc. –Motion data Number of frames, frame time A list of floating point values associated with “channels” of the hierarchy nodes

BVH Example of Hierarchy: HIERARCHY ROOT Hips { OFFSET CHANNELS 6 Xposition Yposition Zposition Zrotation Xrotation Yrotation JOINT LeftUpLeg { OFFSET CHANNELS 3 Zrotation Xrotation Yrotation JOINT LeftUpLegRoll { OFFSET CHANNELS 3 Zrotation Xrotation Yrotation } … }

BVH Motion data example: MOTION Frames:119 Frame Time: e e e e e e e e e e e …

BVH Motion Data List of values Each value corresponds to a rotation or translation channel Listed in same order as hierarchy was parsed [Joint0, Channel0] [Joint0, Channel1] [Joint1, Channel0] [Joint1, Channel1] [Joint1, Channel2] … [X, Y, Z] x [Rotation, Translation]

Project Steps BVH Parser –Needs to read in and handle hierarchy, motion data –Similar to writing any other parser, so no need to discuss Skeleton drawing –Could handle this mostly in CPU or mostly in GPU –I chose GPU

Drawing the Skeleton High level implementation: –On CPU: Send skeleton object a time Skeleton object computes what frame should be displayed at that time Skeleton object sends appropriate data to shader –Shaders handle everything else

Drawing the Skeleton Vertex Shader –Given motion and hierarchy data –Computes positions of joints for the desired frame Geometry Shader –Given joint locations –Computes vertex positions and normals for limbs Fragment Shader –Phong illumination of limbs

Drawing the Skeleton Shader uniform variables: –Motion data for desired frame –Joint offsets –Channel ordering Could be Xrot, Yrot, Zrot, OR Zrot, Yrot, Xrot (or any other order) –Parent pointers Must apply ancestors’ transforms to find a joint’s location –Motion data pointers Some joints span six indices of motion data, some three, and some zero

Drawing the Skeleton Generating Limbs: –Simplest Method: Draw a sphere at the location of each joint Doesn’t give a vivid picture of the motion

Drawing the Skeleton Generating Limbs: –Could make a cylinder about each ParentJoint-ChildJoint segment –Notice the discontinuities at joints. This is ugly.

Drawing the Skeleton Generating Limbs: –Quick fix for final result Rotate y = x*x – 1 about each limb axis

Odds and Ends Could implement animation as loop that stops only when animation is complete: while(!skel.last_frame()) { skel.set_frame(elapsed_time); DrawScene(); } This locks up CPU No good if we want to allow keyboard/mouse inputs during animation Also, won’t work with glutPostRedisplay() because we must exit the loop before glutMainLoop can call glutDisplayFunction

Odds and Ends Use glutTimerFunc ! Animate(int delay){ skel.set_frame(elapsed_time); glutPostRedisplay(); if(!skel.last_frame()) { glutTimerFunc(delay,Animate,delay); }} Will call Animate once every delay milliseconds until we reach end of animation Allows glutMainLoop to continue execution during this delay time

Thank You!