Posté le 25/03/2019 19:45
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 88 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd
Citer : Posté le 30/03/2019 13:44 | #
Si tu modifies le fichier joint dans ton message, le précédent disparaît. Poste un deuxième message avec la capture !
Citer : Posté le 30/03/2019 14:39 | # | Fichier joint
Ah oui excuse. Je fais ça dans 1h
Ajouté le 31/03/2019 à 12:44 :
https://www.planet-casio.com/Fr/forums/topic13135-1-RayCasting_Engine.html
-Planétarium 2
Citer : Posté le 31/03/2019 13:31 | #
Que t'arrive-t-il ? Ce n'est pas le seul moteur de raycasting, et de loin.
Il y a Wolfenstein 3D de Kelly, Deadly World 3D de Nessotrin, et bien d'autres.
Citer : Posté le 01/04/2019 20:20 | #
Bon, après avoir concrétisé le fonctionnement et l'ébauche du moteur de Raycasting en C (bientôt posté), je me trouve face à deux problèmes. Le premier étant le plus gros, c'est à dire la vitesse. Le truc c'est que mon rayon se déplace de case en case dans la matrice contenant la map avec comme origine la position du joueur. Les déplacement étant en fonction de la distance du rayon (r) et de l'angle par rapport à la direction dans laquelle regarde la joueur (θ). Sur chaque case, j'effectue un test pour savoir si il y a un mur (!=0). Or pour afficher les textures (ce qui est il me semble plus rapide vu que l'on ne lance qu'un rayon par morceau de mur. On gagne fortement en vitesse d’exécution) il faut pouvoir calculer l'angle avec lequel le rayon frappe le mur et sur quelle face (verticale ou horizontale). Donc ma question est: est-ce que avec cette technique de lancé de rayon je peut gérer les textures ? Si non, j'aimerais l'avis de quelqu'un qui s'y connais un peu pour m'aiguiller vers la bonne manière de coder ça. Et tant que j'y suis, il me semble avoir compris qu'une fois que l'on connais la distance du mur détecté au joueur et son orientation par rapport au rayon, il faut modifier la texture ("mapping" il me semble ) pour pouvoir reconstituer la/les faces du mur visibles pas le joueur à sa position.
Donc si quelqu'un passe par là et sait comment il faut s'y prendre, je suis preneur
Ajouté le 02/04/2019 à 08:29 :
Ce qu'il me faudrait en fait ce sont des précisions sur la méthode DDA (Differential Digital Analyser)..
-Planétarium 2
Citer : Posté le 02/04/2019 20:14 | # | Fichier joint
Bonjour ! je sais que je n'ai pas beaucoup participé sur ce topic, mais j'ai bien suivi et vous tous m'avez drôlement intéressé au sujet !
J'ai donc, à partir des liens indiqués sur le topic et de la première version du projet de Disperseur, fait mon propre moteur de raycasting pour graph 90 ( qui gère donc une plus haute définition, le ciel, le sol et des murs de différentes couleurs ).
Je pense être bloqué au même point que Disperseur à présent : le DDA...
...Cependant une screenshot :
Dijkstra - The Witcher
Citer : Posté le 02/04/2019 20:15 | #
La classe
Faudrait voir en C.Basic, ça doit être possible de faire un truc rapide est sympa...
Citer : Posté le 02/04/2019 20:18 | #
Mon programme est déjà concu pour tourner sur C.Basic ( pas fou ! ) mais le programme reste lent à cause de la fonction qui vérifie périodiquement la collision entre le rayon et un mur qui peut être considérablement optimisée grâce au... DDA.
Dijkstra - The Witcher
Citer : Posté le 02/04/2019 20:29 | #
C'est ce que vous cherchez ?
https://en.m.wikipedia.org/wiki/Digital_differential_analyzer_(graphics_algorithm)
Citer : Posté le 02/04/2019 20:31 | #
Hey ! merci ! un lien en plus, ca aise beaucoup !
Dijkstra - The Witcher
Citer : Posté le 02/04/2019 21:00 | #
@Lightmare: Est ce que ton programme fonctionne comme le mien ?
Ajouté le 02/04/2019 à 21:03 :
@Kikoodx: Exactement mais je l'ai déjà lu et j'ai du mal à voir comment appliquer ça a mon programme..
-Planétarium 2
Citer : Posté le 02/04/2019 22:11 | #
Cet algorithme de tracé de ligne qui utilise des flottants me paraît moins rapide que l'algorithme de Bresenham. Mais vous ne devriez pas utiliser ce genre d'algorithmes "pas-à-pas" pour tester les collisions !
Citer : Posté le 03/04/2019 07:13 | #
Oui mais je ne vois pas comment faire autrement qu3 de tester à chaque fois si il t as un mur
-Planétarium 2
Citer : Posté le 03/04/2019 07:51 | #
Oups, j'ai dit une connerie ! Je ne réfléchissais pas droit, c'est bien une façon legit de procéder.
En C.Basic ou C/C++ utilisez Bresenham par contre, ce sera quasi-certainement plus rapide.
Citer : Posté le 03/04/2019 08:05 | #
Tu sait programmer Bresenham toi ?
Perso je me renseigne et je teste l'algo seul mais je ne garantis rien
-Planétarium 2
Citer : Posté le 03/04/2019 08:29 | #
Oui c'est pas bien dur. Regarde dans le code de MonochromeLib
Citer : Posté le 03/04/2019 11:20 | #
In order to fill the surface, can use ML_filled_polygon (_FillPolygon in CB) after calculating the vertices?
Overclocking utilitaire Ftune/Ptune2/Ptune3 est également disponible.
Si vous avez des questions ou un rapport de bogue, n'hésitez pas à me le faire savoir.
Citer : Posté le 03/04/2019 11:23 | #
I think the rendering is done column-wise with one ray per column of the screen, so the vertices are not actually calculated. I mean, would it not be more costly to compute the position of the vertices?
Citer : Posté le 03/04/2019 11:41 | #
Oh, sorry, that's right.
Overclocking utilitaire Ftune/Ptune2/Ptune3 est également disponible.
Si vous avez des questions ou un rapport de bogue, n'hésitez pas à me le faire savoir.
Citer : Posté le 03/04/2019 11:54 | # | Fichier joint
Bon, je n'ais pas eu de retour de la part de Mactul et ça fait un moment que j'ai réussit à faire le programme en C, donc je le poste ici. Le rendu est le même qu'avec le programme Basic mais en un peut plus rapide.
@Mactul: Si tu pouvais mettre ce nouveau programme en haut de page stp
Ajouté le 03/04/2019 à 11:59 :
@Lephenixnoir: J'ai regardé le code de la ML mais je ne vois pas trop comment détecter un mur avec cet algo.. et encore moins en trouver l'orientation par rapport au joueur..
PS: Je relis le Wiki je ne vois pas bien comment cet algo fonctionne
-Planétarium 2
Citer : Posté le 03/04/2019 12:05 | #
l'idée c'est que ton rayon trace une ligne dans ta map. Ici tu peux utiliser Brensenham et à chaque fois qu'il y a pixel(), toi tu testes s'il y a un mur aux x,y indiqués. Si oui, tu affiches ce mur. Si non, tu continues l'algorithme
Citer : Posté le 03/04/2019 12:07 | #
Ca ressemble à ce que j'ai fait mais sous forme d'une fonction non ?
Le truc après pour les textures c'est de savoir quelle orientation à le mur par rapport au joueur. Et la je ne vois pas comment obtenir cet angle avec cet algo
-Planétarium 2