3d-transformationer & perspektiv · med 3d-grafik är att tänka s ig a tm nh revul kamera som...

11
1 3D-transformationer 3D-transformationer & Perspektiv & Perspektiv Lars Kjelldahl Vissa bilder lånade av Yngve Sundblad, Gustav Taxén Bakgrund Bakgrund Ett smidigt sätt att arbeta Ett smidigt sätt att arbeta med 3D-grafik med 3D-grafik är att tänka är att tänka sig att sig att man man har har en en virtuell virtuell kamera som kamera som ’’ ’’betraktar betraktar’’ ’’ de de föremål föremål man man vill rita vill rita. Om vi Om vi simulerar hur ljus simulerar hur ljus från ljuskällor reflekteras från ljuskällor reflekteras av ytor och når kameran av ytor och når kameran kan kan vi vi en en bild som bild som i bästa bästa fall fall liknar ett liknar ett fotografi fotografi. Bakgrund Bakgrund Vi Vi börjar börjar med med att ta reda på hur att ta reda på hur vi vi kan kan transformera transformera 3D-föremål 3D-föremål och gå och gå (projicera projicera) från tre dimensioner från tre dimensioner till till två två. Vi tar hand Vi tar hand om ljusreflektion och skuggning om ljusreflektion och skuggning senare senare i i kursen kursen! Kursmaterial Kursmaterial 3D-transformationer: 3D-transformationer: Kursboken Kursboken (Angel) (Angel) kap kap.4 .4 Projektioner Projektioner: Kursboken Kursboken (Angel), (Angel), kap kap.5 .5 En En kul och informativ artikel kul och informativ artikel: Ingrid : Ingrid Carlbom Carlbom & Joseph & Joseph Paciorek Paciorek: P : Pl anar anar Geometric Projections Geometric Projections and and Viewing Viewing Transformations, Transformations, Computing Surveys Computing Surveys 10 10(4), Dec 1978, (4), Dec 1978, pp pp.465-492 (hela -502) .465-492 (hela -502) Transformationer Transformationer i 3D i 3D Transformation Transformation Projektion Viewport- transformation Matematiska byggstenar Matematiska byggstenar Skalär Skalär (storhet storhet) u Punkt Punkt (position) (position) P Vektor Vektor (längd och riktning längd och riktning) v Kvaternion Kvaternion (3D-rotation) (3D-rotation)-orientering -orientering q (vi (vi går går dock dock inte igenom kvarternioner här inte igenom kvarternioner här)

Upload: others

Post on 04-Feb-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 3D-transformationer & Perspektiv · med 3D-grafik är att tänka s ig a tm nh revul kamera som ’’betraktar’’ de föremål man vill rita. •Om vi simulerar hur ljus f rån

1

3D-transformationer3D-transformationer& Perspektiv& Perspektiv

Lars Kjelldahl

Vissa bilder lånade avYngve Sundblad, Gustav Taxén

BakgrundBakgrund

•• Ett smidigt sätt att arbetaEtt smidigt sätt att arbetamed 3D-grafik med 3D-grafik är att tänkaär att tänkasig att sig att man man har har en en virtuellvirtuellkamera som kamera som ’’’’betraktarbetraktar’’’’ dedeföremål föremål man man vill ritavill rita..

•• Om vi Om vi simulerar hur ljussimulerar hur ljusfrån ljuskällor reflekterasfrån ljuskällor reflekterasav ytor och når kameranav ytor och når kamerankan kan vi vi få få en en bild som bild som iibästa bästa fall fall liknar ettliknar ettfotografifotografi..

BakgrundBakgrund

•• Vi Vi börjar börjar med med att ta reda på hur att ta reda på hur vi vi kankantransformera transformera 3D-föremål 3D-föremål och gå och gå ((projiceraprojicera))från tre dimensioner från tre dimensioner till till tvåtvå..

•• Vi tar hand Vi tar hand om ljusreflektion och skuggningom ljusreflektion och skuggningsenare senare i i kursenkursen!!

KursmaterialKursmaterial

•• 3D-transformationer:3D-transformationer:Kursboken Kursboken (Angel) (Angel) kapkap.4.4

•• ProjektionerProjektioner::Kursboken Kursboken (Angel), (Angel), kapkap.5.5En En kul och informativ artikelkul och informativ artikel: Ingrid : Ingrid Carlbom Carlbom & Joseph& JosephPaciorekPaciorek: P: Pllanar anar Geometric Projections Geometric Projections and and ViewingViewingTransformations, Transformations, Computing Surveys Computing Surveys 1010(4), Dec 1978,(4), Dec 1978,pppp.465-492 (hela -502).465-492 (hela -502)

Transformationer Transformationer i 3Di 3D

Transformation

Transformation

Projektion

Viewport-transformation

Matematiska byggstenarMatematiska byggstenar

•• Skalär Skalär ((storhetstorhet)) uu•• Punkt Punkt (position)(position) PP•• Vektor Vektor ((längd och riktninglängd och riktning)) vv

•• Kvaternion Kvaternion (3D-rotation)(3D-rotation)-orientering-orientering qq(vi (vi går går dock dock inte igenom kvarternioner härinte igenom kvarternioner här))

Page 2: 3D-transformationer & Perspektiv · med 3D-grafik är att tänka s ig a tm nh revul kamera som ’’betraktar’’ de föremål man vill rita. •Om vi simulerar hur ljus f rån

2

Skalär- och kryssproduktSkalär- och kryssprodukt

u

v

|v|

u ⋅ v θu ⋅ v = (uxvx+ uyvy,+uzvz) = |u||v| cos θSkalärprodukten är 0 omm faktorerna ärortogonala (vinkelräta)

u × v = (uyvz – uzvy, uzvx – uxvz, uxvy – uyvx)Kryssprodukten (en vektor) är ortogonal motbägge faktorerna

u

v

u × v

Två av de vanligaste vektoroperationerna i datorgrafik

Höger- och vänsterhänt koordinat-Höger- och vänsterhänt koordinat-systemsystem

x

y

z

OpenGL använder ett högerhänt koordinatsystem med

x-axeln till höger, y-axeln uppåt.z-axeln pekar utåt ur skärmen.

x

y

Direct 3D använder ett vänsterhänt koordinatsystem med

x-axeln till höger, y-axeln uppåt.z-axeln pekar in i skärmen.

I fortsättningen arbetar vi i högerhänta koordinatsystem.

z

BasvektorerBasvektorer

Givet 3 st 3-dimensionella basvektorer v1, v2, v3 som alla är vinkelräta mot varandra kan vi skriva vektorn w som

v1

v2

v3

wα1v1

α3v3

α2v2

α1v1 + α2v2w = + α3v3

BasvektorerBasvektorerVi inför ’’vektorer i vektorer’’ för att kunna skriva

w = α1v1 + α2v2 + α3v3

lite kortare som:

v1v2v3

w = aT

där

a = α1α2α3

aT = α1 α2 α3

3D-transformationsmatriser(3D-transformationsmatriser(jfr jfr 2D)2D)

!!!!

"

#

$$$$

%

&

!!!!

"

#

$$$$

%

&

=

!!!!

"

#

$$$$

%

&

=

!!!!

"

#

$$$$

%

&

!!!!

"

#

$$$$

%

&

!!!!

"

#

$$$$

%

&

=

!!!!

"

#

$$$$

%

&

=

!!!!

"

#

$$$$

%

&

=

!!!!

"

#

$$$$

%

&

11000

000

000

000

11

'

'

'

11000

100

010

001

111

'

'

'

z

y

x

s

s

s

z

y

x

z

y

x

z

y

x

t

t

t

z

y

x

z

y

x

z

y

x

z

y

x

z

y

x

T

S

TMTranslation

Skalning

3D-rotationsmatriser (3D-rotationsmatriser (tretre, en i 2D), en i 2D)

!

x '

y '

z'

1

"

#

$ $ $ $

%

&

' ' ' '

=Rz (()

x

y

z

1

"

#

$ $ $ $

%

&

' ' ' '

=

cos( )sin( 0 0

sin( cos( 0 0

0 0 1 0

0 0 0 1

"

#

$ $ $ $

%

&

' ' ' '

x

y

z

1

"

#

$ $ $ $

%

&

' ' ' '

x '

y '

z'

1

"

#

$ $ $ $

%

&

' ' ' '

=Rx (()

x

y

z

1

"

#

$ $ $ $

%

&

' ' ' '

=

1 0 0 0

0 cos( )sin( 0

0 sin( cos( 0

0 0 0 1

"

#

$ $ $ $

%

&

' ' ' '

x

y

z

1

"

#

$ $ $ $

%

&

' ' ' '

x '

y '

z'

1

"

#

$ $ $ $

%

&

' ' ' '

=Ry (()

x

y

z

1

"

#

$ $ $ $

%

&

' ' ' '

=

cos( 0 sin( 0

0 1 0 0

)sin( 0 cos( 0

0 0 0 1

"

#

$ $ $ $

%

&

' ' ' '

x

y

z

1

"

#

$ $ $ $

%

&

' ' ' '

Rotation kring z-axeln

Rotation kring x-axeln

Rotation kring y-axeln

Page 3: 3D-transformationer & Perspektiv · med 3D-grafik är att tänka s ig a tm nh revul kamera som ’’betraktar’’ de föremål man vill rita. •Om vi simulerar hur ljus f rån

3

Multipla transformationer Multipla transformationer ((som som 2D)2D)Vi kan sätta samman transformationer genom att

multiplicera matriserna:

1 0 0 00 s 0 00 0 1 -d0 0 0 1

α1α2α31

=

α1 sα2α3 - d 1

TS

1 0 0 00 1 0 00 0 1 -d0 0 0 1

1 0 0 00 s 0 00 0 1 00 0 0 1

1 0 0 00 s 0 00 0 1 -d0 0 0 1

=

T S TS

Multipla transformationerMultipla transformationer

1 0 0 00 1 0 00 0 1 -d0 0 0 1

1 0 0 00 1 0 00 0 s 00 0 0 1

1 0 0 00 1 0 00 0 s -d0 0 0 1

=

T S TS

Observera att ordningen på multiplikationen kan spela roll!

1 0 0 00 1 0 00 0 1 -d0 0 0 1

1 0 0 00 1 0 00 0 s 00 0 0 1

1 0 0 00 1 0 00 0 s -sd0 0 0 1

=

TS ST

Att specificera orienteringAtt specificera orientering((rotationerrotationer))•• Vi Vi börjar börjar med med att prövaatt pröva

yaw-pitch-roll (yaw-pitch-roll (gir-stig-rollgir-stig-roll).).•• Antag att flygplanet ärAntag att flygplanet är

modellerat så det initialtmodellerat så det initialt"pekar" längs "pekar" längs zz-axeln-axeln..

•• Vi Vi roterar först kringroterar först kringzz-axeln -axeln (roll), sedan (roll), sedan kringkringyy-axeln -axeln (yaw), (yaw), sist kringsist kringxx-axeln -axeln (pitch).(pitch).

•• Kallas för att arbeta Kallas för att arbeta med med EulerEulerangles angles eller eller EulermatriserEulermatriser..

xy

z

Gimbal Gimbal locklock

•• Om vi Om vi roterar roterar en en av axlarna så av axlarna så dendensammanfaller sammanfaller med en med en av av de de andra kan andra kan vivihamna hamna i i ett läge där ett läge där vi vi tappar tappar information!information!

•• Situationen kallas för Situationen kallas för Gimbal Gimbal locklock..•• Beror på att rotationerna alltid görs Beror på att rotationerna alltid görs i i sammasamma

ordningordning..

Rotation i 3DRotation i 3D

Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som

en (1 st) rotation kring en vektor.

Rotationsmatriserna (kring x-, y- och z-axlarna) kan sättas ihop till en transformation utgående från rotationsvektorn

och rotationsvinkeln

v

Allmän Allmän 3D-rotation - Angel 4.9.43D-rotation - Angel 4.9.4Om rotationsenhetsvektorn är a = (ax, ay, az)och rotationsvinkeln runt denna vektor ärθroterar man först kring x-axeln till y-planet (x=0) med vinkelnθx= arctan(ay/az); d=√ay2+az2, cos(θx)=az/d, sin(θx)=ay/d,sedan kring y-axeln till z-planet med vinkeln θy= -arcsin(ax); cos(θy)=d, sin(θy)=-ax,sedan kring z-axeln med vinkeln θz= θsedan tillbaka kring y-axeln med vinkeln -θysedan tillbaka kring x-axeln med vinkeln -θxAlltså blir totala transformationsmatrisen:Rx(-θx) Ry(-θy) Rz(θ) Ry(θy) Rx(θx)

Page 4: 3D-transformationer & Perspektiv · med 3D-grafik är att tänka s ig a tm nh revul kamera som ’’betraktar’’ de föremål man vill rita. •Om vi simulerar hur ljus f rån

4

KvaternionerKvaternioner, Angel 4.12, Angel 4.12En matematisk struktur som kan beskriva 3D-rotation kringen godtycklig vektor är kvaternioner (quaternions),uppfunna 1843 av irländske matematikern W.R. Hamilton.

Detta motsvarar komplexa talens (Euler mfl, 1700-talet),i2=-1, användning för att beskriva 2D-rotationer i planet:z = x + iy = r (cos µ + isin µ)Rotation vinkeln θ genom multiplikation medp = cos θ + isin θp*z = r (cos(µ + θ) + i sin(µ + θ))

Kvaternioner Kvaternioner ((quaternionsquaternions))

q = (q0, q1, q2, q3) = (q0, q)q = q1i + q2j + q3k,

där (jfr komplexa tal)i2 = j2 = k2 = -1ij=k, jk=i, ki=j

ji=-k, kj=-i, ik=-j

En kvaternion q definieras så här:

Projektioner Projektioner - - historiahistoriaProjektionsritningarProjektionsritningar::Arkitekten Vitruvius Arkitekten Vitruvius i Rom, i Rom, år år 14 14 fKrfKrPerspektivPerspektiv::känt av grekerkänt av greker, , formaliserat först (centralperspektiv)formaliserat först (centralperspektiv)under under renässansenrenässansen, , av arkitekter och målareav arkitekter och målare::

Giotto Giotto (1276-1336) Rafael (1483-1520)(1276-1336) Rafael (1483-1520)

Projektioner Projektioner - - historiahistoriaBrunelleschi (1377-1446): Duomo di Firenze mm,Brunelleschi (1377-1446): Duomo di Firenze mm,Leonardo da Vinci (1452-1519): Nattvarden mm,Leonardo da Vinci (1452-1519): Nattvarden mm,Dürer (1471-1528):Dürer (1471-1528):

Projektioner Projektioner - - historiahistoria

Brook Taylor, New Principles of Linear Perspective, 1719.

ProjektionerProjektionerPlanar Geometric Projections

Parallell Perspective

1-pt 2-pt 3-ptOrthographic Oblique

Cavalier CabinetMultiview Axonometric

Isometric Dimetric Trimetric

Alla projektionerna finns beskrivna med illustrativa figurer i Carlbom-Pacioreks artikel och i Angel 5.1.

Page 5: 3D-transformationer & Perspektiv · med 3D-grafik är att tänka s ig a tm nh revul kamera som ’’betraktar’’ de föremål man vill rita. •Om vi simulerar hur ljus f rån

5

Ortografisk projektionOrtografisk projektionProjektorerna är vinkelräta mot projektionsytan (på ”oändligt avstånd”).

I enklaste formen är det en eller flera vyer (multiview) med projektionsplan parallella till objektets huvudytor.Avstånd och vinklar bevaras i projektionerna.Typiskt exempel: maskinritningar

Axonometrisk ortografisk: Fortfarande vinkelräta projektorer men objektet vridet såatt man ser flera ytor.projektionsplan symmetriskt till alla tre huvudytorna:isometriskprojektionsplan symmetriskt till två av huvudytorna: dimetriskprojektionsplan utan sådan symmetri: trimetriskParallellitet bevaras, inte vinklar & avstånd (samma förkortning)

PerspektivprojektionPerspektivprojektionProjektor på ändligt avstånd.Storlek minskar med avstånd från projektionsytan.Avstånd och vinklar bevaras inte i projektionen.Parallella linjer konvergerar i ”fjärrpunkt” (vanishing point)

Här enpunkts (ett projektionsplan), finns också två- ochtre-, se Carlbom-Paciorek

PerspektivprojektionPerspektivprojektion, Angel 5.4, Angel 5.4

x

y

z

d

y

dz

PPp

Antag att vi projicerar punkten P på ett bildplan somligger d enheter från origo och är parallellt med x-y-planet:

Bildplan

PerspektivprojektionPerspektivprojektion

y

dz

PPp

P = x y z 1 T

z

yp

d =yz

yp =ydz =

y(z / d)

Likformiga trianglar:

Pp = x/(z/d) y/(z/d) d 1 T

Analogt för xp.Så den projicerade punkten blir:

Pp = xp yp d 1 T

yyp

PerspektivprojektionPerspektivprojektion

Vi vill kunna skriva perspektivprojektionen som en matris M. För att kunna göra det måste vi införa en ”normeringsoperation”,som mera matematisk stringent kan beskrivas medprojektiv geometri

P = x y z w T

med w skilt från 1 ser vi till att alltid dividera alla komponenter med w innan vi fortsätter, d.v.s.

P = x/w y/w z/w 1 T

Om resultatet av en transformation blir en punkt

PerspektivprojektionsmatrisPerspektivprojektionsmatris

1 0 0 00 1 0 00 0 1 00 0 1/d 0

xyz1

= x y zz/d

Eftersom z/d ≠ 1 dividerar vi alla komponenterna

med z/d innan vi använder punkten så att

vi får

x/(z/d) y/(z/d) d 1

Detta kallasperspektivdivision

i OpenGL.

MPp =

z

x

z

x

Page 6: 3D-transformationer & Perspektiv · med 3D-grafik är att tänka s ig a tm nh revul kamera som ’’betraktar’’ de föremål man vill rita. •Om vi simulerar hur ljus f rån

6

OrtografiskprojektionsmatrisOrtografiskprojektionsmatris

1 0 0 00 1 0 00 0 0 -d0 0 0 1

xyz1

= x y -d 1

MOp =Här är yp=yoch xp=xoch zp=-dså vi får

(i boken är d satt till 0)

Att positionera kameranAtt positionera kameran

Antingen tänker man att kameran flyttas i förhållande världen,eller att världen flyttas så att den hamnar framför kameran.

Operationerna är inverser av varandra.

I OpenGL är kameraramen fix så rent matematiskt gäller det senare alternativet. Men det finns en funktion som

hjälper en att ’’flytta världen’’ så att det motsvarar att flytta kameran.

Kombinationer av transformationerKombinationer av transformationer

•• 3D 3D alltså påalltså påmotsvarande sätt sommotsvarande sätt somi 2D.i 2D.

•• Varje Varje transformationtransformationmotsvarar ett motsvarar ett byte byte avavkoordinatsystemkoordinatsystem..

•• Så successivaSå successivatransformationer ärtransformationer ärockså successiva bytenockså successiva bytenav koordinatsystemav koordinatsystem!!

M1

M2M = M2M1

Kurvor och ytorKurvor och ytor

Representation with mathematical surfaces

Parametrisk form

Kurvor och ytor

Kubiska (grad 3)

Interpolerande Hermite Bezier B-Spline

Generell B-Spline

Polynom

Generella (grad d)

Uniform NURBS

Explicitform

Implicitform

Uppdelnings-procedur

Catmull-Clark Loop

Angel,Angel,kapkap.11.11 Representation Representation av kurvorav kurvor

x

y

10

1

0x = uy = u

0 ≤ u ≤ 1

x = fx(u)y = fy(u)

umin ≤ u ≤ umax

y = f(x) y = x

f(x, y) = 0 x - y = 0

Explicit

Implicit

Para-metrisk

Generellt Exempel

I 3D, med z, lägg till: explicit: z = g(x);implicit: f(x, y,z) =0 & g(x, y,z) = 0; parameter z = fz(u)

Page 7: 3D-transformationer & Perspektiv · med 3D-grafik är att tänka s ig a tm nh revul kamera som ’’betraktar’’ de föremål man vill rita. •Om vi simulerar hur ljus f rån

7

Why donWhy don’’t we t we just just useusey = f(x)y = f(x)??

instead instead ofofx = x = fxfx(u)(u)y = fy(u)y = fy(u)with 0with 0≤≤uu≤≤11

Parametriska kurvorParametriska kurvor

Om vi deriverar uttrycket för kurvan

p(u) =fx(u)fy(u)

dp(u)du =

dfx(u)du

dfy(u)du

får vi en vektor som definierar kurvans tangent:

ExempelExempel

p(u) =uu2

0 ≤ u ≤ 1

dp(u)du =

12u

I u = 0.5 får vi tangenten11

A curve in 3D can be defined by

x = x(u)y = y(u)z = z(u)

0 ≤ u ≤ umax

The tangent can be obtained with aderivativedx = dx(u)/dudy = dy(u)/dudz = dz(u)/du

YtorYtor

p(u,v) =fx(u,v)fy(u,v)fz(u,v) x

zuv

x = u+vy = u-v

z = u2+v2

0 ≤ u ≤ 1

x = fx(u,v)y = fy(u,v)z = fz(u,v)

umin ≤ u ≤ umax

z = f(x,y) z=xy

f(x, y, z) = 0 x2+y2+z2 -1 = 0

Explicit

Implicit

Para-metrisk

Generellt Exempel Parametriska ytorParametriska ytor

∂p(u,v)

∂fx(u,v)∂u

∂fy(u,v)∂u

∂fz(u,v)∂u

De vektorer vi får om vi deriverar m.a.p. u och vdefinierar ytans tangentplan:

∂u=

∂p(u,v)

∂fx(u,v)∂v

∂fy(u,v)∂v

∂fz(u,v)∂v

∂v=

∂p(u,v)∂u

×∂p(u,v)∂v

N(u,v) = är ytans normal.

Page 8: 3D-transformationer & Perspektiv · med 3D-grafik är att tänka s ig a tm nh revul kamera som ’’betraktar’’ de föremål man vill rita. •Om vi simulerar hur ljus f rån

8

Interpolerande polynomkurvorInterpolerande polynomkurvor

p0 = (p0x p0y p0z)T, p1 = (p1x p1y p1z)T, p2 = (p2x p2y p2z)T , p3 = (p3x p3y p3z)T

px =

p0xp1xp2xp3x

py =

p0yp1yp2yp3y

pz =

p0zp1zp2zp3z

p2p0

p1

p3

Vi samlar koordinaterna i tre vektorer:

Antag att vi har fyra styrpunkter p0, p1, p2 och p3 och att vi vill att kurvan ska gå genom dessa punkter.

Parametric, e.g. cubic curves:

x = x(u) = axu3 + bxu2 + cxu + dxy = y(u) = ayu3 + byu2 + cyu + dyz = z(u) = azu3 + bzu2 + czu + dz

0 ≤ u ≤ umax

Compare this with:x(u) = axu + bxy(u) = ayu + by

p(u) =( 2u3 – 3u2 + 1 ) p0 + (–2u3 + 3u2 ) p3 +( u3 – 2u2 + u ) p’0 + ( u3 – u2 ) p’3

Curves, Hermite

1 0 1 0 00 00MMHH = 0 0 = 0 0 11 00 -3 3 -2 -1 -3 3 -2 -1 22 -2 1 1-2 1 1

p(u) = p(u) = uuTT MMHH q, q, where qwhere qTT = (p0 p3 p= (p0 p3 p’’0 p0 p’’3)3)and and u = (uu = (u33 u u22 u 1) u 1)

uuTT MMHH is a is a blending functionblending function, , giving giving the the weights weights for the for the geometricgeometricconditionsconditions

Hermite, joint point

P(u) = c0 P0 + c1 P1 + c2 P2 + c3 P3Bezier curve demo

http://www.timotheegroleau.com/Flash/articles/cubic_bezier_in_flash.htm

This web page is a paper on Bezier curves with somemath and demos etc

Page 9: 3D-transformationer & Perspektiv · med 3D-grafik är att tänka s ig a tm nh revul kamera som ’’betraktar’’ de föremål man vill rita. •Om vi simulerar hur ljus f rån

9

p(u) =( 1- u )3 p0 + 3u( 1- u )2 p1 +3u2(1-u) p2 + u3 p3

Curves, Bezier

1 01 0 00 00MMHH = -3 -3 = -3 -3 00 00 3 -6 3 0 3 -6 3 0 -1-1 3 -3 1 3 -3 1

Note: Σ weights = 1

Bezier, joint point

Join two Bezier curves eachdefined by four control points!

What continuity can we expectin the joint point?

The cubic B-spline curve

We would like to have C2 continuity

p(u) =( 1- u )3 p0 + (4 - 6u2 + 3u3) p1 +(1 + 3u + 3u2 - 3u3) p2 + u3 p3

Intervals with many contributingcontrol points

Each control point contributes to four intervals

Curves, splinesUniform, nonrational B-splines

To get C0, C1 and also C2 continuity you can use spline curves.The word spline has it´s origin from a kind of ruler used byengineersYou combine a set of curves:

Control points

Curves

Knots

P1 P2 P3 P4 P5 Pm-1 Pm

Q3 Q4 Q5 Qm

t3 t4 t5 t6 tm tm+1

P0

Curves, splinesNonuniform, nonrational B-splines means that the distancesbetween the knots not necessarily are equal.The reason for using this is that you want to control continuity.

Multiple points does not solve the problem:

P0 P4

P1 = P2 = P3

Q3 Q4

Page 10: 3D-transformationer & Perspektiv · med 3D-grafik är att tänka s ig a tm nh revul kamera som ’’betraktar’’ de föremål man vill rita. •Om vi simulerar hur ljus f rån

10

Curves, splinesIt is better to use multiple knots.

Example of a sequence of knots:(0,0,0,1,2,2,3,4,5,5,5,5,)

ti = ti+1 implies Qi is a point

The blending functions aremore complicated and are defined recursively

P0P4

t4 = t5 = t6

Q3Q6

P3

Q7

Curves, splinesNURBS - NonUniform Rational B-Splines

x(t) = X(t)/W(t) y(t) = Y(t)/W(t) z(t) = Z(t)/W(t)

Q(t) = (X(t), Y(t), Z(t), W(t) )

To be used as homogeneous coordinates, which means thatonly control points has to be 3D-transformed

Bezier patch

Spline patch

An example ofrecursive subdivision of Bezier curves

Subdivision surfaces

http://www.multires.caltech.edu/teaching/courses/subdivision/

Page 11: 3D-transformationer & Perspektiv · med 3D-grafik är att tänka s ig a tm nh revul kamera som ’’betraktar’’ de föremål man vill rita. •Om vi simulerar hur ljus f rån

11

Inlämningsuppgift 1 på transformationer samt kurvor och ytorkommer på hemsidan