Outil d’alignement d’arbres SKF Application pour machines ...
IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la...
Transcript of IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la...
![Page 1: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/1.jpg)
IFT3355: Infographie Projections
© Pierre Poulin Dép. I.R.O.
Université de Montréal
![Page 2: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/2.jpg)
2D et 3D
Monde en 3D Affichage en 2D
reconstruction (vision par ordinateur)
projection clipping par la pyramide de vue
transformation fenêtre-clôture
rendu (infographie)
![Page 3: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/3.jpg)
• Projection réduit le domaine – typiquement en infographie, n=3 et m=2
• Un projecteur est un segment reliant à un centre de projection
Pn ∈ℜn →ℜm où m < n
nP
Parallèle Perspective
Projecteurs
![Page 4: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/4.jpg)
Projecteurs
• L’intersection d’un projecteur avec la surface de projection correspond à
• Lorsque cette surface est planaire, on parle de projection planaire
• Quelques exemples de projections non-planaires – oeil de poisson, projection omnimax, carte du
monde
mP
![Page 5: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/5.jpg)
Projections non-planaires
Cylindrique
Sphérique
![Page 6: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/6.jpg)
Projection planaire
• On divise les projections planaires en – projection parallèle – projection perspective
![Page 7: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/7.jpg)
Projection parallèle
• Centre de projection est à l’infini • Direction de projection
• Projecteurs sont parallèles entre eux • Lignes parallèles en 3D demeurent parallèles après
projection • Angles entre les lignes peuvent changer
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
−−−
=⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
−⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
01112
12
12
1
1
1
2
2
2
zzyyxx
zyx
zyx
direction ou point à l’infini
Notez: intuitivement ok, mais pas mathématiquement
![Page 8: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/8.jpg)
Projection perspective
• Centre de projection est à une distance finie
• Taille d’un objet augmente lorsque la distance au centre de projection diminue (perspective foreshortening)
• Lignes parallèles en 3D ne sont plus parallèles après projection
• Si le centre de projection est déplacé à l’infini, on obtient une projection parallèle
![Page 9: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/9.jpg)
Projection perspective simple
Z
Y
centre de projection
plan de projection
d
),,( zyxP
),,( dyxP ppp
),,0( zyP
Xd
),0,( zxP
![Page 10: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/10.jpg)
Décomposition selon XZ et YZ
),,0( zyP
),,0( dyP pp
Z
Y
dcentre de projection
),0,( zxP
),0,( dxP pp
Z
X
dcentre de projection
dzp
p yyzy
dy
== :
Règle des triangles semblables:
dzp
p xx
zx
dx
== :
![Page 11: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/11.jpg)
Matrice de base de projection
€
xpypd1
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
=
xzdyzdzzdzdzd
⎡
⎣
⎢ ⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥ ⎥
=
xyzzd
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
=
1 0 0 00 1 0 00 0 1 00 0 1
d 0
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
xyz1
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
Le facteur sera utilisé pour normaliser dans le cadre des coordonnées homogènes
dz
![Page 12: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/12.jpg)
Plan de projection à z=0
),0,( zxP
),0,( dxP pp
Z
X
d
centre de projection
),0,( dzxP −
)0,0,( pp xP
Z
X
d−
centre de projection
![Page 13: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/13.jpg)
Plan de projection à z=0
€
xpyp01
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
=
xy0
zd +1
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
=
1 0 0 00 1 0 00 0 0 00 0 1
d 1
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
xyz1
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
T (0, 0,d) suivie de Mproj et enfin de retour à T (0, 0,−d)
Lorsque d est à l’infini, on obtient une projection parallèle. Si la direction de projection est parallèle à la normale du plan, on parle de projection orthographique. Sinon on parle de projection oblique.
![Page 14: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/14.jpg)
Pyramide de vue
1. Clipping avec les six plans définissant le volume de vue
2. Projection des survivants au clipping sur la fenêtre 3. Transformations en coordonnées d’affichage
centre de projection volume
de vue
arrière-plan avant-plan
![Page 15: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/15.jpg)
Volume de vue canonique
• Le clipping avec des plans arbitraires peut être coûteux, alors on transforme la pyramide de vue dans une forme canonique
- Transforme des points qui pourraient être clippés + Clipping sera simplifié
Z
X ou Y
-1
1
-1 0
arrière-plan avant-plan
Para
llèle
Z
X ou Y
-1
1
-1 0
arrière-plan
avant-plan
Pers
pect
ive
![Page 16: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/16.jpg)
Nomenclature • VRP: view reference point
– point sur le plan de vue • VPN: view-plane normal
– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector
– vecteur 3D d’alignement vertical de la fenêtre 3D • PRP: projection reference point
– point par lequel passent tous les projecteurs – ce point peut être à l’infini – DOP = (CW - PRP): direction of projection
• CW: center of the window – centre de la fenêtre rectangulaire
![Page 17: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/17.jpg)
Nomenclature
plan de vue
VRP VPN ( )minmin ,vu
( )maxmax ,vuCW
PRP
VUP
n
v
u
![Page 18: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/18.jpg)
Espaces 3D caméra et 2D image
u
n
VUP
VUP v
VRP
plan de vue
u
v),( maxmax vu
),( minmin vu
CW
3D 2D
VRP
![Page 19: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/19.jpg)
Projection parallèle: systèmes de coordonnées
u
v
n
PRP
CW
VRP
DOP
![Page 20: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/20.jpg)
Projection parallèle: configuration finale
(1,0,0)
(0,1,0)
(-1,0,0)
(0,-1,0)
(0,0,-1)
![Page 21: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/21.jpg)
Transformations pour une projection parallèle
1. Translation du point de référence VRP du plan de vue vers l’origine
2. Alignement de la fenêtre tel que
)( VRPT −
€
A =
r1x r2x r3x 0r1y r2y r3y 0r1z r2z r3z 00 0 0 1
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
€
Rz :VPN→ Z (r1z,r2z,r3z ) =VPNVPN
Rx : u→ X (r1x,r2x,r3x ) =VUP × Rz
VUP × Rz
Ry : v→Y (r1y,r2y,r3y ) = Rz × Rx
![Page 22: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/22.jpg)
Transformations pour une projection parallèle
3. Cisaillement pour que la direction de projection soit parallèle à l’axe des Z
€
dopxdopydopz0
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
=
umax + umin2
vmax + vmin201
⎡
⎣
⎢ ⎢ ⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥ ⎥ ⎥
−
prpuprpvprpn1
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
Z
X ou Y
0
dop
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
=⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
010000100010001
0
00
dopzdopydopx
shyshx
dopz
dopzdopy
shy
dopzdopx
shx
−=
−=
Z
X ou Y
maxmaxou vu
minminou vuF B
![Page 23: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/23.jpg)
Transformations pour une projection parallèle
4. Translation et changement d’échelle sous forme canonique
€
T − umax + umin( )
2,− vmax + vmin( )
2,−F
⎛
⎝ ⎜
⎞
⎠ ⎟ et S 2
umax − umin
, 2vmax − vmin
, 1F − B
⎛
⎝ ⎜
⎞
⎠ ⎟
)( parparparpar VRPTAShTSN −=
Z
X ou Y 1+
1−1−
![Page 24: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/24.jpg)
Projection perspective: systèmes de coordonnées
u
v
n
PRPCW
VRP
![Page 25: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/25.jpg)
Projection perspective: configuration finale
(-1,1,-1)
(-1,-1,-1) (1,-1,-1)
(1,1,-1)
(0,0,0)
![Page 26: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/26.jpg)
Transformations pour une projection perspective
1. Translation du point de référence VRP du plan de vue vers l’origine
2. Alignement de la fenêtre tel que
)( VRPT −
€
A =
r1x r2x r3x 0r1y r2y r3y 0r1z r2z r3z 00 0 0 1
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
€
Rz :VPN→ Z (r1z,r2z,r3z ) =VPNVPN
Rx : u→ X (r1x,r2x,r3x ) =VUP × Rz
VUP × Rz
Ry : v→Y (r1y,r2y,r3y ) = Rz × Rx
![Page 27: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/27.jpg)
Transformations pour une projection perspective
3. Translation du centre de projection vers l’origine 4. Cisaillement pour que la ligne centrale (PRP-CW)
s’aligne sur l’axe Z
)( PRPT −
€
00
dopz0
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
=
1 0 shx 00 1 shy 00 0 1 00 0 0 1
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
dopxdopydopz0
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
dopzdopy
shy
dopzdopx
shx
−=
−=
Z
X ou Y
0
dopCW
![Page 28: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/28.jpg)
Transformations pour une projection perspective
5. Changement d’échelle sous forme canonique
Z
X (ou Y)
0 CW
( )2
minmax uux
−=
( )2
minmax uux
−−=
zpvr ʹ
€
pente = ±1 → umax − umin( )
2= vr ʹ p z
€
S −2vr ʹ p zumax − umin
, −2vr ʹ p zvmax − vmin
,1⎛
⎝ ⎜
⎞
⎠ ⎟
![Page 29: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/29.jpg)
Transformations pour une projection perspective
5. Changement d’échelle sous forme canonique
Z
X (ou Y)
0 CW
zpvr ʹFpvr z +ʹ
Bpvr z +ʹ
€
S −1vr ʹ p z + B
, −1vr ʹ p z + B
, −1vr ʹ p z + B
⎛
⎝ ⎜
⎞
⎠ ⎟
)( )( perperper VRPTAPRPTShSN −−=
zpvr ʹ
zpvr ʹ−
€
vr ʹ p z + B →−1
![Page 30: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/30.jpg)
Transformation sous une forme canonique
Z
X (ou Y)
0
minz
1−1+
1−
Z
X (ou Y)
0
1−1+
1−
€
1 0 0 00 1 0 00 0 1
1+zmin
−zmin1+zmin
0 0 −1 0
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
pour zmin ≠ −1
![Page 31: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/31.jpg)
Clipping contre la forme canonique
• Cohen-Sutherland en 3D (6 bits)
0 ; 11 ; 11 ; 1
>−<
>−<
>−<
zzyyxx
![Page 32: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/32.jpg)
Projection orthographique selon Shirley et al.
l r
t
b near
far -1 +1
-1
-1
+1
+1
Volume de vue orthographique Volume de vue canonique
€
S 2r− l( ) ,
2t−b( ) ,
2n− f( )( )
Notes: oeil regarde vers -Z ; le haut est +Y ; n > f
€
T − l+r( )2 , − b+ t( )
2 , − n+ f( )2( )
![Page 33: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/33.jpg)
Projection orthographique
€
Mortho =
nx2 0 0 nx −1
2
0 ny2 0 ny −1
2
0 0 1 00 0 0 1
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
2r− l( ) 0 0 00 2
t−b( ) 0 00 0 2
n− f( ) 00 0 0 1
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
1 0 0 − l+r( )2
0 1 0 − b+ t( )2
0 0 1 − n+ f( )2
0 0 0 1
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
Image de pixels Origine au coin inférieur gauche
€
nx × ny
![Page 34: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/34.jpg)
Projection orthographique avec vue arbitraire
u
v
w e : position de vue g : direction de vue t : direction du haut
€
w =−gg
u =t × wt × w
v = w × u
€
Mv =
xu yu zu 0xv yv zv 0xw yw zw 00 0 0 1
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
1 0 0 −xe0 1 0 −ye0 0 1 −ze0 0 0 1
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
€
Mproj = MorthoMv
e g t
![Page 35: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/35.jpg)
Projection perspective
x
y
z
x
y
z
€
l,b,n( ) €
r,t, f( )
distortion non-linéaire des coordonnées z mais conserve l’ordre en z pour
€
n ≤ z ≤ f
Mpersp p =
xy
z n+ fn − fzn
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
→
nxz
nyz
n+ f − fnz
1
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
€
z = n→ Mpersp → z = nz = f → Mpersp → z = f
Propriété intéressante:
€
Mpersp =
1 0 0 00 1 0 00 0 n+ f
n − f0 0 1
n 0
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
une matrice parmi plusieurs…
*,*, f( )
€
l,b,n( )
r, t,n( )
r, t,n( )
![Page 36: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/36.jpg)
Manipulations de la matrice perspective
€
M(hp) = (hM)p = Mp⇒ nMpersp = Mpersp =
n 0 0 00 n 0 00 0 n + f − fn0 0 1 0
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
€
Mpersp−1 =
1n 0 0 00 1
n 0 00 0 0 10 0 − 1
fnn+ ffn
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
€
picking : xs,ys,zs( )→ x,y,z( )
€
nf( )Mpersp−1 = Mpersp
−1 =
f 0 0 00 f 0 00 0 0 fn0 0 −1 n + f
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
![Page 37: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/37.jpg)
Variations sur la matrice de projection
€
M = MorthoMpersp( )Mv
matrice de projection
€
Mproj =
2nr− l 0 l+r
l−r 00 2n
t−bb+ tb− t 0
0 0 f +nn− f
2 fnf −n
0 0 1 0
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
€
MOpenGL =
2 nr− l 0 l+r
l−r 00 2 n
t−bb+ tb− t 0
0 0 f + nn − f
2 f nn − f
0 0 −1 0
⎡
⎣
⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥
![Page 38: IFT3355: Infographie Projectionsbmpix/teaching/3355/2020/...– normale du plan de vue où repose la fenêtre 3D • VUP: view up vector – vecteur 3D d’alignement vertical de la](https://reader034.fdocument.pub/reader034/viewer/2022051808/6009cfb75cc33739980356b6/html5/thumbnails/38.jpg)
Simplifications dues au field-of-view
Si on regarde au centre de la fenêtre l = −rb = −t
Si le ratio des pixels (carrés) sont égaux nxny=rt
Spécifier alors laisse un seul degré de liberté, le field-of-view
€
nx,ny tg θ2⎛
⎝⎜⎞
⎠⎟=
tn
€
θ2