Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Discussions


Index du Forum » Discussions » Question sur le raycasting
Mactul Hors ligne Membre Points: 699 Défis: 0 Message

Question sur le raycasting

Posté le 25/03/2019 19:45

Hello, Merci à tous ceux qui ont répondus à mon précédent topic: Test perspectives 3D besoin d'un avis
Comme le sujet à sérieusement dévié sur le raycasting, voici un topic dédié spécialement

Voilà postez touts les liens sur le sujet que vous trouvez et posez vos questions

lien de Disperseur: https://www.planet-casio.com/Fr/forums/topic14655-1-Les_espaces_3D_(coder).html ?
lien de Lightmare: http://projet-moteur-3d.e-monsite.com/pages/raycasting/raycasting.html
lien de Kikoodx: https://lodev.org/cgtutor/raycasting.html
lien de Disperseur: https://guy-grave.developpez.com/tutoriels/jeux/doom-wolfenstein-raycasting/#
lien de Kikoodx: https://en.m.wikipedia.org/wiki/Digital_differential_analyzer_(graphics_algorithm)

projet de Disperseur: https://www.planet-casio.com/files/forums/RCMOT001-164244.zip
projet C de Disperseur (à voir absolument): https://www.planet-casio.com/files/forums/RCMOT004-164576.g1a
projet C-Basic de Lightmare: https://www.planet-casio.com/files/forums/RAYCAST2-164505.g3m

algorithme DDA de Lightmare: https://www.planet-casio.com/files/forums/DDA-164671.g1m
Je posterais ici tout vos liens


Précédente 1, 2, 3, 4, 5, 6, 7 Suivante
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

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
Mactul Hors ligne Membre Points: 699 Défis: 0 Message

Citer : Posté le 03/04/2019 14:45 | #


@Disperseur: MILLES Excuses pour n'avoir pas put te donner de retour
Comme je te l'avais précédemment dit, je n'ai pas de temps en ce moment
C'est incroyable ce que vous avez put faire (je me sens vraiment à la traine )
Mes programmes
Cliquer pour enrouler

Venez me rejoindre sur mon nouveau serveur Discord dédié a la programmation sur toutes les plateformes
https://discord.gg/bzfymHQ

Venez vous instruire, dans ce magnifique cours sur les Intelligences Artificielles que j'ai créé:
http://reseaux-neurones-a--z.ml/
Faites apprendre des choses à une machine, faites reconnaître à un ordi des images...
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 03/04/2019 16:12 | #


Ne t'inquiète pas pour le temps.. on n'as pas tous la même vie . Pour le programme je ne sait pas si il serait bien de créer une page programme juste pour lui ...
Mactul Hors ligne Membre Points: 699 Défis: 0 Message

Citer : Posté le 03/04/2019 16:25 | #


Si carrément! (zut j'ai oublié de l'ajouter )
Mes programmes
Cliquer pour enrouler

Venez me rejoindre sur mon nouveau serveur Discord dédié a la programmation sur toutes les plateformes
https://discord.gg/bzfymHQ

Venez vous instruire, dans ce magnifique cours sur les Intelligences Artificielles que j'ai créé:
http://reseaux-neurones-a--z.ml/
Faites apprendre des choses à une machine, faites reconnaître à un ordi des images...
Lightmare Hors ligne Membre de CreativeCalc Points: 690 Défis: 0 Message

Citer : Posté le 03/04/2019 17:18 | #


@Disperseur : j'ai remarqué que mon programme ne corrigeait pas l'effet "fish eye" , pourrais tu m'expliquer comment tu as fait pour l'enlever ?


Je pense poster la version graph 90 bientôt ( après un coup de balai dans le code ).
Je ne garantis pas l'adaptation en add-in pour cg50 du programme...
"Quand je dis à la cour : "Sautez ! ", tout le monde me demande "jusqu'où ?" "
Dijkstra - The Witcher
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 03/04/2019 17:22 | #


@Lightmare : Pour le fish-eye, en effet il n'y en as pas... Je n'ais pas d'explication à te donner je pense que ça vient du fait que la résolution est nulle
Est ce que ta version sur g90 utilise le même procédé que mon programme ?
Lightmare Hors ligne Membre de CreativeCalc Points: 690 Défis: 0 Message

Citer : Posté le 03/04/2019 17:24 | #


@Disperseur : oui, je me suis basé sur la première version du tien pour la boucle gérant le lancer de rayons, et j'utilise une boucle While pour détecter périodiquement si un mur est présent
"Quand je dis à la cour : "Sautez ! ", tout le monde me demande "jusqu'où ?" "
Dijkstra - The Witcher
Lightmare Hors ligne Membre de CreativeCalc Points: 690 Défis: 0 Message

Citer : Posté le 03/04/2019 17:38 | # | Fichier joint


A vrai dire, le programme est assez petit, et j'ai pu le nettoyer un peu, donc je le poste

Pour l'utiliser, installez la version graph 90 de C.Basic !
"Quand je dis à la cour : "Sautez ! ", tout le monde me demande "jusqu'où ?" "
Dijkstra - The Witcher
Mactul Hors ligne Membre Points: 699 Défis: 0 Message

Citer : Posté le 03/04/2019 18:04 | #


@Lightmare:
Je n'est pas put tester ton programme car je n'ai pas de G90
Veux tu que je le mette là haut?

@Disperseur:
J'ai une idée pour ton prog C
Tu as remarqué qu'il clignote pas mal car tu efface l'écran, ensuite tu dessine dans la vram et ensuite tu envoie la vram au DD
si tu dessine dans la vram, puis que tu efface l'écran pour enfin envoyer la vram au DD, ce sera bien plus joli
Mes programmes
Cliquer pour enrouler

Venez me rejoindre sur mon nouveau serveur Discord dédié a la programmation sur toutes les plateformes
https://discord.gg/bzfymHQ

Venez vous instruire, dans ce magnifique cours sur les Intelligences Artificielles que j'ai créé:
http://reseaux-neurones-a--z.ml/
Faites apprendre des choses à une machine, faites reconnaître à un ordi des images...
Lightmare Hors ligne Membre de CreativeCalc Points: 690 Défis: 0 Message

Citer : Posté le 03/04/2019 18:09 | #


@Mactuel : je veux bien que tu l'ajoutes, merci !
"Quand je dis à la cour : "Sautez ! ", tout le monde me demande "jusqu'où ?" "
Dijkstra - The Witcher
Mactul Hors ligne Membre Points: 699 Défis: 0 Message

Citer : Posté le 03/04/2019 18:11 | #


Fait
Mes programmes
Cliquer pour enrouler

Venez me rejoindre sur mon nouveau serveur Discord dédié a la programmation sur toutes les plateformes
https://discord.gg/bzfymHQ

Venez vous instruire, dans ce magnifique cours sur les Intelligences Artificielles que j'ai créé:
http://reseaux-neurones-a--z.ml/
Faites apprendre des choses à une machine, faites reconnaître à un ordi des images...
Shadow15510 Hors ligne Administrateur Points: 5504 Défis: 18 Message

Citer : Posté le 03/04/2019 18:34 | #


Pas besoin d'effacer l'écran : La vram gère les pixels blancs comme des pixels opaques
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Mactul Hors ligne Membre Points: 699 Défis: 0 Message

Citer : Posté le 03/04/2019 19:25 | #


Je ne sais pas vraiment comment marche le projet de Disperseur, mais je suis presque sûr qu'il efface l'écran avant de dessiner dans la vram (sinon on n'aurait pas ce clignotement )
Mes programmes
Cliquer pour enrouler

Venez me rejoindre sur mon nouveau serveur Discord dédié a la programmation sur toutes les plateformes
https://discord.gg/bzfymHQ

Venez vous instruire, dans ce magnifique cours sur les Intelligences Artificielles que j'ai créé:
http://reseaux-neurones-a--z.ml/
Faites apprendre des choses à une machine, faites reconnaître à un ordi des images...
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 03/04/2019 20:27 | #


Ah oui... j'ais fait une maj juste après avoir posté cette version ( ) qui enlève le clignotement (Je déplace le (clean vram). Demain je vous la mets désolé
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 05/04/2019 17:30 | # | Fichier joint


Voilà donc la version sans cet affreux clignotement (SH4)

PS: Je cherche du côté de l’algorithme de Bresenham mais je rame un peut donc si quelqu'un qui suit ce topic pouvait se pencher sur le problème ce serait sympa
Mactul Hors ligne Membre Points: 699 Défis: 0 Message

Citer : Posté le 05/04/2019 17:31 | #


Ahaa!
Je télécharge...

Ajouté le 05/04/2019 à 17:38 :
J'ai testé, c'est Mille millions de fois mieux, bravo Disperseur

Edit: je remlace l'ancien fichier
Mes programmes
Cliquer pour enrouler

Venez me rejoindre sur mon nouveau serveur Discord dédié a la programmation sur toutes les plateformes
https://discord.gg/bzfymHQ

Venez vous instruire, dans ce magnifique cours sur les Intelligences Artificielles que j'ai créé:
http://reseaux-neurones-a--z.ml/
Faites apprendre des choses à une machine, faites reconnaître à un ordi des images...
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 05/04/2019 17:41 | #


Quand même pas, tu exagère pas un peut là ..
Merci de le mettre en entête.

PS: Peut être peut-tu te renseigner sur une manière de créer un programme faisant fonctionner l'algorithme de Bresenham ?
Lephenixnoir Hors ligne Administrateur Points: 24700 Défis: 170 Message

Citer : Posté le 05/04/2019 21:21 | #


La fonction ML_line() utilise cet algorithme.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Alexot Hors ligne Membre Points: 539 Défis: 18 Message

Citer : Posté le 06/04/2019 01:40 | #


Pour les textures, je ne pense pas que connaître l'orientation du mur par rapport au joueur soit nécessaire. Voici la méthode que j'utiliserais :
Quand on détecte que le rayon arrive dans un mur, on stocke ses coordonnées à virgules, on a ainsi un segment [AB] avec A = la position de la caméra et B = le point dans le mur.
On peut ensuite déterminer les coordonnées des 4 sommets CDEF du mur (qui est un carré de largeur 1), ces coordonnées sont juste la coordonnée de la case de la matrice pour un des sommet, ces mêmes coordonnées +1 en x pour un autre, +1 en y pour un autre, et +1 en x et en y pour le dernier. On a maintenant les segments [CD], [DE], [EF] et [FC].
Il faut maintenant calculer l'intersection de [AB] avec chacun de ces segments (normalement, un seul des segments du carré ne croise [AB])
Puis la position en abscisse sur le segment (dans le cas d'un segment horizontal) correspond à la position en abscisse dans la texture.
Exemple :
[AB] possède un point d'intersection I avec [EF]
On a E(5;4) F(6;4)
Et I(5.2;4)
On repère que [EF] est horizontal, on prend donc la position en abscisse de I par rapport à E : 5.2-5 = 0.2 (ce résultat est toujours compris entre 0 et 1)
Imaginons que notre texture fasse 6 pixels de large, on multiplie 0.2 par 6 : 0.2×6 = 1.2, on arrondit : 1, le pixel à afficher est donc le pixel n°1 de la texture(sachant que le pixel tout à gauche est le n°0)

La seule difficulté restante est de calculer l'intersection entre deux segments, ce qui ne devrait pas être trop dur.

Bon euh je sais pas si c'est très clair... il est peut être un peu tard pour se lancer dans ce genre d'explications
En tout cas n'hésite pas à demander des précisions.

Cliquez pour découvrir
Cliquez pour recouvrir
2b 5b 2d 2d 2d 2d 2d 3e 2b 2b 2b 3c 5d 3e 2b 2e 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2e 2e 2d 2d 2d 2d 2e 2b 2b 2b 2e 2b 5b 2d 2d 3e 2b 3c 5d 3e 2e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2e 2e 2b 5b 2d 2d 3e 2b 2b 2b 2b 2b 3c 5d 3e 2b 2e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2e 2b 2b 2b 2b 2b 2b 2e 2d 2e 2b 2e 2d 5b 2b 2b 3e 2d 2d 2d 3c 5d 3e 2e 2b 2b 2b 5b 2d 3e 2b 2b 3c 5d 3e 2e 2b 2b 2b 2e 5b 2d 3e 2b 2b 2b 3c 5d 3e 2e 5b 2d 2d 2d 3e 2b 3c 5d 3e 2d 2e 2d 5b 2d 3e 2b 2b 2b 2b 2b 2b 3c 5d 3e 2d 2e 2d 5b 2d 2d 3e 2b 2b 2b 3c 5d 3e 2d 2e 2b 5b 2b 2b 3e 2d 2d 2d 3c 5d 3e 2e 5b 2d 2d 2d 3e 2b 2b 3c 5d 3e 2d 2e 2d 5b 2d 2d 3e 2b 3c 5d 3e 2d 2d 2e 2b 5b 2d 2d 3e 2b 2b 2b 3c 5d 3e 2e 2b 2b 2b 5b 2d 3e 2b 2b 2b 2b 3c 5d 3e 2d 2e 3e 2b 5b 2d 2d 2d 3e 2b 2b 3c 5d 3e 2b 2b 2e 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2e 5b 2d 3e 2b 2b 2b 2b 2b 2b 3c 5d 3e 2d 2e
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 06/04/2019 08:01 | #


Merci pour ces précisions Alexot. Un des points qui n'est pas clair c'est la raison pour laquelle tu calcules les segments du carré ?
Alexot Hors ligne Membre Points: 539 Défis: 18 Message

Citer : Posté le 06/04/2019 09:46 | #


On calcule les segments du carré car l'un d'eux a une intersection avec [AB], et on veut connaître ce point d'intersection. On doit donc calculer l'intersection de [AB] avec chacun de ces segments. Et pour calculer l'intersection entre deux segments, on a besoin de connaître les coordonnées des points qui les délimitent.
Cliquez pour découvrir
Cliquez pour recouvrir
2b 5b 2d 2d 2d 2d 2d 3e 2b 2b 2b 3c 5d 3e 2b 2e 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2e 2e 2d 2d 2d 2d 2e 2b 2b 2b 2e 2b 5b 2d 2d 3e 2b 3c 5d 3e 2e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2e 2e 2b 5b 2d 2d 3e 2b 2b 2b 2b 2b 3c 5d 3e 2b 2e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2e 2b 2b 2b 2b 2b 2b 2e 2d 2e 2b 2e 2d 5b 2b 2b 3e 2d 2d 2d 3c 5d 3e 2e 2b 2b 2b 5b 2d 3e 2b 2b 3c 5d 3e 2e 2b 2b 2b 2e 5b 2d 3e 2b 2b 2b 3c 5d 3e 2e 5b 2d 2d 2d 3e 2b 3c 5d 3e 2d 2e 2d 5b 2d 3e 2b 2b 2b 2b 2b 2b 3c 5d 3e 2d 2e 2d 5b 2d 2d 3e 2b 2b 2b 3c 5d 3e 2d 2e 2b 5b 2b 2b 3e 2d 2d 2d 3c 5d 3e 2e 5b 2d 2d 2d 3e 2b 2b 3c 5d 3e 2d 2e 2d 5b 2d 2d 3e 2b 3c 5d 3e 2d 2d 2e 2b 5b 2d 2d 3e 2b 2b 2b 3c 5d 3e 2e 2b 2b 2b 5b 2d 3e 2b 2b 2b 2b 3c 5d 3e 2d 2e 3e 2b 5b 2d 2d 2d 3e 2b 2b 3c 5d 3e 2b 2b 2e 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2e 5b 2d 3e 2b 2b 2b 2b 2b 2b 3c 5d 3e 2d 2e
Précédente 1, 2, 3, 4, 5, 6, 7 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 52 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