Caméras
Un objet caméra décide de ce que voit votre visiteur et de la façon dont il se déplace.
Modes de contrôle
| Mode | Le visiteur… |
|---|---|
none | ne peut pas bouger la caméra — c'est vous qui la pilotez |
orbit | glisse pour tourner autour d'une cible, molette pour zoomer |
fly | vole librement au clavier et à la souris |
firstPerson | regarde autour de lui depuis là où il est, pointeur capturé |
lock | pointeur capturé, mais la caméra continue de suivre son objet |
lock est celui qu'il vous faut pour un personnagefirstPerson confie la caméra elle-même aux contrôles du pointeur, ce qui la détache de son
objet — parfait pour quelqu'un qui tourne autour d'un modèle, inutile pour un personnage, car la
caméra cesse de suivre le corps.
lock capture le pointeur de la même façon mais laisse la caméra attachée, et transmet le
mouvement de la souris à votre script. Ça, c'est un jeu à la première personne.
Réglages d'orbit
orbit est le mode par défaut parce qu'il convient aux visionneuses de produits, et c'est celui
qui a le plus à régler :
| Réglage | Effet |
|---|---|
target | le point autour duquel on tourne |
enableRotate · enablePan · enableZoom | quels gestes sont permis |
minDistance · maxDistance | à quel point le visiteur peut s'approcher ou s'éloigner |
minPolarAngle · maxPolarAngle | jusqu'où il peut passer au-dessus et en dessous |
enableDamping · dampingFactor | combien le mouvement glisse après le relâchement |
autoRotate · autoRotateSpeed | une lente rotation au repos |
Limiter l'angle polaire vaut le coup sur presque toutes les visionneuses de produits : cela empêche les gens de passer sous le sol et de voir la scène par en dessous, ce qu'aucun éclairage ne rend intentionnel.
Optique
fov est le champ de vision en degrés — 50 est un défaut naturel, plus bas donne un rendu
téléobjectif et plus plat, plus haut un rendu plus large et plus spectaculaire.
near et far bornent ce qui est dessiné. Les objets plus proches que near ou plus loin que
far sont écrêtés.
Des surfaces proches l'une de l'autre se mettent à scintiller quand le tampon de profondeur manque
de précision. Si vous voyez cela, augmentez near avant de baisser far — near a bien plus
d'effet sur la précision.
Réglages de fly
Le mode fly se déplace au clavier, et les touches sont configurables — y compris en suivant une
des liaisons nommées du projet plutôt qu'en nommant des touches. Une vitesse et un multiplicateur
de boost (Shift maintenu par défaut) contrôlent le rythme.
Vues supplémentaires
Une vue supplémentaire effectue une seconde passe de rendu depuis une caméra, par-dessus la principale. C'est ainsi qu'on construit une minicarte, un rétroviseur ou un moniteur de surveillance.
Posez-la sur un objet qui a déjà une caméra, et choisissez où elle va :
| Cible | Rend vers |
|---|---|
screen | un rectangle du canevas — position et taille en fractions de l'écran |
texture | une image hors écran, qu'un matériau peut ensuite afficher |
La cible texture est la plus amusante : rendez la vue d'une caméra dans une texture, posez cette
texture sur un objet écran de votre scène, et vous avez un vrai moniteur montrant une autre partie
du monde.
Les vues supplémentaires se dessinent après la passe principale, dans l'ordre que vous donnez.
Deux moniteurs signifient que la scène est dessinée trois fois. Elles valent leur coût là où elles comptent, et valent d'être coupées là où elles ne comptent pas.
Quelle caméra est active
Une scène se rend à travers une caméra à la fois. Un script peut demander laquelle et en changer :
ctx.camera.entity();
ctx.camera.setActive(securityCam);
ctx.camera.pose();
Le transform de la caméra est toujours la source de vérité — écrivez dedans pour la déplacer.
Notez qu'en orbit et firstPerson les contrôles possèdent la rotation, donc une rotation que
vous écrivez sera écrasée ; la position, elle, est respectée. Voir
l'API ctx.
Et si les contrôles de jeu pilotent une caméra, le mode de contrôle propre à cette caméra est ignoré — le dispositif se battrait avec lui à chaque image.
Suite : Ressources — modèles, images et sons.