Physics-Based Animation Prof. Rahul Narain About me Rahul Narain - - PowerPoint PPT Presentation

physics based animation
SMART_READER_LITE
LIVE PREVIEW

Physics-Based Animation Prof. Rahul Narain About me Rahul Narain - - PowerPoint PPT Presentation

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


slide-1
SLIDE 1
  • Prof. Rahul Narain

COL781 guest lecture:

Physics-Based Animation

slide-2
SLIDE 2

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

slide-3
SLIDE 3

Turbulent fluids and
 granular materials Cloth
 modeling Parallel algorithms for
 interactive simulation Crowd
 simulation

slide-4
SLIDE 4

Basic types of animation

  • Manual
  • e.g. keyframing

  • Recorded
  • e.g. motion capture

  • Algorithmic
  • e.g. physics-based
slide-5
SLIDE 5

Physics-based animation (a.k.a. simulation)

slide-6
SLIDE 6
slide-7
SLIDE 7
slide-8
SLIDE 8

Basic types of animation

  • Manual
  • e.g. keyframing

  • Recorded
  • e.g. motion capture

  • Algorithmic
  • e.g. physics-based

more automation less artistic control

slide-9
SLIDE 9

Physics-based animation (a.k.a. simulation)

slide-10
SLIDE 10

Today’s agenda

  • Basic principles of physics-based animation
  • Mass-spring systems
  • Preview of other techniques
slide-11
SLIDE 11

Discretization

How to represent the continuous motion of an object?

x(0) x(t) Motion of a particle: x : ℝ → ℝ3 Flow field of a fluid: v : ℝ3 × ℝ → ℝ3 v(x, t)

slide-12
SLIDE 12

Discretization

Discretization of space Discretization of time

  • Time stepping

particles grids meshes

slide-13
SLIDE 13
slide-14
SLIDE 14

Discretization

Objects represented as collections of particles

  • ith particle has mass mi, position xi, velocity vi

Time divided into discrete time steps

  • Usually t0, t1 = t0 + ∆t, t2 = t0 + 2∆t, …

Given positions, velocities at tn,
 compute positions, velocities at tn+1

slide-15
SLIDE 15

Equations of motion

Newton’s second law: f = ma Or, for each particle: fi = total force on particle i
 (including forces from environment and from other particles) Two questions:

  • How to define fi?
  • How to solve d2xi/dt2 = …?

d2xi dt2 = fi mi

<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>
slide-16
SLIDE 16

Recap: Single-particle dynamics

Consider a point mass attached to a fixed point via a spring

  • Total force = mg − ks(‖x‖ − ℓ0)e − kd(v · e)e + fuser
  • Call this f(x(t), v(t))

dv/dt = f/m dx/dt = v . Simplest time stepping scheme (forward Euler): vnew = v + f(x, v)/m ∆t xnew = x + v ∆t .

fspring mg

slide-17
SLIDE 17

Recap: Single-particle dynamics

What you covered in an earlier class is slightly difgerent: vnew = v + f(x, v)/m ∆t xnew = x + vnew ∆t . This is sometimes called semi-implicit Euler or symplectic Euler, actually much better than forward Euler.

slide-18
SLIDE 18

Multi-particle dynamics

For each particle, Let's define and similarly v and f. Then we can just write where M = diag(m1 I, m2 I, …)

dvi dt = fi mi dxi dt = vi

<latexit sha1_base64="P7FkXtIWiJTP9dul3Otpak/3lMU=">AD73icdZLPb9MwFMedBlgpv9px5GJRgThVCUKCA5MmcWGTJg2JbpOaqnIcJ7VmO8F2SqOQv4Mb4sqfxJW/BKcrquMJyX6+n3eD+flxQWjSgfBb6/n37l76B/f/Dg4aPHT4ajwuVlxKTKc5ZLq9ipAijgkw1YxcFZIgHjNyGV9/aPnlikhFc/FZVwWZc5QJmlKMtHEtht+iVCJcRxzpeQw2Yg4hasFbXZe3cCXR9AKNRFpG8HNC0bR4D9V1rdV2XVYDMfBJNgY7IpwK8Zga+eLUW8WJTkuOREaM6TULAwKPa+R1BQz0gyiUpEC4WuUkZmRAnGi5vVmTA18YTwJTHNpHqHhxmtn1IgrVfHYRLZ3VC5rnbexWanTd/OaiqLUROCbRmnJoM5hO3OYUEmwZpURCEtq7grxEpmJafNn9rpgHkuaLfXel9QxN2dJBPmKc86RSOoaerdYJsOxv+wGTRusQ2FBU3V1pYurlrC65dWFmw6hZeWXjl5qYWTF2YWTBz4YkFT1x4asFTF5Z8KxpzDqG7vJ1xcXrSRhMwk9vxsfvt4vZB8/Ac/AKhOAtOAYfwTmYAgz+eH1v5B36X/zv/g/501oz9vmPAV75v/6C6A/VxI=</latexit><latexit sha1_base64="P7FkXtIWiJTP9dul3Otpak/3lMU=">AD73icdZLPb9MwFMedBlgpv9px5GJRgThVCUKCA5MmcWGTJg2JbpOaqnIcJ7VmO8F2SqOQv4Mb4sqfxJW/BKcrquMJyX6+n3eD+flxQWjSgfBb6/n37l76B/f/Dg4aPHT4ajwuVlxKTKc5ZLq9ipAijgkw1YxcFZIgHjNyGV9/aPnlikhFc/FZVwWZc5QJmlKMtHEtht+iVCJcRxzpeQw2Yg4hasFbXZe3cCXR9AKNRFpG8HNC0bR4D9V1rdV2XVYDMfBJNgY7IpwK8Zga+eLUW8WJTkuOREaM6TULAwKPa+R1BQz0gyiUpEC4WuUkZmRAnGi5vVmTA18YTwJTHNpHqHhxmtn1IgrVfHYRLZ3VC5rnbexWanTd/OaiqLUROCbRmnJoM5hO3OYUEmwZpURCEtq7grxEpmJafNn9rpgHkuaLfXel9QxN2dJBPmKc86RSOoaerdYJsOxv+wGTRusQ2FBU3V1pYurlrC65dWFmw6hZeWXjl5qYWTF2YWTBz4YkFT1x4asFTF5Z8KxpzDqG7vJ1xcXrSRhMwk9vxsfvt4vZB8/Ac/AKhOAtOAYfwTmYAgz+eH1v5B36X/zv/g/501oz9vmPAV75v/6C6A/VxI=</latexit><latexit sha1_base64="P7FkXtIWiJTP9dul3Otpak/3lMU=">AD73icdZLPb9MwFMedBlgpv9px5GJRgThVCUKCA5MmcWGTJg2JbpOaqnIcJ7VmO8F2SqOQv4Mb4sqfxJW/BKcrquMJyX6+n3eD+flxQWjSgfBb6/n37l76B/f/Dg4aPHT4ajwuVlxKTKc5ZLq9ipAijgkw1YxcFZIgHjNyGV9/aPnlikhFc/FZVwWZc5QJmlKMtHEtht+iVCJcRxzpeQw2Yg4hasFbXZe3cCXR9AKNRFpG8HNC0bR4D9V1rdV2XVYDMfBJNgY7IpwK8Zga+eLUW8WJTkuOREaM6TULAwKPa+R1BQz0gyiUpEC4WuUkZmRAnGi5vVmTA18YTwJTHNpHqHhxmtn1IgrVfHYRLZ3VC5rnbexWanTd/OaiqLUROCbRmnJoM5hO3OYUEmwZpURCEtq7grxEpmJafNn9rpgHkuaLfXel9QxN2dJBPmKc86RSOoaerdYJsOxv+wGTRusQ2FBU3V1pYurlrC65dWFmw6hZeWXjl5qYWTF2YWTBz4YkFT1x4asFTF5Z8KxpzDqG7vJ1xcXrSRhMwk9vxsfvt4vZB8/Ac/AKhOAtOAYfwTmYAgz+eH1v5B36X/zv/g/501oz9vmPAV75v/6C6A/VxI=</latexit><latexit sha1_base64="P7FkXtIWiJTP9dul3Otpak/3lMU=">AD73icdZLPb9MwFMedBlgpv9px5GJRgThVCUKCA5MmcWGTJg2JbpOaqnIcJ7VmO8F2SqOQv4Mb4sqfxJW/BKcrquMJyX6+n3eD+flxQWjSgfBb6/n37l76B/f/Dg4aPHT4ajwuVlxKTKc5ZLq9ipAijgkw1YxcFZIgHjNyGV9/aPnlikhFc/FZVwWZc5QJmlKMtHEtht+iVCJcRxzpeQw2Yg4hasFbXZe3cCXR9AKNRFpG8HNC0bR4D9V1rdV2XVYDMfBJNgY7IpwK8Zga+eLUW8WJTkuOREaM6TULAwKPa+R1BQz0gyiUpEC4WuUkZmRAnGi5vVmTA18YTwJTHNpHqHhxmtn1IgrVfHYRLZ3VC5rnbexWanTd/OaiqLUROCbRmnJoM5hO3OYUEmwZpURCEtq7grxEpmJafNn9rpgHkuaLfXel9QxN2dJBPmKc86RSOoaerdYJsOxv+wGTRusQ2FBU3V1pYurlrC65dWFmw6hZeWXjl5qYWTF2YWTBz4YkFT1x4asFTF5Z8KxpzDqG7vJ1xcXrSRhMwk9vxsfvt4vZB8/Ac/AKhOAtOAYfwTmYAgz+eH1v5B36X/zv/g/501oz9vmPAV75v/6C6A/VxI=</latexit>

dv dt = M−1f dx dt = v

<latexit sha1_base64="HLGAlfkTFDXiDtPnegcV7C0+Ow=">AD6XicdZLfatswFMbleH+6tFvT7XI3YmFjNwv2GHQXGxR2sxYCHSxtIc6CLMuOiCQbSfZijB9id2O3farCHmZymlDFXg8IPp2fviP5+IQZo0p73o3Tcx8fPR470l/+Dps8PB0fMLleYSkwlOWSqvQqQIo4JMNWMXGWSIB4ychkuvzT8siBS0VR812VGZhwlgsYUI21S80ERxBLhKuBILySH0VqEMSzqu5yu4ZvPcEvGP6p3fr3dxTAI+vfUWN1bo5gPht7IWwfsCn8jhmAT5/Oj3jSIUpxzIjRmSKmp72V6ViGpKWak7ge5IhnCS5SQqZECcaJm1bpBNXxtMhGMU2mW0HCdtR0V4kqVPDQnmxeqNmuS/2PTXMcfZxUVWa6JwLcXxTmDOoVNt2FEJcGalUYgLKl5K8QLZLqlzT/ZuQXzUNJkoXe+pAq52UsiyE+co5EVAVRXd21te5gvMWmzbjBNhQWF2vtLBse1cWXLVhacGyW7iwcNH2xhaM2zCxYNKGpxY8bcMzC5614diC47o24+i3h68rLt6PfG/kf/swPm0Gcw98BK8Am+BD47BCfgKzsEYPDX6Tn7zoG7dH+5v90/t0d7zsbzAuyEe/0PS5FTiA=</latexit><latexit sha1_base64="HLGAlfkTFDXiDtPnegcV7C0+Ow=">AD6XicdZLfatswFMbleH+6tFvT7XI3YmFjNwv2GHQXGxR2sxYCHSxtIc6CLMuOiCQbSfZijB9id2O3farCHmZymlDFXg8IPp2fviP5+IQZo0p73o3Tcx8fPR470l/+Dps8PB0fMLleYSkwlOWSqvQqQIo4JMNWMXGWSIB4ychkuvzT8siBS0VR812VGZhwlgsYUI21S80ERxBLhKuBILySH0VqEMSzqu5yu4ZvPcEvGP6p3fr3dxTAI+vfUWN1bo5gPht7IWwfsCn8jhmAT5/Oj3jSIUpxzIjRmSKmp72V6ViGpKWak7ge5IhnCS5SQqZECcaJm1bpBNXxtMhGMU2mW0HCdtR0V4kqVPDQnmxeqNmuS/2PTXMcfZxUVWa6JwLcXxTmDOoVNt2FEJcGalUYgLKl5K8QLZLqlzT/ZuQXzUNJkoXe+pAq52UsiyE+co5EVAVRXd21te5gvMWmzbjBNhQWF2vtLBse1cWXLVhacGyW7iwcNH2xhaM2zCxYNKGpxY8bcMzC5614diC47o24+i3h68rLt6PfG/kf/swPm0Gcw98BK8Am+BD47BCfgKzsEYPDX6Tn7zoG7dH+5v90/t0d7zsbzAuyEe/0PS5FTiA=</latexit><latexit sha1_base64="HLGAlfkTFDXiDtPnegcV7C0+Ow=">AD6XicdZLfatswFMbleH+6tFvT7XI3YmFjNwv2GHQXGxR2sxYCHSxtIc6CLMuOiCQbSfZijB9id2O3farCHmZymlDFXg8IPp2fviP5+IQZo0p73o3Tcx8fPR470l/+Dps8PB0fMLleYSkwlOWSqvQqQIo4JMNWMXGWSIB4ychkuvzT8siBS0VR812VGZhwlgsYUI21S80ERxBLhKuBILySH0VqEMSzqu5yu4ZvPcEvGP6p3fr3dxTAI+vfUWN1bo5gPht7IWwfsCn8jhmAT5/Oj3jSIUpxzIjRmSKmp72V6ViGpKWak7ge5IhnCS5SQqZECcaJm1bpBNXxtMhGMU2mW0HCdtR0V4kqVPDQnmxeqNmuS/2PTXMcfZxUVWa6JwLcXxTmDOoVNt2FEJcGalUYgLKl5K8QLZLqlzT/ZuQXzUNJkoXe+pAq52UsiyE+co5EVAVRXd21te5gvMWmzbjBNhQWF2vtLBse1cWXLVhacGyW7iwcNH2xhaM2zCxYNKGpxY8bcMzC5614diC47o24+i3h68rLt6PfG/kf/swPm0Gcw98BK8Am+BD47BCfgKzsEYPDX6Tn7zoG7dH+5v90/t0d7zsbzAuyEe/0PS5FTiA=</latexit><latexit sha1_base64="HLGAlfkTFDXiDtPnegcV7C0+Ow=">AD6XicdZLfatswFMbleH+6tFvT7XI3YmFjNwv2GHQXGxR2sxYCHSxtIc6CLMuOiCQbSfZijB9id2O3farCHmZymlDFXg8IPp2fviP5+IQZo0p73o3Tcx8fPR470l/+Dps8PB0fMLleYSkwlOWSqvQqQIo4JMNWMXGWSIB4ychkuvzT8siBS0VR812VGZhwlgsYUI21S80ERxBLhKuBILySH0VqEMSzqu5yu4ZvPcEvGP6p3fr3dxTAI+vfUWN1bo5gPht7IWwfsCn8jhmAT5/Oj3jSIUpxzIjRmSKmp72V6ViGpKWak7ge5IhnCS5SQqZECcaJm1bpBNXxtMhGMU2mW0HCdtR0V4kqVPDQnmxeqNmuS/2PTXMcfZxUVWa6JwLcXxTmDOoVNt2FEJcGalUYgLKl5K8QLZLqlzT/ZuQXzUNJkoXe+pAq52UsiyE+co5EVAVRXd21te5gvMWmzbjBNhQWF2vtLBse1cWXLVhacGyW7iwcNH2xhaM2zCxYNKGpxY8bcMzC5614diC47o24+i3h68rLt6PfG/kf/swPm0Gcw98BK8Am+BD47BCfgKzsEYPDX6Tn7zoG7dH+5v90/t0d7zsbzAuyEe/0PS5FTiA=</latexit>

x =    x1 x2 . . .   

<latexit sha1_base64="8yW+EA0RjzDQbcV2u2b1N4/oJQ8=">AEOHicdZLfa9swEMfleD+67EfT7XEvYqFjMBbsMtgeVijsZS0EWljaMjsLsiw7opZsJNlLMP7H9r4/Ym97G3vdXzDZTRPFXg8Md/e570m+U5AlVCrH+Wn17Dt3793fedB/+Ojxk93B3tNzmeYCkwlOk1RcBkiShHIyUVQl5DITBLEgIRfB1ceaXxRESJryz2qZkSlDMacRxUjp1Gzw2dIzYMILuAh9AMSU14GOiXolqjmQt9H27CgyYswlRJn/BwLejv+5FAuGwqBYPhjaSoNjlVwZeH62bjr+Ubd31SpBvf2mRxa5NiNhg6I6cx2HXclTMEKzud7fU8P0xzghXOEFSeq6TqWmJhKI4IVXfzyXJEL5CMfG0yxEjclo2867gvs6EMEqF/riCTdZUlIhJuWSBrqxvKNusTv6PebmK3k9LyrNcEY6vD4ryBKoU1suDIRUEq2SpHYQF1XeFeI70tJRe8dYpmAWCxnO19Sd6UToWhJNvOGUM6dX5YVuxlp1ML7Besy4xibkBuRdrTCwaGsXBly04dKAy27jwsBFWxsZMGrD2IBxGx4b8LgNTwx40oZjA46rSj9Ht/34us75wch1Ru7Z2+HRh9XD3AHPwQvwCrjgHTgCn8ApmABsvbOrC+WZ3+3f9m/7T/XpT1rpXkGtsz+w/YMnIR</latexit><latexit sha1_base64="8yW+EA0RjzDQbcV2u2b1N4/oJQ8=">AEOHicdZLfa9swEMfleD+67EfT7XEvYqFjMBbsMtgeVijsZS0EWljaMjsLsiw7opZsJNlLMP7H9r4/Ym97G3vdXzDZTRPFXg8Md/e570m+U5AlVCrH+Wn17Dt3793fedB/+Ojxk93B3tNzmeYCkwlOk1RcBkiShHIyUVQl5DITBLEgIRfB1ceaXxRESJryz2qZkSlDMacRxUjp1Gzw2dIzYMILuAh9AMSU14GOiXolqjmQt9H27CgyYswlRJn/BwLejv+5FAuGwqBYPhjaSoNjlVwZeH62bjr+Ubd31SpBvf2mRxa5NiNhg6I6cx2HXclTMEKzud7fU8P0xzghXOEFSeq6TqWmJhKI4IVXfzyXJEL5CMfG0yxEjclo2867gvs6EMEqF/riCTdZUlIhJuWSBrqxvKNusTv6PebmK3k9LyrNcEY6vD4ryBKoU1suDIRUEq2SpHYQF1XeFeI70tJRe8dYpmAWCxnO19Sd6UToWhJNvOGUM6dX5YVuxlp1ML7Besy4xibkBuRdrTCwaGsXBly04dKAy27jwsBFWxsZMGrD2IBxGx4b8LgNTwx40oZjA46rSj9Ht/34us75wch1Ru7Z2+HRh9XD3AHPwQvwCrjgHTgCn8ApmABsvbOrC+WZ3+3f9m/7T/XpT1rpXkGtsz+w/YMnIR</latexit><latexit sha1_base64="8yW+EA0RjzDQbcV2u2b1N4/oJQ8=">AEOHicdZLfa9swEMfleD+67EfT7XEvYqFjMBbsMtgeVijsZS0EWljaMjsLsiw7opZsJNlLMP7H9r4/Ym97G3vdXzDZTRPFXg8Md/e570m+U5AlVCrH+Wn17Dt3793fedB/+Ojxk93B3tNzmeYCkwlOk1RcBkiShHIyUVQl5DITBLEgIRfB1ceaXxRESJryz2qZkSlDMacRxUjp1Gzw2dIzYMILuAh9AMSU14GOiXolqjmQt9H27CgyYswlRJn/BwLejv+5FAuGwqBYPhjaSoNjlVwZeH62bjr+Ubd31SpBvf2mRxa5NiNhg6I6cx2HXclTMEKzud7fU8P0xzghXOEFSeq6TqWmJhKI4IVXfzyXJEL5CMfG0yxEjclo2867gvs6EMEqF/riCTdZUlIhJuWSBrqxvKNusTv6PebmK3k9LyrNcEY6vD4ryBKoU1suDIRUEq2SpHYQF1XeFeI70tJRe8dYpmAWCxnO19Sd6UToWhJNvOGUM6dX5YVuxlp1ML7Besy4xibkBuRdrTCwaGsXBly04dKAy27jwsBFWxsZMGrD2IBxGx4b8LgNTwx40oZjA46rSj9Ht/34us75wch1Ru7Z2+HRh9XD3AHPwQvwCrjgHTgCn8ApmABsvbOrC+WZ3+3f9m/7T/XpT1rpXkGtsz+w/YMnIR</latexit><latexit sha1_base64="8yW+EA0RjzDQbcV2u2b1N4/oJQ8=">AEOHicdZLfa9swEMfleD+67EfT7XEvYqFjMBbsMtgeVijsZS0EWljaMjsLsiw7opZsJNlLMP7H9r4/Ym97G3vdXzDZTRPFXg8Md/e570m+U5AlVCrH+Wn17Dt3793fedB/+Ojxk93B3tNzmeYCkwlOk1RcBkiShHIyUVQl5DITBLEgIRfB1ceaXxRESJryz2qZkSlDMacRxUjp1Gzw2dIzYMILuAh9AMSU14GOiXolqjmQt9H27CgyYswlRJn/BwLejv+5FAuGwqBYPhjaSoNjlVwZeH62bjr+Ubd31SpBvf2mRxa5NiNhg6I6cx2HXclTMEKzud7fU8P0xzghXOEFSeq6TqWmJhKI4IVXfzyXJEL5CMfG0yxEjclo2867gvs6EMEqF/riCTdZUlIhJuWSBrqxvKNusTv6PebmK3k9LyrNcEY6vD4ryBKoU1suDIRUEq2SpHYQF1XeFeI70tJRe8dYpmAWCxnO19Sd6UToWhJNvOGUM6dX5YVuxlp1ML7Besy4xibkBuRdrTCwaGsXBly04dKAy27jwsBFWxsZMGrD2IBxGx4b8LgNTwx40oZjA46rSj9Ht/34us75wch1Ru7Z2+HRh9XD3AHPwQvwCrjgHTgCn8ApmABsvbOrC+WZ3+3f9m/7T/XpT1rpXkGtsz+w/YMnIR</latexit>
slide-19
SLIDE 19

Time stepping

Can still apply the same scheme: vnew = v + M−1 f(x, v) ∆t xnew = x + vnew ∆t . Algorithm:

  • Compute f = total force acting on each particle
  • For each particle, update v, then update x
slide-20
SLIDE 20
slide-21
SLIDE 21

Mass-spring systems

Collection of particles with springs
 connecting them

xi xj fij fji

slide-22
SLIDE 22
slide-23
SLIDE 23

Mass-spring cloth

Simulate as particles but render as smooth surface

slide-24
SLIDE 24

Mass-spring cloth

Create grid of particles Add springs to model internal forces structural springs

slide-25
SLIDE 25

Mass-spring cloth

Create grid of particles Add springs to model internal forces shear springs

slide-26
SLIDE 26

Mass-spring cloth

Create grid of particles Add springs to model internal forces bending springs

slide-27
SLIDE 27

Mass-spring cloth

Create grid of particles Add springs to model internal forces bending springs

slide-28
SLIDE 28
slide-29
SLIDE 29

Other applications

slide-30
SLIDE 30

Other applications

slide-31
SLIDE 31

Advanced topics

  • Collision handling
  • Time integration schemes
  • Realistic materials using the finite element method
  • Fluids
slide-32
SLIDE 32

Collision handling

Collision detection: check if objects
 intersect, if so return collision point
 and normal

  • Discrete vs. continuous

Collision response: apply normal & frictional forces to fix it

  • Penalty forces / collision impulses / more complex algorithms
slide-33
SLIDE 33

Time integration schemes

Semi-implicit Euler has a “speed limit”:
 If ∆t or spring const too large, solution blows up! Unconditionally stable method: backward Euler: vnew = v + f(xnew, vnew)/m ∆t xnew = x + vnew ∆t . Requires solving a system of equations! (Newton’s method) Analysis of time stepping schemes:

  • Accuracy vs. stability vs. conservation vs. compute cost
slide-34
SLIDE 34

Finite elements

Instead of springs, divide object into collection of volumetric “elements” (triangles in 2D, tetrahedra in 3D)

  • Spring rest length → element rest shape
  • Spring constant → stress-strain relationship

X1 x1 X2 X3 x2 x3

slide-35
SLIDE 35

Fluids

Particles

  • Mass, velocity, pressure, etc.

stored on particles

  • Particles move with fluid

Grids

  • Velocity, pressure, etc. stored
  • n grid vertices / cells
  • Grid doesn’t move

Forces: pressure, viscosity, surface tension, …

slide-36
SLIDE 36

Online notes for further reading

Foundations:

  • Bargteil and Shinar, “An Introduction to Physics-based Animation”


https://cal.cs.umbc.edu/Courses/PhysicsBasedAnimation/ Finite elements for animation:

  • Sifakis and Barbič, “FEM Simulation of 3D Deformable Solids”


http://www.femdefo.org/ Fluid simulation:

  • Bridson and Müller-Fischer, “Fluid Simulation for Computer

Animation”
 https://www.cs.ubc.ca/~rbridson/fluidsimulation/