Introduction to Computer Graphics β Modeling (1) β
April 18, 2019 Kenshi Takayama
Introduction to Computer Graphics Modeling (1) April 18, 2019 - - PowerPoint PPT Presentation
Introduction to Computer Graphics Modeling (1) April 18, 2019 Kenshi Takayama Some additional notes on quaternions 2 Another explanation for quaternions (overview) 1. Any rotation can be decomposed into even number of reflections 2.
April 18, 2019 Kenshi Takayama
2
π Τ¦
ππ π Τ¦
π Τ¦
π¦ = cos π
2 + π sin π 2
Τ¦ π¦ cos π
2 β π sin π 2
3
4
π 2 π 4
π
π 2 3π 4
π
π 2
π
One way Another way
π + π π£
π + Τ¦ π€
π1 + π€1 π2 + π€2 β π1π2 β π€1 β π€2 + π1π€2 + π2π€1 + π€1 Γ π€2
π€1 π€2 = βπ€1 β π€2 + π€1 Γ π€2
5
Τ¦ π€ Τ¦ π€ = β Τ¦ π€ 2 Τ¦ π€β1 = β Τ¦ π€ Τ¦ π€ 2
If Τ¦ π€ β π₯ = 0 , then Τ¦ π€ π₯ = βπ₯ Τ¦ π€
Τ¦ π€ Γ Τ¦ π€ is always zero Scalar part Vector part Τ¦ π€ π₯ = Τ¦ π€ Γ π₯ = βπ₯ Γ Τ¦ π€ = βπ₯ Τ¦ π€ Multiplying Τ¦ π€ to rhs produces 1
π¦ across a plane
π: π Τ¦
π Τ¦
π¦ β β Τ¦ π Τ¦ π¦ Τ¦ πβ1
π Τ¦
π π Τ¦
π¦ + π Τ¦ π§ = π π Τ¦
π Τ¦
π¦ + π π Τ¦
π Τ¦
π§
π gets mapped to β Τ¦ π :
π Τ¦
π Τ¦
π = β Τ¦ π Τ¦ π Τ¦ πβ1 = β Τ¦ π
π¦ satisfies Τ¦ π¦ β Τ¦ π = 0 (i.e. on the plane), Τ¦ π¦ doesnβt move:
π Τ¦
π Τ¦
π¦ = β Τ¦ π Τ¦ π¦ Τ¦ πβ1 = β β Τ¦ π¦ Τ¦ π Τ¦ πβ1 = Τ¦ π¦
6
Τ¦ π¦ π Τ¦
π Τ¦
π¦ Τ¦ π π
https://math.stackexchange.com/a/7263
Because if Τ¦ π¦ β Τ¦ π = 0 , then Τ¦ π Τ¦ π¦ = β Τ¦ π¦ Τ¦ π
π¦ β π β Τ¦ π¦ π
π€ β π Γ Τ¦ π¦
= Τ¦ π€
7
https://thimbleprojects.org/kenshi84/50110/demo/quaternion-schematic.html
π β Τ¦ π¦ π
8
1st reflectionοΌ
Τ¦ π β Τ¦ π€
2nd reflectionοΌ
Τ¦ π β β sin π
2 π£ + cos π 2 Τ¦
π€
Top view
https://thimbleprojects.org/kenshi84/50110/demo/quaternion-schematic.html
π 2
π Τ¦
π¦ = ππ β Τ¦ π Τ¦ π¦ Τ¦ πβ1 = β Τ¦ π β Τ¦ π Τ¦ π¦ Τ¦ πβ1 Τ¦ πβ1 = Τ¦ π Τ¦ π Τ¦ π¦ Τ¦ πβ1 Τ¦ πβ1
Τ¦ π β Τ¦ π€, π β β sin π
2 π£ + cos π 2 Τ¦
π€ to the above
π Τ¦ π οΌ
Τ¦ π β Τ¦ π = β sin π
2 π£ + cos π 2 Τ¦
π€ β Τ¦ π€ = π2 cos π
2
Τ¦ π Γ Τ¦ π = β sin π
2 π£ + cos π 2 Τ¦
π€ Γ Τ¦ π€ = βπ2 sin π
2 π
Therefore,
Τ¦ π Τ¦ π = β Τ¦ π β Τ¦ π + Τ¦ π Γ Τ¦ π = βπ2 cos π
2 + π sin π 2
πβ1 Τ¦ πβ1 = π π
π4 is analogousοΌ Τ¦
πβ1 Τ¦ πβ1 = βπβ2 cos π
2 β π sin π 2
ππ, π Τ¦ π¦ = ππ π Τ¦
π Τ¦
π¦ = βπ2 cos π
2 + π sin π 2
Τ¦ π¦ βπβ2 cos π
2 β π sin π 2
= cos π
2 + π sin π 2
Τ¦ π¦ cos π
2 β π sin π 2 9
(because π£ β Τ¦ π€ = 0 ) (because π£ Γ Τ¦ π€ = π2π )
represented as unit quaternions
ο¨ unit circle in 4D space
is represented as another quaternion
(double cover)
hypersphere represents interpolation of these poses
10
β4 π = cos π
2 + π sin π 2
π βπ (1, 0,0,0) (-1, 0,0,0) (0, πx,πy,πz) (0, -πx,-πy,-πz) π=0 π=π π=2π π=3π
π = π cos π
2 + π sin π 2 , πβ1 = π β1 cos π 2 β π sin π 2
π Τ¦ π¦ πβ1 = π cos π
2 + π sin π 2
Τ¦ π¦ π β1 cos π
2 β π sin π 2
= cos π
2 + π sin π 2
Τ¦ π¦ cos π
2 β π sin π 2
ο¨ so, normalization isnβt needed?
coordinate transformation (because inefficient)
Τ¦ π¦ β π β Τ¦ π¦ π cos π + π Γ Τ¦ π¦ sin π + π β Τ¦ π¦ π
11
π = 1
π1 π2
π1+π2 2
12
π¦ π’ = π’ β sin π’ π§ π’ = 1 β cos π’
13
14
π¦ 0 = π¦0 π¦ 1 = π¦1 π¦β²(0) = π¦0
β²
π¦β² 1 = π¦1
β²
π¦ 0 = π0 = π¦0 π¦ 1 = π0 + π1 + π2 + π3 = π¦1 π¦β² 0 = π1 = π¦0
β²
π¦β² 1 = π1 + 2 π2 + 3 π3 = π¦1
β²
ο¨ π0 = π¦0 π1 = π¦0
β²
π2 = β3 π¦0 + 3 π¦1 β 2 π¦0
β² β π¦1 β²
π3 = 2 π¦0 β 2 π¦1 + π¦0
β² + π¦1 β² t x 1
1, π2
arbitrary domain (2D, 3D, ...)
1
15
π π’ = 1 β π’ π0 + π’ π2 π π’ = ? π
1
π2 π0
t=0 t=1
1
12 π’ = 1 β π’ π 1 + π’ π2
12 1 = π2
As π’ changes 0 β 1 , smoothly transition from π01 to π
12
12 π’
= 1 β π’ 1 β π’ π0 + π’ π
1 + π’
1 β π’ π
1 + π’ π2
= 1 β π’ 2π0 + 2π’ 1 β π’ π
1 + π’2π2
16
π
1
π2 π0 π
12 π’ π’ π’ π’ 1 β π’ 1 β π’
π01 π’ π012 π’
1 β π’ Quadratic Bezier curve
1
12 π’ = 1 β π’ π 1 + π’ π2
12 1 = π2
As π’ changes 0 β 1 , smoothly transition from π01 to π
12
12 π’
= 1 β π’ 1 β π’ π0 + π’ π
1 + π’
1 β π’ π
1 + π’ π2
= 1 β π’ 2π0 + 2π’ 1 β π’ π
1 + π’2π2
17
π
1
π2 π0
Quadratic Bezier curve
1, π2 π3:
123
123 π’
= 1 β π’
1 β π’ 2π0 + 2π’ 1 β π’ π
1 + π’2π2 + π’
1 β π’ 2π
1 + 2π’ 1 β π’ π2 + π’2π 3
= 1 β π’ 3π0 + 3π’ 1 β π’ 2π
1 + 3π’2 1 β π’ π2 + π’3π3
18
π
123 π’
π012 π’ π0123 π’
π’ 1 β π’
π
1
π3 π0 π2
Cubic Bezier curve
1, π2 π3:
123
123 π’
= 1 β π’
1 β π’ 2π0 + 2π’ 1 β π’ π
1 + π’2π2 + π’
1 β π’ 2π
1 + 2π’ 1 β π’ π2 + π’2π 3
= 1 β π’ 3π0 + 3π’ 1 β π’ 2π
1 + 3π’2 1 β π’ π2 + π’3π3
19
π
1
π3 π0 π2 π0123 π’
Cubic Bezier curve
π
π=0 π πCπ π’π 1 β π’ πβπ ππ
20
π(π’)
Bernstein basis function
1 β π’ 4π0 + 4π’ 1 β π’ 3π
1
+ 6π’2 1 β π’ 2π2 + 4π’3 1 β π’ π3 + π’4π
4
1 β π’ 5π0 + 5π’ 1 β π’ 4π
1
+ 10π’2 1 β π’ 3π2 + 10π’3 1 β π’ 2π3 + 5π’4 1 β π’ π
4
+ π’5π5
Quartic (4th) Quintic (5th)
1 + 3π’2 1 β π’ π2 + π’3π3
1 + 3 2π’ 1 β π’ β π’2 π2 + 3π’2π3
1
ο¨ π
1 = π0 + 1 3 πβ² 0
ο¨ π2 = π3 β
1 3 πβ² 1
21
π
1
π3 π0 π2
πβ²(0) πβ²(1)
22
line, split by de Casteljauβs algorithm
23
βWeighted averageβ of control points
1 + π’2
π
2
= π0 π’ π
0 + π1 π’
π
1+ π2 π’ π2
π0 π’ + π1 π’ + π2 π’ = 1 βπ’
ππ π’ = π₯π ππ(π’)
ππ
β² π’ = ππ π’ Οπ ππ π’
24
w0 = w2 = 1
Non-polynomial curve ο¨ can represent arcs etc.
25
t x t0 t1 t2 t3 t4 t5 x0(t) x1(t) x2(t) x3(t) x4(t) Curve tool in PowerPoint
26
π’πβ1 π’π π’π+1 π’π+2 π’ π¦ π¦π π¦πβ1 π¦π+1 π¦π+2 π¦π(π’)
27
π’πβ1 π’π π’π+1 π’π+2 π’ π¦ ππβ1(π’) ππ(π’) ππ+1(π’)
28
π’πβ1 π’π π’π+1 π’π+2 π’ π¦ ππ(π’) ππ+1(π’)
29
π’πβ1 π’π π’π+1 π’π+2 π’ π¦ π¦π(π’)
Summary:
curve passing through its adjacent CPs
derivative constraints at both ends
30
A recursive evaluation algorithm for a class of Catmull-Rom splines [Barry,Colgman,SIGGRAPH88]
π π’0 = π0 π π’1 = π
1
π π’2 = π2 π π’3 = π3 π π’ π’1 β€ π’ β€ π’2
π’π = π’πβ1 + 1
π’π = π’πβ1 + ππβ1 β ππ
π’π = π’πβ1 + ππβ1 β ππ
31
Parameterization of Catmull-Rom Curves [Yuksel,Schaefer,Keyser,CAD11]
32
Parameterization of Catmull-Rom Curves [Yuksel,Schaefer,Keyser,CAD11]
33
π-Curves: Interpolation at Local Maximum Curvature [Yan, Schiller, Wilensky, Carr, Schaefer, SIGGRAPH 2017] Control points Catmull-Rom π-Curves
https://www.youtube.com/watch?v=NvyYvj3q1AU
Curvature Tool in Illustrator
ο¨ reverse compute control points of quadratic Bezier
34
Curvature maxima
i-th quad Bezier (i+1)-th quad Bezier
Possible configurations with cubic Bezier
35
Global/nonlinear formulation = iterative computation Change of one CP = change of entire shape βBucklingβ always occurs on CPs Curvature discontinuity at convex/concave boundary
ο¨ Next lecture
http://geometrie.foretnik.net/files/NURBS-en.swf
36
π π‘, π’ = ΰ·
π=0 3
ΰ·
π=0 3
ππ
3 π‘ π π 3 π’ πππ
37
Bernstein basis functions π0
3 π’ = 1 β π’ 3
π1
3 π’ = 3π’ 1 β π’ 2
π2
3 π’ = 3π’2(1 β π’)
π3
3 π’ = π’3
38
39