#1 

11-08-2009 13:24:25

Kit-fisto24
Membres
Date d'inscription:
Messages: 60
IP: 81.251.140.79
Courriel

Bonjours,

Voila ma caméra est "enfermé" dans une pièce. La collision est géré avec la camera et les murs pièce (avec createCollisionResponseAnimator ). Mais je voudrai que quand la caméra arrive à un certain endroit la caméra soit téléporté hors de la salle. Le porblème c'est quand je veux faire "téléporter" la caméra en la mettant hors de la pièce (avec setPosition), la caméra ne dépassepas le mur de la salle car il y a une collision. Donc je me demandais comment on pouvait créer une téléportation de la caméra et qui passe a travers les murs ?


Hors ligne


#2 

11-08-2009 16:30:43

tmyke
Administrateurs
Avatar de tmyke
Date d'inscription:
Messages: 1025
IP: 86.218.254.214
Courriel

Si c'est pour une téléportation, pourquoi ne pas détruire ta camera, et en re-créer une à l'endroit souhaité, ou encore tous simplement la repositionner à l'autre endroit. Ou alors tu passe par une translation amenant ta camera à un autre endroit, mais ce n'est plus de la
téléportation, mais un 'passe-muraille', et c'est un autre problème wink


Force et sagesse...

Hors ligne


#3 

11-08-2009 20:25:02

Kit-fisto24
Membres
Date d'inscription:
Messages: 60
IP: 81.251.140.79
Courriel

Comment peut-on repositionner sans setPosition?


Hors ligne


#4 

11-08-2009 20:27:33

johnplayer
Membres
Avatar de johnplayer
Date d'inscription:
Messages: 431
IP: 83.192.83.242
Courriel

Utilise setWorld() pour lui donner un triangle selector vide et tu le réutilise pour remettre correctement après.


core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

Hors ligne


#5 

12-08-2009 16:12:06

Kit-fisto24
Membres
Date d'inscription:
Messages: 60
IP: 81.251.140.79
Courriel

Le débogeur ne reconnait pas la fonction setWorld().


Hors ligne


#6 

13-08-2009 06:38:35

johnplayer
Membres
Avatar de johnplayer
Date d'inscription:
Messages: 431
IP: 83.192.83.242
Courriel

Ta collision doit etre créée avec ceci avec irr::scene::ISceneNodeAnimatorCollisionResponse au lieu de irr::scene::ISceneNodeAnimator.
Donc tu remplace :

scene::ISceneNodeAnimator* anim =    smgr->createCollisionResponseAnimator(
		selector, camera, core::vector3df(30,50,30),
		core::vector3df(0,-3,0),
		core::vector3df(0,50,0));
		selector->drop();
	camera->addAnimator(anim);
	anim->drop();

Par :
scene::ISceneNodeAnimatorCollisionResponse* anim =    smgr->createCollisionResponseAnimator(
		selector, camera, core::vector3df(30,50,30),
		core::vector3df(0,-3,0),
		core::vector3df(0,50,0));
		selector->drop();
	camera->addAnimator(anim);
	anim->drop();

Tu peux maintenant utiliser la fonction setWorld().


core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

Hors ligne


#7 

13-08-2009 10:07:17

Kit-fisto24
Membres
Date d'inscription:
Messages: 60
IP: 81.251.140.79
Courriel

setWorld() n'est toujours pas reconnu par le débogeur. sad

Mais tmyke avait dit qu'on pouvait repositionner la caméra sans utiliser setPosition. Comment faire?


Hors ligne


#8 

13-08-2009 16:34:50

tmyke
Administrateurs
Avatar de tmyke
Date d'inscription:
Messages: 1025
IP: 86.218.180.246
Courriel

Je parlais surtout de libérer les ressources de ta camera pour en recréer une autre à un endroit choisi.
C'est pas très élégant, mais cela peut être une solution en attendant mieux.


Force et sagesse...

Hors ligne


#9 

13-08-2009 19:29:02

johnplayer
Membres
Avatar de johnplayer
Date d'inscription:
Messages: 431
IP: 83.192.86.83
Courriel

Quel version d'irrlicht as-tu? car j'ai regardé dans la doc d'irrlicht 1.5 et 1.4.2 et elle apparait.
Sinon le IScenNodeAnimatorCollisionResponse recoit les events lorsque qu'il est attaché à une camera active. Donc peut etre qu'en basculant sur une autre camera avant le setPosition() puis en la réactivant tu pourrais inhiber la detection de collision durant le transport.


core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

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