Aller au contenu principal

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

ModeLe visiteur…
nonene peut pas bouger la caméra — c'est vous qui la pilotez
orbitglisse pour tourner autour d'une cible, molette pour zoomer
flyvole librement au clavier et à la souris
firstPersonregarde autour de lui depuis là où il est, pointeur capturé
lockpointeur capturé, mais la caméra continue de suivre son objet
lock est celui qu'il vous faut pour un personnage

firstPerson 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églageEffet
targetle point autour duquel on tourne
enableRotate · enablePan · enableZoomquels gestes sont permis
minDistance · maxDistanceà quel point le visiteur peut s'approcher ou s'éloigner
minPolarAngle · maxPolarAnglejusqu'où il peut passer au-dessus et en dessous
enableDamping · dampingFactorcombien le mouvement glisse après le relâchement
autoRotate · autoRotateSpeedune 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.

Un rapport far/near énorme provoque du z-fighting

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 farnear 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 :

CibleRend vers
screenun rectangle du canevas — position et taille en fractions de l'écran
textureune 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.

Chaque vue supplémentaire est un rendu complet de plus

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.