Types de projection :
viewSize = 900;
aspectRatio = canvasWidth/canvasHeight;
// OrthographicCamera( left, right, top, bottom, near, far )
camera = new THREE.OrthographicCamera(
-aspectRatio*viewSize / 2, aspectRatio*viewSize / 2,
viewSize / 2, -viewSize / 2,
-1000, 1000 );
camera.position.set( -890, 600, -480 );
cameraControls = new THREE.OrbitAndPanControls(camera,
renderer.domElement);
cameraControls.target.set(0,310,0);
+ Y toujours vers le haut
OrthographicCamera(left, right, top, bottom, near, far);
Que fait cette matrice ?
// PerspectiveCamera( angle, aspectRatio, near, far )
camera = new THREE.PerspectiveCamera( 30, aspectRatio, 1, 10000 );
camera.position.set( -170, 170, 40 );
cameraControls = new THREE.OrbitAndPanControls(camera,
renderer.domElement);
cameraControls.target.set(0,50,0);
camera.updateProjectionMatrix();
1 | 0 | 0 | 0 |
0 | 1 | 0 | 0 |
0 | 0 | -1.2 | -2.2 |
0 | 0 | -1 | 0 |
→Multiplier la matrice
pas ces points :
1 | 0 | 0 | 0 |
0 | 1 | 0 | 0 |
0 | 0 | -1.2 | -2.2 |
0 | 0 | -1 | 0 |
X | Y | Z | W | ||
(0, 0, -1)→ | (0, | 0, | -1 | 1) | →(0,0,-1) |
(0, 11, -11)→ | (0 | 11 | 11 | 11) | →(0,1,1) |
(0, 4, -6)→ | (0 | 4 | 5 | 6) | →(0,0.67,0.83) |
vertex shader →(X,Y,Z,W) Coordonnées clippées
W=0 : vecteur
W=1 : point
Exemple : travelling contrarié
=Effet cinématographique consistant à contrarier les effets simultanés d'un zoom et d'un travelling
hauteur=2*tan(FOV/2)*distance
A quelle distance ce trouve la caméra ?
FOV=90 degrés
hauteur d'écran=20cm
distance = cm
cameraControls.tergat.set(0,300,0);
Cible | Position | |
Orbit vers la droite | ||
Tourne la caméra vers la gauche | ||
Augmente le zoom | ||
Pan vers la droite |
→ Passage au NDC ?
XYZ in NDC: -1 à 1
Sur-échantillonnage
Echantillonnage multiple
renderer = new THREE.WebGLRenderer(
{ antialias: true }
);