78
Ž. 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

1. Definiranje objekata, putanja i pokreta · • Uzlovi mogu biti višestruki. • u i+1 - u i = konst. Krivulja se naziva UNIFORMNA krivulja. Inače krivulja je NEUNIFORMNA. ®

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

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),,(

    qq

    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