@Comtois:
Oui il existe des foncions de picking sur les Entity. Dans le Sample 'MD2.pb' tu a un exemple, avec les ligne suivantes:
Code : Tout sélectionner
If MouseButton(#PB_MouseButton_Right)
*mesh = DM_CameraPick(*camera, MouseX(), MouseY())
If *mesh<> Null
DM_TranslateEntity(*mesh, 0.0, 10.0, 0.0)
EndIf
EndIf
C'est tout simple. Quelques autres instructions sont les suivantes:
DM_PickedEntity.l() : retourne la dernière Entity Pickée
DM_PickedTriangle.l(): retourne le triangle sur l'Entity Pickée
DM_PickedDistance:f(): retourne la distance calculé lors du dernier picking sur l'Entity trouvée.
DM_LinePick.l(posx.f, posy.f, posz.f, distx.f, disty.f, distz.f):
Permet de faire un test de Picking sur les Entity, passant par une ligne définit par l'utilisateur
, pos étant le point de départ, dist étant les coordonnée relatives du point d'arrivé. Retourne l'Entity
trouvé la plus proche. (a débugguer)
Dans le cas de DM_LinePick(), attention, car c'est le Mesh brut qui est testé
donc sur des Entity asser lourdes, cela peut-etre asser long... Il y a des fonction
dans le moteur physique qui sont plus rapide et que je peux intégrer asser rapidement je
pense.
Sinon, très très sympa ton pgm en signature, j'espère que tu arriveras a un résultat similaire assez
rapidement avec DM3D. PAr contre je me rends compte qu'il n'y a pas de donction de dessin de ligne 3D,
je vais voir ce que je peux faire...
@djes: Qu'entends tu par tester les lignes ?. Pour gérer les triangles, je ne vois pas trop ce que tu souhaite.
Pour faire directement du VertexBuffer (primitives par exemple) , tu a accès directemement aux fonctions Direct3D
au sein du code PB. Sinon, tout les mesh crées dans DM3D sont tous stockés dans des VertexBuffer, et si possible
directement dans la mémoire de la carte vidéo. Peux-tu faire un parallèle avec des fonction Ogre sous PB ?