English | Mandarin | Spanish | Italian | Russian
Le boygrouping fait appel à l'architecture client-serveur intégrée à vvvv. Il vous permet de contrôler n'importe quel nombre d'ordinateurs afficheurs (les clients) à partir d'un seul ordinateur (le serveur). Pendant que vous vous occupez du patching sur le serveur, vvvv prend soin de faire fonctionner les clients connectés de manière n'sync. Le boygrouping est souvent utilisé dans des systèmes multi-écrans ou des installations multi-projecteurs sans raccord.
Un boygroup consiste la plupart du temps en un pc-serveur dédié et n'importe quel nombre de pc-clients, le tout connecté par ethernet. Les connexions Gigabit sont bien entendu conseillées, mail il est déjà arrivé aux développeurs de faire du boygrouping dans vvvv alors que le 100baseT était le top du top...
Le boygroup le plus simple consisterait en un seveur et un seul client. Dans une telle configuration, vous pourriez même utiliser la sortie plein-écran du serveur comme une des sorties principales. Cependant, en fonction des ressources demandées par vos patches, cela ne serait peut-être pas une bonne idée étant donné que, la plupart du temps, le serveur fonctionne à une fréquence-image (framerate ou fps) inférieure à celle du client, puisqu'il a plus de travaille à fournir.
Il est généralement préférable de créer une structure de répertoire comme la suivante quand vous travaillez sur un projet spécifique avec vvvv:
C:\MONPROJET\patches C:\MONPROJET\ressources C:\MONPROJET\vvvv
Dans un boygroup, plus particulièrement, il est utile de partager le répertoire \MONPROJET pour son accès en réseau et de créer la même structure sur tous les clients. Notez cependant que les clients n'auront pas besoin des fichiers .v4p du dossier \patches, puisqu'ils recevront toutes leurs nodes depuis le serveur comme par magie! En revanche, vous pouvez placer les fichiers .fx dans ce dossier sur les clients, même s'il sont également présents sur le serveur.
Le boygroup ne transmet aucune ressource (texture, video, fichiers d'effets...) par réseau. Seule les données primitives sont prises automatiquement en charge. Ainsi, toutes les ressources auxquelles le patch du serveur a accès doivent également être disponibles sur les clients, dans les même répertoires. La synchronisation des structures de répertoire du serveur et des clients peut facilement être faite avec un simple outil de symétrisation
La partie "client" du patch est plutôt simple et clair. En fait aucun patching n'a besoin d'être fait sur les clients. Tout ce que vous avez à faire est de lancer vvvv.exe avec le paramètre d'exécution? /client [IPServeur]. comme ceci:
vvvv.exe /client 192.168.0.100
en partant du principe que 192.168.0.100 est l'adresse IP de votre serveur. Vous pouvez vérifier que vvvv est effectivement en mode client en regardant la barre des tâches: le bouton vvvv devrait désormais afficher quelque chose comme ça:
192.168.0.100=S
Sur le serveur, démarrez vvvv avec le paramètre d'exécution? /server et notez que le bouton vvvv de la barre des tâches affiche maintenant SERVER! pour indiquer son mode de fonctionnement.
Dans la même ligne de commande vous pouvez spécifier une IP de diffusion optionnelle sur laquelle le boygroup devrait fonctionner. Comme:
vvvv.exe /server 192.168.0.255Cela peut être utile si votre serveur possède plusieurs périphériques réseau. Si aucune IP n'est renseignée, l'adaptateur réseau par défaut de Windows sera choisi.
Pour dire au serveur quels sont les clients avec lesquels il doit communiquer, créez une node Boygroup (VVVV Server). Au pin "Clients" de cette node, connectez la liste des adresses IP de tous vos clients. En général, vous obtiendrez un patch similaire à celui-ci:
Notez que la node Boygroup renvoie une spread de valeur booléennes indiquant l'état de connexion pour chaque client. Si tout est paramétré correctement, ils devraient apparaître comme connectés quelques secondes après avoir été démarrés.
Lorsque vvvv fonctionne en mode serveur, le raccourci clavier Ctrl+B vous permet de boygrouper des nodes individuelles. Les nodes boygroupées deviennent bleu, ce qui indique qu'elles ont été reproduites sur les clients (même si vous ne les voyez pas) et sont désormais calculées par eux.
D'ordinaire, vous commencerez plutôt par boygrouper un Renderer. Remarquez comment vvvv boygroupe automatiquement certaines nodes connexes. C'est dû au fait que les nodes connectées via des "connexion de nodes" (comme les transformations, les textures, l'audio, la vidéo, les sorties d'objet, etc.) ont besoin d'être connectées du même côté du réseau. Pas la meine de vous prendre d'avantage la tête, tout est automatique.
En revanche, ce qui nécessite un peu plus de compréhension est quelles seront les nodes non-boygroupées automatiquement que vous devrez boygrouper manuellement pour de meilleurs résultats. Il n'y a pas de règle générale du style "boygroupez comme des gorets!" ou "ne boygroupez qu'en cas d'extrême nécessité"...
A la place, soyez conscient que toutes les données voyageant entre les nodes boygroupées (en bleu) et les nodes normales (en gris) sont transférées à travers le réseau à chaque image (mais uniquement si ces données sont modifiées, bien sûr). Par conséquent, vous devriez prendre garde à ce que ces connexions ne transportent pas de spreads trop grandes, et privilégier plutôt les nodes qui créent des spreads. De plus, il existe une limitation du réseau qui empêchera le boygroup de transmettre si vous essayez d'envoyer des spreads de très grandes tailles (voir la FAQ ci-dessous).
Jetons un coup d'oeil à 3 scénarios de boygrouping différents auxquels vous pourrez être confronté:
Déterminer quels sont les meilleures nodes à boygrouper nécessite un peu d'entraînement mais, en général, vous ne pouvez pas faire de grosses erreurs. Si votre résultat est lent ou saccadé, essayez de boygrouper des nodes différentes ou ajoutez une node Damper (Animation) bleu à votre animation.
Tous les clients devraient autant que possible fonctionner en parfaite synchro, ce qui n'est pas une tâche si lourde. Imaginez Justin, Lance, JC, Joey et Chris en train d'effectuer leurs pas de danse sur scène, tous exactement à la même position. Bien que cela créerait des artefacts intéressants (vous avez vu "La Mouche" de Cronenberg?), cela serait totalement impossible dans notre monde à 3 dimensions. Par conséquent, le boygrouping introduit un "ClientID" qui est le seul moyen pour vous de distinguer les différents clients à partir d'un patch.
La node Boygroup (VVVV Client) renvoi un ID différent à chaque client, compris entre 0 et (NombreDeClients-1). L'ordre dépend de la spread d'adresses IP que vous avez injectée dans la node Boygroup (VVVV Server). L'IP à la slice 0 sera le client 0, l'IP à la slice 1 sera le client 1 et ainsi de suite. Notez que sur le serveur, Boygroup (VVVV Client) renvoi la valeur que vous avez fixée pour son entrée "ServerID", et que cette valeur arbitraire n'a aucun impact sur les clients. Changer de ServerID vous permet seulement de simuler n'importe lequel des clients sur le serveur.
Pour un patch test simple regardez
girlpower\takethat.v4p.
Vous y verrez la node Boygroup (VVVV Client) à l'oeuvre. Dans l'exemple, elle est utilisée pour décaler la caméra sur chaque client.
Le scénario de boygrouping standard consiste à ce que vous vouliez continuer de patcher sur le serveur alors que les clients sont en plein-écran. Par conséquent, vous voudrez que les pins "Fullscreen" des Renderers soient fixés à 1 sur les clients et à 0 sur le serveur. Souvenez-vous que le seul moyen de distinguer le serveur des clients (et les clients entre eux) est le ClientID. En fonction de ça, vous pouvez faire un patch comme celui-ci pour avoir un renderer en fenêtre sur le serveur et en plein-écran sur les clients.
Reportez-vous à tonfilm-VideoSync?
Lorsque vous avez affaire à un nombre important de clients, il est souvent utile de démarrer/arrêter vvvv.exe sur chacun d'entre eux grâce à un seul clic du serveur. Ceci peut être fait via la node Remote Shell RSh (Network). Reportez-vous à RSH HowTo.
Pour que cette node fonctionne, les clients doivent exécuter l'écouteur de Remote Shell. Allez voir rshd.
Grâce à la fonction WakeOnLAN des cartes mères vous pouvez facilement dire aux pc clients de démarrer dés que le serveur a fini de démarrer. Voyez tonfilm-WOLandShutdown?.
Ce raccourci ne fonctionne qu'en mode serveur. Démarrer vvvv avec la marque /server pour activer le boygrouping
Jetez un coup d'oeil au Renderer (TTY). Il vous dira peut-etre pourquoi cette opération ne peut pas être effectuée. D'ordinaire, la raison est que vous êtes dans un sous-patch ou que des nodes Send/Receive sont impliquées. Pas de panic, toutes ces situations peuvent être résolues.
Eh ouais... Il y a des chances pour que ça arrive car le serveur et les clients ne sont pas synchronisés. Il se peut que les clients s'exécutent plus rapidement que le serveur, celui-ci étant quelque peu surchargé. Bien que le "bang" soit effectivement émis par le serveur, il se peut qu'il arrive aux client dans l'intervalle de 2 images et soit annulé.
VVVV établit une connexion TCP sur le port 3333 avec chaque client pour la transmission de tous les changements de graphe. Tous les changements de valeur sont diffusées sur le port UDP 3333. Sur la node Boygroup (VVVV Server) vous pouvez, en théorie, changer le protocole UDP pour le TCP; ce qui, en pratique, n'a pas grand intérêt. L'option "Quiet" serait plus utile puisqu'elle désactive la diffusion des changements de valeurs.
Boygroup (VVVV Server)
Clients: La liste des adresses IP de chaque client
LogToTTY: Permet de choisir quel type de messages vous voulez voir dans le Renderer TTY (utile seulement pour le débogage)
Broadcast Mode: Choisi quel protocole (TCP ou UDP) le serveur utilisera pour communiquer avec les clients. Pour le moment, utilisez TCP. UDP ne fonctionne pas sur certains PC
Connected: Une spread correspondant à la liste des adresses IP de l'entrée "Clients" et qui vous indique lesquels sont connectés.
Boygroup (VVVV Client)
ServerID: Permet de saisir l'ID qui apparaît en sortie du serveur
LogToTTY: Permet de choisir quel type de messages vous voulez voir dans le Renderer TTY (utile seulement pour le débogage)
Graph Request:
ClientID: L'ID respective de chaque client (si le client n'est pas connecté, l'ID est de -1)
system settings
anonymous user login
~2d ago
~2d ago
~10d ago
~12d ago
~13d ago
~17d ago
~17d ago
~24d ago
~1mth ago
~1mth ago