View
6
Download
0
Category
Preview:
Citation preview
Ž. M, ZEMRIS, FER 1-1
1. Definiranje objekata, putanja i pokreta
• Objekte putanje i pokrete potrebno je prenijeti iz stvarnog svijeta u
računalo
– različite putanje objekata, orijentacije, izobličavanje, promjene boje
• Način ostvarivanja objekata za animaciju
– definiranje objekata i putanja
– uzorkovanje objekata i putanja
– proceduralno modeliranje objekata
Ž. M, ZEMRIS, FER 1-2
1.1 Alati za definiranje animacije
• alati za izgradnju objekata, scene, animacije i pripadni zapisi datoteka
– različiti alati za različite namjene
• definiranje objekata, scene, (AutoCAD, Microstation, Catia) - strojarstvo
• definiranje pokreta (3DSMax, SoftImage, Maya) - RG
• izrada prikaza (MentalRay, RendermanPixar)
• specijalni vizualni učinci - dodaci alatima, skriptni jezici,
• alati za izradu igara, Unity http://threejsexporter.nickjanssen.com/, Unreal Engine UE4
• primjeri alata:
– Maya ’98 – Alias (/Wavefront) ’95 SGI (objekti, scena, pokreti …)
– 3DS MAX
– LightWave, Modo
– Cinema 4D, Houdini,
– SoftImage (objekti, scena, pokreti, Behavior, Batch)
– MentalRay (‘88 samostalan paket za izradu prikaza Nvidia), Renderman-Pixar,
– (free, open source -), Blender (modeliranje), PowRay (izrada prikaza)
Godot (game engine)
– Web alati za modeliranje Clara.io, API za web aplikacije Three.js
http://usa.autodesk.com/adsk/servlet/index?id=2704278&siteID=123112http://www.bentley.com/en-US/Products/MicroStation/http://www.3ds.com/products-solutions/brands/CATIA/https://renderman.pixar.com/https://unity3d.com/http://threejsexporter.nickjanssen.com/https://www.unrealengine.com/https://www.autodesk.eu/products/mayahttps://www.autodesk.eu/products/mayahttps://www.autodesk.eu/products/3ds-max/overviewhttps://www.lightwave3d.com/products/https://www.foundry.com/products/modohttp://www.maxon-computer.com/http://www.maxon-computer.com/http://www.maxon-computer.com/http://www.sidefx.com/http://www.softimage.com/http://www.nvidia.com/object/nvidia-mental-ray.htmlhttp://www.nvidia.com/object/nvidia-mental-ray.htmlhttps://renderman.pixar.com/http://www.blender3d.org/http://www.povray.org/https://godotengine.org/https://godotengine.org/https://clara.io/http://threejs.org/
Ž. M, ZEMRIS, FER 1-3
• objekti u animaciji - primjeri
– modeliranje objekata
• dijelovi objekata
– ishodište (engl. pivot point)
– orijentacija (početni položaj)
– svojstva (npr. teksture)
– ograničenja u pokretljivosti
– modeliranje povezanosti dijelova objekta
• stvaranje kostura - skeleta (engl. rigging)
• povezivanje kože s kosturom (engl. skinning) https://threejs.org/examples/#webgl_animation_skinning_morph
– modeliranje pokreta
• tehnike niže razine – npr:
– animator treba odrediti kako će se objekt gibati u vremenu i prostoru (putanju), pokrete pomicanjem kostiju kostura
– 3DS Max – definiranje ključnih okvira (engl. Track view) • http://threejs.org/examples/webgl_animation_skinning_blending.html
• http://alteredqualia.com/three/examples/webgl_animation_skinning_tf2.html
• tehnike više razine
https://threejs.org/examples/#webgl_animation_skinning_morphhttps://threejs.org/examples/#webgl_animation_skinning_morphhttp://threejs.org/examples/webgl_animation_skinning_blending.htmlhttp://alteredqualia.com/three/examples/webgl_animation_skinning_tf2.html
Ž. M, ZEMRIS, FER 1-4
• tehnike niže razine
– animator ima ideju koju želi ostvariti
– zadaje ključne položaje i dovoljni informacije uz te položaje
– interpolacija (in-betweening)
• tehnike više razine
– pravila i ograničenja koja utječu na ponašanje objekata, te
postavlja početne uvjete
– kretanje objekata je upravljano algoritmom ili modelom
– proceduralno generiranje objekata, scene, kretanja https://demo.marpi.pl/spiders/ https://demo.marpi.pl/spawning_pool/
– fizikalno temeljeni pokreti, sudari (proceduralna animacija) – http://graphics.stanford.edu/~fedkiw/animations/Burning_Paper.avi
– http://webgl-fire.appspot.com/html/fire.html Chrome
• podjela na tehnike više i niže razine više je pedagoška
– u praksi je to kombinacija obje tehnike
https://demo.marpi.pl/spiders/https://demo.marpi.pl/spawning_pool/http://graphics.stanford.edu/~fedkiw/animations/Burning_Paper.avihttp://graphics.stanford.edu/~fedkiw/animations/Burning_Paper.avihttp://graphics.stanford.edu/~fedkiw/animations/Burning_Paper.avihttp://graphics.stanford.edu/~fedkiw/animations/Burning_Paper.avihttp://webgl-fire.appspot.com/html/fire.htmlhttp://webgl-fire.appspot.com/html/fire.htmlhttp://webgl-fire.appspot.com/html/fire.html
Ž. M, ZEMRIS, FER 1-5
1.2 Zadavanje i praćenje putanje
– vrijednosti parametara u ključnim okvirima (položajima) koje je
potrebno interpolirati)
• trajektorija objekta ili kamere
• kutovi između spojnih dijelova robota
• žarišna udaljenost kamere, boja izvora ….
– odabir odgovarajuće krivulje
• modeliranje krivulje
– aproksimacijska krivulja
– Bezier, B-spline
• uzorkovanje putanje
– interpolacijska krivulja
– Carmull-Rom splajn, Hermitova krivulja
– odabir kontinuiteta krivulje – prva, druga derivacija
– poželjan lokalni nadzor
Ž. M, ZEMRIS, FER 1-6
1.2.1 Zadavanje putanje
Bezier-ova krivulja nije dovoljno dobra → SEGMENTIRANJE KRIVULJE https://stemkoski.github.io/Three.js/ParticleSystem-PathMovement.html http://www.theparticle.com/applets/nyu/BezierApplet/
– povezivanje segmenata uz očuvanje kontinuiteta na spojevima segmenata C0,
C1, C2 ... http://www.cs.vu.nl/~eliens/papers/media/@vr-vrml-math-FlyDemo.wrl –
– korištenje crtaće letvice http://www.cs.vu.nl/~eliens/media/@vr-vrml-math-FlyInt.wrl
• letvica se učvrsti i optereti utezima tako da postigne željeni oblik
• crtač zatim iscrta krivulju
• letvica zauzme položaj (formira krivulju) minimalne potencijalne energije
letvica se savija po zakonu progiba opterećene grede:
mostimoment troti,elastičnosmodulYungov
gredu na djeduje kojimoment
funkcijukubnu dati će rješenje
IE
M
dxIE
Myd
IE
M
dx
yd 222
2
https://stemkoski.github.io/Three.js/ParticleSystem-PathMovement.htmlhttps://stemkoski.github.io/Three.js/ParticleSystem-PathMovement.htmlhttps://stemkoski.github.io/Three.js/ParticleSystem-PathMovement.htmlhttp://www.theparticle.com/applets/nyu/BezierApplet/http://www.cs.vu.nl/~eliens/papers/media/@vr-vrml-math-FlyDemo.wrlhttp://www.cs.vu.nl/~eliens/papers/media/@vr-vrml-math-FlyDemo.wrlhttp://www.cs.vu.nl/~eliens/papers/media/@vr-vrml-math-FlyDemo.wrlhttp://www.cs.vu.nl/~eliens/papers/media/@vr-vrml-math-FlyDemo.wrlhttp://www.cs.vu.nl/~eliens/papers/media/@vr-vrml-math-FlyDemo.wrlhttp://www.cs.vu.nl/~eliens/papers/media/@vr-vrml-math-FlyDemo.wrlhttp://www.cs.vu.nl/~eliens/papers/media/@vr-vrml-math-FlyDemo.wrlhttp://www.cs.vu.nl/~eliens/media/@vr-vrml-math-FlyInt.wrlhttp://www.cs.vu.nl/~eliens/media/@vr-vrml-math-FlyInt.wrlhttp://www.cs.vu.nl/~eliens/media/@vr-vrml-math-FlyInt.wrlhttp://www.cs.vu.nl/~eliens/media/@vr-vrml-math-FlyInt.wrlhttp://www.cs.vu.nl/~eliens/media/@vr-vrml-math-FlyInt.wrlhttp://www.cs.vu.nl/~eliens/media/@vr-vrml-math-FlyInt.wrlhttp://www.cs.vu.nl/~eliens/media/@vr-vrml-math-FlyInt.wrl
Ž. M, ZEMRIS, FER 1-7
B - KRIVULJA
B - elastična krivulja ima svojstvo elastične letvice (bazni “spline”)
- kontinuitet je postignut dijeljenjem kontrolnih točaka između više
segmenata
- prirodni splajn se može prikazati kao težinska suma baznih funkcija
– APROKSIMACIJSKA B-KRIVULJA
• k stupanj krivulje (broj kontrolnih točaka ne utječe na stupanj)
• ri kontrolne točke - ukupno ih ima n+1
• Ni,k bazne (težinske) funkcije - polinomi stupnja k
• ui vrijednosti uzlova (engl. knot values)
• UKNOT = {ui} vektor uzlova
uNrup kin
i
i ,
0
Ž. M, ZEMRIS, FER 1-8
Određivanje baznih funkcija
• Ako je nazivnik jednak nuli vrijednost razlomka je nula.
• Uzlovi mogu biti višestruki.
• ui+1 - ui = konst. Krivulja se naziva UNIFORMNA krivulja.
Inače krivulja je NEUNIFORMNA.
einač
uuuzauN
ii
i
1
0,0
1
uNuu
uuuN
uu
uuuN ki
iki
kiki
iki
iki 1,1
11
11,,
Ž. M, ZEMRIS, FER 1-9
Vektor uzlova
• veza između broja točaka stupnja krivulje i vektora uzlova
• n + 1 - broj kontrolnih točaka
• k - stupanj krivulje
• m + 1 - broj vrijednosti u vektoru uzlova
• broj segmenata krivulje
broj segmenata krivulje = n - k + 1= m - 2k
• specijalan slučaj m - 2k - 1 = 0 KRIVULJA BEZIERA
(preko Bernsteinovih polinoma)
1121
2..212..3210..00
kkmk
KNOT kmkmkmU
1 knm
Ž. M, ZEMRIS, FER 1-10
* PRIMJER
Neperiodička kvadratna B-krivulja određene je sa šest kontrolnih točaka.
Odrediti segmente krivulje.
• k = 2
• n + 1 = 6
• m = n + k +1 = 8
1. Korak:
uNrup ii
i 0,
5
0
40,740,6
4,30,53,20,4
2,10,31,00,2
00,100,0
11
11
11
11
NN
NN
NN
NN
u
N
N2,0
0 4 3 1 2
1
𝑈𝐾𝑁𝑂𝑇 =𝑢0 𝑢1 𝑢20 0 0
𝑘+1
𝑢3 𝑢4 𝑢51 2 3
𝑚−2𝑘−1
𝑢6 𝑢7 𝑢84 4 4
𝑘+1
Ž. M, ZEMRIS, FER 1-11
* PRIMJER
Neperiodička kvadratna B-krivulja određene je sa šest kontrolnih točaka.
Odrediti segmente krivulje.
• k = 2
• n + 1 = 6
• m = n + k +1 = 8
1. Korak:
uNrup ii
i 0,
5
0
40,740,6
4,30,53,20,4
2,10,31,00,2
00,100,0
11
11
11
11
NN
NN
NN
NN
u
N
N2,0 N3,0
0 4 3 1 2
1
𝑈𝐾𝑁𝑂𝑇 =𝑢0 𝑢1 𝑢20 0 0
𝑘+1
𝑢3 𝑢4 𝑢51 2 3
𝑚−2𝑘−1
𝑢6 𝑢7 𝑢84 4 4
𝑘+1
Ž. M, ZEMRIS, FER 1-12
* PRIMJER
Neperiodička kvadratna B-krivulja određene je sa šest kontrolnih točaka.
Odrediti segmente krivulje.
• k = 2
• n + 1 = 6
• m = n + k +1 = 8
1. Korak:
uNrup ii
i 0,
5
0
40,740,6
4,30,53,20,4
2,10,31,00,2
00,100,0
11
11
11
11
NN
NN
NN
NN
u
N
N2,0 N3,0 N4,0
0 4 3 1 2
1
𝑈𝐾𝑁𝑂𝑇 =𝑢0 𝑢1 𝑢20 0 0
𝑘+1
𝑢3 𝑢4 𝑢51 2 3
𝑚−2𝑘−1
𝑢6 𝑢7 𝑢84 4 4
𝑘+1
Ž. M, ZEMRIS, FER 1-13
* PRIMJER
Neperiodička kvadratna B-krivulja određene je sa šest kontrolnih točaka.
Odrediti segmente krivulje.
• k = 2
• n + 1 = 6
• m = n + k +1 = 8
1. Korak:
uNrup ii
i 0,
5
0
40,740,6
4,30,53,20,4
2,10,31,00,2
00,100,0
11
11
11
11
NN
NN
NN
NN
u
N
N2,0 N3,0 N4,0 N5,0
0 4 3 1 2
1
𝑈𝐾𝑁𝑂𝑇 =𝑢0 𝑢1 𝑢20 0 0
𝑘+1
𝑢3 𝑢4 𝑢51 2 3
𝑚−2𝑘−1
𝑢6 𝑢7 𝑢84 4 4
𝑘+1
𝑁0,1 =𝑢 − 𝑢0𝑢1 − 𝑢0
𝑁0,0 +𝑢2 − 𝑢
𝑢2 − 𝑢1𝑁1,0 = 0
[0]
𝑁1,1 =𝑢 − 𝑢1𝑢2 − 𝑢1
𝑁1,0 +𝑢3 − 𝑢
𝑢3 − 𝑢2𝑁2,0 = (1 − 𝑢)
[0, 1]
𝑁2,1 =𝑢 − 𝑢2𝑢3 − 𝑢2
𝑁2,0 +𝑢4 − 𝑢
𝑢4 − 𝑢3𝑁3,0 = 𝑢
[0,1]+ (2 − 𝑢)
[1, 2]
𝑁3,1 = (𝑢 − 1) [1, 2]
+ (3 − 𝑢) [2,3]
𝑁4,1 = (𝑢 − 2) [2, 3]
+ (4 − 𝑢) [3,4]
𝑁5,1 = (𝑢 − 3) [3, 4]
+ 0 [4]
𝑁6,1 = 0 [4]
Ž. M, ZEMRIS, FER 1-14
2. Korak:
𝑁𝑖,1(𝑢) =𝑢 − 𝑢𝑖
𝑢𝑖+1 − 𝑢𝑖𝑁𝑖,0(𝑢) +
𝑢𝑖+2 − 𝑢
𝑢𝑖+2 − 𝑢𝑖+1𝑁𝑖+1,0(𝑢)
u
N
0 4 3 1 2
N1,1 1
𝑈𝐾𝑁𝑂𝑇 =𝑢0 𝑢1 𝑢20 0 0
𝑘+1
𝑢3 𝑢4 𝑢51 2 3
𝑚−2𝑘−1
𝑢6 𝑢7 𝑢84 4 4
𝑘+1
𝑁0,1 =𝑢 − 𝑢0𝑢1 − 𝑢0
𝑁0,0 +𝑢2 − 𝑢
𝑢2 − 𝑢1𝑁1,0 = 0
[0]
𝑁1,1 =𝑢 − 𝑢1𝑢2 − 𝑢1
𝑁1,0 +𝑢3 − 𝑢
𝑢3 − 𝑢2𝑁2,0 = (1 − 𝑢)
[0, 1]
𝑁2,1 =𝑢 − 𝑢2𝑢3 − 𝑢2
𝑁2,0 +𝑢4 − 𝑢
𝑢4 − 𝑢3𝑁3,0 = 𝑢
[0,1]+ (2 − 𝑢)
[1, 2]
𝑁3,1 = (𝑢 − 1) [1, 2]
+ (3 − 𝑢) [2,3]
𝑁4,1 = (𝑢 − 2) [2, 3]
+ (4 − 𝑢) [3,4]
𝑁5,1 = (𝑢 − 3) [3, 4]
+ 0 [4]
𝑁6,1 = 0 [4]
Ž. M, ZEMRIS, FER 1-15
2. Korak:
𝑁𝑖,1(𝑢) =𝑢 − 𝑢𝑖
𝑢𝑖+1 − 𝑢𝑖𝑁𝑖,0(𝑢) +
𝑢𝑖+2 − 𝑢
𝑢𝑖+2 − 𝑢𝑖+1𝑁𝑖+1,0(𝑢)
u
N N2,1
0 4 3 1 2
N1,1 1
𝑈𝐾𝑁𝑂𝑇 =𝑢0 𝑢1 𝑢20 0 0
𝑘+1
𝑢3 𝑢4 𝑢51 2 3
𝑚−2𝑘−1
𝑢6 𝑢7 𝑢84 4 4
𝑘+1
Ž. M, ZEMRIS, FER 1-16
2. Korak:
𝑁𝑖,1(𝑢) =𝑢 − 𝑢𝑖
𝑢𝑖+1 − 𝑢𝑖𝑁𝑖,0(𝑢) +
𝑢𝑖+2 − 𝑢
𝑢𝑖+2 − 𝑢𝑖+1𝑁𝑖+1,0(𝑢)
u
N N2,1 N3,1 N4,1 N5,1
0 4 3 1 2
N1,1 1
𝑁0,1 =𝑢 − 𝑢0𝑢1 − 𝑢0
𝑁0,0 +𝑢2 − 𝑢
𝑢2 − 𝑢1𝑁1,0 = 0
[0]
𝑁1,1 =𝑢 − 𝑢1𝑢2 − 𝑢1
𝑁1,0 +𝑢3 − 𝑢
𝑢3 − 𝑢2𝑁2,0 = (1 − 𝑢)
[0, 1]
𝑁2,1 =𝑢 − 𝑢2𝑢3 − 𝑢2
𝑁2,0 +𝑢4 − 𝑢
𝑢4 − 𝑢3𝑁3,0 = 𝑢
[0,1]+ (2 − 𝑢)
[1, 2]
𝑁3,1 = (𝑢 − 1) [1, 2]
+ (3 − 𝑢) [2,3]
𝑁4,1 = (𝑢 − 2) [2, 3]
+ (4 − 𝑢) [3,4]
𝑁5,1 = (𝑢 − 3) [3, 4]
+ 0 [4]
𝑁6,1 = 0 [4]
𝑈𝐾𝑁𝑂𝑇 =𝑢0 𝑢1 𝑢20 0 0
𝑘+1
𝑢3 𝑢4 𝑢51 2 3
𝑚−2𝑘−1
𝑢6 𝑢7 𝑢84 4 4
𝑘+1
Ž. M, ZEMRIS, FER 1-17
3. Korak:
uNuu
uuuN
uu
uuuN i
ii
ii
ii
ii 1,1
13
31,
2
2,
3,2
2
2,1
2
1,0
2
2,2
2,1
2
1,0
2,1
2
1,01,01,2
24
41,1
13
12,1
1,0
2
1,1
13
31,0
02
02,0
2
3
2
362
2
2
234
2
2
2
2
21
1
uuuuN
uu
u
uuuuuN
uu
uuN
uu
uuN
uNuu
uuN
uu
uuN
1
876
12
543
1
210
444321000
kkmk
KNOT
uuuuuuuuuU
Ž. M, ZEMRIS, FER 1-18
4,3
2
2,5
4,3
2
3,2
2
2,4
4,3
2
3,2
2
2,1
2
2,3
3
16102
3
2
2
2
4
2
11102
2
1
uN
uuu
N
uuuuN
u
N
N1,2
0 4 3 1 2
N0,2
Ž. M, ZEMRIS, FER 1-19
4,3
2
2,5
4,3
2
3,2
2
2,4
4,3
2
3,2
2
2,1
2
2,3
3
16102
3
2
2
2
4
2
11102
2
1
uN
uuu
N
uuuuN
u
N
N1,2 N2,2 N4,2
N5,2
0 4 3 1 2
N0,2 N3,2
Ž. M, ZEMRIS, FER 1-20
Određivanje segmenata krivulje:
uNrup ii
i 2,
5
0
uN i 2, [0, 1] [1, 2] [2, 3] [3, 4]
0r
122 uu
1r
uu 22
3 2 222
1 2 uu
2r
2
2u
2
332 uu
2
93
2
1 2 uu
3r
2
1
2
1 2 uu2
1152 uu 84
2
1 2 uu
4r
222
1 2 uu 16102
3 2 uu
5r
962 uu
Ž. M, ZEMRIS, FER 1-21
Parametar u mijenja se od 0-1, 1-2, 2-3, 3-4
Segment 1: u [0, 1]
Segment 2: u [1, 2] Reparametrizacija u=t+1, t [0, 1]:
3
2
1
2
2
2
1
2
32
1322
11
2
1
1
r
r
r
uuup
3
2
1
2
2
02
1
2
10112
11
2
1
1
r
r
r
tttp
2
1
0
2
1
001
0222
1
2
31
1
r
r
r
uuup
Ž. M, ZEMRIS, FER 1-22
Segment 3: u [2, 3] Reparametrizacija u=t+2, t [0, 1]:
Segment 4: u [3, 4] Reparametrizacija u=t+3, t [0, 1]:
n-3k+3=2 periodička segmenta segmenti 2 i 3 su isti!
4
3
2
2
3
22
4
2
9
2532
11
2
1
1
r
r
r
uuup
5
4
3
2
4
9168
6104
12
3
2
1
1
r
r
r
uuup
5
4
3
2
4
02
1
2
1011
12
3
2
1
1
r
r
r
tttp
4
3
2
2
3
02
1
2
10112
11
2
1
1
r
r
r
tttp
Ž. M, ZEMRIS, FER 1-23
Periodički segment
• Unutar neperiodičke B-krivulje stupnja k postoje periodički segmenti:
• kada je zadan veliki broj točaka središnji dio krivulje jednostavnije se
može računati uporabom izraza za periodički segment
Npr: periodički segment kubne B-krivulje (k=3):
• http://www.netgraphics.sk/uniform-non-rational-cubic-b-spline http://intanto.net/geox.html
• broj periodičkih segmenata
1423 kmilikn
2433 kmilikn
2
1
1
23
0141
0303
0363
1331
6
11
i
i
i
i
i
r
r
r
r
ttttp
http://www.netgraphics.sk/uniform-non-rational-cubic-b-splinehttp://www.netgraphics.sk/uniform-non-rational-cubic-b-splinehttp://www.netgraphics.sk/uniform-non-rational-cubic-b-splinehttp://www.netgraphics.sk/uniform-non-rational-cubic-b-splinehttp://www.netgraphics.sk/uniform-non-rational-cubic-b-splinehttp://www.netgraphics.sk/uniform-non-rational-cubic-b-splinehttp://www.netgraphics.sk/uniform-non-rational-cubic-b-splinehttp://www.netgraphics.sk/uniform-non-rational-cubic-b-splinehttp://www.netgraphics.sk/uniform-non-rational-cubic-b-splinehttp://www.netgraphics.sk/uniform-non-rational-cubic-b-splinehttp://www.netgraphics.sk/uniform-non-rational-cubic-b-splinehttp://www.netgraphics.sk/uniform-non-rational-cubic-b-splinehttp://intanto.net/geox.html
Ž. M, ZEMRIS, FER 1-24
Geometrijska svojstva
• Krivulja leži unutar konveksne ljuske kontrolnih točaka.
To je posljedica baricentrične kombinacije težinskih funkcija.
• i - ti segment je u konveksnoj ljusci pripadnih kontrolnih točaka
• k = 1 linearna interpolacija - krivulja je jednaka karakterističnom poligonu
• lokalni nadzor - pomak jedne točke utječe najviše na k+1 segment
• u uzlu krivulja ima neprekinutost Ck-q, q višestrukost uzla
• *** http://www.cs.utah.edu/~dav/curve_ed/
• http://miaumiau.cat/examples/nurbs/nurbsCurves.swf
• https://www.ibiblio.org/e-notes/Splines/nurbs.html
• Konstrukcija krivulje – De Boor schema ttp://i33www.ira.uka.de/applets/mocca/html/noplugin/curves.html
10
,
n
i
ki uN
http://www.cs.utah.edu/~dav/curve_ed/http://www.cs.utah.edu/~dav/curve_ed/http://www.cs.utah.edu/~dav/curve_ed/http://www.cs.utah.edu/~dav/curve_ed/http://www.cs.utah.edu/~dav/curve_ed/http://www.cs.utah.edu/~dav/curve_ed/http://www.cs.utah.edu/~dav/curve_ed/http://miaumiau.cat/examples/nurbs/nurbsCurves.swfhttps://www.ibiblio.org/e-notes/Splines/nurbs.htmlhttps://www.ibiblio.org/e-notes/Splines/nurbs.htmlhttps://www.ibiblio.org/e-notes/Splines/nurbs.htmlhttps://www.ibiblio.org/e-notes/Splines/nurbs.htmlhttp://i33www.ira.uka.de/applets/mocca/html/noplugin/curves.htmlhttp://i33www.ira.uka.de/applets/mocca/html/noplugin/curves.htmlhttp://i33www.ira.uka.de/applets/mocca/html/noplugin/curves.htmlhttp://i33www.ira.uka.de/applets/mocca/html/noplugin/curves.htmlhttp://i33www.ira.uka.de/applets/mocca/html/noplugin/curves.htmlhttp://i33www.ira.uka.de/applets/mocca/html/noplugin/curves.htmlhttp://i33www.ira.uka.de/applets/mocca/html/noplugin/curves.htmlhttp://i33www.ira.uka.de/applets/mocca/html/noplugin/curves.htmlhttp://i33www.ira.uka.de/applets/mocca/html/noplugin/curves.htmlhttp://i33www.ira.uka.de/applets/mocca/html/noplugin/curves.htmlhttp://i33www.ira.uka.de/applets/mocca/html/noplugin/curves.html
Ž. M, ZEMRIS, FER 1-25
• Krivulja prolazi kroz početnu i završnu točku
• Derivacije u početnoj i krajnjoj točki
nkraj rprp
1,0 01
Karakteristični poligon
0r
1r
2r
3r
4r
5r
u0 = u1 = u2 = 0
u3 = 1
u4 = 2 u5 = 3
u6 = u7 = u8 = 4
up1
up2
up3 up4
Konveksna ljuska p3
1
1
1
011
11,0
km
nnkraj
k u
rrkp
u
rrkp
Konveksna ljuska
Ž. M, ZEMRIS, FER 1-26
Oblikovanje krivulje
• Višestruke kontrolne točke
• Višestruke vrijednosti uzlova
smanjenje kontinuiteta - krivulja se približava kontrolnim točkama
• Fantomske točke - dodaju se kolinearno s derivacijama u krajnjim točkama tako
da krivulja prolazi tim točkama
• Poznate derivacije *** http://ibiblio.org/e-notes/Splines/None.htm
• http://ibiblio.org/e-notes/Splines/Basis.htm
Višestrukost Kontrolne točke Uzla
1 C2 G2 C2 G2
2 C2 G1 C1 G1
3 C2 G0 C0 G0
4 C2 G0 diskontinuitet
- odvojene točke
101 rrr
sa
http://ibiblio.org/e-notes/Splines/None.htmhttp://ibiblio.org/e-notes/Splines/None.htmhttp://ibiblio.org/e-notes/Splines/None.htmhttp://ibiblio.org/e-notes/Splines/Basis.htmhttp://ibiblio.org/e-notes/Splines/Basis.htmhttp://ibiblio.org/e-notes/Splines/Basis.htm
Ž. M, ZEMRIS, FER 1-27
INTERPOLACIJSKI OBLIK B-KRIVULJA
• k stupanj krivulje
• pi točke kroz koje želimo da krivulja prolazi - ukupno ih ima n +1
• potrebno je odrediti točke kontrolnog poligona rj tako da krivulja
prolazi točkama pi. Kada odredimo točke rj načinimo aproksimacijsku
krivulju određenu točkama rj
rj Broj uvjeta:
Zatvorene periodičke krivulje j = 0 .. n - 1 n
Otvorene neperiodičke krivulje j = 0 .. n + k - 1 n + k
Kod zatvorenih periodičkih krivulja krajnje točke se preklope s
početnima. Npr. 2 točke preklopimo kod kvadratne, 3 kod kubne krivulje.
Kod otvorenih periodičkih krivulja poznato je n +1 interpolacijskih
točaka i treba još k -1 dodatnih uvjeta.
Ž. M, ZEMRIS, FER 1-28
* PRIMJER
Poznato je pet točaka. Odrediti kvadratnu interpolacijsku otvorenu
neperiodičku B-krivulju.
• k = 2
• poznato je 5 točaka kroz koje krivulja treba prolaziti
• treba nam još k-1=1 dodatni uvjet
– neka je dodatni uvjet derivacija u početnoj točki
• kontrolni poligon će imati 6 točaka
0r
1r
2r
3r
4r
5r
5..0jrj
Ž. M, ZEMRIS, FER 1-29
Segment 1: u [0, 1]
Segment 2: u = 1 ili u reparametriziranom obliku t = 0:
10
0
3
2
0
1
0
0
2
1
0
2
1
22
001
0222
1
2
31
0120
001
0222
1
2
31
10
rr
r
r
r
up
r
r
r
r
uup
22
0 212rr
p
Ž. M, ZEMRIS, FER 1-30
Segment 3:
Segment 4:
Svih 6 uvjeta zapisano matrično:
http://ibiblio.org/e-notes/Splines/Bint.htm
22
0 323rr
p
54
434
1
220
rp
rrp
5
4
3
2
1
0
4
4
3
2
1
1
100000
02
1
2
1000
002
1
2
100
0002
1
2
10
000022
000001
1
0
0
0
0
0
r
r
r
r
r
r
p
p
p
p
p
p
http://ibiblio.org/e-notes/Splines/Bint.htmhttp://ibiblio.org/e-notes/Splines/Bint.htmhttp://ibiblio.org/e-notes/Splines/Bint.htm
Ž. M, ZEMRIS, FER 1-31
U dobivenom sustavu potrebno je invertirati matricu (ili riješiti LU
dekompozicijom, Gaussovom eliminacijom) i odrediti točke ri
kontrolnog poligona.
Točke ri određuju kontrolni poligon tako da aproksimacijska krivulja
prolazi zadanim pi točkama.
Daljnje proširenje B-krivulja NURBS http://nurbscalculator.in/
• NeUniformne http://ibiblio.org/e-notes/Splines/None.htm
• Racionalne http://ibiblio.org/e-notes/Splines/NURBS.htm
B - površine http://miaumiau.cat/examples/nurbs/nurbsSurfaces.swf
http://miaumiau.cat/examples/surfaceRenderer/surfaceEditor.swf
https://www.ibiblio.org/e-notes/Splines/animation.html
http://nurbscalculator.in/http://ibiblio.org/e-notes/Splines/None.htmhttp://ibiblio.org/e-notes/Splines/None.htmhttp://ibiblio.org/e-notes/Splines/None.htmhttp://ibiblio.org/e-notes/Splines/NURBS.htmhttp://ibiblio.org/e-notes/Splines/NURBS.htmhttp://ibiblio.org/e-notes/Splines/NURBS.htmhttp://miaumiau.cat/examples/nurbs/nurbsSurfaces.swfhttp://miaumiau.cat/examples/surfaceRenderer/surfaceEditor.swfhttps://www.ibiblio.org/e-notes/Splines/animation.htmlhttps://www.ibiblio.org/e-notes/Splines/animation.htmlhttps://www.ibiblio.org/e-notes/Splines/animation.html
Ž. M, ZEMRIS, FER 1-32
• https://www.ibiblio.org/e-notes/webgl/deflate/zmaj.html
• https://sketchfab.com/models/72b5d3713bda4dc08f6b6f20fb2e6b7c (ModelInspector/Wireframe)
Zašto B-spline
• krivulje, površine
• interpolacija
• kontrola oblika
• obrada površina CAD
Blender
https://www.ibiblio.org/e-notes/webgl/deflate/zmaj.htmlhttps://www.ibiblio.org/e-notes/webgl/deflate/zmaj.htmlhttps://www.ibiblio.org/e-notes/webgl/deflate/zmaj.htmlhttps://sketchfab.com/models/72b5d3713bda4dc08f6b6f20fb2e6b7chttps://sketchfab.com/models/72b5d3713bda4dc08f6b6f20fb2e6b7chttp://www.blender.org/features-gallery/features/
Ž. M, ZEMRIS, FER 1-33
i
i
i
i
i
r
r
r
r
ttttp
1
2
3
23
0020
0101
1452
1331
2
11
P0
P1
P2
P3
P4
P5
P6
P7
SPLAJN CATMULL-ROMA
Kada želimo da krivulja glatko interpolira niz 3D točaka koje
interaktivno zadajemo, možemo koristiti ovu interpolaciju.
- interpolira niz točaka P1 do Pm-1 na osnovi sekvence P0 do Pm.
Vektor tangente u točci Pi paralelan je s dužinom Pi-1 Pi+1.
Nema svojstvo konveksne ljuske.
http://www.blurspline.com/labs/3d/spline3editor.html
http://threejs.org/examples/#webgl_geometry_spline_editor
http://jabtunes.com/labs/3d/spline3editor.htmlhttp://threejs.org/examples/#webgl_geometry_spline_editorhttp://www.blurspline.com/labs/3d/spline3editor.htmlhttp://www.blurspline.com/labs/3d/spline3editor.htmlhttp://www.blurspline.com/labs/3d/spline3editor.htmlhttp://threejs.org/examples/#webgl_geometry_spline_editor
Ž. M, ZEMRIS, FER 1-34
1.2.2 Kontrola vremena duž putanje
– kontrola gibanja duž krivulje
• oblik krivulje
• definiranje brzine kretanja duž krivulje
– zadavanje oblika krivulje
• kontrolne točke – kada uvrstimo u kubnu krivulju Beziera (ili B-splajn) dobit ćemo
– kontrola brzine kretanja objekta duž krivulje
• ako mijenjamo vrijednosti uzlova u utjecat ćemo na oblik krivulje
• veza između parametra u i pripadne udaljenosti duž krivulje (arc length)
• prvi korak – pomaci po krivulji za jednolike korake
• reparametrizacija duljinom luka (parameterization by arc length)
• kontrola puta (duljine), brzine, akceleracije
zzzz
yyyy
xxxx
z
y
x
ducubua
ducubua
ducubua
up
up
up
up23
23
23
uNrup kin
i
i ,
0
Ž. M, ZEMRIS, FER 1-35
Parametrizacija duljinom luka (arc length)
• nezavisna kontrola oblika krivulje i brzine kretanja objekta duž krivulje
• izravno korištenje parametra u kako bi dobili promjene u vremenu često
daje neželjene brzine kretanja
• brzine kretanja duž pojedinih segmenata su različite https://webglfundamentals.org/webgl/lessons/resources/bezier-curve-
diagram.html?maxDepth=0&showCurve=true&showTolerance=true / -duljine segmenata za uniformnu promjenu t
vrijeme = 0
vrijeme = 10
vrijeme = 20
vrijeme = 100
https://webglfundamentals.org/webgl/lessons/resources/bezier-curve-diagram.html?maxDepth=0&showCurve=true&showTolerance=truehttps://webglfundamentals.org/webgl/lessons/resources/bezier-curve-diagram.html?maxDepth=0&showCurve=true&showTolerance=truehttps://webglfundamentals.org/webgl/lessons/resources/bezier-curve-diagram.html?maxDepth=0&showCurve=true&showTolerance=truehttps://webglfundamentals.org/webgl/lessons/resources/bezier-curve-diagram.html?maxDepth=0&showCurve=true&showTolerance=truehttps://webglfundamentals.org/webgl/lessons/resources/bezier-curve-diagram.html?maxDepth=0&showCurve=true&showTolerance=truehttps://webglfundamentals.org/webgl/lessons/resources/bezier-curve-diagram.html?maxDepth=0&showCurve=true&showTolerance=truehttp://graphics.cs.brown.edu/research/exploratory/freeSoftware/repository/edu/brown/cs/exploratories/applets/bezierSplines/bezier_splines_java_browser.html/
Ž. M, ZEMRIS, FER 1-36
Određivanje duljine luka (engl. arc length)
• analitički
• procjena
• analitički:
• kada odredimo promjenu parametra tako da se pomičemo po krivulji za
jednolike vremenske razmake lako možemo kontrolirati brzinu i akceleraciju
P(u1) P(u2)
P(u)
duduudPsu
u
2
1
/
222 //// duudpduudpduudpduudP zyx
EuDCuBuAucubuaduudp xxxx 234222 23/
Ž. M, ZEMRIS, FER 1-37
• procjena duljine luka
– zbrajanje duljina tetiva (engl. chord length) • https://mathinsight.org/applet/helix_arc_length
• (arclength.mov)
• http://verbnurbs.com/examples/curveDivide.html
– izrada tablice duljine krivulje
• G(u) kumulativna vrijednost duljina tetiva
• NPR početna tablica (jednolika promjena parametra):
Parametar u G(u) - linearno (kubno) možemo interpolirati
0.00 0.000 za zadani u naći pripadni G(u)
0.05 0.080 ili obrnuto za G(u) pripadni u
0.10 0.150
0.15 0.230
0.20 0.320
… …
0.95 0.998
1.00 1.000
luk
tetive
u1 u2
iiii
ii uGuG
uu
uuuGuG
1
1
23.032.015.020.0
15.018.023.018.0
,18.0
G
u
u0 u3
https://mathinsight.org/applet/helix_arc_lengthhttps://mathinsight.org/applet/helix_arc_lengthhttp://www.ecalculus.org/Contributions/arclength.mov1_arclength.mov1_arclength.movhttp://verbnurbs.com/examples/curveDivide.html
Ž. M, ZEMRIS, FER 1-38
• duljina dijela krivulje s = G(u2)-G(u1)
• prednosti tablične procjene duljine luka nedostaci
– intuitivno, - pogreške u proračunu
– jednostavno za implementaciju,
– brzo za izvođenje
• obično se normira tako da je parametar 0 u 1 i 0 G(u) 1
• poboljšanja
– više uzoraka interpolacija bolja od linearne (ne osigurava manju pogrešku)
– adaptivan pristup gustoći uzoraka
NPR: više uzoraka gdje je pogreška veća
ako je
dalje se dijeli
početno se načini grublja linearna podjela,
a dalje se binarno dijeli, ako postoje infleksije moguće su pogrešne procjene http://mathinsight.org/parametrized_curve_arc_length
ddd 21 d1 d2
d
mogući slučaj
pogrešne procjene
http://mathinsight.org/parametrized_curve_arc_length
Ž. M, ZEMRIS, FER 1-39
• kontrola brzine
– praćenje putanje konstantnom brzinom, za jednolike razmake po
krivulji s = G(ui+1)-G(ui), naći pripadne vrijednosti ui – kontrolirano kretanje krivuljom
– često je potrebno postupno ubrzavanje/usporavanje (engl. ease-in/ease-out)
vrijeme t
udaljenost s
1
1
ubrzavanje
usporavanje
tablica duljine krivulje
u G(u) .
… ….
u točka na krivulji u prostoru za vrijeme t Prostorna krivulja
Funkcija udaljenost - vrijeme
Ž. M, ZEMRIS, FER 1-40
Na ovaj način postigli smo razdvojenu kontrolu pozicije na krivulji i vremena
• KADA - funkcija udaljenost – vrijeme za neki trenutak t odredimo s
• GDJE - prostorna krivulja iz tablice pomoću s (tj. G(u)) odredimo u
i točku krivulje
• funkcija udaljenost - vrijeme
– može se zadati eksplicitno (krivuljom) http://learningthreejs.com/data/tweenjs_for_smooth_animation/tweenjs_for_smooth_animation.html
– analitički – preko krivulje brzine i/ili akceleracije (uz pripadne među-
zavisnosti)
– ova funkcija je obično
• monotono rastuća
• kontinuirana
• s(0.0) = 0.0, s(1.0) = 1.0,
t
s
1
1
objekt putuje nazad po krivulji
Funkcija put- vrijeme
naglo kreće i staje
t
s
1
1 Funkcija put- vrijeme
ne počinje na početku krivulje
http://learningthreejs.com/data/tweenjs_for_smooth_animation/tweenjs_for_smooth_animation.html
Ž. M, ZEMRIS, FER 1-41
1.2.3 Praćenje putanje (engl. path following)
• objekt (kamera) prati putanju
• ukoliko su zadani položaji dobiveni uzorkovanjem potrebno je načiniti filtriranje – izgladiti putanju
• putanja po površini terena – složeniji problem
– orijentacija duž putanje
– lokalni koordinatni sustav (u, v, w) Frenetov okvir (engl. Frenet frame)
• w smjer tangente w = P’(s)
• u smjer normale u = P’(s) P’’(s)
• v smjer binormale (up-vector) v = w u
• http://i33www.ira.uka.de/applets/mocca/html/noplugin/curves.html
• http://pages.cs.wisc.edu/~lizy/mrdoob-three.js-ef5f05d/examples/webgl_geometry_extrude_splines.html
• https://mattbradley.github.io/dash/
w u
v
http://i33www.ira.uka.de/applets/mocca/html/noplugin/curves.htmlhttp://i33www.ira.uka.de/applets/mocca/html/noplugin/curves.htmlhttp://i33www.ira.uka.de/applets/mocca/html/noplugin/curves.htmlhttp://i33www.ira.uka.de/applets/mocca/html/noplugin/curves.htmlhttp://i33www.ira.uka.de/applets/mocca/html/noplugin/curves.htmlhttp://i33www.ira.uka.de/applets/mocca/html/noplugin/curves.htmlhttp://i33www.ira.uka.de/applets/mocca/html/noplugin/curves.htmlhttp://i33www.ira.uka.de/applets/mocca/html/noplugin/curves.htmlhttp://i33www.ira.uka.de/applets/mocca/html/noplugin/curves.htmlhttp://i33www.ira.uka.de/applets/mocca/html/noplugin/curves.htmlhttp://i33www.ira.uka.de/applets/mocca/html/noplugin/curves.htmlhttp://pages.cs.wisc.edu/~lizy/mrdoob-three.js-ef5f05d/examples/webgl_geometry_extrude_splines.htmlhttp://pages.cs.wisc.edu/~lizy/mrdoob-three.js-ef5f05d/examples/webgl_geometry_extrude_splines.htmlhttp://pages.cs.wisc.edu/~lizy/mrdoob-three.js-ef5f05d/examples/webgl_geometry_extrude_splines.htmlhttp://pages.cs.wisc.edu/~lizy/mrdoob-three.js-ef5f05d/examples/webgl_geometry_extrude_splines.htmlhttp://pages.cs.wisc.edu/~lizy/mrdoob-three.js-ef5f05d/examples/webgl_geometry_extrude_splines.htmlhttp://pages.cs.wisc.edu/~lizy/mrdoob-three.js-ef5f05d/examples/webgl_geometry_extrude_splines.htmlhttp://pages.cs.wisc.edu/~lizy/mrdoob-three.js-ef5f05d/examples/webgl_geometry_extrude_splines.htmlhttp://pages.cs.wisc.edu/~lizy/mrdoob-three.js-ef5f05d/examples/webgl_geometry_extrude_splines.htmlhttp://pages.cs.wisc.edu/~lizy/mrdoob-three.js-ef5f05d/examples/webgl_geometry_extrude_splines.htmlhttp://pages.cs.wisc.edu/~lizy/mrdoob-three.js-ef5f05d/examples/webgl_geometry_extrude_splines.htmlhttp://pages.cs.wisc.edu/~lizy/mrdoob-three.js-ef5f05d/examples/webgl_geometry_extrude_splines.htmlhttp://pages.cs.wisc.edu/~lizy/mrdoob-three.js-ef5f05d/examples/webgl_geometry_extrude_splines.htmlhttp://pages.cs.wisc.edu/~lizy/mrdoob-three.js-ef5f05d/examples/webgl_geometry_extrude_splines.htmlhttp://pages.cs.wisc.edu/~lizy/mrdoob-three.js-ef5f05d/examples/webgl_geometry_extrude_splines.htmlhttp://pages.cs.wisc.edu/~lizy/mrdoob-three.js-ef5f05d/examples/webgl_geometry_extrude_splines.htmlhttp://pages.cs.wisc.edu/~lizy/mrdoob-three.js-ef5f05d/examples/webgl_geometry_extrude_splines.htmlhttp://pages.cs.wisc.edu/~lizy/mrdoob-three.js-ef5f05d/examples/webgl_geometry_extrude_splines.htmlhttps://mattbradley.github.io/dash/https://mattbradley.github.io/dash/
Ž. M, ZEMRIS, FER 1-42
• problemi pri korištenju Frenet-ovog okvira
– moguć diskontinuirani skok (druge derivacije)
– ravni segment nema zakrivljenost P’’(s) = 0
– rezultirajuća gibanja često su ekstremna,
izgledaju neprirodno
– tangenta nije dobar izbor za usmjeravanje pogleda
– u – može su iskoristiti u simulaciji djelovanja sile u zavoju
– https://zz85.github.io/threejs-path-flow/flow.html
https://zz85.github.io/threejs-path-flow/flow.htmlhttps://zz85.github.io/threejs-path-flow/flow.htmlhttps://zz85.github.io/threejs-path-flow/flow.htmlhttps://zz85.github.io/threejs-path-flow/flow.htmlhttps://zz85.github.io/threejs-path-flow/flow.html
Ž. M, ZEMRIS, FER 1-43
• putanja kamere
– potrebno je postaviti gledište COI (engl. center of interest)
• postavljanje jedne ili više točaka
– COI određuje smjer pogleda – vektor w
– u = w yos
– v = w u
• postavljanje pomične točke COI na putanji ispred kamere
– P(s) – putanja, P(s+s) – gledište
– potrebna je parametrizacija duljinom luka inače će se mijenjati
udaljenost do gledišta
• definiranje posebne putanje za COI
– veća kontrola
• automatsko upravljanje kamerom
– pogled “preko ramena” https://stemkoski.github.io/Three.js/Viewports-Dual.html
– važno je uhvatiti središte zbivanja
– kamera: – https://threejs.org/examples/#webgl_geometry_extrude_splines (Look Ahead, Camera Helper)
– 3.labo.exe - Shortcut Vlakic (2).lnk
– http://inear.se/breaking_waves/
https://stemkoski.github.io/Three.js/Viewports-Dual.htmlhttps://stemkoski.github.io/Three.js/Viewports-Dual.htmlhttps://stemkoski.github.io/Three.js/Viewports-Dual.htmlhttps://threejs.org/examples/#webgl_geometry_extrude_splines3.labo.exe - Shortcut Vlakic (2).lnk3.labo.exe - Shortcut Vlakic (2).lnk3.labo.exe - Shortcut Vlakic (2).lnk3.labo.exe - Shortcut Vlakic (2).lnkhttp://inear.se/breaking_waves/
Ž. M, ZEMRIS, FER 1-44
1.3 Animacija 6DOF (pozicija i orijentacija)
• reprezentacija proizvoljne pozicije i orijentacije
– 6DOF 6 stupnjeva slobode (engl. Six Degrees of Freedom)
• tri koordinate u prostoru - pozicija x, y, z
• rotacijski položaj objekta - orijentacija , ,
Pozicija
• zadavanje i praćenje putanje
Bezier-ova krivulja opisuje segment – povezivanje segmenata → B - krivulja
Orijentacija
• pogreške pri rotaciji
• orijentacija objekta (interpolacija između različitih orijentacija)
(vrlo često – orijentacija objekta/ruke, kamere, normale …., 3D koordinatni sustav)
A) Eulerovi kutovi (sustav objekta)
B) rotacijska matrica
C) os rotacije i kut rotacije
D) kvaternioni (engl. quaternions)
Ž. M, ZEMRIS, FER 1-45
1.3.1 Pogreške pri rotaciji
• tri načina rotacije oko osi y u koracima za po 5º,
I – jedinična matrica Rdy - matrica rotacije oko y za 5º
1. pogreška zaokruživanja akumulira se tijekom rotacije u koordinatama
gubi se koplanarnost - sjenčanje, deformacije
ponavljaj { za svaku tocku {
P = P * Rdy;
}
crtaj (P);
}
x
y
z
1000
0cos0sin
0010
0sin0cos
yR
oko y osi za kut suprotno smjeru kazaljke na satu
Ž. M, ZEMRIS, FER 1-46
2. modificiramo transformacijsku matricu koja transformira objekt iz
prostora objekta u prostor scene
R = I ponavljaj {
za svaku tocku {
P’ = P * R ;
}
crtaj (P’);
R = Rdy R
}
http://bigwww.epfl.ch/demo/jshiftlinear/start.php
3. u 2. postupku greška se akumulira u transformacijskoj matrici – pojava smika
– popravljanje ortonormiranosti matrice – greška se distribuira • prvi red se normira
• vektorski produkt 1. i 2. retka se normira i smjesti u 3. redak
• vektorski produkt 3. i 1. retka se normira i smjesti u 2. redak
• postupak ortonormiranja Gram–Schmidt
x
y
z
http://bigwww.epfl.ch/demo/jshiftlinear/start.phphttp://bigwww.epfl.ch/demo/jshiftlinear/start.php
Ž. M, ZEMRIS, FER 1-47
glPushMartix();
glLoadIdentity();
for (int row = 0; row < 3; row++)
{
glPushMartix();
for (int col = 0; col < 3; col++)
{
motif();
translate2D (L, 0);
}
glPopMatrix();
translate2D (0, D);
}
glPopMatrix();
motif()
0 L
D
Primjer očuvanja koordinata primjenom stoga kako bi se izbjeglo nakupljanje pogreške.
Na ovaj način koordinate objekta se čuvaju u lokalnom koordinatnom sustavu,
a u sustavu scene se ostvaruje prikaz transformiranjem tih koordinata.
Ž. M, ZEMRIS, FER 1-48
glPushMartix();
glLoadIdentity();
for (int row = 0; row < 3; row++)
{
glPushMartix();
for (int col = 0; col < 3; col++)
{
motif();
translate2D (L, 0);
}
glPopMatrix();
translate2D (0, D);
}
glPopMatrix();
motif()
0 L
D
Primjer očuvanja koordinata primjenom stoga kako bi se izbjeglo nakupljanje pogreške.
Na ovaj način koordinate objekta se čuvaju u lokalnom koordinatnom sustavu,
a u sustavu scene se ostvaruje prikaz transformiranjem tih koordinata.
Ž. M, ZEMRIS, FER 1-49
glPushMartix();
glLoadIdentity();
for (int row = 0; row < 3; row++)
{
glPushMartix();
for (int col = 0; col < 3; col++)
{
motif();
translate2D (L, 0);
}
glPopMatrix();
translate2D (0, D);
}
glPopMatrix();
motif()
0 L
D
Primjer očuvanja koordinata primjenom stoga kako bi se izbjeglo nakupljanje pogreške.
Na ovaj način koordinate objekta se čuvaju u lokalnom koordinatnom sustavu,
a u sustavu scene se ostvaruje prikaz transformiranjem tih koordinata.
Ž. M, ZEMRIS, FER 1-50
glPushMartix();
glLoadIdentity();
for (int row = 0; row < 3; row++)
{
glPushMartix();
for (int col = 0; col < 3; col++)
{
motif();
translate2D (L, 0);
}
glPopMatrix();
translate2D (0, D);
}
glPopMatrix();
motif()
0 L
D
Primjer očuvanja koordinata primjenom stoga kako bi se izbjeglo nakupljanje pogreške.
Na ovaj način koordinate objekta se čuvaju u lokalnom koordinatnom sustavu,
a u sustavu scene se ostvaruje prikaz transformiranjem tih koordinata.
Ž. M, ZEMRIS, FER 1-51
• devet članova koji određuju rotaciju (9DOF)
– možemo li odrediti iz matrice o kojoj rotaciji (transformaciji) se radi?
– zadavanje rotacije nije jednoznačno
• ortonormiranost (rigid body)
– po stupcima (redcima) duljina je 1 (ako skaliramo onda je sx, y, z) jer
je sin2 + cos2 = 1
– međusobno okomiti
(9DOF - 3DOF - 3DOF = 3DOF)
(ako nema smika i skaliranja)
1.3.2 Rotacija
1
0
0
0
222120
121110
020100
zyx ttt
rrr
rrr
rrr
R1202
2
01
2
00 rrr
222120121110020100 rrrrrrrrr
Ž. M, ZEMRIS, FER 1-52
Orijentacija objekta u sustavu scene
Npr. A:
Rotacija ON ON’’ (up vektor u smjeru y)
O = (0 0 0 1) N = (3 -5 4 1)
1. Rotacija oko y osi ON ON’
2. Rotacija oko x osi ON’ ON’’
x
y
z
N(3, -5, 4)
O
25
N’(0, -5, 5)
N’’ (0, 0, ) 50
15000
1000
050
25
50
50
050
5
50
250
0001
NRx
1
25
2550
1000
025
40
25
30010
025
30
25
4
NRy
Ž. M, ZEMRIS, FER 1-53
Npr. B:
Rotacija ON ON’’ (up vektor u smjeru y)
O = (0 0 0 1) N = (0 0 6 1)
1. Rotacija oko x osi ON ON’
2. Rotacija oko y osi ON’ ON’’
Ovo je inverzan postupak
x
y
z N’’(4 -2 4)
O
32
N’(0 -2 )
N (0 0 6)
13220
1000
06
32
6
20
06
2
6
320
0001
NRx
1424
1000
032
40
32
40010
032
40
32
4
NRy
32
Ž. M, ZEMRIS, FER 1-54
A) Eulerovi kutovi
• svaka rotacija može biti ostvarena kao kompozicija tri rotacije oko
tri primarne osi Rx, Ry, Rz (lokalnog ili globalnog sustava)
• Eulerov teorem: proizvoljna orijentacija može biti postignuta kao
tri uzastopne rotacije oko primarnih osi, ako proizvoljno možemo
odabrati redoslijed rotacija
• problemi i nedostaci takvog načina izvođenja rotacije
• interpolacija između dva položaja u postupaka animacije
• važan je redoslijed rotacija
• zastoj osi - Gimbal-lock (kada se dvije od tri osi poklope)
Ž. M, ZEMRIS, FER 1-55
DUBINA SMJER NAGIB
Terminologija iz aeronautike
– rotacije u koordinatnom sustavu objekta
Ž. M, ZEMRIS, FER 1-56
Zastoj žiroskopskih osi (engl. gimbal lock)
• ako je redoslijed rotacija zadan, za određene položaje može doći do problema
• problem interpolacije zadanih orijentacijskih položaja ne može se načiniti
kvalitetno (za opći slučaj) korištenjem uzastopnih rotacija oko tri primarne osi http://www.cs.vu.nl/~eliens/papers/media/@vr-vrml-math-FlyDemo.wrl Demo1
– dodavanje još jednog stupnja slobode DOF, uz aktivno vođenje vanjskog prstena
tako da bude okomit na unutarnji (inače bi se opet mogli podudariti)
– rotacija zadana preko osi i kuta (4DOF)
– rotacija zadana kvaternionima
http://www.cs.vu.nl/~eliens/papers/media/@vr-vrml-math-FlyDemo.wrlhttp://www.cs.vu.nl/~eliens/papers/media/@vr-vrml-math-FlyDemo.wrlhttp://www.cs.vu.nl/~eliens/papers/media/@vr-vrml-math-FlyDemo.wrlhttp://www.cs.vu.nl/~eliens/papers/media/@vr-vrml-math-FlyDemo.wrlhttp://www.cs.vu.nl/~eliens/papers/media/@vr-vrml-math-FlyDemo.wrlhttp://www.cs.vu.nl/~eliens/papers/media/@vr-vrml-math-FlyDemo.wrlhttp://www.cs.vu.nl/~eliens/papers/media/@vr-vrml-math-FlyDemo.wrl2a_Demo1.wrl
Ž. M, ZEMRIS, FER 1-57
Zastoj žiroskopskih osi (engl. Gimbal lock)
• engl. gimbal - prsten u žiroskopu
• poravnavanje osi uzrokuje gubitak stupnja slobode (DOF) – rotacija oko
prve i treće os su iste
Moguće rotacije
1. rotacija oko osi fiksnog koordinatnog sustava,
2. rotacija oko rotiranog sustava
zadan redoslijed rotacija npr: x, y, z
• Gimbal lock (y – 90): http://www.realtimerendering.com/udacity/?load=demo/unit4-euler_angles.js
(A Fourth Gimbal for Christmas) • http://www.hq.nasa.gov/office/pao/History/alsj/gimbals.html NPR – demo Euler
kada se zeleni i ljubičasti podudare
ljubičasta i plava rotacija su iste
http://www.realtimerendering.com/udacity/?load=demo/unit4-euler_angles.jshttp://www.realtimerendering.com/udacity/?load=demo/unit4-euler_angles.jshttp://www.realtimerendering.com/udacity/?load=demo/unit4-euler_angles.jshttp://www.realtimerendering.com/udacity/?load=demo/unit4-euler_angles.jshttp://www.realtimerendering.com/udacity/?load=demo/unit4-euler_angles.jshttp://www.realtimerendering.com/udacity/?load=demo/unit4-euler_angles.jshttp://www.realtimerendering.com/udacity/?load=demo/unit4-euler_angles.jshttp://www.realtimerendering.com/udacity/?load=demo/unit4-euler_angles.jshttp://www.realtimerendering.com/udacity/?load=demo/unit4-euler_angles.jshttp://www.realtimerendering.com/udacity/?load=demo/unit4-euler_angles.jshttp://www.hq.nasa.gov/office/pao/History/alsj/gimbals.htmlhttp://www.hq.nasa.gov/office/pao/History/alsj/gimbals.htmlhttp://www.hq.nasa.gov/office/pao/History/alsj/gimbals.htmlhttp://www.hq.nasa.gov/office/pao/History/alsj/gimbals.htmlhttp://www.hq.nasa.gov/office/pao/History/alsj/gimbals.htmlhttp://www.hq.nasa.gov/office/pao/History/alsj/gimbals.htmlhttp://www.hq.nasa.gov/office/pao/History/alsj/gimbals.htmlhttp://www.hq.nasa.gov/office/pao/History/alsj/gimbals.htmlPrimjeri/unit4-uler_angles/index.html
Ž. M, ZEMRIS, FER 1-58
Rotacija oko osi fiksnog koordinatnog sustava scene
• fiksan redoslijed tri rotacije koje se primjenjuju Npr. x y z
• problem zastoja osi (engl. gimbal lock) - dvije od tri osi se poklope
x
y
z x
y
z
(0 0 0) (0 90 0)
x
y
z
( 90 0)
x
y
z
(0 90 0)
x
y
z
(0 90 )
rotacija oko x i z daju isto,
ako je oko y osi 90
Ista rotacija može se zapisati na više različitih načina npr. 0 90 10 je isto što i 350 90 0
Ž. M, ZEMRIS, FER 1-59
• Npr. rotacija između dva položaja
(0 90 0) i (90 45 90)
• položaj (90 45 90) neintuitivan je u ostvarivanju
• interpolacija između zadanih položaja – između zadanih kutova ne će dati
dobar rezultat (0 90 90 45 0 90) za pola je (45 67.5 45)
• postavi yaw na 90, roll Insert/PageUp i pitch = daju isto
• http://www.gamedev.net/reference/programming/features/qpowers/CameraEuler.zip EULER
• http://www.gamedev.net/reference/programming/features/qpowers/CameraQuat.zip QUAT
• (https://goote.ch/0e7df388f6ca4787be8884a87504955e.scene/ Gimbal – 4x addRotation pa 5x drugi addRotation )
• http://www.iwant2study.org/lookangejss/math/ejss_model_glimbal8wee02/glimbal8wee02_Simulation.xhtml P90
x
y
z
(0 90 0)
x
y
z
(90 45 90)
http://www.gamedev.net/reference/programming/features/qpowers/CameraEuler.zip4a_CameraEuler/CameraEuler.exehttp://www.gamedev.net/reference/programming/features/qpowers/CameraQuat.zip4b_CameraQuat/CameraQuat.exehttps://goote.ch/0e7df388f6ca4787be8884a87504955e.scene/http://www.iwant2study.org/lookangejss/math/ejss_model_glimbal8wee02/glimbal8wee02_Simulation.xhtml
Ž. M, ZEMRIS, FER 1-60
• na primjer rotacije oko x(), y(), z() daje ukupnu matricu rotacije:
• za rotaciju , =/2, matrica je (gimbal lock):
• postoji ovisnost samo o kutu (- ), odnosno o jednom a ne dva
parametra
1000
0)cos()cos()cos()sin()sin(
0)sin()sin()cos()cos()sin()sin()sin()sin()cos()cos()sin()cos(
0)cos()sin()cos()sin()sin()cos()sin()sin()sin()cos()cos()cos(
R
1000
0001
0)sin()cos(0
0)cos()sin(0
R
Ž. M, ZEMRIS, FER 1-61
• Rotacija oko osi
• koordinatnog sustava
• Eulerovi kutovi (, , )
• oko z - osi za (- 30)°,
• oko y - osi za (- 60)°,
• oko z - osi za (- 45)°,
Dvije konvencije za Eulerove kutove obzirom na redoslijed rotacija:
Ž. M, ZEMRIS, FER 1-62
Rotacija oko osi
koordinatnog sustava tijela
Eulerovi kutovi (, , )
1. oko zL - osi za 30°,
2. oko yL - osi za 60 °,
3. oko zL - osi za 45 °,
rotacija se može izvoditi oko • fiksnih osi Rx()
• rotiranih osi R’x() (npr. rotiramo oko x osi, tako
dobijemo rotiranu y os oko koje zatim rotiramo …)
• to su ekvivalentni sustavi uz obrnuti redoslijed rotacija
R’y() Rx() = (Rx() Ry() Rx(-)) Rx() = Rx() Ry()
Ž. M, ZEMRIS, FER 1-63
se mijenja (ROLL)
NAGIB
1. 0° < 360°,
2. = - 60 °,
3. = - 45 °.
se mijenja (PITCH)
DUBINA
1. = - 30 °,
2. 0° < 360°,
3. = - 45 °.
se mijenja (YAW)
SMJER
1. = - 30 °,
2. = - 60 °,
3. 0° < 360°.
Ž. M, ZEMRIS, FER 1-64
B) Rotacijska matrica
• želimo na jedinstven način zapisati (opisati) orijentaciju objekta – čvrstog tijela
• Točku Vi (x,y) rotiramo oko ishodišta za kut matricom V’i=Vi R().
Točka čini objekt koji se nalazi u lokalnom koordinatnom sustavu objekta.
• Promatramo rotaciju lokalnog koordinatnog sustava a time i objekta (osi koordinatnog sustava 𝑥 , 𝑦 )
𝑥 =10
, 𝑦 =01
• ako rotiramo jedinične vektore koji određuju osi koord. sustava tada te vektore množimo inverznom matricom:
𝑥 ′ =𝑅−1(𝜑) 𝑥 , 𝑦 ′ =𝑅−1(𝜑) 𝑦 , (za 2D vrijedi 𝑅−1(𝜑)=𝑅(−𝜑))
𝑥 ′ 𝑦 ′ = 𝑅−1(𝜑) 𝑥 𝑦 = 𝑅−1 (𝜑) 10
01
= 𝑅−1(𝜑)
• osi rotiranog koordinatnog sustava izravno određuju stupce inverzne rotacijske matrice
(DCM – direction cosine matrix) zove se kosinusna jer kosinus kuta između rotiranih jediničnih vektora i pripadnih izvornih određuje elemente DCM matrice
- komponente rotiranih vektora projekcije su na pojedine osi
x
y Vi(x,y)=(1 3)
x’ y’
Oi
V’i (x’,y’)=(1 3)
Ž. M, ZEMRIS, FER 1-65
Primjer:
Znamo osi zarotiranog koordinatnog sustava (lokalni koordinatni sustav objekta).
Želimo odrediti matricu rotacije kojom trebamo pomnožiti točke objekta tako da
objekt bude rotiran.
(promatrano iz koordinatnog sustava objekta, koordinate će ostati iste) Neka je:
Npr. V=(1 3) interpretiramo kao točku ili kao vektor iz ishodišta
2
22
2
,
2
22
2
normiramovektorePrvo
2
12
1
,
2
12
1
yxyx
x
y
Vi(x,y)=(1 3)
Oi
V’i (x’,y’)=(1 3)
2
2
2
22
2
2
2
)(1 yxR
yx
2
2
2
22
2
2
2
)(R
1222100
02
2
2
2
02
2
2
2
131)(
RV
OV
0
22
2
0
3
1
100
02
2
2
2
02
2
2
2
)(1 OVR
Ž. M, ZEMRIS, FER 1-66
Rotacijska matrica
• ako je R(-) matrica rotacije kojom rotiramo vektore, za rotaciju točaka je V’=VR()
– promatramo rotaciju koordinatnog sustava za R(-), a točka V je fiksna
– rotiramo točku R(-) a koordinatni sustav je fiksan
Znači ako rotiramo koordinatni sustav za R(-), koordinate točke T(x,y) koju nismo rotirali ali ju sada promatramo u rotiranom sustavu bit će iste kao da smo
rotirali točku za R(-) i promatramo njene koordinate u izvornom sustavu
Radi se o ortonormiranim matricama pa je 𝑅−1 = 𝑅𝜏
• u 3D prostoru vrijedi isto
• TBN (tangenta, binormala, normala) matrica
x
y Vi(x,y)=(1 3)
Oi
-
V’i(x,y)=(3 1)
z
y
x
z
y
x
z
y
x
z
z
z
y
y
y
x
x
x
Rzyx )(1
x
y
Vi(x,y)=(1 3)
x’ y’
Vi(x’,y’)=(3 1)
cos ()
sin ()
-sin ()
cos ()
100
0cossin
0sincos
)(
R
Ž. M, ZEMRIS, FER 1-67
Rotacijska matrica
• za DCM (9 elemenata) vrijedi da ima 3 stupnja slobode
(CTM - Current Transformation Matrix)
– to je matrica s realnim koeficijentima, ortogonalna je A-1=A, AA=I
(čuva duljinu i kutove, transformacija čvrstog tijela)
– determinanta matrice je jednaka 1, ako ne postoji skaliranje
(determinanta odgovara površini / volumenu) ako je determinanta negativna došlo je do
promjene desnog lijevog koordinatnog sustava
– svojstvene vrijednosti matrice su {1, cos() i sin ()} tj. {1, ei},
– svojstveni vektor koji odgovara svojstvenoj vrijednosti 1 je os rotacije,
(množenje s 1 pri transformaciji će čuvati vrijednosti, npr rotacija oko y osi ne mijenja y vrijed.)
– stupci inverzne rotacijske matrice su ortonormirani vektori koji razapinju rotirani prostor
http://www.falstad.com/matrix/
• problem je ako imamo zadane dvije orijentacije i između njih želimo kontinuirano
interpolirati orijentaciju
http://www.falstad.com/matrix/http://www.falstad.com/matrix/
Ž. M, ZEMRIS, FER 1-68
C) Os rotacije i kut rotacije
– rotacija zadana pomoću osi oko koje se rotira i kuta za koji se rotira
interpolacija, t parametar:
• TRANSFORMATION
1 rotacija oko osi A1, 2 rotacija oko osi A2 RB() rotacija oko osi B za kut , B je os okomita na A1 i A2 4 DOF, problemi se javljaju u sastavljanju niza rotacija – nije praktično
x
y
z
A1
A2
1
2 B
21 AAB
21
21cosAA
AA
211 ttt
1AtRA Bt
Tutors/transformation.exe
Ž. M, ZEMRIS, FER 1-69
Os rotacije i kut rotacije
– matrica rotacije za zadani kut oko osi v, (ako nam nije dostupan OpenGL)
• gdje je s= sin(), c= cos(), u= 1-cos()
• ili drugi zapis rotacija točke v za kut oko osi 𝝎
• v𝑟𝑜𝑡= v cos () + 𝝎×v sin () + 𝝎 (𝝎⋅v) (1−cos ())
y
z
cuvsvuvvsvuvv
svuvvcuvsvuvv
svuvvsvuvvcuv
R
zxzyyzx
xyzyzyx
yxzzyxx
2
2
2
,v
x
A1
A2
B
Ž. M, ZEMRIS, FER 1-70
baibazi ,,,12
iabbabbaaibaiba 212121212211
ibaiba 1111
ibazibaz 1111 '
ibbaaibaiba
ibbaaibaiba
21212211
21212211
Ž. M, ZEMRIS, FER 1-71
Kvaternioni (engl. quaternions)
– W.R. Hamilton uklesao je osnovnu formulu
u kamen na mostu u Irskoj
– dio općenitije klase hiperkompleksnih brojeva (tvore grupu)
– kvaternion se može interpretirati kao skalar plus vektor
– zadane rotacije izrazimo u obliku kvaterniona,
koordinate tijela množimo kvaternionima.
1222 kjikji
C
wzdcba
biadic
dicbia
zw
wzH ,,,,,,
a14321 akajaiaaq
Ž. M, ZEMRIS, FER 1-72
• osnovne operacije s kvaternionima
– množenje osnovnih vektora (slično vektorskom produktu u 3D)
– konjugirani broj
– modul (apsolutna vrijednost), jedinični kvaternion, inverzni element
– jesu asocijativni, nisu komutativni
– zbroj
– produkt kvaterniona (dobijemo umnoškom pojedinih komponenti)
jkiik
ijkkj
kijjii
kk
jj
ii
1
1
1
1
kajaiaaqkajaiaaq 43214321
,1za,//, 1212
4
2
3
2
2
2
1
qqqqqqqqqaaaaq
1221321321 qqqqqqqqqq
2112212121221121 vvvvvvvv ssssssqq
zzyyxx vvvvvvssssqq 21212121221121 vv
i
j k
Ž. M, ZEMRIS, FER 1-73
• reprezentacija rotacije oko vektora u za kut kvaternionom:
• rotacija točke P, točku predstavimo kvaternionom p = (0, P) (Sandwiching)
• dvije uzastopne rotacije q1, q2:
• matrični oblik rotacije P=[xp yp zp], za kvaternion q = [w (x y z)]:
• čisti kvaternion:
1ˆ,2/sinˆ,2/cos uuvv ssq
11 normiranjeako, qqqqpqprotirana
11212121112121112 qqpqqqqpqqqqpqqprotirana
2222
2222
2222
2222
000
02222
02222
02222
1
zyxw
zyxwwxyzwyxz
wxyzzyxwwzxy
wyxzwzxyzyxw
P
QzyxPQP rotppprotrotirana
2111 00jedioskalarni0 vvv qqq
Ž. M, ZEMRIS, FER 1-74
• Npr. točku P = (0 1 1) treba rotirati za 90 oko y osi
Kvaternion za točku P je P= (0 0 1 1).
Rotacija za 90 oko y osi predstavljena kvatrnionom je
02
20
2
2
02
20
2
2
010ˆ,2/90sinˆ2/90cos
1q
q
q uu
kji
kjikji
00
02
20
2
2
2
2
2
2
2
2
2
21
qpqprot
kjikjikji 0
2
20
2
2000
2
20
2
21qpqprot
x
P= (0 1 1)
Prot=(1 1 0)
y
z
Ž. M, ZEMRIS, FER 1-75
Interpolacija kvaterniona
– potrebno je očuvati jediničnu duljinu
– ne interpolira se linearno, linearnom interpolacijom nećemo ostvariti
konstantnu brzinu
– LERP – linearna interpolacija (engl. linear interpolation)
– SLERP – linearna interpolacija po površini sfere (engl. Spherical
linear interpolation)
– dualni kvaternioni – čuvaju poziciju (translaciju) i orijentaciju – (https://goote.ch/0e7df388f6ca4787be8884a87504955e.scene/ Gimbal – 4x addRotation pa 5x drugi addRotation )
– https://nccastaff.bournemouth.ac.uk/jmacey/WebGL/QuatSlerp/
– vs. http://www.iwant2study.org/lookangejss/math/ejss_model_glimbal8wee02/glimbal8wee02_Simulation.xhtml
–
lerp slerp
q(t) q(t)
q0(t) q1(t)
https://goote.ch/0e7df388f6ca4787be8884a87504955e.scene/https://nccastaff.bournemouth.ac.uk/jmacey/WebGL/QuatSlerp/http://www.iwant2study.org/lookangejss/math/ejss_model_glimbal8wee02/glimbal8wee02_Simulation.xhtmlhttp://www.iwant2study.org/lookangejss/math/ejss_model_glimbal8wee02/glimbal8wee02_Simulation.xhtmlhttp://www.iwant2study.org/lookangejss/math/ejss_model_glimbal8wee02/glimbal8wee02_Simulation.xhtmlhttp://www.iwant2study.org/lookangejss/math/ejss_model_glimbal8wee02/glimbal8wee02_Simulation.xhtmlhttp://www.iwant2study.org/lookangejss/math/ejss_model_glimbal8wee02/glimbal8wee02_Simulation.xhtmlhttp://www.iwant2study.org/lookangejss/math/ejss_model_glimbal8wee02/glimbal8wee02_Simulation.xhtmlhttp://www.iwant2study.org/lookangejss/math/ejss_model_glimbal8wee02/glimbal8wee02_Simulation.xhtmlhttp://www.iwant2study.org/lookangejss/math/ejss_model_glimbal8wee02/glimbal8wee02_Simulation.xhtmlhttp://www.iwant2study.org/lookangejss/math/ejss_model_glimbal8wee02/glimbal8wee02_Simulation.xhtmlhttp://www.iwant2study.org/lookangejss/math/ejss_model_glimbal8wee02/glimbal8wee02_Simulation.xhtmlhttp://www.iwant2study.org/lookangejss/math/ejss_model_glimbal8wee02/glimbal8wee02_Simulation.xhtml
Ž. M, ZEMRIS, FER 1-76
– SLERP – linearna interpolacija po površini sfere (engl. Spherical
linear interpolation)
– potrebno je interpolirati između zadanih položaja na sferi
– pojedine vrijednosti q(t) se moraju normirati
– negativan kvaternion (- q1) = (-s –v) predstavlja istu orijentaciju
– interpolaciju ćemo obavljati između q0 i q1 ili q0 i (- q1) ovisno o
kutu između tih kvaterniona (ako je kut(q0, q1) pozitivan, taj put je
kraći i on se uzima u obzir, ako ne uzima se negativna vrijednost q1)
– za ostvarivanje krivulje po sferi,
potrebna je interpolacija (SQUAD)
101
1010
cos
10,sin
sin1sin),,(
ttqtq
tqtqqslerp
Ž. M, ZEMRIS, FER 1-77
– svojstvo kvaterniona interesantno u primjeni je:
– fraktalni skupovi (quaternioni) – 6_obj1.mpg
– https://www.shadertoy.com/view/MsfGRr
Vizualizacija rotacije kvaternionima pomoću pojasa učvršćenog u ishodištu:
- rotacija odgovara množenju s kvaternionom
(npr. rotacija oko osi x (i) za 180° odgovara
množenju s q=(0 1 0 0), q-1 =(0 -1 0 0).
- rotacija za 360° daje početno stanje ali uvrnuto (-1)
- „Dirac's belt trick” – invarinatnost na rotaciju
720° ali nije invarijantno na 360°
7_belt-trick-win32\application-belt-trick-win32\BeltTrick.win32.exe (srednji miš)
– https://eater.net/quaternions
1010 )5.0,,(,5.0 qqtqqslerpt
i j
6_obj1.mpghttps://www.shadertoy.com/view/MsfGRr7_belt-trick-win32/application-belt-trick-win32/BeltTrick.win32.exe7_belt-trick-win32/application-belt-trick-win32/BeltTrick.win32.exe7_belt-trick-win32/application-belt-trick-win32/BeltTrick.win32.exe7_belt-trick-win32/application-belt-trick-win32/BeltTrick.win32.exe7_belt-trick-win32/application-belt-trick-win32/BeltTrick.win32.exe7_belt-trick-win32/application-belt-trick-win32/BeltTrick.win32.exe7_belt-trick-win32/application-belt-trick-win32/BeltTrick.win32.exe7_belt-trick-win32/application-belt-trick-win32/BeltTrick.win32.exe7_belt-trick-win32/application-belt-trick-win32/BeltTrick.win32.exe7_belt-trick-win32/application-belt-trick-win32/BeltTrick.win32.exe7_belt-trick-win32/application-belt-trick-win32/BeltTrick.win32.exe7_belt-trick-win32/application-belt-trick-win32/BeltTrick.win32.exe7_belt-trick-win32/application-belt-trick-win32/BeltTrick.win32.exe7_belt-trick-win32/application-belt-trick-win32/BeltTrick.win32.exe7_belt-trick-win32/application-belt-trick-win32/BeltTrick.win32.exe7_belt-trick-win32/application-belt-trick-win32/BeltTrick.win32.exehttps://eater.net/quaternionshttps://eater.net/quaternions
Ž. M, ZEMRIS, FER 1-78
REZIME:
A) Eulerovi kutovi 3DOF
• rotacija u sustavu scene 9DOF - 3DOF - 3DOF= 3DOF
• zastoj osi
B) Rotacijska matrica
• znamo početni i krajnji položaj – problem kao interpolirati između
C) os i kut 4DOF
• nepraktični za interpolaciju niza zadanih rotacija
D) Kvaternioni 4DOF
Recommended