• Aucun résultat trouvé

Analyse du mode de pi king

Dans ette partie, nous allons expliquer une méthode utilisée à deux reprises pour obtenir desinformations surl'o ultation desobjets.

L'élaboration de ette méthode peut s'ee tuer suivant deux appro hes possibles. La première appro he est le passage par la méthode du lan é de rayon. Elle onsiste à lan er un rayon depuis un point de vue età analyser les objets traversés par e rayon. La se onde appro he est la méthode du pi king qui onsiste à ré upérer l'ensemble desobjets dessinésà l'é ran.

Laméthodedulan éderayonfon tionneparfaitement,néanmoins,nous ne protons pas de la puissan e des artes graphiques ar haque test est ee tuéparle

CP U

.Le al ulestfortementralentilorsquelas èneprésente unnombre important d'objets.

Undesavantages de etteméthodeestquenouspouvonsgérerdesinter- se tions enprofondeur an d'obtenirdesinformations détaillées. Mais ette méthode né essite une implémentation plutt lourde alors qu'il existe une méthode plus simple. La se onde méthode existe sous le nom de  pi king  etpermetde dépasserles problèmes que nouspouvons ren ontrer dansle lan é de rayon (parexemple : lesdi ulté pour le lan éde rayon de déte - terles surfa es planes perpendi ulaires). Cette se onde méthode a don été hoisipour al uler lepour entaged'o ultation.

OpenGL prévoit deuxmodalitéspourle pi kingselon letyped'informa- tionquel'onsouhaiteré upérer:lemodeGL_SELECT,quipermetdesavoir quel objet ouquelle fa e estvisible, etle mode GL_FEEDBACK, qui per- met d'obtenir toutes les informations disponibles sur la s ène, oordonnées géométriquesdanslerepèreé ran, ouleur, oordonnées textures(u,v)...On peut par exemple en tirer les oordonnées du point liqué à la souris à la surfa e d'un objet. On a tive e mode par glRenderMode(mode) (le mode de tra énormalave a hage orrespondant au mode GL_RENDER).

Dans les deux as il faut fournir un buer où seront sto kées les infor- mationsretournées par legeometri engine,ave selon lemode glSele tBuf- fer(size,bu)ouglFeedba kBuer(size,GL_3D_COLOR_TEXTURE,bu). Ona èdeà e bueraprèsêtre sortidumodepi kingpar l'appelde lamé- thode: nbinfo=glRenderMode(GL_RENDER).

Le mode GL_SELECT

Dans le mode GL_SELECT, on regroupe les primitives qui onstituent une unité logique en insérant des dé larations glPushName(i) entre leurs tra és, e qui revient à donnerun identiant à es unités.Le geometri en-

gine portion dugraphi sengine assurantlestransformationsgéométriques ( hangementsderepère,proje tion...).ins ritdanslebuerl'identiantde touteunitédont aumoins uneprimitive seprojettedanslazone del'é ran, 'estainsiquel'on sait quelobjetest dessinéà l'é ran.

Le mode GL_FEEDBACK

Dans le mode GL_FEEDBACK, haque primitive apparaissant poten- tiellement à l'é ran va générer une entrée dans le buer, onsistant en un identiant du type de primitive, GL_POLYGON_TOKEN pour un poly- gone, suivit du nombre de sommets, puis pour haque sommet, de tous les attributsdemandé,soitpourGL_3D_COLOR_TEXTUREles oordonnées x,y,z dans le repère é ran, la ouleur apparente RGBA, et les oordonnées detextureu,v,s,t(dansle asgénéral,ilya4 oordonnées texture).Comme laphasede lippingredé oupelesfa ettesquisortent del'é ran,dansle as d'unefenêtredequelquespixelsdelargepositionnéesouslasourisonobtient ainsiles oordonnées,l'illumination...,surlelieudelasurfa esituédire te- ment sousla souris. NB:on peutremonter aux oordonnées dansle repère monde via la fon tion gluUnproje t(). (Mais ette fon tion est oûteuse si l'onveutretrouverplusieurspoints, arelleinverselamatri edetransforma- tionà haqueappel. Mieuxvaut alorsfaire soitmême l'inversiondematri e pour appliquer lamême transformation ré iproqueà tousles points.)

Dis ussion sur les deux modes de pi king

Onpeutaussinoter quel'on obtient àl'aidede e modeun des riptifde equi est visible,eten au un asladésignation desobjets ommedans lemode GL_SELECT.

Il reste possible de retrouver ette fon tionnalité en insérant des appels àglPassThrough(f) entrelesprimitives onstituantuneunité,danslemême esprit que glPushName(i). On ré upère alors dans le buer l'identiant de primitive GL_PASS_THROUGH_TOKEN suivi de la valeur f passée en argument, e qui permet de re onnaître l'unité à laquelleappartiennent les entrées du buer. Mais toutes es fon tionnalités sont-elles vraiment utiles pour notre amélioration?

En analysant en détail lemode GL_FEEDBACK, nous observonsqu'il apporte des informations supplémentaires. Ces informations ri hes et om- plexes ne sont pas exploitées par notre agent. Dans le adre de notre re- her he, il serait très intéressant de al uler la forme perçue mais e i de- mandeun al ultropimportant quenousn'avonspas hoisid'implémenter. Les informations de ouleurs et de textures perçus peuvent être une

sour e d'informations pour l'agent. il pourrait les utiliser pour omprendre e qui est perçu dansle hamp visuel deslo uteurs. Bref, es informations permettentune bonne pré isionsurles ouleursquinousestpeu utile.Mais ettepré isionesttronquéeparles hiersdegestionde ouleurs(i ,i m...) quisontparfoismalgéréspar les artesetlesdrivers,on peutajouterà ela les problèmes de ouleurs liées à l'é ran lui même. En bref, ette pré ision devientpeuutilisable etilen vade mêmepourlesinformations detextures. En on lusion,lemode GL_SELECTsembleêtreleplusadaptéànotre re her he etfournit desinformations susantespour notreemploi.