Follow_Target_cam

Description :

Le noeud Follow_Traget_Cam est un noeud viewpoint qui a la particularité de pouvoir suivre un point cible à une certaine distance. Cette distance est définie par une distance maximale et minimale du point de vue par rapport à la position cible.
Le point de vue reste centré sur la position cible grâceà un Look-at intégré.

Télécharger

Syntaxe :

PROTO follow_target_cam [
	eventIn SFFloat fraction
	eventIn SFVec3f targetpos 0 0 0
	eventIn SFFloat set_dist
	eventIn SFFloat set_min_dist
	eventIn SFBool turn_aroundR
	eventIn SFBool turn_aroundL
	eventIn SFBool turn_aroundU
	eventIn SFBool turn_aroundD
	eventIn SFBool set_bind
	exposedField SFFloat fieldOfView 0.785398
	field SFString description ""
	exposedField SFVec3f pos_init 0 0 10
	field SFFloat dist 22
	field SFFloat min_dist 15
	exposedField SFVec3f offset 0 5 0
	exposedField SFRotation re_orientation 1 0 0 -.2
	eventOut SFTime bindTime
	eventOut SFBool isBound
	exposedField MFNode children []
	eventIn MFNode addChildren
	eventIn MFNode removeChildren
]

Propriétés :

fraction : eventIn de type SFFloat. Fraction qui rend la caméra dynamique.
postarget : eventIn de type SFVec3f. Position qui doit être observée et suivie par la caméra.
set_dist : eventIn de type SFFloat. Permet de redéfinir la distance maximale entre la cible et la caméra.
set_min_dist : eventIn de type SFFloat. Permet de redéfinir la distance minimale entre la cible et la caméra.
turn_aroundR : eventIn de type SFBool. Si TRUE, la caméra pivote autour de la cible sur la droite.
turn_aroundL : eventIn de type SFBool. Si TRUE, la caméra pivote autour de la cible sur la gauche.
turn_aroundU : eventIn de type SFBool. Si TRUE, la caméra pivote autour de la cible vers le haut.
turn_aroundD : eventIn de type SFBool. Si TRUE, la caméra pivote autour de la cible vers le bas.
set_bind : eventIn de type SFBool. Pour "binder" la caméra.
fieldOfView : exposedField de type SFFloat. Le champ de vision de la caméra.
description : field de type SFString. Pour donner un nom à la caméra.
pos_init : exposedField de type SFVec3f. Position initiale de la caméra.
dist: field de type SFFloat. Distance maximale entre la caméra et la position cible.
offset : exposedField de type SFVec3f. Champ permettant de décaler la position de la caméra indépendamment de sa postion calculé pour le suivi.
re_orientation : exposedField de type SFRotation. Champ permettant de décaler l' orientation de la caméra indépendamment de son orientation calculé par le Look-At.
bindTime : eventOut de type SFTime. renvois l' instant ou la caméra est "bindée".
isBound : eventOut de type SFBool. Renvois si la caméra est la vue active.
children : exposedField de type MFNode. Les objets Plcez ici des objets qui seront fixes quelque soit le point de vue.
addChildren : eventIn de type MFNode. Pour ajouter des objets fixes sur la caméra.
removeChildren : eventIn de type MFNode. Pour enlever des objets fixés sur la caméra.

Particularités :

L'activation (BIND = TRUE) de la caméra supprime tous les modes de navigation. En conséquence, vous ne pouvez plus naviguer de façon traditionnelle dans la scène. Cela peut aussi avoir comme conséquence la suppression du choix des vues pré définies et du mode de navigation du menu contextuel du plugin. Une façon de contourner ce problème est d' inclure un bouton appelant un script qui permet de forcé le basculement vers une autre vue et un autre mode de navigation. Placez ce bouton comme Children de la caméra.
Note importante : si la scène ne comporte qu' un seul point de vue, vous ne pourrez pas basculer vers un autre mode de navigation.

J' ai développé ce PROTO dans un but bien précis : je voulais faire une un viewPoint qui puisse suivre un objet déplacer interactivement dans la scène. L' idée est de faire comme les jeux 3D vue à la 3ème personne (personnage vue de dos).

Selon le déplacement de la cible, il se peut que la caméra aille se placer dans des endroits incongrus (à travers un mur, en dessous du sol, etc.. ). Utiliser alors les events turn-around pour pouvoir tourner la caméra.

L' amplitude verticale est limitée de "vue du dessus" à "vue de dessous". En conséquence, vous ne pouvez pas faire de looping verticale complet du point de vue autour de la cible. Par contre, vous pouvez tourner à l' infini dans chaque sens sur le plan horizontal.

Compatibilité :

Ce PROTO est écrit en VRML97 en tenant compte de la norme de script ECMA. A ce titre, il est théoriquement compatible avec tous les plugins VRML respectant ces deux normes. Je l' ai testé avec succès sur les plugins suivants :

Logo Contact BS Contact 6.1 de Bitmanagement.
Logo Blaxxun Contact 5.1 de Blaxxum.
Logo Cosmo Player Cosmo Player 2.1 de Cosmo Software.
Logo Cortona Cortona VRML client 4.0 de ParallelGraphics.

Si vous l' utilisez avec un autre navigateur et qu' il ne fonctionne pas, merci de me contacter pour me le signaler.

Valid XHTML 1.0 Strict Valid CSS!