xvxcwvxc xcv i cvcvxivxc i Justement, mettons donc un objet, un cube pourquoi p

xvxcwvxc xcv i cvcvxivxc i Justement, mettons donc un objet, un cube pourquoi pas : cube=CreateCube() Plaçons ce cube devant la camera : PositionEntity cube,0,0,5 Demandons à l'ordinateur de nous dessiner tout ce que nous avons créé : RenderWorld et faisons afficher la scène jusqu'a ce que nous appuyions sur une touche : WaitKey() et voilà c'est fini, encore faut-il le dire à l’ordinateur : End Voici le programme tel qu’il apparaît dans Blitz3D (exemple 1) : Graphics3D 800,600 ; prépare un univers en 3D de taille horizontale 800 et verticale 600 camera=CreateCamera() ; crée une camera lumiere=CreateLight() ; crée une lumiere qui illumine la scène cube=CreateCube() ; crée un cube PositionEntity cube,0,0,5 ; positionne le cube 5 unités devant la camera RenderWorld ; rend la scène, c'est à dire dessine les objets créés, ici juste le cube. WaitKey() ; attend que vous appuyiez sur une touche pour quitter le programme. End Notez, en jaune, les commentaires que j’ai rajoutés pour ma version. Ils ne sont pas pris en compte pour l’exécution du programme et ne sont là que pour aider celui qui lit le code. Pour ajouter des commentaires tapez ‘ ;’ , Blitz3D sait alors que ce qui suit ce point virgule est un commentaire et ne le concerne donc pas. Prenez le temps de commenter votre code. Vous en serez fort content lorsque vous relirez certains de vos programmes plusieurs mois après leurs création. Au fait, il serait sage de sauver notre premier projet. Pour ce faire, menu ‘File’ puis ‘Save as…’. Donnez lui un nom puis attribuez lui une place sur votre disque dur. Ouf, sauvé. Bon, reprenons. Appuyez sur la touche ‘F5’ pour lancer le programme. Voici le résultat : Appuyez sur une touche. 2°) Placement d’un objet Pas très joli ce cube n’est-ce pas ? Un peu plat, un comble pour un objet en 3D. Si nous le déplacions un peu afin d’en voir les côtés. Il suffit de modifier ses coordonnées. Pour l’instant nous avons : PositionEntity cube,0,0,5 Modifiez en : PositionEntity cube,2,2,5 Le premier chiffre déplace le cube de 2 unités vers la droite (axe des X), le second de 2 unités vers le haut (axe des Y). Le troisième chiffre, auquel nous ne touchons pas, déplace le cube de 5 unités dans l’axe Z, c'est-à-dire dans la profondeur. Il est donc situé devant la caméra, à une distance de 5 unités. La caméra a été placée par défaut à 0,0,0 car nous ne lui avons pas attribué de position. Appuyez sur ‘F5’. Voici le résultat : C’est un peu mieux. Essayez d’autres paramètres plus fins comme 1.2 ou 1.3. Oui vous avez bien j’ai écrit 1.2 et non 1,2. La virgule est représentée par un point comme dans beaucoup de logiciels. Cela donne, par exemple : PositionEntity cube,1.2,1.3,5 Faites des essais. Ne dépassez pas 3 pour l’instant pour les axes des X et des Y sinon le cube sortirait de votre champ de vision. 3°) Rotation d’un objet Avec Blitz3D, on peut manipuler les objets de multiples manières. Voyons l’exemple de la rotation. Elle peut se faire le long de nos trois axes : X,Y et Z. Reprenons notre exemple en cours. Repositionnez l’objet à 0,0,5 (positionentity cube,0,0,5), puis sur la ligne du dessous rajoutez : RotateEntity cube,45,0,0 Voici le résultat : Essayez les valeurs suivantes pour voir la différence : 0,45,0 et 0,0,45. Les valeurs sont exprimées en angle. Si vous effectuez une rotation de 90 degrés, vous risquez donc de ne pas percevoir la différence… Les valeurs de rotation sont des valeurs absolues. Si vous répétez la ligne rotateentity cube,45,0,0 plusieurs fois cela n’aura aucun effet car le cube étant déjà à 45 degrés, il ne bougera plus. Nous verrons par la suite une application de ce principe. 4°) Un peu de mouvement. A présent mettons un peu de vie dans notre monde. Pourquoi ne pas faire bouger l’objet, en le faisant tourner par exemple. Si vous préférez, jetez un coup d’œil au code qui se trouve à la fin de cette section, vous comprendrez peut être plus facilement les explication données ci- dessous. Ne vous privez pas de le faire systématiquement. Si vous êtes comme moi, ce sont souvent les exemples qui me font comprendre les explications et non l’inverse. Pour ce faire, quelques notions nouvelles doivent être abordées. Imaginons que nous tenions le cube dans notre main. Pour le faire tourner, nous sommes obligé d’exercer un mouvement constant, si nous nous arrêtons, le cube s’arrête aussi. De plus, suivant la vitesse de notre geste, le cube tournera plus ou moins vite. Rien de mystérieux à tout cela. Pour l’ordinateur c’est pareil. Il faut qu’il fasse tourner le cube jusqu'à ce qu’on lui dise de stopper. De plus, l’ordinateur doit savoir à quelle vitesse il doit faire tourner le cube. Il faut lui indiquer le changement d’angle qu’il doit effectuer à chaque fois qu'il le fait tourner. Blitz3D propose des solutions à ces 2 problèmes. Reprenons notre première obligation et formulons la ainsi : tant que je ne veux pas arrêter, je continue. Blitz3D attendra que vous lui disiez : While not keydown(1) ;je fais tourner le cube wend c'est-à-dire : tant (while) que l’utilisateur n’appuie pas sur la touche ‘escape’ (not keydown(1)), ;je fais tourner le cube on recommence (wend) l’action à exécuter en boucle. Pourquoi la touche ‘escape’. Chaque touche du clavier est associée à un chiffre qui l’identifie auprès de Blitz3D. Le chiffre 1, ici entre parenthèse après ‘keydown’, correspond à la touche ‘escape’. En changeant ce chiffre, vous changez la touche qui permet de sortir de la boucle ‘while-wend’. Vous l’avez compris, l’instruction keydown(n° de touche) teste si la touche concernée est pressée ou non. Résumons nous : l’action que vous voulez répéter, ici faire tourner le cube, s’exécute au sein d’une boucle, une action qui se répète en boucle si vous préférez. Cette boucle dans le langage de Blitz3D commence avec While not keydown(1) et finit avec wend. Maintenant notre deuxième obligation : indiquer à l’ordinateur à quelle vitesse il doit faire tourner le cube. Imaginons que nous soyons capable de faire tourner le cube que nous tenons dans la main de façon tout à fait régulière. Nous voilà donc capable de faire pivoter ce cube d’un certain nombre de degrés par seconde. Pour blitz c’est plus facile que pour nous. Il suffit de lui indiquer de combien de degrés il doit faire bouger le cube à chaque fois qu’il exécute la boucle while- wend. Nous y voilà, je vous ai dit que les valeurs de rotateentity sont des valeurs absolues, c'est-à-dire que Blitz3D place le cube à la valeur indiquée et ne le bouge plus s’il reçoit encore la même valeur. Ecrire la boucle suivante n’aurait donc aucun effet : While not keydown(1) Rotateentity cube,45,0,0 wend puisqu’une fois le cube tourné de 45 degrés il ne bougerait plus. Il faut donc que la valeur de rotation change en permanence, à chaque fois que Blitz rencontre l’instruction rotateentity. Comment faire ? Notre sauveuse s’appelle ‘variable’. Comme son nom l’indique, une variable ne contient pas toujours la même valeur, on peut la changer tant qu’on veut. Ici, la valeur que l’on veut modifier est l’angle de rotation du cube. Créons donc une valeur nommée ‘angle’ et donnons lui une première valeur : angle=1 Maintenant, Blitz3D sait que la variable ‘angle’ vaut 1. Mais comment changer sa valeur, par exemple lui rajouter 1 ? comme ça : Angle=angle+1 C’est clair… En plaçant cette dernière ligne dans la boucle while-wend, la variable angle sera incrémentée de 1 à chaque fois que Blitz exécutera celle-ci. Voyons le résultat de nos pérégrinations : ; -----Préparation de la scène. Graphics3D 800,600 camera=CreateCamera() lumiere=CreateLight() cube=CreateCube() PositionEntity cube,0,0,5 ; angle=1; donnons 1 pour première valeur à la variable 'angle' ; ----boucle principale While Not KeyDown(1) ; tant que la touche 'escape' n'est pas pressée : RotateEntity cube,angle,0,0 angle=angle+1 ; augmentons de 1 la variable 'angle' RenderWorld Flip ; n'oubliez pas cette commande, elle permet de rendre le mouvement. Wend ; lorsque la touche 'escape' est pressée, on continue ;----sortie de la boucle principale End J’ai supprimé les commentaires des lignes qui nous sont familières. J’ai de plus séparé la préparation de la scène (création de la caméra,…) de la boucle par des commentaires. Cela rend le code plus lisible. J’ai aussi tabulé le code qui se trouve dans la boucle ce qui permet d’un coup d’œil de situer son début (while) et sa fin (wend). Rien d’obligatoire dans tout cela, c’est seulement du confort. Une commande (flip) a été rajoutée sans explication de ma part. Elle permet d’afficher le mouvement des entités (le cube est une entité) dans notre scène. J’y reviendrai ultérieurement. N’oubliez pas de la mettre sinon point de rotation ! Pour finir cette prise de contact nous allons changer l’apparence de notre cube. Pour ce faire nous allons charger une image se trouvant dans le disque dur et l’appliquer à notre cube. Les 6 faces du cube seront uploads/Geographie/ le-doliprane-de-printemps-bleu.pdf

  • 14
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager