sdqsdfmqksjdfsqdf Dans ce premier chapitre, nous entrerons en contact avec Blit
sdqsdfmqksjdfsqdf Dans ce premier chapitre, nous entrerons en contact avec Blitz3D rapidement, sans nous attarder sur le sens profond de toutes les instructions rencontrées. Lors des chapitres suivants, nous reverrons en détail ces instructions. Je vous propose de préparer une scène en trois dimensions, d’y mettre un cube et de le déplacer. Puis nous décorerons notre cube pour qu’il soit agréable à regarder. Après avoir installé Blitz3D, lancez le programme par un double clic sur son icône. Vous devriez voir ceci : Pour créer un projet vide, cliquez sur ‘File’ en haut à gauche et sélectionnez ‘New’. Un projet vide apparaît . Nous sommes prêt. Bon, retournons au début de l’univers… Tout est noir, tout est vide. Il faut le créer cet univers : Graphics3D 800,600 Puis, pour y voir quelque chose, mettons y donc une camera : camera=CreateCamera() Un peu de lumière nous aidera à percevoir les objets : lumiere=CreateLight() 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 uploads/Geographie/ le-desinfectant-du-bonheur.pdf
Documents similaires
-
12
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Sep 21, 2022
- Catégorie Geography / Geogra...
- Langue French
- Taille du fichier 0.0258MB