COL781 guest lecture: Physics-Based Animation Prof. Rahul Narain
About me • Rahul Narain http://rahul.narain.name/ narain@cse.iitd.ac.in • Assistant professor in CS&E Bharti IIA-517 • Research interests: computer graphics, physics-based animation, numerical methods
Turbulent fluids and granular materials Crowd simulation Cloth Parallel algorithms for modeling interactive simulation
Basic types of animation • Manual • e.g. keyframing • Recorded • e.g. motion capture • Algorithmic • e.g. physics-based
Physics-based animation (a.k.a. simulation)
Basic types of animation • Manual • e.g. keyframing less artistic control more automation • Recorded • e.g. motion capture • Algorithmic • e.g. physics-based
Physics-based animation (a.k.a. simulation)
Today’s agenda • Basic principles of physics-based animation • Mass-spring systems • Preview of other techniques
Discretization How to represent the continuous motion of an object? v ( x , t ) x ( t ) x (0) Motion of a particle: Flow field of a fluid: x : ℝ → ℝ 3 v : ℝ 3 × ℝ → ℝ 3
Discretization Discretization of space particles grids meshes Discretization of time • Time stepping
Discretization Objects represented as collections of particles • i th particle has mass m i , position x i , velocity v i Time divided into discrete time steps • Usually t 0 , t 1 = t 0 + ∆ t , t 2 = t 0 + 2 ∆ t , … Given positions, velocities at t n , compute positions, velocities at t n +1
<latexit sha1_base64="ncbAlpIVsTErq8DyBcEOzNE4SgM=">ADt3icbZLfatswFMbVuNva7k/T7bI3omGwq+CEQbvBIDAGa6HQwdIW4jSTZckRlWRPkrMY4yfa0+xy28tMTjOqyD0g8fn8vmNJhxPnGkThr+3OsH2o8dPdnb3nj57/mK/e/DyUmeFwmSM56p6xhpwpkY8MJ9e5IkjEnFzFtx8bfrUgSrNMfjVlTqYCpZJRhpGxqVn3U0QVwlUkJkrAZOb4UrGFC5nrL7Pm5thDT9Ax20tLEIu826vbAfrgK2xWAtemAdF7ODziRKMlwIg3mSOvJIMzNtELKMxJvRcVmuQI36KUTKyUSBA9rVbvreFrm0kgzZRd0sBV1q2okNC6FLF1NjfVPmuSD7FJYejJtGIyLwyR+O4gWnBoMtg0DyZMEWx4aQXCitm7QjxHtiXGtnjFCxixdK52XhJFQv7rYgkP3AmBJFSV1d/luoXxf2zbjRvsQulA2a5VDlZ+7dKBSx+WDizbP14eOHXUgdSH6YOTH146sBTH5458MyH5w48r5txHPjD1xbjYf9dP/zytjcaredyBxyCI/AGDMAxGIHP4AKMAQY/wS/wB/wN3gfAhrM76ydrXNK7ARwfd/TWpDrw=</latexit> <latexit sha1_base64="ncbAlpIVsTErq8DyBcEOzNE4SgM=">ADt3icbZLfatswFMbVuNva7k/T7bI3omGwq+CEQbvBIDAGa6HQwdIW4jSTZckRlWRPkrMY4yfa0+xy28tMTjOqyD0g8fn8vmNJhxPnGkThr+3OsH2o8dPdnb3nj57/mK/e/DyUmeFwmSM56p6xhpwpkY8MJ9e5IkjEnFzFtx8bfrUgSrNMfjVlTqYCpZJRhpGxqVn3U0QVwlUkJkrAZOb4UrGFC5nrL7Pm5thDT9Ax20tLEIu826vbAfrgK2xWAtemAdF7ODziRKMlwIg3mSOvJIMzNtELKMxJvRcVmuQI36KUTKyUSBA9rVbvreFrm0kgzZRd0sBV1q2okNC6FLF1NjfVPmuSD7FJYejJtGIyLwyR+O4gWnBoMtg0DyZMEWx4aQXCitm7QjxHtiXGtnjFCxixdK52XhJFQv7rYgkP3AmBJFSV1d/luoXxf2zbjRvsQulA2a5VDlZ+7dKBSx+WDizbP14eOHXUgdSH6YOTH146sBTH5458MyH5w48r5txHPjD1xbjYf9dP/zytjcaredyBxyCI/AGDMAxGIHP4AKMAQY/wS/wB/wN3gfAhrM76ydrXNK7ARwfd/TWpDrw=</latexit> <latexit sha1_base64="ncbAlpIVsTErq8DyBcEOzNE4SgM=">ADt3icbZLfatswFMbVuNva7k/T7bI3omGwq+CEQbvBIDAGa6HQwdIW4jSTZckRlWRPkrMY4yfa0+xy28tMTjOqyD0g8fn8vmNJhxPnGkThr+3OsH2o8dPdnb3nj57/mK/e/DyUmeFwmSM56p6xhpwpkY8MJ9e5IkjEnFzFtx8bfrUgSrNMfjVlTqYCpZJRhpGxqVn3U0QVwlUkJkrAZOb4UrGFC5nrL7Pm5thDT9Ax20tLEIu826vbAfrgK2xWAtemAdF7ODziRKMlwIg3mSOvJIMzNtELKMxJvRcVmuQI36KUTKyUSBA9rVbvreFrm0kgzZRd0sBV1q2okNC6FLF1NjfVPmuSD7FJYejJtGIyLwyR+O4gWnBoMtg0DyZMEWx4aQXCitm7QjxHtiXGtnjFCxixdK52XhJFQv7rYgkP3AmBJFSV1d/luoXxf2zbjRvsQulA2a5VDlZ+7dKBSx+WDizbP14eOHXUgdSH6YOTH146sBTH5458MyH5w48r5txHPjD1xbjYf9dP/zytjcaredyBxyCI/AGDMAxGIHP4AKMAQY/wS/wB/wN3gfAhrM76ydrXNK7ARwfd/TWpDrw=</latexit> Equations of motion Newton’s second law: f = m a Or, for each particle: d 2 x i d t 2 = f i m i f i = total force on particle i (including forces from environment and from other particles) Two questions: • How to define f i ? • How to solve d 2 x i /d t 2 = …?
Recap: Single-particle dynamics Consider a point mass attached to a fixed point via a spring • Total force = m g − k s ( ‖ x ‖ − ℓ 0 ) e − k d ( v · e ) e + f user • Call this f ( x ( t ), v ( t )) f spring d v /d t = f / m d x /d t = v . m g Simplest time stepping scheme ( forward Euler ): v new = v + f ( x , v )/ m ∆ t x new = x + v ∆ t .
Recap: Single-particle dynamics What you covered in an earlier class is slightly di fg erent: v new = v + f ( x , v )/ m ∆ t x new = x + v new ∆ t . This is sometimes called semi-implicit Euler or symplectic Euler , actually much better than forward Euler.
Recommend
More recommend