Link Le 18/06/2003 à 11:09 La différence: Je peux (surement) me tromper, mais il me semble que le Raytracing agit pixel par pixel alors que le raycasting agit colonne par colonne...
Mais je n'en suis pas sur du tout...
J'ai lu dans un livre un tuto sur le raycasting mais je n'ai pas ce livre chez moi... désolé!

Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.
Personne n'a dit que ct nul le raycasting, mais il faut admettre que ce n'est pas de la 3D, c'est tres souvent KK qui balance le moteur de TN alors qu'une personne parle de 3D ...
Mais le raycasting est vraiment tres bien pour des petites plateformes
nan, ce qui est nul c de dire que c de la 3D ....
Vark Le 18/06/2003 à 13:49 il n'empêche que le raycasting de la tict n'est pas fantastique
*** Ne sous-estimez pas la puissance de la Marmotte ***
©
Marmotte Team : LaMarmotte, sBibi, Vark & sabrina
bah. .; il tourne bien !
on peut pasdire le contraire
Pen^2 Le 18/06/2003 à 13:57 certe
enfin il est qd meme un peu gros
Vark Le 18/06/2003 à 13:58 et il remplit un peu pas tout l'écran
*** Ne sous-estimez pas la puissance de la Marmotte ***
©
Marmotte Team : LaMarmotte, sBibi, Vark & sabrina
oui, mais il peut pas faire tout l'écran
ca aurait été pire s'il n'avait pas utilisé une fenetre constante et de 96x96 je crois
Vark Le 18/06/2003 à 14:51 je vois ps pkoi, il ne fait pas partie de la tict et il n'a pas programmé une ligne de code du fat engine
*** Ne sous-estimez pas la puissance de la Marmotte ***
©
Marmotte Team : LaMarmotte, sBibi, Vark & sabrina
Bon, je m'ennuie, donc je t'explique ici les principes de base du raycasting...
Donc, bien entendu, l'idée est de "lancer" un rayon dans un monde jusqu'à ce qu'il rencontre un mur, que l'on affiche.
En fait, le monde est un simple tableau à deux dimensions.
Le contenu des cellules indiquent leur état : si c'est un mur on met un 1 et si c'est du vide, on mettra un 0 par exemple...
Il faut donc lancer le rayon, trouver les coordonnées de la cellule qu'il croise et regarder si cette cellule correspond à un mur ou non.
Le principe pour avoir une bonne précision, est de définir qu'une cellule du tableau fait par exemple 32 unités ou 64 de côté. C'est-à-dire que notre rayon, pour qu'il passe d'une ligne à l'autre, il faudra lui ajouter 32 (ou 64) à sa coordonnée y.
On appellera les coordonnées d'une cellule, des coordonnées dans le grand repère, et les autres seront celles par rapport au petit repère.
Donc tu connais la position du joueur (elle aussi définie par rapport au petit repère), et la direction de son regard.
Afin d'obtenir un champ de vision suffisemment large, il est intéressant de couvrir 90°, ce qui correspond environ au champ de vision d'un homme.
Donc, il faut lancer une multitude de rayons, allant de l'angle correspondant à la direction du joueur auquel on soustrait 45° jusqu'à ce même angle auquel on ajoute 45° (pour couvrir les 90°).
Ensuite, il faut trouver les petites coordonnées des intersections avec les différentes cellules de la map. Pour cela fais un shéma, tu as un triangle rectangle formé par le rayon, l'horizontale et la verticale. Avec une simple formule de trigonométrie, tu trouves les coordonnées de la première intersection avec les lignes, ainsi que celle avec les colonnes.
Il est important de différencier les lignes des colonnes.
Ensuite, toujours avec une formule trigonométrique, tu trouveras comment faire progresser ton rayon à travers ton monde.
Une fois que tu rencontres un mur (c'est-à-dire qu'en prenant la cellule qui a pour coordonnées les grandes coordonnées correspondant aux petites coordonnées de l'extrémité du rayon), tu dois calculer la distance qui t'en sépare, là encore, une simple formule de trigo te suffira.
Là, tu seras confronté à un autre problème, l'effet oeil de chat, qui donne l'impression que les murs sont arrondis. C'est compliqué à expliquer sans faire de shéma, mais c'est extrêmement simple à comprendre avec un shéma et tu en auras un dans le tuto que je t'ai passé en post #2.