Dans ce chapitre, vous trouverez quelques-unes des notions essentielles de la création graphique avec GEM. Pour commencer de façon simple, nous découvrirons comment créer une fenêtre de base et y afficher un carré blanc.
OpenGL est une librairie de calcul mathématique de graphisme en deux ou trois dimensions, mais elle ne gère pas l'affichage. C'est un concept important qui va nous permettre de comprendre les bases de la restitution (rendering) d'images ou de formes géométriques avec GEM.
Lorsque les images et les formes (ou tout autre objet visuel) sont affichés à l'écran, nous appelons cela la restitution, l'affichage, ou encore le rendu; sous ces termes se cache un seul et même concept. L'ordinateur va préparer une grille de pixels pour les afficher à l'écran. Il procède à partir d'une scène en deux ou trois dimensions dans laquelle différents acteurs (formes, images animées ou fixes, etc.) prennent place.
Pour créer une fenêtre contenant une scène, nous allons indiquer sur notre écran la zone destinée à la recevoir. À l'aide de l'objet [gemwin], nous allons spécifier cette zone, qui par défaut est de 500 par 500 pixels, et est positionnée en haut à gauche de l'écran. Ensuite, nous utiliserons l'objet [gemhead] pour indiquer quoi afficher dans cette fenêtre.
[gemwin] est l'objet GEM qui sert à créer la fenêtre dans laquelle vos graphiques seront dessinés. Cet objet contrôle à quel rythme chaque image de la scène sera rendu. En écrivant seulement [gemwin], la valeur par défaut votre taux d'images par seconde sera de 20. En le spécifiant explicitement, à l'aide d'un argument [gemwin 25] ou d'un message [frame 50<, vous pourrez modifier ce taux d'images par seconde.
Par défaut, [gemwin] nettoie également la fenêtre après chaque trame. Si ce n'était pas le cas, les objets laisseraient des traces derrière eux lorsqu'ils se déplacent dans la scène, car leurs images passées ne seraient pas effacées. Cet objet permet aussi d'afficher une couleur d'arrière-plan. On exprime les couleurs au moyen d'une liste de trois ou quatre nombres, correspondant aux valeurs de rouge, de vert, de bleu, et au niveau d'opacité. Dans le cas de l'arrière-plan, il n'y a pas d'opacité : par défaut, l'arrière-plan est noir.
Les différents messages possibles envoyés à [gemwin] peuvent être de nature à changer la taille de la fenêtre, démarrer et arrêter le processus de restitution, changer de point de vue la scène en 3D et permettre de contrôler de nombreux autres aspects de la fenêtre tel que l'anticrénelage, par exemple. Pour voir en détail toutes les propriétés et types de messages possibles, faites un clic droit sur l'objet [gemwin] afin d'accéder au fichier d'aide.
Le message qui va permettre de créer votre première fenêtre est [create<.
Ci-dessous, l'espace d'affichage et les repères tels que GEM les comprend. Cet exemple est valable pour votre fenêtre nouvellement créée.
Par exemple, un message [color 1 0 0< envoyé à [gemwin] va afficher un fond rouge. Ainsi, nous chargeons la couleur d'arrière-plan, noire par défaut. Il est à noter que les valeurs de chaque canal d'une couleur devront être comprises entre 0 et 1, contrairement à d'autres systèmes dans lesquels les canaux s'échelonnent de 0 à 255. Toutes les valeurs décimales seront possibles entre ces deux valeurs seuil. Les trois paramètres acceptés par le message [color< apparaîtront dans l'ordre suivant : rouge, vert, bleu.
Il existe l'objet [gemhead], qui va nous permettre de faire un pas de plus vers de formidables animations en trois dimensions.
Il est possible d'afficher un simple carré blanc dans notre fenêtre en reliant [gemhead] à un nouvel élément [square 1]. Il est à noter que les scènes sont calculées en fonction de proportions et non pas d'une taille définie en pixels. Ici, en ajoutant l'argument 1 à l'objet [square], on demande à [gemhead] de calculer proportionnellement la taille d'un carré dans la fenêtre, dans ce cas, de 1/4.
Afin d'activer le calcul de la scène dans la fenêtre nouvellement créée, on a besoin de le spécifier explicitement par l'envoi d'un message supplémentaire, à savoir [1<. Une autre manière possible est d'écrire ceci dans une seule boîte message comme ceci : [create, 1<. Cela envoie en fait deux messages à l'objet [gemhead], mais l'un après l'autre, très rapidement.
[create, 1< va automatiquement créer la fenêtre et ensuite (bien noter ici la présence importante de la virgule entre create et 1) exécuter la restitution de la scène à afficher.
Dans l'image ci-dessus sont précisés quelques exemples simples de messages envoyés à [gemwin]. Tous les messages situés en dessous du cadre noir devront être envoyés avant le message [create, 1<. En d'autres termes, nous ne pourrons pas changer l'apparence de la fenêtre GEM de manière dynamique, à l'aide de ces seuls messages. Après avoir défini les dimensions en longueur et en hauteur : [dimen (longueur) (hauteur)<, l'absence ou la présence de la bordure : [border< (1 pour oui, 0 pour non), nous pourrons envoyer le message [create, 1< et voir le résultat de nos choix s'afficher via 1.
Il est important de préciser qu'avec GEM, il n'est pas (encore) possible de créer plusieurs fenêtres d'affichage avec une seule instance de Pure Data. Même en utilisant plus d'un objet [gemwin] dans un seul ou plusieurs patchs ouverts en même temps, vous ne pourrez afficher qu'une seule zone de création de rendu. Il est préférable d'éviter de surcharger vos patchs de [gemwin].
Ainsi, toutes vos créations visuelles vont venir se superposer les unes aux autres (ou se mélanger) dans votre fenêtre. Afin de mieux maîtriser ces possibilités d'intégration visuelle, vous pourrez consulter le chapitre « Mixer des types de contenus », en particulier la section « L'ordre de rendu ».
Ce sont les toutes premières valeurs envoyées à l'objet [gemwin] qui garderont « la main » sur les créations suivantes (après avoir détruit la fenêtre). Pour réinitialiser ces paramètres, il faudra soit envoyer les nouveaux paramètres choisis à l'aide des messages dans [gemwin] ou mieux, utiliser le message [reset< pour réinitialiser les valeurs par défaut, suivi des nouveaux paramètres.
Il y a une erreur de communication avec le serveur Booktype. Nous ne savons pas actuellement où est le problème.
Vous devriez rafraîchir la page.