Maintenant que nous avons parlé des concepts communs à tous les langages passons à la pratique
Nous allons choisir le langage AS3 pour sa rapidité de calcul.
Vous pouvez bien sur tenter l’aventure en AS2, les formules restent les mêmes.
Cependant le résultat ne sera sans doute pas aussi bon sans certaines optimisations.
On supposera que vous avez le niveau de connaissances nécessaires pour ne pas avoir besoin d’explications sur le fonctionnement basique d’un programme (variables, fonctions, boucles, tableaux, syntaxe et écouteurs sont les bases minimum à connaître). On supposera également que vous avez lu attentivement la partie théorique avant de vous lancer, si ce n’est pas le cas faites-le car nous ne détaillerons plus ce qui a déjà été dit.
Le but de l'exercice est de mettre en pratique les conseils donnés par F.Permadi au travers de son tutorial.
Le choix du moteur proposé par Lode Vandevenne se porte sur l'utilisation des vecteurs et non d'angles.
Une notion qui, bien que facultative, est très importante à comprendre lorsque l'on cherche à optimiser un peu son programme.
Une des particularités du moteur C++ proposé par Lode Vandevenne et dont est issu cet exercice, c’est de préférer travailler avec des vecteurs et non des angles dans l’espace Euclidien.
Lode nous dit la chose suivante :
|
« Les Raycasters [NTD : moteurs de Ray Casting] travaillent en général avec des angles pour représenter la direction vers laquelle la caméra regarde.
Vers laquelle les rayons sont projetés, et pour calculer le FOV à l’aide d’un angle supplémentaire. Je trouve qu’il est plus simple de travailler avec des vecteurs lorsque cela est possible. La position de la caméra est toujours la base d’un vecteur (qui possède des coordonnées posX et posY). La direction du vecteur est déterminée par deux nouvelles valeurs (dirX et dirY). Un vecteur de direction peut donc être représenté de la sorte :
Si l’on trace une ligne dans la direction où la caméra est tournée et à partir de sa position.
Cette méthode nous permet d’introduire un nouveau vecteur, celui du plan de la caméra.
Pour faire effectuer une rotation à un vecteur dans un plan on le multiplie par la rotation à effectuer.
[ cos(a) -sin(a) ]
|
Etant donné que nous (je) sommes là pour apprendre, nous allons nous efforcer de travailler de cette manière.
Même si pour moi c’est un exercice supplémentaire en soit car j’ai plutôt l’habitude de travailler avec des angles.
Outre l'excellent moteur (et tutotrial) de N+ gracieusement mis à disposition par l'équipes de “Metanet Software” et que je vous recommande d'étudier, je vous conseille également de jeter un œil à la traduction de Nicolas Barradeau alias Nicoptère du travail de Tonypa à propos des vecteurs sur Flash avant de commencer cet exercice.
page suivante > Raycaster simple
Les auteurs ont besoin de vos retours! Pour discuter de cet article, faire des remarques, poser des questions, ou en remercier l'auteur, répondez à cette discussion du forum.