#1 

05-10-2007 10:49:21

khayyam
Membres
Date d'inscription:
Messages: 25
IP: 88.168.68.63
Courriel  Site web

Bien le bonjour,

Mon problème du jour est assez simple, comment obtenir la liste de tous les noeuds situés derrière un rectangle défini en coordonnées écran ?
Sachant que bien sûr la solution doit être légère.

L'idée est de faire du picking, mais en prenant un rectangle au lieu d'un point.

Des idées ? (propres, faisables et robustes)
J'ai bien quelques idées, mais peut-être avez-vous des idées novatrices ....


Hors ligne


#2 

05-10-2007 16:18:43

firnafin
Membres
Avatar de firnafin
Date d'inscription:
Messages: 150
IP: 88.141.137.105
Courriel

Bonjour;
Tout depend de la nature de ton projet:si il y a un terrain ( rts ) ou pas ( jeux dans l'espace par exemple ) du nombre de node ( si c'est de l'ordre de 10 ou 200) mais voila un methode faisable :

         
	irr::core::line3df getLinePick(irr::scene::ICameraSceneNode* camera,irr::gui::ICursorControl* cursor){
		irr::scene::SViewFrustum* VF=camera->getViewFrustum();
		irr::core::vector3df LU=VF->getFarLeftUp();
		irr::core::vector3df Y=VF->getFarLeftDown()-LU;
		irr::core::vector3df X=VF->getFarRightUp()-LU;
		return irr::core::line3df(camera->getPosition(),LU+X*cursor->getRelativePosition().X+Y*cursor->getRelativePosition().Y);
	}

( code fait a la volet ... donc surment pas bien optimisé )
Tu appliques cette fonction au 4 sommets du rectangle de selection et tu recupere une pyramide apres selon ton projet :
  • si il a y un terrain et que les nodes sont dessus tu transfomes cette pyramide en un rectangle ( intersection terrain pyramide ) et tu recuperes les nodes dans celui
  • si il n'y a pas de terrain tu peux rechercher les nodes dans la pyramide directement

Bref utiliser au mieu les specificitées du projet il y plein de methode mais la base et de recuperer "la pyramide de selection"


Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
122 invités en ligne
membre en ligne: -
RSS Feed