Home

Manuel d`utilisation Fluxus 0.16

image

Contents

1. 0 vector 6 0 build cube cr e un nouveau robot robot pos myrobot retourne La position du robot robot vel myrobot retourne La vitesse du robot robot root myrobot retourne la primitive du robot Cela rend le code beaucoup plus lisible car toutes les donn es sont d sormais associ es un nom vocateur De m me il serra possible de cr er de nouveaux robots sans avoir les red finir chaque fois Un monde de robots serrait alors define struct world robots Et pourrait tre utilis comme cela construit un monde de 3 robots define myworld make world list make robot vector 0 vector 1 6 0 build cube make robot vector 1 6 vector 1 0 6 build cube make robot vector 2 0 vector 1 0 6 build cube retourne la primitive du second robot robot root list ref world robots myworld 1 Les tats mutables jusqu maintenant nous n avons programm que fonctionnellement et n avons pas modifi la m moire du moins pas explicitement cela notament cause des effets de bord que Scheme souhaite viter Donc pour pouvoir changer l tat d une struct il faut lors de sa d finition define struct robot pos mutable vel mutable root Cela g n rera les fonctions suivantes set robot pos robot vector 1 0 0 set robot vel robot vector 0 1 0 Pour que vous puissiez modifier les donn es dans une struct Pour un exemple plus concret re
2. 0 1 Page 61 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic Cette horloge interrupteur bascule entre les procedures tous les 128 ticks d horloge pour la structure de niveau superieur Synchronisation Un message osc peut tre envoye au client pour une synchronisation pour des performances collaboratives Le format du message de synchronisation est le suivant sync iiii timestamp seconds timestamp fraction beats per bar tempo Lors de la synchronisation Fluxa fournit deux autres definitions globales sync clock une horloge qui est remis z ro lorsque le sync iest re u sync tempo Demande le tempo actuel vous etes libre de le modifier ou de l ingorer note Il existe un programme qui ajoute timestamps sync des messages provenant d un autre reseau qui fait de la synchro collaborative fonctionnement correctement comme il n a pas besoin d horloge pour tre synchroniser aussi envoyer moi un mail pour plus d info Problemes courants a faire e Record execution Les graph cycliques ne fonctionne pas e Execution permanente de quelques noeuds nous fixerons delay reverb Frisbee est un moteur de jeux simplifi II est ecrit dans un language diff rent du reste de fluxus et ne necessite pas de connaissance ou l utilisation de l une ou l autre commande fluxus Le language utilise s appel Father Time Frimel qui est un language de programma
3. This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic texture load texture mytexturefile png shader set list mytexture oi Ceci dit GLSL d utiliser l unit de la premi re texture comme sampler pour ma texture C est cette unit de texture que la commande texture utilise lorsqu elle charge une texture en fait Pour faire transiter plus qu une seule texture En GLSL uniform sampler2D mytexture uniform sampler2D mysecondtexture En scheme charge vers la texture d unit 0 multitexture O0 load texture mytexturefile png Charge vers la texture d unit 1 multitexture 1 load texture mytexturefile2 png shader set list mytexture mysecondtexture 1 Le constructeur de tortues La tortue constructrice de polygones est une mani re encore exp rimentale de construire des objets polygonaux en utilisant une tortue en 3d En faisant d placer la tortue dans l espace vous dessinez des vertex qui formeront des figures proc durales La tortue peut aussi tre utilis e pour d former des primitives de polygones d j existants en les attachant aux objets que vous avez d j cr e Illustration 34 Un polygone 10 cot s Ce script construit simplement un cercle polygonal en utilisant le bon vieux syst me d appel r cursif c est dire que nous faisons avancer le tortue un tout petit peu puis nous la tournons un peu nous la faisons ava
4. draw a sphere at the intersection point translate cdr assoc p intersection colour vector 0 1 0 scale vector 0 3 0 3 0 3 draw sphere Lline intersect a b Evaluation de Primitive Pdata for each face pdata for each triangle pdata for each tri sample Page 49 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic Le moteur physique Chargement et sauvegarde de primitives Ca serrait pratique de pouvoir charger et sauvegarder des primitives et cela pour plusieurs raisons Vous voudrez peut H tre utiliser d autres applications pour fabriquer des figures et les importer dans Fluxus ou inversement serra assez utilse de sauvegarder les primitives dans un fichier pour ne pas avoir les recr er dans Fluxus chaque fois Il y a seulement FO u da Se LS deux fonctions conna tre E 8 charge une primitive dans Illustration 32 define newprim load primitive filename Quelques particules et sauvegardons La dans with primitive newprim save primitive filename Pour le moment ces fonctions ne marchent qu avec des polygones et des primitives de pixels et vous pourrez y charger sauvegarder des objects fichiers png avec Le support du format de pansing geonetgies O UIp parsing moonlanden eps Sex SES EER lerenior fichier COLLADA SC Collada est le format de SE fichier utilis pour les sc nes EE 3d com
5. translate vmul vector x y 0 3 draw sphere every frame animate C est mieux mais x et y sont globalement d finies et peuvent tre utilis es et chang es autre part dans le code ce qui peut pr ter confusion Le meilleur moyen est d utiliser let define animate let x sin time y cos time with state translate vector x y 0 draw sphere with state translate vmul vector x y 0 3 draw sphere every frame animate Cela n autorise l acc s x et y seulement aux fonctions l int rieur du let II peut aussi tre imbriqu l int rieur d autres let qui d pendrait de valeurs d finies en amont Par contre si vous d finissez des variables ou valeurs d pendantes d autres variables il faut utiliser let define animate Letz t time 2 on d finie Le temps par t x sin t on utilise t ici y cos t et encore ici with state translate vector x y 0 Page 13 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic draw sphere with state translate vmul vector x y 0 3 draw sphere every frame animate Lambda M me si ce nom vous fait peur son utilisation est plut t facile comprendre D habitude quand vous cr ez une fonction vous lui donnez un nom et ensuite dans le script vous l appelez define carr x x x display carr 10 newline lambda vo
6. modulate decal blend replace change la mani re dont une texture est appliqu e la couleur d une surface existante min nearest linear nearest mipmap nearest linear mipmap nearest linear mipmap linear mag nearest linear Ceux ci modifient le type de filtres qui traitent la miniature quand les pixels de la texture appel s texels sont plus petits que les pixels de l cran Cela manque ses engagements linear mipmap linear Aussi la grandeur quand les texels sont plus larges que les pixels de l cran Cela manque ses engagements linear qui m langent les couleurs des texels Les modifier nearest signifie que tu peux proprement voir les pixels agrandissant la texture quand c est grand dans l espace d cran Illustration 4 Une texture avec wrap s et wrap t wrap s clamp repeat wrap t clamp repeat wrap r clamp repeat pour afficher le cube Quoi faire quand les coordonn es de la texture sont en dehors de l intervalle 0 1 r gler repeat par d faut utiliser l attache smears pour ajuster les pixels du bord de la texture border colour vecteur de longueur 4 Si la texture est faite pour avoir une bordure see load texture ceci est la couleur qu il devrait avoir priority 0 gt 1 Je crois que ce param tre contr le comment probablement une texture doit tre enlev e de la carte graphique quand la m moire est basse env colour vecteur de longueur 4 La coul
7. rielles locales mais c est un noble th me complexe avec ses propres droits Chargement de textures Avoir une texture charg e et appliqu e une primitive est tr s simple with state texture load texture test png build cube 21 Illustration 3 mipmaping outrance pour cr er cet effet de profondeur Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic ce script appliquera la texture standard test de Fluxus un cube Fluxus lit les fichiers png files pour les utiliser comme ses textures et elles peuvent tre avec o sans un composant alpha Le chargement de texture est une m moire cach e Ce qui signifie que tu peux appeler load texture avec les m mes textures autant de fois que tu d sires Fluxus les chargera seulement que la premi re fois du disque Ceci es g n r jusqu ce que vous changiez la texture vous m me c est dire si vous modifiez le fichier partir de Gimp et ex cutez nouveau le script la texture ne changera pas dans ta sc ne pour contourner a utilise clear texture cache Ce qui forcera un rechargement de la texture il est souvent n cessaire de le mettre au d but du script Coordonn es de la texture Dans le but d appliquer une texture la surface d une primitive les coordonn es d une texture sont indispensables car elles disent au compileur quelle partie de la primitive doit tre couvert
8. vertices de contr le de la pi ce Changer un vertex entra nera l objet se d former de fa on lisse travers sa surface build nurbs sphere 10 10 Illustration 18 Une sph re build nurbs plane 10 10 NURBS avec un vertex modifi Types de pdata Utilisation Nom Type de donn es Contr leur de la position p Vecteur 3D vertex Contr leur de la normale in Vecteur 3D vertex Contr leur des t Vecteur 3D pour u et v la coordonn es de texture 3 me composante est vertex n gligeable Primitives Particle particules Les primitives particle utilise les pdata pour representer un e point ou un sprite face la camera qui peut etre textur selon les options de rendu Cette primitive est utilise pour un nombre important d effets comme l eau la fum e les nuages et les explosions F au GES t build particles nmbre de particles Illustration 19 Quelques particules Types de Pdata Utilisation Nom Type de donn es Position particle p Vecteurs 3D Couleur Partilcle C Vecteurs 3D Taille Particle S Vecteurs 3D pour la Page 35 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic largeur et la hauteur le 3e nombre est ignor Astuces Geometriques La primitive particle par defaut est un sprite mais peut etre transformer en un point dans l espace de travaille avec les differentes
9. 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic vector 0 5 0 5 0 5 0 1 vel pdata map init the colours lambda c vector flxrnd flxrnd 1 0 c blur 0 1 a procedure to animate the particles define animate with primitive particles pdata map lambda vel vadd vel vector 6 0 001 0 vel pdata map vadd p vel every frame animate Op ration sur les Pdata Les Operations sur les Pdata sont une optimisation pour prendre avantage de la nature de ses tableaux de stockage pour vous permettre de les traiter avec un seul appel l interpreter scheme Cette deformation de primitive beaucoup plus rapide en boucle dans l interpr te scheme et il simplifie egalement votre code scheme pdata op operation pdata operand Lorsqu une op ration est une cha ne de caract res identifiant l op ration liste ci dessous et pdata est le nom de la de la cible de l op rationis et operand est soit une donn es unique Un nombre scheme ou un vecteur longueur 3 4 ou 16 ou le nom d un autre tableau pdata Si les fonctions update et render dans le script ci dessus sont remplacer par ces lignes define update Ajouter ce vecteur toutes ces velocit s pdata op vel vector 6 0 002 0 Ajouter toutes Les velocit s toutes Les positions pdata op p vel define render with primitive ob updat
10. N anmoins dans certains cas vous ne pourrez pas faire autrement En fait with les utilisent c est pourquoi on ne les enl ve pas Les entr es Tr s vite vous allez vouloir utiliser des donn es externes Fluxus dans le but d interagir avec vos animations et c est ce qui va rendre Fluxus tr s int ressant Le son La principale fonction de Fluxus et surement sa meilleure utilisation est la mod lisation de sons pour du viing Pour cela Fluxus doit pouvoir r cup rer en temps r el des valeurs repr sentatives d un son ou d une source de son On configure l entr e du son comme cela start audio port jack couter 2048 44100 Lancez une application qui nous fournira du son ou r cup rez votre entr e audio de la carte son avec Jack Utilisez alors gh num ro d un harmonique Qui nous renverra un r el que l on pourra utiliser comme param tre d animation Vous pourrez v rifier que gh vous renvoie bien autre chose que des z ros en affichant sa valeur every frame begin display gh 0 newline Vous pourrez aussi utiliser gain pour contr ler le gain de vos entr es gain 1 N oubliez pas que cela aurra un effet sur la grandeur de valeurs retourn s par gh Le clavier Il est tr s int ressant d utiliser les touches du clavier dans certains cas comme pour des jeux par exemple key pressed touche clavier Retournera t si touche clavier est appuy e par exemple every frame when
11. Pour mieux le mettre en vidence comparons le un autre cube define render colour vector 1 0 6 draw cube translate vector 2 0 0 scale vector 0 5 0 5 0 5 colour vector 6 0 5 1 draw cube every frame render Vous devriez voir appara tre deux cubes l un rouge et l autre bleu mis c te c te avec la commande translate et avec sa taille r duite de moiti define render colour vector 1 0 0 draw cube translate vector 2 0 0 scale vector 0 5 0 5 0 5 rotate vector 0 45 0 colour vector 0 0 5 1 draw cube every frame render Pour en rajouter encore j ai rajout une rotation de 45 sur le cube bleu La r cursivit Pour faire des choses plus int ressantes nous allons crire une fonction qui dessine une ligne de cubes Cela serra par r cursivit c est dire que notre fonction va s appeler elle m me elle gardera en compte le nombre de fois qu elle s est appel e et pourra s arr ter au bout d un certain nombre de fois Pour que la fonction arr te de s appeler nous devons tablir une condition pour cela nous allons utiliser cond define lign de cubes compteur cond not zero compteur draw cube translate vector 1 1 0 0 draw row compteur 1 Page 10 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic every frame lign de cubes 10 Fa tes attention aux par
12. bo te g n r e automatiquement pour les primitives et est assez rapide et assez bonne pour la plupart des detections de collisions Note La boite utilis e n est pas la meme que vous voyez avec hint box qui est affect par la transformation de la primitive bb intersect g n re de nouveaux bounding boxes qui sont toutes align es sur l axe de la vitesse de comparaison Jet de rayons Une autre technique extrement utile est de cr er des rayons ou des lignes dans la sc ne et de recuperer les informations sur l endroit ou ils croisent les primitives Cela peut tre utilis pour la d tection d taill de la collision ou dans des techniques plus complexes comme les techniques de raytracing line intersect line start position line end position Cette commande retourne une liste de valeurs pdata sur les points ou la ligne coupe une primitive La chose ingenieuse est la valeur du point precis d intersection pas seulement le sommet le plus proche La liste retourn e est con u pour etre accessible en utilisant la commande Scheme assoc Une liste d intersection ressemble ceci collision point list collision point list Ou une liste de point de collision ressemble p position vector t texture vector n normal vector c colour vector Les spheres vertes sur l illustration sont positionn es sur la pdata position renvoy e par ce bout de code with primitive s for each lambda intersection with state
13. cela define mon0Objet build cube Ce cube serra d sormais rattach la sc ne jusqu ce qu on le d truise destroy mon0bjet with state retourne l tat de la derni re expression qu elle contient donc pour cr er de nouvelles primitives avec un tat donn vous pourrez faire define mon object with state colour vector 1 0 0 scale vector 0 5 0 5 0 5 build cube Si vous voulez modifier l tat d un objet apr s l avoir charg dans la sc ne vous pouvez utiliser la fonction with primitive pour tablir un nouvel tat un objet Cela vous permet d animer des objets que vous aurez cr e Construisons quelques cubes colour vector 1 1 1 define obj1 build cube Page 15 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic define obj2 with state translate vector 2 0 0 build cube define animate with primitive obj1 rotate vector 0 1 0 with primitive obj2 rotate vector 0 0 1 every frame animate Une commande tr s importante de Fluxus est parent qui cha ne un objet un autre pour qu ils puissent se suivre Vous pouvez utiliser parent pour monter une hi rarchie d objets par exemple define A build cube define B with state parent A translate vector 0 2 0 build cube define C with state parent B translate vector 0 2 0 build cube ce qui aura pour effet de cr
14. en cache certains resultats il sera beaucoup plus lent sur le premier calcul que les appels sur la m me primitive User Pdata Alnsi comme les informations standard qui existe dans les primitives fluxus vous permet galement d ajouter vos propres donn es par le sommet de toute primitive User Pdata peut tre crit ou lu de la m me mani re que tous type de construction de tpe Pdata pdata add name type Lorsque le nom est une cha ne avec le nom que vous voulez appeler et le type de caract res compos de f Donn e de type float v Donn e de type Vecteur c Donn e de type couleur m Donn e de type matrice pdata copy source destination Cela vous permettra de copier un tableau de pdata ou d ecraser un existant si il exite dej L ajout de vos propres tabelaux pour le stockage des donn es sur les primitives veut dire que vous pouvez l utiliser comme un moyen rapide de lecture et d ecriture de donn es m me si les donn es ne concernent pas directement la primitive Un exemple est l explosion de particle setup the scene clear show fps 1 point width 4 hint anti alias build our particle primitive define particles build particles 1000 set up the particles with primitive particles pdata add vel vil add the velocity user pdata of type vector pdata map init the velocities lambda vel vmul vsub vector flxrnd flxrnd flxrnd Page 41 Fluxus Manual version
15. er trois cubes tous reli s les uns aux autres comme une cha ne Les transformations sur A se r percuteront sur B et sur C celles appliqu es sur B affecteront C De m me d truire A d truirait B et C Vous pouvez tout de m me modifier la hi rarchie de vos objets en appelant ka fonction parent l int rieur de with primitive Pour retirer l identifiant d un objet de sa m re il faut appeler with primitive mon0ObjetFils detach Ce qui d tachera l objet monObjetFils de sa m re tout en restant dans la Sc ne Remarque Par d faut quand vous cr ez des objets ils sont apparent s la cellule souche de la sc ne La cellule souche poss de l identifiant 1 Alors une autre fa on de briser la parent d un objet serra d appeler parent 1 Remarque sur push et pop Fluxus poss de aussi quelques commandes moins propres pour arriver au m me r sultat Ces commandes taient tr s utilis es dans les versions ant rieures 0 14 donc ne soyez pas surpris de tomber sur elles dans la documentation ou dans d anciens scripts push pop Page 16 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic revient faire with state et grab maPrimitive ungrab est la m me chose que with primitive maPrimitive Ces fonctions sont moins s res car on peut appeler push sans appeler pop la fin et leur utilisation est d conseill
16. graphisme 3D Ce chapitre fait une br ve introduction la programmation Scheme et vous introduira vite dans Fluxus m me si vous n avez aucune connaissance sp cifique Pour un apprentissage plus en profondeur du langage Scheme je vous recommande vraiment les livres suivant dont deux sont en libre consultation sur internet The Little Schemer de Daniel P Friedman et Matthias Felleisen How to Design Programs An Introduction to Computing and Programming de Matthias Felleisen Robert Bruce Findler Matthew Flatt Shriram Krishnamurthi qui est en ligne http Www htdp org 2003 09 26 Book Structure and Interpretation of Computer Programs de Harold Abelson et G rald Jay Sussman avec Julie Sussman qui est en ligne http mitpress mit edu sicp full text book book html Nous commencerons par quelques bases du langage on utilisera la boucle TOPLEVEL de Fluxus en y acc dant par Ctrl 0 Utiliser Scheme comme calculateur Les langages comme Scheme sont compos s de deux types d l ments les op rateurs les l ments qui font quelque chose et des valeurs sur lesquelles les op rateurs travailleront fluxus gt 1 2 3 Page 7 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic a peut para tre trange au d but et on ca peut prendre un peu de temps comprendre mais cela implique que le langage est soumis moins de r gles ce
17. l objet courant pdata size Retourne la taille du pdata sur l objet courant le nombre de verts Le nom d finit la donn e laquelle nous voulons acc der par exemple p contient les positions vertex pdata set p vector 6 6 0 Page 30 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic Affecte le premier point dans la primitive l origine pas tout le temps pdata set p vadd pdata ref p 0 vector 1 6 0 Pareil que le pr c dent mais l affecte la position originale 1 suivant l axe des x le fait de compenser la position est plus utile comme il constitue une d formation du point original Voir le fait de D former pour plus d informations sur les d formations Mapping Folding affichage pliage Les fonctions pdata set et pdata ref sont utiles mais il y a une fa on plus puissante de d former les primitives Les fonctions Map et fold ram nent aux fonctions scheme sur les listes c est probablement une bonne id e de jouer avec eux pour bien comprendre ce qu ils font pdata map Procedure read write pdata name read pdata name Faire un Map sur les tableaux de donn es de primitive semble tre pour chaque pdata l ment crire le r sultat de la proc dure dans le premier nom de tableau Un exemple de l utilisation de pdata map sur une primitive define p build sphere 10 10 with primitive p pdata ma
18. la fonction par d finissons la fonction carr qui x associe son carr Ce x est appel un argument de notre fonction et son nom importe peu la machine donc fluxus gt define carr toto toto toto Page 8 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic ferra exactement la m me chose Encore une fois il est pr f rable de donner un nom vocateur l argument auquel cas vous vous embrouilleriez tr s vite On vient de faire abstraction des op rations comme nous l avons fait pour les valeurs On peut voir a comme ajouter du vocabulaire au langage Scheme avec nos propres mots alors maintenant que l on a notre fonction carr on peut l utiliser pour faire d autres op rations fluxus gt define somme des carr s x y carr x carr y fluxus gt somme des carr s 10 2 104 les retours la ligne et les espaces avec le define ne sont juste qu une convention de mise en page cela veut dire que vous pourrez s parer visuellement la description et ses arguments du reste de la fonction Scheme ne fait pas attention aux blancs dans le code le but est encore une fois de rendre le code compr hensible Dessiner quelques figures Maintenant nous en savons assez pour pouvoir dessiner quelques formes avec Fluxus Pour commencer sortez de la boucle TOPLEVEL avec Ctri 1 vous pourrez y revenir n importe quel moment avec
19. le biais d une transformation c est dire la flexion la d formation etc ou de modifer les coodonn es de texture ou de couleur pour obtenir un effet par sommet La deformation de cette mani re est aussi la seule fa on d obtenir des primitives particules pour faire quelque chose d interessant La deformation est entierment sur les pdata alors pour deformer un objet en entier vous devez faire comme suit hint unlit hint wire line width 4 Illustration 26 Une sph re en d formation define myobj build sphere 10 10 with primitive myobj pdata map lambda p add a small random vector to the original point vadd vmul rndvec 0 1 p p Lorsque la g om trie de d formation le d placement des positions des sommets ne sont g n ralement pas assez les normales devront tre mis jour pour que l clairage puissefonctionner correctement Illustration 27 Explosion de particle Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic recalc normals smooth R g n ront les normales pour les primitives polygones et nurbs bas sur la position des sommets Pas particulier rapide il est pr ferable de d former les normales dans votre script si vous le pouvez Si le lissage est de 1 la face normale est la moyenne des faces normales co incidant pour donner une apparence lisse Lorsque vous travaillez sur une primitive polygone fluxus met
20. mani res qui suivent Pour transformer en point nuire l S with primitive myparticles y 2 hint none Desactive Le mode solide qui est Le mode par defaut d E sprite JaA hint points Active le rendu par point i Fe A ech 1 2 Si vous avez aussi activer hint anti alias vous pouvez eg e obtenir des points circulaires selon votre GPU ils peuvent Austration 20 Quelques particules utilis es comme sprites en leur assignant une texture etre espac en pixels en utilisant point width Primitives Ribbon La Primitive Ribbon est similaire la primitive particle par le fait q elle est D n hint points hint anti alias soit en rendu materiel soit des quads SEE textur s face la camera Cette De een ces primitive dessine une unique ligne 0 Pet connectant chaque pdata connecting a N each pdata vertex element together sa vector La texture est etir le long du ruban A w du debut la fin et en largeurtravers EE la ligne La largeur peut etre defini poar Tambda le sommet pour changer la forme de end EU la ligne pp CT cos 15 build Line num points Illustration 21 Une primitive Ribbon textur e Types Pdata Utilisation Nom Type de Donn es Position du Sommet p Vecteurs 3D Coleur c Vecteurs 3D Largeur W nombre Astuces Geometriques Le mode par defaut de la primitive Ribbon est en rendu quads Vous pouvez aussi choisir d activer le rendu par lign
21. qui rendra la programmation plus ais e au fur et mesure Il y a heureusement des avantages cela par exemple pour l addition de 1 2 et 3 on ferrait simplement fluxus gt 1 2 3 6 Il est assez fr quent de voir des parenth ses imbriqu es dans d autres parenth ses comme par exemple fluxus gt 1 2 3 7 Nommer des valeurs Si nous voulons sp cifier des valeurs et leur attribuer un nom on utilisera la commande define fluxus gt define taille 2 fluxus gt taille 2 fluxus gt taille 2 4 Nommer des valeurs est sans doute la partie la plus importante de la programmation et repr sente la forme la plus simple d abstraction ce qui veut dire que l on s pare les d tails du sens dans notre exemple taille Pour la machine cela ne fait aucune diff rence mais a en fait pour les personnes qui liront votre code Par exemple ici on a sp cifi une bonne fois pour toute la valeur de la taille et dans notre code nous nous y r f rerons seulement par son nom ce qui rend le code plus facile lire Nommer des fonctions Nommer des fonctions est tr s utile mais on peut aussi nommer des fonctions ou un ensemble de fonctions pour nous faciliter la t che fluxus gt define carr x x x fluxus gt carr 10 100 fluxus gt carr 2 4 Observez attentivement cette d finition il y a plusieurs choses prendre en compte Premi rement on pourrait traduire en fran ais la d finition de
22. textures que ce que nous avons expliqu tr s loin a peut aussi prendre des listes de param tres pour changer la mani re dont la texture est g n r e Par d faut quand la texture est charg e un jeu de mipmaps est produit cet effet Les mipmaps sont les petites versions de la texture utiliser quand l objet est loin de la cam ra et est pr calcul dans le but d acc l rer l interpr tation Une des choses communes que Illustration 6 le r sultat d une texture sur un torus vous pouvez vouloir faire est d teindre le mipmapping comme le blurriness peut tre un probl me quelquefois texture load texture refmap png generate mipmaps mip level 0 don t make mipmaps and send to the top mip level texture params D min linear turn off mipmap blending Une autre sorte de texture est de fournir vos propres niveaux de mipmap r gler une texture mipmapp e avec tes propres images you need as many levels as it takes you to get to 1X1 pixels from your level 0 texture size define t2 load texture m0 png list generate mipmaps mip level 0 load texture m1 png list id t2 generate mipmaps mip level 1 load texture m2 png list id t2 generate mipmaps 0 mip level 2 load texture m3 png list id t2 generate mipmaps 0 mip level 3 Ceci montre comment charger plusieurs images dans une seule texture et comment la profondeur des effets de champs ont t accomplis
23. 0 6 0 3 0 1 light spot angle key 22 Light spot exponent key 100 light direction key vector 1 1 oi faire une lumi re fill define fill make light spot free light position fill vector 7 7 12 er LS fill vector 0 5 0 3 bere fill vector 0 5 0 3 light spot angle fill 12 Light spot exponent fill 100 ES fill vector 0 6 0 6 faire une lumi re rim define rim make light spot free light position rim vector 0 5 7 12 light diffuse rim vector 6 0 3 0 5 light specular rim vector 0 4 0 6 1 light spot angle rim 12 Light spot exponent rim 100 light direction rim vector 0 0 6 1 Illustration 9 l exemple d ombrages dans le r pertoire des exemples L ombre Le manque d ombres est un grand probl me avec l infographie Il sont complexes et prennent du temps pour produire mais ajoutent beaucoup la profondeur et la forme Pourtant il est tout fait facile de les ajouter une sc ne Fluxus clear light diffuse vector 0 teint La lumi re principale define l make light point free g n re une nouvelle lumi re light position l vector 10 50 50 d place la light diffuse l vector 1 1 1 shadow light l enregistre La comme la lumi re des ombres with state translate vector 0 2 0 hint cast shadow demande un cast pour l ombre build torus 0 1 1 10 10 Page 27 Fluxus Manual version 0 16 This work is licensed unde
24. 4 7 Illustration 14 topologie de Illustration 13 topologie de liste iste de d adrilat as 1 d 1 2 2 A Page 33 H 1 5 d a 2 H Illustration 17 A Illustration 15 topologie de bande de l lustration 16 topologie de topologie de triangles triangle fan polygone Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic Cette topologie est la m me pour tous les pdata sur une primitive polygone particuli re les positions vertex la normale les couleurs et les coordonn es de la texture Bien que l utilisation de ces topologies signifient que la primitive est optimis e tre tr s rapide rendre a co te assez de m moire vu que les points sont dupliqu s Cela peut aussi causer un grand impact si vous faites assez de calcul par vertex La plus optimale des topologies de polygone est celle de bandes de triangles car elle maximise le partage de vertices mais vois aussi les polygones index s pour une m thode potentiellement rapide Vous pouvez trouver la topologie d une primitive polygone avec define p build cube with primitive p display poly type newline prints out quad list Polygones index s L autre mani re d am liorer l efficacit est de convertir les polygones en mode index L indexation signifie que les vertices dans diff rentes faces peuvent partager la m me donn e vertex Vous pouvez d finir manuellement l index d un polygo
25. Couleur Pixel c Vecteur 3D Alpha de Pixel a nombre Page 38 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic Commandes Extra primitive Pixel Le Pdata d une primitive Pixel correspond la valeur de pixel dans la texture vous les ecrivez pour faire une texture proc durale de donn es La primitive pixel vient avec quelques commandes pixels upload pixelprimitiveid number Charge la texture de donn es vous avez besoin de faire appel celle ci lorsque vous avez fini d ecrire la prim pix et tant qu elle est appele pixels gt texture pixelprimitiveid number Retourne une texture exact vous pouvez l utiliser exactement comme celles que vous avez charger normalement Voir les exemples pour quelques r gles de texturing procedurale Il est important de noter que la cr ation de textures implique un grande quantit de temps de traitement de sorte que vous ne voulez pas faire quelque chose sur le plan par pixel par frame pour les grandes textures Les fonction des Pdata pourraient tre utilis s pour nous aider l avenir Ceci est un exemple simple permettant de cr er un bruit de texture sur une primitive pixel with primitive build pixels 100 100 pdata map lambda colour rndvec Aen pixels upload Primitive Blobby Les primitives blobby sont des representations implicite de surface d un plus haut sont dans fluxus qui sont definies l aide d in
26. Creative Commons Attribution Share Alike 2 5 Generic voulez bricoler un peu plus Fluxus est constitu de deux moiti La premi re moiti est une fen tre contenant l editeur de script rendu au dessus de la sc ne C est ce qu on appel le fluxus scratchpad bloc note fluxus et c est la fa on d utiliser fluxus pour du livecoding et une lecture generale L autre moiti est un ensemble de module qui fournit les fonctions pour faire du graphisme ils peuvent etre charg s dans n importe quel interpreteur mzscheme et execute en tous contexte OpenGL Modules Les fonctionnalit s de Fluxus sont separ es entre les diff rents modules Scheme Vous n avez pas besoin de les conna tre pour une utilisation simplifi e de fluxus elles sont charg es et configure pour vous fluxus engine cet executable contient l extension des fonctions de rendu de base et la majorit des commandes fluxus audio Executable contenant un client jjack et les commandes du processeur fft fluxus osc Une extension binaire avec le serveur OSC et le client et les messages de commande fluxus midi Une extension binaire avec un support entr e d evenement midi Modules Scheme Il y a aussi de nombreux modules scheme qui viennent avec fluxus Certains d entre eux forment l interface scratchpad et vous fournit les interfaces souris clavier et les r glages camera d autres couches au dessus de fluxus engine afin de le rendre plus pratique C est l que le
27. Ctrl 0 Fluxus est maintenant en mode dition de scripts Vous pouvez crire un script et l ex cuter en tapant F5 puis le modifier puis l ex cuter etc c est la fa on usuelle de coder avec Fluxus Entrer ce script define render draw cube every frame render Puis tapez F5 vous devriez voir appara tre un cube l cran tout en maintenant appuy un bouton de la souris faites la glisser cela aura pour effet de faire bouger la cam ra Ce script d finit une fonction qui dessine un cube et qui l appelle gr ce la commande every frame d o le cube qui est apparu l cran Vous pouvez changer la couleur du cube comme cela define render colour vector 0 0 5 1 draw cube every frame render La commande colour fixe la couleur courante et prend un vecteur en argument on pourra appeler a un tableau aussi Les vecteurs sont beaucoup utilis s dans Fluxus pour repr senter des positions et des directions en 3D mais aussi pour repr senter la couleur sous le triplet lt rouge vert bleu gt Dans notre exemple le cube devrait prendre une couleur bleu clair Page 9 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic Les transformations Rajoutez la commande scale votre script define render scale vector 0 5 0 5 0 5 colour vector 6 0 5 1 draw cube every frame render Votre cube devrait avoir rapetiss
28. EE Eeer dE 50 Sce e graph EE eege ENNEN teen ina 50 D tection d Colls O EE 51 Jet de rayons Aineen iina de ie cite a te ane 51 Evaluation de glo lte 52 Le moteur physSIgUS reirinte aaa eaaa aa at aE ak 52 Chargement et sauvegarde de primitives 52 Le support du format de fichier COLLAIDA 53 Les Spade EEN 53 Les echantillons Eelere 54 Le constructeur de EE tee 55 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic Remarques sur l criture de gros scripts dans Elusus 56 Beie 56 eo ci ee D D en ad te 57 Cr er des s quences video 57 Synchroniser BNL TE 58 Synchroniser au clavier pour l enregistrement de sessions live 58 R solution des probl mes de svpchronlsation 59 Fl x s dans DeScheme aean A EE Eai AEREE 59 Divers autres en Le EE 60 Obtenir une norme vitesse de framerate sisi 60 Tests CR da a ot a act Ni ain 60 EELER Ae Ce 61 EEN ee 61 ECTS LL LE M LS LUI sssissiiiiiisnrres Aa E EE aaa AEAEE EE KENTE Eia aiaiai EEEE 61 al EE 61 MOSS TS AISNE E 62 Commandes Te a EE 62 Op rate rs e SP o iE aE 62 Audio Glopal EE 63 Commandes de Geuencades ENEE 64 ALMA LR ESS LL A SPP RER a a a aa Eee 65 Problemes courants a faire 65 AE E aa db de en ad AE A SA EN OE 65 Une simple Ser EEN ee ENEE 66 a a aa a co oi dede dan 67 Rendre les choses Reactives iii siirsssessceneeneeneeneeesese 67 EE D dd on 68 Converting behaviours to
29. ENVOIS insistent lue 69 Partic e 69 R f rence De el e E 70 Introduction Fluxus est un environnement qui vous permet de cr er des animations en temps r el et des programmes audio que vous pourrez manipuler de mani re flexible Fluxus tire son nom de l id e que l on peut modifier en continu le code de mani re fluide Fluxus s appuie sur le langage de programmation Scheme qui est tr s flexible et une interface qui met votre disposition une zone d dition de code qui flotte au dessus du r sultat graphique que produira votre programme Cette interface permet Fluxus d tre utilis pour du livecoding l art de programmer en temps r el La plupart des utilisateurs de Fluxus sont des livecodeurs et certains programment devant des spectateurs mais il est tout fait possible de l utiliser pour du prototypage rapide de fonctions Cela rend Fluxus plus convivial pour l apprentissage et la compr hension de la programmation d animations et de contenu graphique d ailleurs il est souvent utilis lors de Page 3 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic s minaires sur le sujet Ce manuel d utilisation est vaguement organis autour du fait que ce que vous devez absolument savoir est au d but et les parties plus complexes sont ensuite abord es vers la fin mais comme il ne requiert pas vraiment d avoir lu le d but je vous recommanderais de saute
30. Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic Manuel d utilisation Fluxus 0 16 Urideele Eier 7 PR a a E A A 3 Premi re prise en RON end eee CNE teens 4 RTE EM a ESS Le EE 5 Contr le de la CAM RA anses nca EE ee t tt nes 5 EE de UE D LS genee ee 5 La DOUCE TOPLEVEL EE 5 Les raccourcis CAE nada adudacenemanaurn era nina oi rennes 6 EE ages dan no cr id A ot 7 Utiliser Scheme comme calculateur 8 SNEHTEERENNEARRERE ENER SKERE RENE NK EK ENN ENENN up H Nommer ss 8 Nommer MO LCR ALL SL SE nnne 8 Dessiner quelques E 9 L S FANS TOM gei EE 10 ER a a a E EEEE 10 AU MARS LEO EE E A TEETE E 11 Encore plus de EPL deg dE eege EE 12 Les GERUFF Aeagtedg udedeenedesieee ENNEN ENK SNE NR insu ananas 12 EE ee 13 Baas CN 14 L machine M2 EE 14 a a a a 15 Remarque sur push SE DOD Sade lan nnde iiennohnbnrsisatenei Sie 17 d eo Ah 18 ee a de ne E 18 Kb EE 18 Mouse La LOL E 19 a a a ae 20 Time En e 20 Propri t s Mat rielles sssssseesssonnsemmennaurseressssssnnesnenn iiieuneeres 21 A EE 22 Chargement de EIER enee EEN Eedeh 23 Coordonn es de la teure SSES ESEKSENNEEN EENRNNKNAEN NEE rnrn annA nA nA ran RARA ERER nnana 23 Param tres de la texture iii snesreneeeeneneneneneneneneneneneemense 24 Plusieurs texturing BEE 25 Mipan igea a a a 26 Cubemapping affichage de cOubel 27 Page 1 Fluxus Manual version 0 16 This work is licensed under C
31. Hz il faudrait alors calculer 44100 25 1764 samples audio par image Configurez la taille de votre tampon audio cette valeur Ainsi tout ce qui vous restera faire serra de vous assurer que process et start framedump sont appel s la m me image pour que le son et l image soient synchronis s Comme cette proc dure ce ne d roule pas en temps r el vous pouvez configurer la r solution comme bon vous semble ou avoir un script aussi complexe soit il Synchroniser au clavier pour l enregistrement de sessions live Vous pouvez utiliser l enregistreur de touches pour sauvegarder vos d mos de livecoding et ainsi pouvoir les relancer plus tard Pour l utiliser lancez Fluxus avec le param tre r ou p regardez la doc interne de Fluxus pour plus d infos Cela enregistrera l ensemble des touches press es et la dur e ou elles sont appuy es Il pourra ainsi les r interpreter peut importe le framerate utilis L enregistreur de touches fonctionne avec la fonction process de la m me fa on que process avec l audio vous aurez toujours besoin d une piste audio m me muette Donc l enregisteur avancera en fonction du nombre d images qui serra rendu au lieu d utiliser l horloge interne de l ordinateur Encore une fois vous pouvez prendre votre temps lors de la cr ation de vos scripts car lors de la relecture tout serra refait de mani re fluide et non stop Enregistrer les messages OSC est possible pour stocker des infos c
32. a b sub a b mul a b div a b Rappele vous que ces parametres peuvent tre des noeuds ou des nombres vous pouvez faire les choses comme cela play time mul sine 440 0 5 or play time mul sine 440 adsr 0 0 1 0 0 Filtres mooghp input node cutoff resonance moogbp input node cutoff resonance mooglp input node cutoff resonance formant input node cutoff resonance Audio Global volume 1 N est ce pas que ce qui est dit sur l tain eq 1 1 1 Tweak bass mid treble max synths 20 Change le maximume de synth jou s en m me temps par defaut un petit 10 searchpath path Ajouter un chemin pour le chargement des echantillons reset La commande de panique supprime tous les graph de synth et reinitialise tous les op rateurs pas s r pour rt Page 60 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic Commandes de Sequen ages Fluxa fournit un ensemble d outils pour le sequen age seq lambda time clock 0 1 La s quence de haut niveau Il ne peut exister qu un de ce genre et tous le code fourni dans la procedure sera appel au moment opportun Le temps entre deux appels est d finie par la valeur retourn par la procedure de sorte que vous pouvez changer le timing global dynamiquement Les param tres de temps et d horloge sont pass s la procedure le temps est un float avec une valeur en temps r el pass
33. are Alike 2 5 Generic tels que Les modificateurs de dessin de lignes et de points width est en pixels wire colour n line width ni point width n Les modificateurs d clairage specular v ambient v emissive v shinyness n Opacit Illustration 2 des modificateurs sur opacity n quelques sph res au dessus d un plan blend mode src dest textur La commande opacity permet a l animation d tre moiti transparent travers la texture avec un composant alpha Mais cette alpha transparence apporte quelques probl mes du fait qu elle expose que les primitives soient tir s dans un certain ordre ce qui changera le r sultat final o l opacit est concern Ceci entra ne des scintillements l cran et le manque de morceaux d objets derri re les surfaces transparentes et c est un probl me commun de l interpr tation en temps r el La solution est g n ralement l utilisation de la primitive hint soit en faisant hint ignore depth qui permettra la primitive de rendre chaque fen tre la m me illustration sans tenir compte des autres obstacles ou en faisant hint depth sort qui permettra la primitive de classer la fen tre actuelle avant de rendre la prochaine ainsi elles apparaitront de la plus ancienne la plus r cente La profondeur est prise en compte partir de l origine de la primitive Vous pouvez la voir avec hint origin Texturing est une partie des propri t s mat
34. aux commandes play Il s agit en fait d un peu d avance sur le temps r el afin de donner le temps au r seau pour obtenir les messages du serveur Vous pouvez egalement faire comme suit play time 0 5 Qui va compenser le temps d une demi seconde l avenir Vous pouvez galement les faire executer plus to mais seulement un peu Clock est une valeur toujours croissante qui est incrementer chaque fois que la procedure donn e la s quence est appel e La valeur n est pas tr s importante mais vous pouvez utiliser zmod qui est simplement la procedure pr definie define zmod clock v zero modulo clock v Ce qui est assez pour faire du raccourcissement utile if zmod clock 4 play mul sine 440 adsr 0 1 0 0 Jouera une note chaque 4 beats note 10 Un utilitaire pour le mapping de numero de note en fr quencel je pense que le bar me actuel est egual la tendance seq lambda time clock clock map lambda n play time mul sine note n adsr 0 1 0 clock list 10 12 14 15 0 1 clock map map la liste la commande jouer chaque tick de l horloge La liste peut etre utilis e comme une primitive sequence et peut evidemment tre utilis e pour conduire beacoup plus que la simple hauteur seq lambda time clock clock switch clock 128 lambda play time mul sine note n adsr 0 1 0 lambda play time mul saw note n adsr 0 1 0
35. be mais draw cube l explication cela est plus bas Maintenant essayez de manipuler les exemples Vous pourrez les ouvrir en pressant la combinaison de touches Clou directement partir du terminal en donnant un script d exemple en param tre de Fluxus Guide d utilisation Quand vous utilisez les tampons de Fluxus l id e est qu on aura besoin d une Page 4 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic seule fen tre pour l criture de scripts et leurs ex cution Quand vous aurez fini de taper votre script lancez le avec F5 ou Ctrl e Si vous s lectionnez une portion du code avec Maj et que vous ex cutez votre script seulement le code s lectionn serra valu C est tr s pratique pour valuer quelques fonctions sans avoir relancer tout le script chaque fois e e Dag Be N LIN N Le contr le de la cam ra se fait l aide de la souris et de ses boutons Illustration 1 un mikado programm e Bouton gauche Rotation e Bouton du milieu Mouvement transversal e Bouton droit Zoom Espaces de travail L diteur de scripts vous permet d diter jusqu 9 scripts simultan ment gr ce aux diff rents espaces de travail Pour naviguer entre scripts utilisez Ctrl num ro N anmoins un seul script pourra tre lanc la fois F5 ex cutera le script de l espace de travail courant Page 5 Fluxus Manual version 0 16 Thi
36. comme source de saisie de telle sorte qu il vous paraisse venir de l ext rieur c est aussi une fa on de faire de l animation plus fiable time Cette fonction retourne le temps en secondes qui s est coul depuis le d but de l animation Elle retourne un nombre approch et est enregistr une fois par fen tre delta Celle l retourne le temps entre la fen tre actuelle et sa pr c dente delta est une commande tr s importante du point de vue qu elle te permette de faire une animation avec un taux de fen trage ind pendant Page 19 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic Consid rons le script suivant clear define my cube build cube every frame with primitive my cube rotate vector 5 0 0 Ce script fait tourner le param tre my cube d un degr chaque fen tre Le probl me est que cette rotation est rapide lorsque le taux de fen trage augmente et est lente quand le taux diminue Si tu ex cute ce script sur un autre ordinateur il va marcher avec un taux diff rent Ceci f t un probl me lorsqu on ex cutais des jeux sur les anciens ordinateurs Ils devenaient injouables comme ils vont aussi vite sur les nouveaux mat riels La solution tait d utiliser la commande delta clear define my cube build cube every frame with primitive my cube rotate vector 45 delta 0 Le cube tournera la m me v
37. dans l image au dessus Vous pouvez aussi utiliser un GLSL shader pour choisir des niveaux de mip selon les autres sources Page 25 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic Cubemapping affichage de cube Le Cubemapping est mont d une fa on semblable au mipmapping mais est utilis pour des raisons un peu diff rentes Cubemapping est une approximation d un effet o une surface refl te un environnement autour de lui qui dans ce cas est d crit par six textures repr sentant les six c t s d un cube autour de l objet define t load texture cube left png List type cube map positive x load texture cube right png list id t type cube map negative x load texture cube top png list id t type cube map positive y load texture cube bottom png List id t type cube map negative y load texture cube front png list id t type cube map positive z load texture cube back ong list id t type cube map negative z texture t 7 Eclairage Nous sommes arriv s tr s loin avec l ignorance du th me important d clairage et ce parce que Fluxus apporte par d faut de la lumi re qui est blanc pure et est attach e la cam ra donc a te permet toujours de voir clairement les primitives Pourtant c est un r glage tr s ennuyeux et si tu configure ton propre clairage tu peux ut
38. der set paramlist D finissons des param tres pour notre Shader dans un jeton ou une liste de valeurs par exemple list specular 0 5 mycolour vector 1 0 0 C est tr s simple faire maintenant nous n avons qu d clarer dans notre Shader GLSL une valeur uniforme uniform float deformamount Qui serra ensuite appel e depuis Scheme shader set list deformamount 1 4 Derformamount est d finie une fois par objet Shader d ailleurs c est une valeur uniforme pour l ensemble de l objet Les Shaders peuvent aussi prendre des pdata comme param tres pour que vous puissiez ainsi utiliser ces informations avec plusieurs objets ou scripts En GLSL attribute vec3 testcol Pour passer a Scheme il faudra tout d abord cr er un pdata avec le m me nom pdata add testcol v Comme cela vous pourrez ainsi d finir plusieurs pdata qui contr leront les param tres des Shaders vertex par vertex Les echantillons Samplers Les samplers sont aux textures ce que les Shaders mat riels sont aux objets le mot samplers est utilis toutes les sauces de nos jours dans notre cas ils sont utilis s pour fire transiter des informations qui ne sont pas forc ment visuelles entre plusieurs Shaders Pour faire transiter des textures vers des Shaders GLSL depuis Fluxus est tr s simple Dans votre Shader GLSL uniform sampler2D mytexture En scheme Page 51 Fluxus Manual version 0 16
39. e Sur ma machine ce script fonctionne 6 fois plus rapidement que la premi re version pdata op peut egalement renvoyer votre script des informations de certaines fonctions appel pour l ensemble des pdata Op ration Pdata Page 42 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic E 26 addition SCH multiplication sin ecrit le sinus d un tableau pdata de float dans un autre cos ecrit le cosinus d un tableau pdata de float dans un autre closest traite le vecteur pdata comme une position et si c est un seul vecteur retourne une position proche de lui ou si c un float l utilise comme un indice dans le tableau PDATA et retourne la position la plus proche Pour la plupart des op rations pdata la grande majorit des combinaisons de type d entr e nombre scheme les vecteurs ou les types pdata ne seront pas pris en charge vous recevrez un avertissement assez mysterieux du runtime si c est le cas Fonctions Pdata Les Operations Pdata sont tr s utiles mais j avais besoin de d velopper l id e en quelque chose de plus compliqu pour support quelque chose de plus int ressant tel que le skinning Cette zone est en d sordre et quelque peu experimental qu il convient de renforcer l avenir Les fonctions Pdata pfuncs varie de l usage g n rale au op rations specialis es que vous pouvez ex cuter sur les primit
40. e with primitive myline hint none desactive Le mode solide qui est Le mode par defaut Page 36 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic hint wire active Le rendu par ligne L armature des lignes peut etre reduite dans l espace en reduisant l espace largeur de ligne Les lignes aussi prennent comme couleur l information PDATA Primitive Text Les primitives texte permettent de cr er du texte bas sur la texture des polices La police de caract res suppos tre non porportionnelle II y a un exemple de police livr e avec Fluxus texture load texture font png build text text string La primitive fait une serie de quads un pour chaque caract re avec un ensemble de coordonn s de textures pour montrer le bon caract re de la texture Cela fournit un moyen rapide et bon march pour afficher du texte et tr s utile pour le d bogage ou si le texte est assez faible Vous pouvez probablement trouver aussi bien des fa ons creatives d utiliser celle ci comme un moyen de hachage d une texture en petits carr s Type Primitive Le type primitive fournit une bien meilleur qualit de rendu de caract res que la la primitive texte Il cr e partird une police ttf et du texte une g ometrie polygonale Vous pouvez egalement extruder le texte qui en resulte en forme 3D build type ttf font filename text build extruded type ttf font
41. e cela nous avons besoin d introduire les e v nements events Les evenements sont d autres l ments fondamental de FrTime par consequence Frisbee et les comportements peuvent peuvent tres transform s en v nement et vice versa Les ev nements sont des chosess qui se produisent un moment pr cis contrairement au comportements qui on peut demander leurs valeurs actuelles Pour cette raison les ev nements ne peuvent pas tre utilis directement pour la conduite des objets dans Frisbee au m me titre que les comportements le peuvent mais ils sont utilis s pour le d clenchement de nouveaux objets en debut ou fin d existence Voici un script qui cree un flot continue de cubes scene factory lambda e object translate vec3 integral 0 1 0 0 metro 1 5 Il y a beaucoup de nouvelles choses qui se passent ici Tout d abord il y a la commande metro diminutif de metronome qui cr er un flux d evenements au taux specifi 1 par seconde dans ce cas factory est une commande qui ecoute un flux d evenement pris comme second argument et execute une proc dure pass e comme son premier argument chaqu un en cas de passage d argument la fonction fourni Dans ce cas chaque fois qu un evenement se produit la fonction anonyme est executer ce qui cr er un objet qui s eloigne de l origine Gauche comme ce frisbee vaudrait eventuellement ralentir une exploration de plus en plus de cube Lefsont cr er Ainsifact
42. e et par quelles parties de la texture Les coordonn es de la texture sont de deux valeurs comprises entre 0 et 1 par convention on les appelle les coordonn es s et t Lorsque ces coordonn es sont en dehors de cet intervalle vous pouvez les changer avec la commande texture params mais par d faut la texture est r p t e La forme du polygone et des NURBS vous fournissent toutes les coordonn es par d faut Ces coordonn es sont une partie du pdata pour la primitive qui sont couvert de plus de d tails plus tard La coordonn e du tableau du pdata de la texture est appel e t un simple exemple qui amplifiera la texture par un facteur de deux pdata map lambda t vmul t 0 5 diminue la taille des coordonn es de la texture dans la texture men Param tres de la texture Il y a assez de param tres extra que vous pouvez utiliser pour la mani re dont la texture est d finie texture params texture unit number param list Nous couvrirons le num ro d unit de texture en plusieurs texturing ci dessous mais la liste des param tres params peut ressembler a texture params 0 min nearest mag nearest super aliased amp blocky texture La meilleure approche est d avoir un jeu et voir ce que ceux ci font pour toi mais voici les param tres en totalit Page 22 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic tex env un parmi
43. enth ses l diteur de Fluxus devrait vous aider en mettant en surbrillance la r gion contenue par chaque paire de parenth ses En ex cutant ce script vous devriez voir appara tre une lign de 10 cubes Vous pouvez imaginer beaucoup de choses en utilisant ce concept alors prenez le temps de bien le comprendre cond est utilis pour tablir des conditions en posant des questions et vous pourrez en poser autant que vous souhaitez cond les v rifiera dans l ordre donn et ex cutera la premi re action dont la question rend vrai Dans notre script on ne pose qu une question est ce que le compteur n est pas nul Si c est vrai c est que le compteur est sup rieur z ro alors on dessine un cube on se d place un petit peu et on s appelle encore Il est important de remarquer qu au prochain appel de la fonction on soustrait 1 notre compteur il arrivera un moment ou l on appellera la fonction avec un compteur z ro dans ce cas la fonction arr te de dessiner En r sum lign de cubes est appel e la premi re fois avec un compteur 10 par every frame On entre dans la fonction est ce que le compteur est z ro non alors on dessine on bouge un peu et on rappelle lign de cubes avec un compteur 9 etc et la fin on aura dessin 10 cubes La r cursivit est un concept tr s puissant tr s adapt au graphisme Il est de plus tr s utilis pour construire des scripts de graphiques tr s co
44. er ou de g n rer des positions al atoires dans l espace les directions pour se deplacer ou de couleurs rndvec retourne un vecteur dont Les elements sont entre 0 et 1 crndvec retourne un vecteur dont Les elements sont entre 1 et 1 srndvec retourne un vecteur represent par un point dans une sphere de rayon 1 hsrndyec un vecteur represent par un point sur la surface d une sphere de rayon 1 sphere creuse grndvec Une position Gaussienne centr e sur 0 0 0 avec pour variation 1 Ils sont beacoup mieux d crit par cette image rndvec crndvec srndvec hsrndvec arndvec Illustration 29 Les 5 types de commande de vecteurs random illustre par la distribution de particle les utilisant Page 47 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic Bruit A faire Inspection de Scene Jusqu pr sent nous avons surtout cherch decrire les objets et les d formations de fluxus il peut aussi construire des scenes pour vous Une autre technique efficace est de faire inspecter votre sc ne par fluxus et de vous donner des information sur ce qui est l Scene graph inspection Les plus simples et peut tre les plus Illustration 30 Dessin procedurale d une puissantes des commandes d inspection sont texture utilisant un systeme de particle et casting de rayon pour trouver des points de collision et les coordonn es de te
45. es polygones sont les plus versatiles des primitives du point de vue que Fluxus est vraiment d sign autour d eux Les autres primitives sont ajout es dans le but d achever les effets sp cial et des r le sp cifiques Les autres types de primitive ont souvent des commandes pour les convertir en primitive polygone pour les processus futurs Ils y a beaucoup de commandes qui cr ent les primitives polygones build cube build sphere 10 10 build torus 1 2 10 10 build plane build seg plane 10 10 build cylinder 10 10 build polygons 100 triangles Le dernier est utilis lorsque vous avez envie de construire vos propres formes de polygones les autres sont utiles pour vous donner quelques formes pr d finies Toutes les fonctions build retournent un nombre que vous pourrez sauvegarder et l utiliser pour modifier la primitive plus tard Les types de pdata Le tableau de pdata pour les polygones est tel qu il suit Utilisation Nom Type de donn es Position vertex p Vecteur 3D Vertex normal n Vecteur 3D Coordonn es de texture it Vecteur 3D pour u et v la vertex 3 me composante est n gligeable Couleurs vertex C Vecteur 4D rgba Topologie du polygone et pdata Avec des objets polygonaux nous avons besoin de connecter les vertices d finies par le pdata dans les faces que d crit une surface La topologie de la primitive polygone d finit comment a se passe d d TI d 7 1 k
46. eur avec laquelle on m lange la texture min lod nombre approch for mipmap blending par d faut c est 1000 max lod nombre approch for mipmap blending par d faut c est 1000 Ceux ci mettent comment le mipmaping se passe Ce script est le code qui a produit l image d attache ci dessus clear texture params 6 wrap s clamp wrap t clamp texture load texture refmap png with primitive build cube Page 23 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic pdata map lambda t vadd vector 0 5 0 5 0 vmul t 2 WAN Plusieurs texturing Fluxus vous permet d appliquer plus d une texture une primitive en m me temps Vous pouvez combiner les textures ensembles les multiplier les ajouter ou faire un m lange alpha d eux diff remment C est utilis dans les jeux surtout comme une fa on d utiliser la m moire de texture plus efficacement en s parant des cartes claires des cartes chromatiques diffuses ou en QE 4 appliquant des cartes de des ie is ai in d tail de Se r p tent Illustration 5 un exemple de toutes les combinaisons possibles avec 4 excessivement des cartes de textures couleur de r solution plus basses replace blend decal bleng Vous avez 8 fentes pour installer des textures et les mettre ensemble multitexture texture unit number texture L unit de texture par d faut est 0 donc multite
47. ferez vous au fichier dancing robots scm dans le r pertoire des exemples Les Classes Cr er des s quences vid o Fluxus est destin une utilisation en temps r el cea comprend les d monstrations en public et les jeux mais vous pourrez aussi utiliser les Page 54 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic commandes de sauvegarde d images pour ensuite g nerer une vid o Cette proc dure est assez complexe lorsqu il faudra synchroniser la vid o l audio OSC ou encore au clavier Utilis seul le dump des images va seulement sauvegarder les images que votre machine doit rendre Ca peut tre utile dans certains cas mais pas si vous voulez ensuite g n rer une vid o avec un taux d images fixe il faudrait alors faire en sorte de synchroniser l audio de fa on avoir un taux d images de 25 images par seconde Synchroniser l audio La fonction process r alise plusieurs choses il redirige l audio venant de votre port jack d entr e d clar vers un fichier sur votre disque Mais il fait aussi en sorte que chaque tampon audio ne produise qu un seule image la fois En r alit lors d op rations en temps r el les buffers audio seront jet s ou dupliqu s en fonction du taux d images la seconde et de l chantillonnage Alors en gros si vous voulez g n rer une vid o avec un framerate de 25fps et de l audio chantillonn 44100
48. filename text extrude depth Vous pouvez galement convertir le type primitif en primitive polygone pour plus de deformation ou pour l application de de textures avec type gt poly type prim id Illustration 22 Helvetica extrud Page 37 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic Illustration 23 Wingdings convertis en primitive polygone avec aplilication de textures Primitive Locator La primitive locator est une primitve null car elle ne rend rien du tout Locator est utile pour diverses t ches vous pouvez l utiliser comme un noeud d une scene invisble scene node pour grouper des primitives la dessus Elle est egalement utilis s pour construire les squelettes de skin Pour les visualiser vous pouvez activez hint origin l indication d originr out dessine un axe repr sentant representant leurs transformation hint origin build locator Primitive Pixel La primitive pixel est utilis pour faire des textures procedurales qui peuvent ensuite tre appliqu d autres primitives Pour cette raison la primitive Pixel ne sera A g probablement pas beaucoup rendus directemetn mais vous utiliser dans le rendu dans un aper us de texture sur un plan pixel primitive largeur hauteur Illustration 24 Quelques textures procedurales cr er avec la primitive pixel Types Pdata Utilisation Nom Type de donn es
49. fluence dans l espace Ces influences sont additionn s ensemble et une valeur particuli re est mail es en utilisant l algorithme de marche des cube pour former une surface lisse Les influences peuvent tres anim s et la surface deforme pour s adapter ce qui donne le nom blobby lIlustration 25 Une primitive blobby la primitive build blobby retourne un nouvel id pour une primitive blobby Numinfluences est le nombre de blobs Subdivisons vous permet de contr ler la resolution de la surface de chaque dimension tandis que boundingvec d finit la zone de d limitation de la primitive dans l espace de l objet local Le maillage ne sera pas calcul en dehors de cette zone La Position des influences et les couleurs doivent tre definis en utilisant pdata set Page 39 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic build blobby numinfluences subdivisionsvec boundingvec Pdata Types Utilisation Nom Types de donn es Position Vecteurs 3D Force S nombre Couleur C Vecteurs 3D Conversion en Polygone Les Blobby peuvent tre lentes calculer si vous avez seulement besoin de maille statiques sans animation vous pouvez les convertir en primitives polygones avec blobby gt poly blobby id num Deformation dans ce chapitre diverses op rations Il peut s agir de changer la forme d une primitive d une mani re pas possible par
50. iliser des lumi res avec de tr s int ressantes et cr atives mani res donc c est bien d exp rimenter avec ce qui est possible L approche standard dans l infographie Illustration 7 clairage par d faut plut t ennuyeux vient de la photographie et est renvoy vers l clairage des 3 points Les trois lumi res dont vous avez besoin sont e Key La lumi re key est la lumi re principale pour l illumination du sujet Elle est mise du c t du sujet comme la cam ra mais teinte sur un c t e Fill La lumi re fill enl ve les durs ombres de la lumi re fill et fournit quelques clairages diffus Elle est mise du c t de la cam ra mais l oppos de la lumi re key e La lumi re Rim ou Back pour s parer le sujet de l arri re plan Elle est mise derri re le sujet sur un c t pour illuminer les bords du sujet Voici un exemple de script de Fluxus pour monter un tel clairage Illustration 8 3 projecteurs de lumi re pour attirer l attention sur la sph re du centre Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic la lumi re 0 est la lumi re par d faut mont un niveau bas light diffuse vector 6 oi light specular vector 0 6 0 faire une grande grosse lumi re key define key make light spot free light position key vector 5 5 ai light diffuse key vector 1 0 95 0 8 light specular key vector
51. iode de temps variable en fonction de la necessit de nouvel op rateurs Les noeuds qui composent les synth graphiques peuvent galement tres recycl s tant qu il sont en cour d utilisation aboutissant des objets interessants qui peut tre consid r comme une fonctionnalit Commandes de Synth se play time node id Programme l id du noeud node id qui sera jou l aide de time Ceci est pour la musique en g nerale play now node id Joue le node id le plus tot que possible principalement pour tester Operateurs de noeuds Toutes ces commandes cr e et retourne un noeud qui peut etre jouer Les param tres du graph de synth se peuvent tre d autres noeuds ou des valeurs normales Generateurs sine frequency Une onde sinuso dale la frequence specifi e saw frequency Une onde sci la fr quence sp cifi squ frequency Page 59 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic Une onde au carr e la fr quence specifi e white frequency Bruit blanc pink frequency Bruit Rose sample sample filename frequency Charge et joue un chantillon les fichiers peuvent tres relatifs l emplacement de recherche Les chantillons vont tres charg s de mani re asynchrine et de ne vont pas interf rer avec l audio en temps r el adsr attack decay sustain release Genere un signal enveloppe Maths add
52. ion with state est dans la section suivante Les commentaires En Scheme les commentaires sont ins r s gr ce au caract re ceci est un commentaire Tout ce qui suit jusqu la fin de la ligne ne serra as lue par l interpr teur De m me en utilisant vous pourrez commenter toute une expression en Scheme par exemple with state colour vector 1 0 6 draw torus translate vector 0 1 0 with state colour vector 0 1 0 draw torus Cela emp chera l interpr teur d ex cuter la deuxi me expression with state ce qui annulera aussi l affichage du tore vert Let let sert stocker des r sultats temporaires par exemple define animate with state translate vector sin time cos time 0 Page 12 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic draw sphere with state translate vmul vector sin time cos time 0 3 draw sphere every frame animate Ce script dessine deux sph res en orbite autour de l origine de la sc ne Vous remarquerez qu il y a un petit calcul qui est r alis deux fois Il serrait plus simple et plus rapide de faire une fois pour toute ce calcul et de le stocker quelque part Une mani re de le faire define x 0 define y 0 define animate set x sin time set y cos time with state translate vector x y 0 draw sphere with state
53. itesse partout avec un angle de 45 par seconde La commande normale time n est pas trop utile ici Puisqu elle retourne un nombre toujours croissant ce qui est insuffisant pour une animation N anmoins pour l utiliser on la passe en param tre la fonction sinus pour avoir une fonction sinuso dale clear define my cube build cube every frame with primitive my cube rotate vector 45 sin time 0 Ce script galement a un taux de fen trage ind pendant et donne une valeur comprise entre 1 et 1 Vous pouvez aussi enregistrer du d but du script aux v nements a venir clear define my cube build cube define start time time enregistre le temps maintenant every frame when gt time start time 5 5 secondes apr s le d but du script with primitive my cube rotate vector 45 delta 0 Propri t s Mat rielles Maintenant vous pouvez cr er et illuminer quelques primitives jusqu pouvoir changer leur apparence autre que simplement modifier leur couleur Les param tres de surface peuvent tre trait s exactement comme le reste des d finitions locales Dans ce cas ils peuvent tre modifi s en utilisant les piles locales en construisant des fonctions ou les modifier ult rieurement en utilisant la fonction with primitive Il existe galement d autres modificateurs Page 20 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Sh
54. ives Toutesles pfuncs partagent la meme interface pour les contr ler et les configurer L id e est de faire une serie d entre eux au d marrage puis de les ex cuter sur une o plusieurs primitives par cadre plus tard make pfunc pfunc name symbol Fait une nouvelle pfunc Prend le symbole des noms apr s e g make pfunc arithmetic pfunc set pfuncid number argument list Fixer les arguments d une pfunc La liste d argument est compos des symboles et des valeurs correspondantes pfunc run id number Execute une pfunc sur la primitive courante Regardez par exemple le d pouillement pour voir comment a fonctionne Type des Pfunc Tous les types de pfunc et leurs arguments sont les suivant arithmetique Pour l application de l arithmetique generale tous type de tableaux Pdata operateur string parmis add sub mul div src string nom de tableau pdata Page 43 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic autres string nom de tableau pdata optionel float constant Valeur de la constante optionel dst string nom du tableau pdata genskinweights G n re skinweights ajoute un pdata float appel s1 gt sn ou n est le nombre de noeuds dans le squelette 1 skeleton root primid number La racine du squellete de skinning sharpness float Contr le de la nettet des plis lors du skinning skinweights gt vertcol
55. key pressed x colour rndvec Page 17 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic draw cube Dessinera un cube qui aurra sa couleur al atoirement chang e lorsque l on appuiera sur la touche x keys down Retourne la liste des touches enfonc es depuis le lancement du script Pour les touches qui ne peuvent pas tre d crites par une String il y a aussi key special pressed key code number Par exemple key special pressed 101 retournera t quand on appuiera sur la touche HAUT du clavier Pour conna tre le nom de ces touches l on pourra utiliser ce script every frame begin display keys special down newline qui retournera la liste des touches actuellement enfonc es Vous n aurez qu appuyer sur la touche que vous voulez pour voir appara tre son code Remarque les codes des touches peuvent diff r es selon le syst me d exploitation utilis Mouse La souris Vous pouvez demander les coordonn es de la souris avec mouse x mouse y Et savoir si un bouton de la souris est enfonc mouse button button number vous retournera t si ce bouton est press Select choix Pendant que nous sommes au niveau de la souris l une de ses meilleurs utilisations est de choisir des primitives avec lesquelles on peut faire select screen x screen y size Ce qui rendra le morceau de l cran autour de ses coord
56. lut t que de fixer les angles de fa on explicite pr cise la valeur de l integral de la rotation chaque seconde Nous pouvons aussi faire cela object rotate vec3 integral 0 10 0 Qui peut etre plus simple dans certaines situation Rendre les choses Reactives Ce que nous avons fait avec la commande int grale est ce qu on appel comportement sa valeur depend du temps ll s agit d une caracteristique essentielle de FrTime et il existe de nombreuses fa ons de cr er et de manipuler les comportements Frisbee vous donne egalement certains comportements par defaut qui repr sentent les informations changeantes venant du monde exterieur object rotate vec3 mouse x mouse y 0 Cela fait tourner le cube en fonction de la position de la souris object colour key press b c vec3 1 6 6 vec3 0 1 0 Cela change la couleur du cube lorsque vous appuyez sur la touche c object translate vec3 0 key control b q a 0 01 0 Cela bouge le cube de haut en bas lorsque vous appuyer sur les touche o et ai de 0 01 unit s Page 64 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic Objets Frais Jusqu pr sent tous les objets que nous avons cr s sont rest s actifs pendant la dur e du programme Quelques fois nous voulons controler le temps de vie d un objet ou cr er un nouveau Ceci est evidemment important pour beaucoup de jeux Pour fair
57. maintenir bas puis le d but et la fin du brouillard qui n apparait pas dans le travail sur ma carte graphique au moins Fog peut tre utilis comme un moyen de cacher l arri re plan de la coupure ou de la rendre un peu moins choquante si les choses plut t que de dispara tre d un coup dispara ssait en fondu elle ajoute beaucoup de r alisme l exterieur des sc nes et je suis un grand fan de trouver des utilisations plus cr atives pour elle Utilisation de multiples cameras Cacher differentes choses dans les differents vues de camera Bruit et l Al atoire Le bruit et l al atoire sont utilis dans l animation afin d ajouter de la salet votre travail Ceci est tr s important car l ordinateur est propre et ennuyeux par defaut Page 46 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic L Al atoire Scheme a son propre jeu d operation al atoire mais Fluxus vient avec un ensemble qui lui est propre pour vous faciliter la vie Operations de nombres al atoires Ces commandes de base retourne les nombres rndf returns un nombre entre 0 et 1 crndf centred retourne un nombre entre 1 and 1 grndf retourne un nombre al atoire gaussiennce centr e sur 0 avec un ecart de 1 Operation de vecteurs al atoires Le plus souvent lors de l ecriture de scripts fluxus vous etes int ress s par l obtention de vecteurs al atoires afin de perturb
58. mplexes avec un code pas si norme que a au final Animation Bien maintenant qu on est arriv jusque l on va pouvoir faire bouger notre script define lign de cubes compteur cond not zero compteur draw cube rotate vector 45 sin time translate vector 1 1 0 0 Lign de cubes compteur 1 every frame lign de cubes 10 time est une fonction qui retourne le temps en secondes qui s est coul depuis le lancement de Fluxus sin le converti en une vague sinuso dale et une multiplication y est appliqu e pour se ramener un angle qui varie de 45 45 rappel sinus varie sur 1 1 Votre ligne de cubes devrait se tordre de haut en bas dans un mouvement perp tuel Essayez de changer le nombre de cubes et la port e de l angle de 45 Page 11 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic Encore plus de r cursivit Pour vous donner un exemple visuellement plus int ressant ce script s appelle deux fois il en r sulte une sorte d arbre anim define lign de cubes compteur cond not zero compteur translate vector 2 0 0 draw cube rotate vector 10 sin time 0 0 with state rotate vector 0 25 0 Lign de cubes compteur 1 with state rotate vector O0 25 Di Lign de cubes compteur 1 every frame lign de cubes 10 Le d tail de la fonct
59. ncer un peu nous la tournons un peu etc define build n turtle reset turtle prim 4 build loop n n turtle build define build loop n t turtle turn vector 360 t 0 turtle move 1 turtle vert if lt n 1 0 build loop n 1 t backfacecull 0 clear hint unlit hint wire line width 4 Illustration 35 Une rosace Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic build 10 Pour un exemple un peu plus complexe modifiez la fonction build loop comme cela define build loop n t turtle turn vector 360 t 0 turtle move 1 turtle vert if lt n 1 0 begin ajoute un autre appel la r cursion build loop n 1 t turtle turn vector 0 0 45 tourne un peu build loop n 1 t Remarques sur l criture de gros scripts dans Fluxus En cr ant des scripts de taille assez importante j ai r alis qu il y avait certains aspects du langage de PLT Scheme pour tre plus pr cis qui taient essentiels conna tre dans la gestion et l criture de scripts Par exemple on a commenc s habituer aux listes pour stocker des donn es Utilisons une liste pour d finir un robot que l on souhaitera contr ler par la suite define myrobot list vector 0 vector 1 0 0 build cube La liste stocke la position du robot sa vitesse et sa primitive associ e au robot dan
60. ne avec with primitive myobj poly set index List of indices Ou automatiquement ce qui est recommand avec with primitive myobj poly convert to indexed Cette proc dure compresse l objet polygone en trouvant les les vertices dupliqu s ou tr s proches et les collent ensemble pour former un seul vertex avec plusieurs r f rences d index L indexation a un certains nombre d avantages par exemple des mod les tr s grand prendront moins de place en m moire mais le plus grand avantage est que les d formations ou les autres calculs par vertex seront assez rapides Les probl mes li s l indexation automatique Comme tous les vertex les informations deviennent partag es pour des vertices co incident automatiquement les polygones index s ne peuvent pas avoir de diff rentes normales de diff rentes couleurs ou de diff rentes coordonn es de texture pour les vertices qui sont la m me position Cela signifie qu ils auront tre lisses et continus avec le respect d clairage et de Page 34 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic texturing Cela peut tre fix e en temps avec un algorithme de conversion plus compliqu e Primitives NURBS Les NURBS sont des surfaces de pi ces courb es param triques Elles sont manipul es de la m me mani re que les primitives polygones sauf qu au lieu des vertices les l ments pdata repr sentent les
61. omme l activit d un manette de jeu Faites le moi savoir si a vous interesse Page 55 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic R solution des probl mes de synchronisation R ussir synchroniser l audio avec le rendu peut tre assez hardu les probl mes les plus fr quents que j ai rencontr s sont distinguables en deux cat gories des lags de synchronisation qui augmente au fur et mesure l appel de start audio s est fait avec la mauvaise taille de tampon Configurez le correctement et relancez votre script Il se peut qu apres 20 minutes d animation de courts lag commencent appara tre ce qui est in vitable D synchronisation constante perpetuelle Cela arrive lorsque l audio ne commence pas en m me temps que le rendu Vous pouvez essayer d ajouter supprimer des blancs au d but de votre source audio Personnellement je n enregistre que quelques secondes d animation pour talonner mon enregistrement avant de vraiment d marrer Fluxus dans DrScheme DrScheme est un environnement de d veloppement int gr pour Scheme et est compris dans PLT Scheme donc il est forcement install si vous avez compil Fluxus Eile Edt View Language Scheme Special Help Vous pouvez l utiliser la K Sg svop gl buffers place de l diteur de Fluxus ee pour crire vos scripts 0 0 0 0 0 0 0 0 or buffer bit depth b
62. onn es x screen x et y screen y Un exemple click on the donuts clear define make donuts n when not zero n with state translate vmul srndvec 5 scale 0 1 build torus 1 2 12 12 make donuts n 1 make donuts 10 Page 18 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic every frame when mouse button 1 let s select mouse x mouse y 2 when not zero s with primitive s colour rndvec OSC OSC Open Sound Control est un protocole standard de communication entre les programmes courants et le r seau Fluxus a la quasi totalit des droits d envoi et de r ception des messages OSC Pour commencer voici un exemple de script qui lit les messages OSC partir d un port et utilise la premi re valeur d un message pour positionner un cube osc source 6543 every frame with state when osc msg zzz translate vector 0 6 osc 0 draw cube Et ceci est un pd patch qui peut tre utilis pour contr ler la position du cube N canvas 618 417 286 266 10 X obj 58 161 sendO0SC X msg 73 135 connect localhost 6543 X msg 58 82 send zzz 1 X floatatom 58 29 5 0 0 0 X obj 58 54 100 X obj 73 110 loadbang X connect 1 0 0 0 X connect 2 0 0 0 X connect 3 0 4 0 X connect 4 0 2 0 X connect 5 0 1 0 Time le temps J ai d cid d inclure le temps
63. ory prend le troisieme param tre qui est le maximum de chose qu il peut maintenir en vie en m me temps Une fois que 5 objets ont t cr er il va les recycler et supprimer les vieux objets Frisbee vient avec quelques evenements construits qu on peut voir avec le script scene factory lambda e object translate vec3 integral 0 1 0 0 keyboard 5 Qui engendre un cube chaque fois que vous appuyer sur le clavier Jusqu present nous avons ete en ignorant l evenement qui tait plac dans notre petite fonction faire des cube mais comme les v nements gener par le clavier sont les touches que nous avons appuyer on peut les utiliser ainsi Page 65 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic scene factory lambda e if char e a make a bigger cube if a is pressed object translate vec3 integral 0 1 0 0 scale vec3 2 2 2 object translate vec3 integral 0 1 0 0 keyboard 5 Convertir des comportements en venements Vous pouvez cr er des venements quand un comportement change scene factory lambda e object translate vec3 integral 0 1 0 0 when e gt mouse x 200 5 Particles Frisbee vient avec son propre systeme de primitive particle qui facilite la construction de differents effets particle Il sont cr er de la m me maniere que les objets solides scene particles Et
64. ouvez dej controler la camera avec la souris mais vous aurez envie de la controler avec un script Animer la camera de cette maniere est aussi facile vous n aurez qu verrouiller celle ci sur un objet et le deplacer comme suit clear define obj build cube Construit un objet sur lequel seras verouiller La camera with state Construisons un cube en arrierre plan pour nous permettre de savoir ce qui se passe hint wire hint untlit texture load texture test png colour vector 0 5 0 5 0 5 scale vector 20 10 10 build cube Llock camera obj Verrouillons la camera sur notre premier cube obj camera lag 0 1 Choix de la valeur du decalage permettant de lisser Le movement du cube define animate with primitive obj identity translate vector fmod time 5 6 0 fais un mouvement agit every frame animate Arreter le deplacement de la camera par la souris Meme lorsqu elle est fix e sur un objet la camera obe t toujour la souris mais elle se deplace relativement l objet Vous pouvez mettre fin cette situation en fixant la transformation de la camera vous m me set camera transform mtranslate vector 0 0 10 Cette commande prend des matrices de transformation un vecteur de 16 nombres qui peuventt etre generer par les commandes maths mtranslate mrotate et mscale et les multiplie entre elles avec mmul Vous avez besoin d un seul appel de set camera transfo
65. p lambda n vmul n 1 n Cette m thode est plus concr te et il y a moins d erreurs que les fonctions pr c dentes du fait de monter la boucle vous m me pdata index map Procedure read write pdata name read pdata name Pareil que pdata map Mais r serve le num ro index du pdata courant la proc dure comme premier argument pdata fold procedure start value read pdata name read pdata name Cet exemple calcule le centre de la primitive en faisant la moyenne de toutes les positions vertex define my torus build torus 1 2 10 Loi define torus centre with primitive my torus vdiv pdata fold vadd vector 6 0 pi pdata size pdata index fold procedure start value read pdata name read pdata name Pareil que pdata fold mais r serve aussi le nombre index du pdata courant la proc dure comme premier argument Page 31 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic En instance Quelquefois retenir les modes primitives peut tre difficile manier Par exemple si vous avez milles objets identiques ou si vous faites les choses avec les appels r cursifs lorsque vous appelez la primitive dans plusieurs tats sauvegardez les traces de tous les objets qui seraient ennuyeux le plus C est l que la m thode instance est demand e tout ce que vous appelez est draw instance myobj Ce qui dessinera chaque objet dans l tat co
66. plexes Us peuvent SE EE tre charg dans Fluxus SE DE actuellement les mod les ed g om triques support s PR Ss sont les donn es nn triangulaires les positions de vertex les normales et r E les coordonn es de texture o e L id e ici est d utiliser le E eau expec tn A character SH OUEST bedreet Fett SCHT E Deele te a ZE format Collada pour des S sc nes complexes contenantiustration 33 Chargement d un exemple de fichier Collada diff rents types g om triques cela inclus les animations et les donn es physique L export au format Collada est aussi pr vu Voi la documentation pour la fonction collada import filename Page 50 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic Les Shaders Les Shaders mat riels vous donnent un contr le plus pr cis sur les pipelines graphique utilis pour le rendu de vos objets Fluxus poss de des commandes pour d finir et contr ler des Shaders GLSL depuis vos scripts en Scheme il vous permet m me de les modifier dans l diteur de Fluxus GLSL est le protocole standard d OpenGl pour les Shaders sur beaucoup de types de cartes graphiques Si votre carte graphique et son pilote d affichage supportent OpenGl2 cela devrait fonctionner pour vous shader vertshader fragshader Cela charge compile et lie les vertex aux Shaders dans le contexte courant ou sur des primitives que vous aurez appel sha
67. pproch s des vecteurs des couleurs ou des matrices Vous pouvez faire vos propres llustration 11 D formation des pdata d une primitive leaux de donn es de primitive avec des leurs noms de votre choix ou les copi dans une commande Quelques tableaux sont cr es lorsque la fonction build est appel e Ceci produit automatiquement des donn es de primitive qui sont donn es avec des noms de caract res simples Parfois a cr e automatiquement des r sultats de donn es de primitive dans une primitive que vous pouvez utiliser par la suite dans des commandes tel que build cube mais quelques primitives sont seulement utilisables si les donn es sont r gl es et contr l es par vous Dans les polygones il y a un l ment des donn es de primitive par vertex et un tableau s par pour les positions couleurs et coordonn es de textures vertex Donc par exemple build sphere cr e un objet polygonal avec une distribution sph rique de donn es de points vertex de surfaces normales chaque vertex et coordonn es de textures donc tu peux envelopper une texture autour de la primitive Cette donn e primitive data or pdata pour raccourcir peut tre lue et crite l int rieur d une fonction with primitive correspondant l objet courant pdata set Name vertnumber vector Affecte la donn e l objet courant dans le vecteur utilis pdata ref name vertnumber Retourne le vecteur partir des donn es de primitives sur
68. r Creative Commons Attribution Share Alike 2 5 Generic with state g n re quelque chose pour que L ombre tombe par dessus rotate vector 90 6 oi scale 10 build plane Les probl mes li s aux ombres Il y a quelques ennuis avec l utilisation de l ombre dans Fluxus Primo ils exigent quelques donn es tre produites pour la primitive qui vont caster l ombre Cela peut prendre du temps pour calculer les mailles complexes bien qu il soit seulement calcul la premi re fois qu une primitive est rendue toujours la premi re fen tre Une dition plus probl matique est l effet de l utilisation de la m thode shadowing de Fluxus qui est rapide et exact mais ne travaille pas si la cam ra elle m me est l int rieur volume d ombres Vous verrez des ombres dispara tre ou s inverser Elle peut prendre une sc ne prudente mont e pour viter cet incident Des alternatives communes aux ombres calcul es ou allumant en g n ral doivent les peindre l int rieur des textures ceci est une meilleure approche si la lumi re et les objets doivent rester fix s G n rer des allusions Nous avons d j vu quelques g n rateurs d allusions mais pour les expliquer correctement ils sont de diverses options qui peuvent changer la fa on dont une primitive est rendue Ces options sont appel es hints comme pour quelques types de primitives ils ne peuvent faire d application ou peuvent faire de diff rentes choses Ils
69. r aux parties qui vous int resse Premi re prise en main Au lancement de Fluxus vous verrez appara tre un message d accueil et une invite de commande ceci est appel le toplevel ou terminal En g n ral les scripts Fluxus seront crit dans des tampons de m moire desquels vous pourrez vous d placer avec la combinaison de touches Ctrl 0 91 le tampon 0 tant votre toplevel D placez vous dans le premier tampon en pressant simultan ment Ctrl et 1 Essayez maintenant de taper la commande suivante build cube Pressez F5 ou Ctrl e Le script serra ex cut et un cube blanc devrait appara tre au milieu de l cran Utilisez la souris pour naviguer autour du cube en pressant sur les boutons de la souris vous pourrez effectuer plusieurs mouvements la taille du tampon et la fr quence d chantillonnage doivent correspondent aux param tres de Jack start audio port jack sur lequel lire 256 44100 define render colour vector gh 1 gh 2 gh 3 draw cube every frame render Pour expliquer rapidement la fonction every frame prend en param tre une fonction qui serra appel e toute les secondes par le moteur interne de fluxus Dans notre cas elle rappelle la fonction render qui elle va d finir une couleur en fonction des harmoniques du flux audio d entr e avec la fonction gh et dessine ensuite un cube de la couleur sp cifi e Vous remarquerez que l on utilise pas la fonction build cu
70. reative Commons Attribution Share Alike 2 5 Generic ET RS ER 27 l OMD E arenaen a aA OE Ea e aE 29 Les probl mes En le 29 G n rer des SEET 30 propos des Primlthves tter trette tte rE EEEE EEEE EEEE EErEE EEEE 31 ege EE Die 31 Les tableaux de donn es de primitive aka Pdaral 31 Mapping Folding affichage Diage ss i snsausananann sansunanenntasmaneenteunu 32 le n E A E TEES 33 Construits de primitives dans le mode imm diat 34 Types de DAMES ii dansent 34 Les primitives PONOOMSE niasansnnnsseneeneniiiecartenadenedememieetttonnunes 34 Polygones AO CR OS D 36 Piimitives NURBS ON Ea UREE EEE ES 37 Primitives Particle DatiQul s rec dassasusn nernnveneceannte nsatarrensiti asues 37 Primitives RIDON eege 38 Primitive Text Ee 39 BK RT 20 Zi e EE 40 Primitive e DEE 40 Primitive BIODDY seccina EE aE EET aaia N 41 Conversion en CLS LOL egene BEES Ee 42 LES ES LAS LE LE LE PR RE TR TR a EEEE 42 Ne a an tac a ea a a en 43 Op ration sur les ni E 44 Fonctions Paata EE E 45 Utiliser les pdata pour construire ses propres Drlmllves 47 RE EE 47 Control Ke RTR en accetomauste toire rasanaane chat dun tenus 47 Arreter le deplacement de la camera par la souris 48 Autres propiet s de la camera 48 Fogging DUCE PP RES AEE A EAEE E E ENEA 48 Utilisation de multiples cameraS s sssssssrsrsrsrrrrrrrrerrrrsrerererrrrrrsrenerrerereeres 49 GIL e EE 49 TAPER TT INO LE eee a E a a a 49 SERA 50 Inspection
71. rm il donne votre script un control complet sur la camera et libere la souris pour faire autre chose Pour revenir To switch mouse l utilisation de la souris on utilise Illustration 28 Utilisation de clip pour donner un grand angle de perspective la cam ra a Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic reset camera Autres propiet s de la camera Par defaut la camera est en mode perspective pour une projection en orthographique on utilise ortho Les mouvements avant et arriere n ont pas d effet en mode orthographique agrandir l affichage on utilise set ortho zoom 10 Et utiliser persp pour faire pivoter en mode perspective L angle de cam ra peut tre modifi avec la commande de confusion clip 1 10000 Qui fixe les coupures de pr s ou de loin de la distance de plan La coupure de loin du plan le second nombre fixe ou la g ometrie va commencer etre abandonn Le premier nombre est int ressant pour nous car ul definit la distance entre le point central de la camera au plan de coupure Plus petit est ce nombre plus l anlge de camera Fogging bu e Pas strictement un r glage de camera mais les objets en fades out lorsqu il se deplacent hors de la camera donne l impression d une perspective a rienne fog vector 1 0 01 1 1000 Le premier nombre est la couleur de la brume suivi par la force r sistance
72. s Un utilitaire pour visualiser skinweights pour le debogage Aucun Argument skinning Skinner une primitive elle se deforme pour suivre le mouvement du squelette Les primitives sur lesquelles nous voulons l executer doivent contenir des pdata en extra des copies de la position du sommet appel pref et de m me pour les normales si les normales sont skinne appel nref Skeleton root primid number Primitive racine du squelette d animation bindpose root primid number Primitive racine du squelette du bindpose Utiliser les pdata pour construire ses propres primitives La fonction build polygons vous permet de construire une primitive vide wui peut etre utiliser pour construire d autre type de forme procedurale qui ne sont pas support s par fluxus en natif ou pour charger un model de donn s du disque dur Une fois ces primitives construites elles peuvent etre trait es exactement de la m me mani re que toute autre primitive c est dire des pdata peuvent etre ajouter modifi s et vous pouvez utiliser recalc normals etc Camera Sans camera vous ne seriez pas en mesure de voir quelque chose Elle est videmment tr s importante dans l infographie 3D et peut tre utilis de fa on tr s efficace comme une camera reelle pour raconter une histoire Page 44 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic Control de la Camera Vous p
73. s choses comme with et pdata map Macros sont precis es et l importation exportation par exemple Fluxa est une option ajouter fluxus qui ajoute de la synth se audio et de la lecture d echantillon Il est aussi un synthetiseur non determinist experimental o chaque note est son propre synth tiseur graphique Fluxa est un framework pour construire et sequencer du son Il utilise un style minimal et purement fonctionnel qui est con u pour du liveconding Il peut etre d compose en deux partiesy la description des graphiques de synthese et un ensemble de formes linguistiques pour d crire les sequences procedurales Fluxa est aussi une sorte de primitive hommage supercollider voir aussi Page 58 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic rsc qui est une liaison de scheme sc Exemple require fluxus 016 fluxa seq lambda time clock play time mul sine 440 adsr 0 1 0 6 0 2 Joue un ton sine avec une decroissance de 0 1 secondes toutes les 0 2 secondes Non determinisme Fluxa a decidement des propi t s non determinists la dur e de vie du synth est li e certaines contraintes globales e Un nombre fixe d operateurs qui sont recycl s allocation temps espace contrainte e Un nombre maximum de synthe qui joue simultanement Contraninte de temps cpu Ce qui veut dire que les synth sont arret s apr s une per
74. s formes construite en t object shape cube object shape sphere object shape torus object shape cylinder Ou vous pouvez aussi charger un fichier obj pour faire vos propres formes object shape mushroom obj Ces fichiers objets sont relatifs l endroit o vous lancer fluxus ou ils peuvent aussi vivre quelque part dans l emplacement de recherche de fluxus que vous pouvez definir dans votre fluxus scm script utilisant searchpath Si nous voulons chang la couleur de notre cube nous pouvons ajouter un nouveau parametre object colour vec3 1 0 0 The vec3 specifies the rgb colour so this makes a red cube Note that frisbee uses vec3 to make it s vectors rather than vector Voici d autres parametres que vous pouvez regler sur l objet object translate vec3 0 1 0 scale vec3 0 1 1 0 1 rotate vec3 0 45 0 Page 63 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic texture test png hints unlit wire L odre de specification des param tres n a pas d importance le r sultat est le m me La transformation de l ordre est toujours de translater translate d abord puis pivoter rotate et l echellonnage scale Animation FrTime fait un mouvement specifique tr s simple object rotate vec3 0 integral 10 0 Fait un cube qui effectue une rotation de 10 degrees chaque seconde P
75. s licensed under Creative Commons Attribution Share Alike 2 5 Generic Dessinera un cube vert puis un cube rouge with state isole un tat lui donne une dur e de vie gr ce ses parenth ses C est pourquoi les changements l int rieur du with state n affectent que le build cube envelopp et pas les autres Il vaut mieux utiliser l indentation pour se faire une id e plus concr te La sc ne Les deux exemples que l on vient de voir utilisent ce qu on appelle le mode la vol e On dispose d une pile le sommet tant le contexte courant et tout est dessin une fois par image Fluxus propose une structure que l on appellera la sc ne qui servira stocker des objets ainsi que leurs tats Un exemple clear on nettoie La sc ne colour vector 1 0 6 build cube on ajoute un cube rouge la sc ne translate vector 2 0 0 colour vector 0 1 0 build cube on ajoute un cube vert la sc ne Ce code n as pas besoin d tre appel par every frame et nous utilisons build cube la place de draw cube Les fonctions build cr ent des objets primitifs copient leurs tats courant et rajoutent ces informations dans un conteneur appel une cellule de sc ne En fait les fonctions build retournent l identifiant de l objet qui au final n est qu un num ro ce qui vous permettra de r f rencer la cellule de sc ne apr s qu elle soit cr e Vous pouvez sp cifier des objets comme
76. s notre exemple le robot est un cube On pourra alors utiliser list ref myrobot 0 retourne la position du robot List ref myrobot 1 retourne la vitesse du robot List ref myrobot 2 retourne la primitive du robot pour obtenir les valeurs du robot pour ensuite les utiliser Ca para t assez simple vu comme a mais a deviendrait tr s vite lourd g rer si l on devait g rer un monde de robots construit un monde de 3 robots define world list list vector 0 vector 1 0 6 build cube list vector 1 6 6 vector 1 6 6 build cube List vector 2 6 6 vector 1 6 6 build cube Et maintenant si nous voulions obtenir la primitive du second robot List ref list ref world 1 2 vous voyez bien que a devient impossible g rer si l on devait contr ler des centaines de robots Les structures Les structures ou Structs ne sont que des encapsuleurs qui vous permettront de nommer un groupe de donn es Il est beaucoup plus facile et efficace de les Page 53 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic g rer avec des structs qu avec des listes Reprenons l exemple des robots define struct robot pos vel root Ou pos est la position courante du robot vel repr sente la vitesse et root la primitive du robot La fonction define struct g n re automatiquement des accesseurs define myrobot make robot vector
77. s work is licensed under Creative Commons Attribution Share Alike 2 5 Generic Les scripts de vos diff rents tampons peuvent tre enregistr s sous diff rents noms pour cela appuyez sur Ctrl s pour le sauvegarder ou Ctrl d pour sp cifier un nom a votre script avant de l enregistrer le nom par d faut avec Ctrl s est temp scm La boucle TOPLEVEL Si vous faites Ctrl 0 au lieu d avoir un espace de travail vous aurez une invite de commandes Vous pourrez entrer du code directement valu en tapant Entr e Ce code serra valu par le m me interpr teur qui s occupe des scripts vous pouvez donc l utiliser pour debugger vos scripts C est aussi sur la sortie de la boucle TOPLEVEL que les erreurs de vos scripts seront envoy s l instar de la console qui a servi lancer Fluxus Une des utilisations principales de la boucle TOPLEVEL est l utilisation de l aide sur les commandes de Fluxus Par exemple pour avoir de l aide sur la commande build cube tapez help build cube Vous pouvez avoir plus de d tails en tapant help sections qui vous retournera une liste de sous sections par exemple pour avoir un d tail des fonctions math matiques help maths Vous renverra la liste de toutes les fonctions math matiques disponible et vous pourrez en plus demander le d tail de chaque fonction Vous pouvez copier l exemple donn par l aide en utilisant les touches du clavier Ctrl c Ctrl v et naviguer sur un au
78. sont utiles pour le fait de d boguer et quelquefois juste pour l amusement hint none Illustration 10 Une poly Cette fonction hint est tr s importante elle efface SP 9re avec ses normales et toutes le autres hints Par d faut seulement une est mise hint solid Si tu veux la d sactiver et juste retourner un cube dans une fen tre m tallique par exemple tu dois ex cuter ce script hint none hint wire build cube Pour voir la liste compl te des fonctions hints r f re toi la section de r f rence de la fonction Vous pouvez faire de tr s jolies choses par exemple clear light diffuse vector 6 6 oi Page 28 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic define l make light point free Light position l vector 10 50 50 light diffuse l vector 1 1 1 shadow light 1 with state hint none hint wire hint normal translate vector 0 2 0 hint cast shadow build torus 0 1 1 10 10 with state rotate vector 90 6 0 scale 10 build plane Tire le torus de l exemple shadowing mais est rendue dans une fen tre m tallique l affichage est normale bien que le casting de l ombre est en cours C est devenu une sorte de mod le de trouver des moyens cr atifs pour rendre des primitives dans Fluxus propos des Primitives Les primitives sont des objets que vous pouvez retourner Il n y a vraiment pas asse
79. tion fonctionnel reactif disponible dans le cadre de PLT scheme La programmation fonctionnelle r active frp Functional reactive programming est un mode de programmation qui met l accent sur les comportements et les ev nements et en fait un l ment central du language Programmer un environement graphique comme un jeu est une question de description de sc ne et des comportements qui change au fil du temps En utilisant les languages de programmation normaux comme la base de fluxus vous avez g n ralement besoin de faire ces choses s parement construire une sc ne ensuite l anim En utilisant le FRP on peut d crire la scene avec les comportements l interieur L id e est de faire de plus petit programmes et plus simples modifier rendant ainsi le processus de programmation plus cr ative Page 62 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic Une simple scene frisbee Ceci est le ce qui est le plus simple de scene frisbee require fluxus 015 frisbee scene object scene est la commande principale de frisbee elle est utiliser pour definir une liste d objet et leurs comportements object cr er un objet solid par defaut le cube bien sur Nous pouvons modifi notre objet en utilisant l option keyword parameters ils travaillent comme a scene object shape sphere Ceci definie la forme de l objet Ci apr s quelque
80. tions Ce chapitre est pour des choses que je pense vraiment importantes savoir mais ne trouvent pas de place Obtenir une norme vitesse de framerate Par default fluxus a son framerate etrangle Pour le supprimer vous pouvez utilisez desiredfps 1000000 Un tel framerate n est pas garantie mais il arretera le plafonnement de la vitesse par fluxus qui par defaut est au tour de 50fps Utiliser show fps 1 pour verifier le fps avant et apr s Des framerates eleve sont bon pour le VJing il est essentiel de reduire le temps de latence des resultats des calculs audio il est beaucoup plus r ceptif Tests Unitaires Si vous voulez v rifier que fluxus travaille correctement sur une nouvelle installation ou si vous soup onnez que quelque chose ne vas pas essayez self test f qui executera un exemple de chaque script contenue dans la documentation de la reference de fonction Si il plante ou il y a une erreur lancez self test t qui permettra de sauver un fichier log veillez l envoyer sur la mailling list et nous essayerons de le corriger Il est fortement recommand aux developpeurs d ex cuter cette commande avant d envoyer son code la source de d p t de sorte que vous pouvez voir les effets de vos modifications Scratchpad Fluxus et modules Ce chapitre documente sur du fluxus du niveau inferieur uniquement si vous Page 57 Fluxus Manual version 0 16 This work is licensed under
81. tre espace de travail pour y coller le code Les raccourcis clavier e Ctri f Mode plein cran e Ctrl w Mode fen tr e Ctrl h Affiche masque l diteur e Cl Ouvre un script navigation avec les fl ches du clavier e Ctrl s Sauvegarde le script courant sous le nom temp scm e Ctrl d Sauvegarde sous le nom sp cifi e Ctrl 1 to 9 Naviguer entre les diff rents espaces de travail e Ctri 0 Aller la boucle TOPLEVEL e Ctrl p Auto indentation du code e F3 Reset de la cam ra e F4 Ex cute le code s lectionn Page 6 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic e F5 Ctrl e Ex cute le code s lectionn ou tout le script si rien n est s lectionn e F6 remise z ro de l interpr teur puis ex cution du script e F9 Change la couleur du texte avec une couleur al atoire e F10 Rendre le texte plus transparent e F11 Rendre le texte moins transparent Scheme est un langage de programmation invent par G rald J Sussman et Guy L Steel Jr en 1975 Scheme est bas sur un autre langage Lisp qui remonte aux ann es 50 C est un langage de haut niveau ce qui signifie qu il est simplifi pour l utilisateur au lieu de l tre pour le compilateur Le tampon de Fluxus embarque un interpr teur Scheme il peut faire tourner des scripts Scheme et les modules de Fluxus tendent le langage Scheme de par ses commandes pour le
82. uffer bit F all ob setup nder d scene e Les raisons pour lesquelles z VO u S VO u d ri ez u ti i se r Welcome to DrScheme version 369 6 svn26jan2007 3m D rS C h e m e S el nt e e Language Pretty Big includes MrEd and Advanced Student custom suivantes e possibilit de d buger ai zm Ju e un environnement Illustration 36 l criture d un script Fluxus dans DrScheme d dition meilleur que tout ce que pourra proposer Fluxus ap gl buffers per on paint e rend Fluxus tr s utile lorsque l on souhaite juste rendre des objets dans Scheme Je l utilise tr s souvent lorsque je dois crire de gros scripts Tout ce que vous aurez faire est rajouter cette ligne au d but de votre script require fluxus version drflux ou version est la version actuellement install sans le tiret par exemple 016 pour la version 0 16 Page 56 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic Chargez un script et lancez le une nouvelle fen tre s ouvre et affiche le r sultat de votre script Relancez le script devrait alors raffra chir cette fen tre automatiquement Probl mes rencontr s Certaines commandes font planter DrScheme show fps ne devrait pas tre utilis Les Shaders mat riels ne fonctionnent pas non plus De plus DrScheme demande beaucoup de m moire vive ce qui pourrait poser probl me Divers autres informa
83. urant mode imm diat Un exemple define myobj build nurbs sphere 8 10 fait une sph re define render spheres n cond not zero n with state translate vector n 0 6 bouge en x draw instance myobj garder une copie render spheres n 1 appel recursif every frame render spheres 10 draw 10 copies Construits de primitives dans le mode imm diat Pour faciliter la vie au lieu de faire recours aux m thodes d instance il y a quelques construits de primitives qui peuvent rendus chaque moment sans tre construits draw cube draw sphere draw plane draw cylinder Par exemple define render spheres n cond not zero n with state translate vector n 0 0 move in x draw sphere render a new sphere render spheres n 1 recurse every frame render spheres 10 draw 10 copies Ces construits de primitives sont tr s restreints dans le cas o vous ne pouvez pas les diter ou changer leur r solution etc mais ils sont utiles pour ex cuter les scripts rapidement avec des formes simples Types de primitives Les primitives sont les choses les plus int ressantes dans Fluxus comme elles repr sentent les objets qui sont rendus et illuminant la sc ne Illustration 12 Un poly cube textur avec test png Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic Les primitives Polygones Les primitiv
84. us permet de cr er et d utiliser une fonction temporaire un point donn dans votre script display lambda x x x 10 newline a peut para tre un peu compliqu premi re vue mais tout ce qu on vient de faire c est remplacer carr par lambda x x x C est tr s utile dans le cadre de petites fonctions sp cialis es qui ne seront plus utilis es dans le reste du script autrement a deviendrait vite lourd de devoir d finir chaque petite fonction sp cifiquement La machine tats La machine tats est le point cl dans la compr hension du syst me Fluxus Tout ce qu il fait c est qu en appelant certaines fonctions vous changerez le contexte courant du script ce qui aurra un effet sur les fonctions qui suivront Cette mani re de proc der est tr s utile et fonctionne peut pr t comme l API d OpenGl Par exemple define dessin colour vector 1 0 6 draw cube translate vector 2 6 6 on bouge un peu Les crayon colour vector 6 1 0 draw cube every frame dessin Dessinera un cube rouge puis un cube vert Vous pouvez imaginer l appel de colour comme un changement de crayon d une couleur diff rente Les tats peuvent aussi tre empil s par exemple define dessin colour vector 1 6 6 with state colour vector 0 1 0 draw cube translate vector 2 0 0 draw cube every frame dessin Page 14 Fluxus Manual version 0 16 This work i
85. vient avec un ensemble de param tres que vous pouvez controler explicitement ou par les ev nements scene particles colour vec3 1 1 1 translate vector 6 0 0 scale vector 0 1 0 1 0 1 rotate vector 0 0 0 texture test png rate 1 speed 0 1 spread 360 reverse f R f rence des fonctions La r f rence des fonctions n est pas encore disponible en fran ais OH OH OH OH Page 66
86. xture et get parent ensuite ecriture d une primitive pixel get children retourne une liste de fils de la primitive elle peut aussi vous donner une liste de fils du noeud racine de la scene si vous l appelez de l exterieur de with primitive get parent retourns le parent de la primitive courante get children Ces commandes peuvent tres utilis es pour naviguer dans la scene et pour trouver une primitive sans que vous ayer besoin d enregistrer manuellement les identifiants Par exemple une primitive peut changer la couleur de son parent comme ceci with primitive myprim with primitive get parent colour vector 1 0 0 Vous pouvez galement visiter chaque primitive de la sc ne avec le script suivant navigate the scene graph and print it out define print heir children for each lambda child with primitive child printi id a parent a children a n child get parent get children print heir get children children Detection de Collision Une chose que vous voulez faire est de savoir si deux objets entre en collision particuli rement lors de Illustration 31 Points d intersection de la ligne avec le torus Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic l ecriture de jeux Vous pouvez savoir si l actuelle primitive croise une autre avec cette commande bb intersect other primitive box expand Elle utilise la
87. xture 0 load texture test png C est exactement le m me que texture load texture test png Ce script est un simple exemple de multitexturing clear with primitive build torus 1 2 20 20 multitexture load texture test png multitexture 1 load texture refmap png Par d faut toutes les textures partagent le pdata t comme leurs coordonn es mais chaque texture cherche aussi de pr f rence ses propres coordonn es pour les utiliser IIs sont nomm s t1 t2 t3 jusqu t7 clear with primitive build torus 1 2 20 20 multitexture load texture test png multitexture 1 load texture refmap png pdata copy t rtl fait une copie des coordonn es de la texture existante Page 24 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic pdata map lambda t1 vmul t1 2 rend la texture refmap png plus petite que test png t1 C est l o multitexturing entre vraiment dans ses propri t s car vous pouvez d placer et d former individuellement les textures sur la surface d une primitive Une utilisation pour cela applique les textures comme des autocollants sur le bas des arri res plans des textures une autre est d utiliser un alpha s par qui d coupe la texture d une de ses couleurs et avoir la couleur de la texture nag tant que le d coupage est fait Mipmapping Il y a plus pour faire le chargement de
88. z d autres dans une sc ne de Fluxus part les lumi res une cam ra et peu de primitives La primitive state La mani re normale de cr er une primitive est de g n rer quelques state que la primitive utilisera ensuite appellera sa fonction build puis utilisera la fonction with primitive pour modifier plus tard la primitive state define myobj with state colour vector 0 1 0 build cube dessine un cube de couleur verte with primitive myobj colour vector 1 6 6 change sa couleur en rouge Donc les primitives contiennent un tat qui d crit des choses tels que la couleur la texture et qui transforme les informations Cet tat op re sur la primitive en entier une couleur pour la primitive enti re une texture une paie de shader et une transformation Pour avoir une petite profondeur et faire plus nous avons besoin d introduire une donn e de primitive Page 29 Fluxus Manual version 0 16 This work is licensed under Creative Commons Attribution Share Alike 2 5 Generic Les tableaux de donn es de primitive aka Pdata Un tableau de donn es de primitive est un tableau d information de taille fix e qui est contenue dans la primitive Chaque tableau a un nom donc vous pouvez vous r f rer a et une primitive doit contenir assez de tableaux de donn es de primitive diff rentes qui ont toutes la m me taille Ces tableaux de donn es de primitive sont typ s et peuvent contenir des nombres a

Download Pdf Manuals

image

Related Search

Related Contents

SOLAR – ANLAGEN - Alpha  はじめに、取扱説明書の「安全にお使いいただくために」 を必ずお読み  LG Electronics MP-42PZ44HR Flat Panel Television User Manual  SMART cDNA Library Construction Kit User Manual  Philips Hairdryer HP4995  2. Búsqueda de Facturas/Pólizas/Constancias  PDFチラシ 1.2MB  Winkhaus STV Bedienungsanleitung Elektronische  intext:Bedienungsanleitung filetype:pdf  Glow P54 White LED Par - Prestige LED Lighting  

Copyright © All rights reserved.
Failed to retrieve file