# Applications > Dveloppement 2D, 3D et Jeux > Moteurs 3D >  Raytracing et bump mapping

## ydethe

Bonjour,

Ca fait une journe que je cherche sur le net comment utiliser une texture de bump-mapping.
Je connais la thorie de cette technique, mais pas la pratique: j'ai un point  la surface d'une sphre, et son intensit calcule avec l'algorithme de Phong. Ensuite, je lis la valeur de bump qui lui est associe, et qu'est-ce que j'en fait?
Comment je modifie l'intensit? (Mon but tant de comprendre comment marche un moteur de raytracing, j'aimerais ne pas faire appel  une libraire)...

Merci d'avance pour vos questions.

----------


## LeGreg

Tout dpend quel genre de bump mapping tu veux faire.

le bumpmapping le plus simple va affecter les normales pour simuler une gomtrie plus riche que ce qui existe (normal mapping). Quand tu fais ton calcul d'clairage (phong) tu as besoin du vecteur normal  la surface. Et bien tu imagines que ta normale est perturbe avec la valeur que tu as lu dans ta texture de normales. Si tu n'as pas de carte de normales mais une carte d'lvations  la place c'est un peu plus compliqu, parce qu'il faut lire le gradient de l'lvation dans plusieurs directions afin d'en dduire la normale.

J'avais dcrit un exemple de bumpmapping  partir d'une texture procdurale de bruit dans mon tutorial de raytracer :
Raytracer en C++, bump mapping

Bien videmment ce type de bump mapping ne cre pas de dtails gomtrique supplmentaire et s'il simule l'clairage de creux et de bosses, il n'y a pas d'occlusion correcte ni de parallaxe lis  une surface non plate (et la silhouette n'est pas modifie non plus).

Pour faire mieux, il faut donc faire du displacement mapping. Virtuel ou gomtrique, dans le cadre du raytracing c'est parfois du pareil au mme. Le calcul d'intersection devient un peu plus compliqu puisqu'il faut faire un parcours sur la texture pour trouver le vrai point d'intersection et avoir une vraie occlusion (certains utilisent des pas fixes, ou des structures d'acclrations.. sans rentrer dans le dtail). Une autre approche consiste  gnrer des polygones/primitives intermdiaires et faire les calculs d'intersection sur ces polygones aprs leur dplacement (ce qui peut paraitre un peu plus lourd mais parfois peut-etre accelr plus facilement, cf l'algorithme de rendu REYES utilis par Pixar/Renderman).

LeGreg

----------


## smashy

En parlant de parallax mapping, je crois qu on complique un peu le sujet d origine. Par ailleurs effectivement, le parallax mapping peut etre visuellement saisissant, mais pour le cas d une surface faiblement perturbee, la difference avec du bump-mapping normal n est pas aussi evidente que ca.

Un bon endroit, pour commencer des recherches est, si tu es sous windows les SDK de ATI ou NVIDIA.

Personnellement je te conseille fortement de voir cote RenderMonkey (ATI) qui permet de coder tres simplement des shaders sans te soucier du code C derriere (note quand tu aurs besoin des tangeant et binormale a la surface, il faut faire une petite recherche sur le net, car il s agit d attributs un peu a part ...)

----------


## ydethe

Merci pour vos rponses!!

Mais n'ayant pas de textures de normal mapping sous la main pour ce que je veux (la Terre), je ne peux pas vraiment appliquer le normal mapping...

Je ne vois pas comment je peux utiliser la texture de bump mapping, et dans le tutoriel de LeGreg, il n'est dcrit que l'utilisation de normal mapping (technique dont je me servirai ds que je le pourrai,  Google de jouer  ::P:   )

----------


## Laurent Gomila

Il ya des utilitaires pour gnrer une normal map  partir d'une height map. Par exemple un plugin nVidia pour Photoshop, si mes souvenirs sont bons.

----------


## ydethe

Voila le plugin de conversion heigth map -> normal map pour The Gimp: http://nifelheim.dyndns.org/~cocidius/normalmap/
Et pour ceux qui sont sous Ubuntu: http://forum.ubuntu-fr.org/viewtopic.php?id=93303

----------

