#1 

18-04-2007 10:23:55

Scalpweb
Membres
Date d'inscription:
Messages: 6
IP: 89.88.179.175
Courriel

Bonjour.

J'ai utilisé l'exemple suivant :

http://irrlichtnetcp.sourceforge.net/index.php/Irrlicht_12_:_Terrain

Mais je ne sais pas comment utiliser le Selector.

Je m'explique :

Mon but est de permettre à l'utilisateur de modifier le terrain : par exemple, on applique une texture ou on creuse là où il clique.
J'imagine que pour savoir où l'utilisateur clique, il faut utiliser le Selector, mais je ne sais pas faire...

Voilà, merci,

@+


Hors ligne


#2 

18-04-2007 10:32:11

Aranoth
Membres
Avatar de Aranoth
Date d'inscription:
Messages: 242
IP: 86.221.85.86
Courriel  Site web

Pour plus de détails sur les triangle selector : http://irrlichtnetcp.sourceforge.net/index.php/Irrlicht_07_:_Collision

Mais personnellement, je ne procèderais pas comme ça.
Je lancerais un rayon depuis le centre de la caméra passant par la position de la souris et récupèrerais le point où ce rayon entre en collision avec le terrain.

Ainsi j'aurais plus qu'a convertir cette position 3D en position 2D et je pourrais éditer directement la heightmap.

C'est la méthode du "picking"

Hors ligne


#3 

18-04-2007 13:17:09

Scalpweb
Membres
Date d'inscription:
Messages: 6
IP: 89.88.179.175
Courriel

lol bah oui biensur...

J'ai pas fait math sup moi hein ;-)


Hors ligne


#4 

18-04-2007 13:54:32

DeusXL
Membres
Avatar de DeusXL
Date d'inscription:
Messages: 174
IP: 82.66.209.23
Courriel

Bien alors premièrement il nous faut créer une droite qui représentera ce qui est pointé par la souris.
Pour cela, se servir de SceneManager.SceneCollisionManager.GetRayFromScreenCoordinates
Tu lui passe en paramètre la position de ta souris (retournée via la classe IrrlichtDevice), et la caméra utilisée.

Avec ça tu as ta droite (enfin ta ligne mais dans notre cas on la gèrera comme une droite).
Puis, tu es un utilisateur sérieux d'Irrlicht .NET CP donc tu as utilisé le SVN et téléchargé la version que je viens d'uploader à l'instant même, tu parcours ton terrain (enfin ses triangles plutôt) et pour chaque triangle tu fais Triangle.GetIntersectWithLine(rayon retourné tout à l'heure), s'il te retourne true, c'est que c'est ce triangle qui est sélectionné et là bingo.

Maintenant tu te heurtes sûrement à un problème : le TerrainSceneNode d'Irrlicht est très mauvais, lourd, lent et inmodifiable.
Est-ce la fin du monde ? Nenni, je te conseille d'étudier en détail l'exemple CustomSceneNode du SDK du fameux wrapper, et d'essayer de t'en inspirer pour créer ta propre SceneNode de terrain. Si tu as un peu de courage tu obtiendras un résultat plus rapide, plus efficace et beaucoup plus sympatique qu'à essayer de trifouiller le TerrainSceneNode.


Fanatique d'Irrlicht + Fanatique de Mono + Fanatique de Linux => Créateur d'Irrlicht .NET CP bien sûr !
Version actuelle d'Irrlicht .NET CP : 0.8, Version en test : 0.9.

Hors ligne


#5 

18-04-2007 17:53:57

Scalpweb
Membres
Date d'inscription:
Messages: 6
IP: 89.88.179.175
Courriel

Ok ok ok.

Merci bien.


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
169 invités en ligne
membre en ligne: -
RSS Feed