CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Java] Ray casting

anothercodeds
anothercodeds
Niveau 9
14 avril 2012 à 16:52:21

Bonjour,

je tente actuellement de représenter une petite map en 3d à l'aide de cette technique, le ray casting et je lis pour cela ce tutoriel http://www.permadi.com/tutorial/raycast/. J'ai été jusqu'à "Texture Mapped Walls" mais il y a un problème que je n'arrive pas à résoudre: les coins des cubes...

Voici mon problème: https://image.noelshack.com/fichiers/2012/15/1334414766-Capturedcran2012-04-1416.45.04.png

Je pense que l'algorithme de recherche d'intersections avec un mur passe à travers les coins et ne détecte pas le mur mais je ne vois pas comment regler le problème.

Cet algo est décrit sur cette page http://www.permadi.com/tutorial/raycast/rayc7.html et voici mon code.
http://pastebin.com/vRvVL3XG

J'ai essayé de "rallonger les murs" pour boucher le coin mais ils après ils sont trop longs et sortent dans d'autres endroits. Auriez-vous une solution à me proposer?

:merci: d'avance

godrik
godrik
Niveau 30
14 avril 2012 à 17:01:54

Je ne suis pas un grapheux et le code est assez peu comprehensible et commente. Mais quelquechose me dit que tu as trop de conversion en nombre entier dans ton code et c'est ce qui te fait perdre de la precision.

Un grapheux pour donner un avis plus precis?

godrik
godrik
Niveau 30
14 avril 2012 à 17:18:01

mmm, let's back up.

Si je comprends bien, tu as un monde discret tel que tu peux decouper ton monde sur une grille reguliere et chaque segment de cette grille est un mur ou n'est pas un mur.

La fonction findHp trouve le mur horizontal le plus proche. Pour le trouver, tu as un rayon qui se deplace de (xa,ya) a chaque iteration de ton algorithme, ce qui te donne un point (hp.x, hp.y). Quand ton rayons vient de changer de "case" de ton jeu et que c'est une case qui a un mur horizontal, la condition "while(map[hp.y/64][hp.x/64] == 0)" devient fausse et tu sort de ta boucle.

Si j'ai bien compris le probleme, ce qui t'arrive est que tu passe de la case (8,8) a la case (9,9) sans passer par (8,9) ou par (9,8). Je rajouterais une condition qui detecte les traverse de case diagonale puis qui deciderais par laquelle le rayon passe ( passe t'il par (8,9) ou par (9,8)) et effectuerays le test sur cette case la egalement.

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment