animating human model in opengl using data from motion capture system
DESCRIPTION
Animating human model in OpenGL using data from motion capture system. Algirdas Beinaravičius Gediminas Mazrimas. Contents. Introduction Motion capture and motion data Used techniques Animating human body Problems Conclusion and possible future tasks. Introduction. Project tasks. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/1.jpg)
Animating human model in OpenGL using data from motion capture
system
Algirdas BeinaravičiusGediminas Mazrimas
![Page 2: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/2.jpg)
Introduction Motion capture and motion data Used techniques Animating human body Problems Conclusion and possible future tasks
Contents
![Page 3: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/3.jpg)
Motion capturing Human body model animation
◦ Skeletal, joint-based structure◦ Animation program environment (C++/OpenGL)◦ Data interpretation◦ Model deformations
Introduction. Project tasks
![Page 4: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/4.jpg)
Human body animation movie
![Page 5: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/5.jpg)
Motion capture◦ What is Mocap?◦ Mocap in everyday life and in our project
Various motion capture systems◦ Optical, Magnetic, Mechanical, Inertial
Motion capture using Vicon Motion System◦ Major elements of Vicon mocap system:
Cameras Suit with retroreflective markers
◦ System preparations Setting up cameras and system calibration Capturing
◦ Post-processing
Motion capture and motion data
![Page 6: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/6.jpg)
Motion capture systemBasic Vicon MX system model
![Page 7: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/7.jpg)
Various motion data formats◦ C3D, ASF/AMC, BVH, FBX
Used formats◦ Default C3D format for Vicon Motion System
Binary format, saves 3D coordinates◦ BVH format. Getting from C3D to BVH
Saves hierarchy (skeleton joint structure) and transformation data
Motion data
![Page 8: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/8.jpg)
Parametric representation of lines in 3D space
Linear blend skinning Quaternions Forward kinematics
Used techniques
![Page 9: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/9.jpg)
Line segment connects separate mesh body parts
Each vertex on the segment is influenced by our LBS algorithm
Parametric representation of lines in 3D space
![Page 10: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/10.jpg)
Parametric representation of the line:◦ L(t) = A + b * tA – starting point, b = A – B vector, t - parameter
Parametric representation of lines in 3D space
A and B could be taken as two points on two separate meshes.
By scaling t – proportional vertex positioning along the line is achieved.
![Page 11: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/11.jpg)
Skin deformations◦ Anatomy (layer) based deformations◦ Direct skin deformation
Linear blend skinning Different implementations
Linear blend skinning
![Page 12: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/12.jpg)
Linear blend skinningBefore animation:•Mesh model and skeleton in T-pose•Mesh vertices assigned influencing joints with weights
![Page 13: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/13.jpg)
Linear blend skinningDeformation
![Page 14: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/14.jpg)
Replace three separate (Z, Y, X) rotations with a single rotation.
Solve the gimbal lock problem.
Quaternions
![Page 15: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/15.jpg)
Four scalars.
q = a + i * b + j * c + k * d
a – real dimensioni * b, j * c, k * d – imaginary dimensions
Quaternions. What is quaternion?
![Page 16: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/16.jpg)
• i * i = j * j = k * k = -1• i * j = k• j * i = -k• j * k = i• k * j = -i• k * i = j• i * k = j
(a + i∗b + j∗c + k∗d) ∗ (e + i∗f + j∗g + k∗h) = (a ∗e - b∗f - c∗g - d∗h) + i∗(a∗f + b∗e + c∗h - d∗g) + j∗(a∗g- b ∗h + e∗c + d∗f) +
k∗(a∗h + b∗g - c∗f + e∗d)
Quaternions. Algebra (multiplication)
![Page 17: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/17.jpg)
Quaternion multiplication represents a rotation.◦ q1 – representation of rotation around X axis◦ q2 – representation of rotation around Y axis◦ q3 – representation of rotation around Z axis◦ q = q1 * q2 * q3 – representation of rotation
around Z Y X axes.
Quaternions. Rotation
![Page 18: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/18.jpg)
q = a + i * b + j * c + k *d◦ a = cos(angle / 2)◦ b = axisX * sin(angle / 2)◦ c = axisY * sin(angle / 2)◦ d = axisZ * sin(angle / 2)
◦ angle = arccos(a) * 2◦ sinA = sqrt(1 – a*a)◦ vectorX = b/sinA◦ vectorY = c/sinA◦ vectorZ = d/sinA
Quaternions. Last bits…
![Page 19: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/19.jpg)
Rotation ends up with unsuspected results Axes of rotations lock together
Gimbal lock
![Page 20: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/20.jpg)
Gimbal lock. Explained Visually
![Page 21: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/21.jpg)
Technique, used to position body parts in 3D scene◦ Each joint has its local transformation◦ Global transformation of each joint depends on
it’s parent transformation
Forward kinematics
![Page 22: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/22.jpg)
From a mathematical point of view:
Mnglobal = Πn
i=0Milocal
n – current joint in the hierarchy
Forward kinematics.
![Page 23: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/23.jpg)
Animating human body
![Page 24: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/24.jpg)
Continuous body mesh model was cut in separate body parts.
Vertices on the lines connecting these parts are influenced on deformation.
Animating human bodyHuman body mesh model
![Page 25: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/25.jpg)
Generate new skeleton image with big joints, define joint structure, define putting mesh over the skeleton?
Animating human bodyInitial program phase
![Page 26: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/26.jpg)
Every vertex on the connecting line is assigned a weight (by its position on the line)◦ P=1..N
Rotation angle for each vertex:◦ RotA = A*w, A – joint rotation angle
Our final LBS formula:
◦
Animating human bodyOur approach to linear blend skinning
![Page 27: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/27.jpg)
Initial BVH pose Exploding knee problem Mesh connections collapsing on complex
deformations
Problems
![Page 28: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/28.jpg)
Initial pose was I-pose, while we needed T-pose:◦ Caused problems while connecting separate mesh
body parts and associating vertices with joints.◦ Noticed only BVH file import into our program
(most of the 3rd party application programs starts at frame 1).
Solution:◦ Joint offsets in hierarchical skeleton structure had
to be changed. After that all rotations also had to be recalculated.
ProblemsInitial BVH pose
![Page 29: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/29.jpg)
ProblemsInitial BVH pose
![Page 30: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/30.jpg)
Appeared:◦ Overall rotation calculated as 3 separate around
Z, Y and X axes.◦ “Gimbal lock” caused faulty vertices positions on
LBS algorithm. Solution:
◦ Use of quaternions, enabling us to calculate single rotation vector with additional filter for rotations.
ProblemsExploding knee problem
![Page 31: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/31.jpg)
Primary tests of our Linear Blend Skinning algorithm (rotation only around 1 axis)
ProblemsMesh connections collapsing on complex deformations
![Page 32: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/32.jpg)
Algorithm results with rotations around all 3 axes.
ProblemsMesh connections collapsing on complex deformations
![Page 33: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/33.jpg)
Possible solutions for current algorithm:◦ Defining different weight values for vertices◦ Cutting mesh body parts differently (cutting out
less)
ProblemsMesh connections collapsing on complex deformations
![Page 34: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/34.jpg)
Conclusion and future work possibilities
![Page 35: Animating human model in OpenGL using data from motion capture system](https://reader030.vdocuments.us/reader030/viewer/2022033105/56815bb9550346895dc9b4c5/html5/thumbnails/35.jpg)
?
Questions, comments