Raycasting

Raycasting
Capture d’écran de Freedoom : reproduction libre de Doom utilisant également le raycasting

Le raycasting est une technique de calcul d'images de synthèse 3D, facilement accélérée matériellement par une carte graphique dédiée.

L'accélération peut se faire en utilisant l'API OpenGL, Glide (tombé en désuétude), ou Direct3D.

Elle a été utilisée avec succès au début des années 1990 dans les jeux vidéo comme Wolfenstein 3D ou Doom. L'implémentation était alors entièrement logicielle et ne faisait pas appel à du matériel spécifique.

Sommaire

Différence entre le raycasting et le raytracing (lancer de rayons)

Certains ouvrages utilisent les deux termes comme des synonymes. Toutefois le raycasting a historiquement une autre définition puisqu'il est intimement lié aux premiers jeux vidéo en 3D. Contrairement au lancer de rayons, le raycasting est nettement plus rapide. Il tire parti de certaines caractéristiques du monde virtuel :

  • les murs sont des plans, en général perpendiculaires par rapport au sol
  • il n'y a pas de primitives complexes ou alors sous la forme d'approximations planaires
  • les mondes virtuels sont de facto plus simples

Les cylindres sont par exemple des approximations avec des faces planes. Le lancer de rayons s'affranchit de ces contraintes puisqu'il se base sur les intersections précises avec des primitives : une sphère est par exemple parfaite en lancer de rayons dans le sens où l'intersection est calculée de manière analytique selon la définition mathématique de la sphère. Ce n'est pas le cas avec le raycasting qui constitue en quelque sorte un sous-ensemble du lancer de rayons et qui va approcher la surface sphérique par des faces planes.

Le lancer de rayons nécessite plus de puissance de calcul mais compense par une qualité d'image incomparable. Le raycasting produit des images plutôt anguleuses avec des effets de bloc désagréables. Autre limitation courante de la technique du raycasting : le champ de vision est parallèle au sol, il n'est pas possible d'avoir un axe de la caméra entièrement libre. Ceci est particulièrement visible dans les premiers jeux vidéo à vue subjective comme Doom où le champ de vision pointe toujours vers l'avant et ne peut pas regarder le plafond ou le sol. Il n'est pas non plus possible d'effectuer une rotation autour de l'axe de la caméra (roll).

Ceci est dû au fait que le raycasting est essentiellement une technique basée sur un espace en 2D et non pas sur une description complète en 3D du monde.

Tombée en désuétude lors de l'apparition des moteurs entièrement en 3d, cette technique a été remise au goût du jour par les technologies portables comme java ou flash.

Optimisation du raycasting

La manière la plus simple de rendre le raycasting est de lancer un rayon par pixel, chaque rayon fait une recherche dans l'espace pour trouver l'intersection avec le mur le plus proche.

On l'accélère avec des optimisations comme :

Recherche binaire récursive

On lance un premier rayon au centre de l'écran, puis récursivement sur les deux moitiés et ainsi de suite. Lorsque deux rayons voisins ont touché le même mur, on arrête la recherche et on rend les tranches intermédiaires avec une interpolation basée sur le z-mapping

Technique intéressante pour des résolutions très faibles et des espaces très découpés, si bien que dans l'arrière plan le nombre de polygones devient plus grand que le nombre de pixels.

Rendu à travers des portails

On ne lance des rayons que sur les points du secteur (polygone) où se trouve la caméra. Puis on récommence récursivement sur les secteurs adjacents avec de nouveaux cônes de vision définis par les rayons lancés sur les points des portails (murs invisibles qui connectent deux secteurs). La recherche s'arrête quand les sous-cônes de vision ne traversent plus aucun portail.

Le cône de vision est ainsi décomposé en une série de sous-cônes qui vont permettre de trier les faces avant leur rendu.

Z ordering pré-rendu

Technique utilisée dans Doom. On ne lance plus que deux rayons pour le frustum clipping des faces. Leur ordre de rendu est précalculé avec un arbre BSP et le clipping entre les faces s'effectue sur un axe à une dimension. La recherche des faces s'arrête quand tous les pixels ont été remplis.

Plus rapide que la précédente, elle présente l'inconvénient de ne fonctionner qu'avec des espaces statiques.

Liens externes


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Raycasting de Wikipédia en français (auteurs)

Игры ⚽ Нужно сделать НИР?

Regardez d'autres dictionnaires:

  • Raycasting — (in englischer Schreibweise meist ray casting) ist ein Begriff aus der Computergrafik. Er bezeichnet Techniken zur schnellen Darstellung (Rendern) einer dreidimensionalen Szene, wird aber inzwischen hauptsächlich im Kontext der… …   Deutsch Wikipedia

  • Raycasting Game Maker — Значимость предмета статьи поставлена под сомнение. Пожалуйста, покажите в статье значимость её предмета, добавив в неё доказательства значимости по частным критериям значимости или, в случае если частные критерии значимости для… …   Википедия

  • Ray Casting — Raycasting (in englischer Schreibweise meist ray casting) ist ein Begriff aus der Computergrafik. Er bezeichnet Techniken zur schnellen Darstellung (Rendern) einer dreidimensionalen Szene, wird aber inzwischen hauptsächlich im Kontext der… …   Deutsch Wikipedia

  • Ray casting — Raycasting (in englischer Schreibweise meist ray casting) ist ein Begriff aus der Computergrafik. Er bezeichnet Techniken zur schnellen Darstellung (Rendern) einer dreidimensionalen Szene, wird aber inzwischen hauptsächlich im Kontext der… …   Deutsch Wikipedia

  • Wii Opera SDK — Infobox Company company name = Wii Opera SDK company company type = Private company slogan = Make Games for the Internet Channel foundation = 2007 industry = Video Games (Open Source) key people =Daniel Gump: Founder Programmer homepage =… …   Wikipedia

  • Ray casting — is the use of ray surface intersection tests to solve a variety of problems in computer graphics. The term was first used in computer graphics in a 1982 paper by Scott Roth to describe a method for rendering CSG models. [Citation last1 = Roth |… …   Wikipedia

  • Computertomographie — 16 Zeilen Multidetektor CT Bedienkonsole eines 16 Zeilen Multidetektor CT …   Deutsch Wikipedia

  • Volumengrafik — Bildliche Veranschaulichung eines Voxelgitters. Jedes Voxel gibt die Lichtdurchlässigkeit an einem Punkt des Objekts an. Schwarz steht für transparent, weiß für opak (lichtundurchlässig). Die Volumengrafik ist ein Fachgebiet der 3D Computergrafik …   Deutsch Wikipedia

  • — Ray casting, рейкастинг, Метод «бросания лучей» (англ. ray casting русск. бросание лучей) один из методов рендеринга в компьютерной графике, при котором сцена строится на основе замеров пересечения лучей с визуализируемой поверхностью. Этот… …   Википедия

  • Ray casting — Изображение черепа, полученное при помощи объёмного рейкастинга (Volume ray casting) …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”