Aller au contenu


Rotation orbitale probléme


  • Vous ne pouvez pas répondre à ce sujet
3 réponses à ce sujet

#1 mathbell

    Ceinture Jaune

  • Members
  • 17 messages

Posté 20 août 2009 - 08:41

Bonjour a tous,

j'ai réalisé une interface utilisateur qui permet de faire translater, zoomer, et pivoter un objet 3D.
Jusqu'à la tout fonctionne bien.
En revanche je rencontre un probléme lorsque je fait pivoter ma camera en vertical puis en horizontal, les axes changent:

Je m'explique!

en fait je désire que mon objet soit toujours a plat comme pour une carte en 3D.
Si je suis en vu de dessus pas de problème, la rotation que j'effectue sur mon bouton "rotation"

sprite(1).camera.rotate(0,0,-0.5)

Fonctionne bien, Mais lorsque je change l'axe vertical, la rotation fait pivoter l'objet sur l'axe Z se qui fait basculer l'objet.
Normal vous me direz.

Mais c'est là tout le problème. j'aimerais que lorsque j'incline la camera sur l'axe vertical et que ensuite je fasse un rotation horizontale la camera agisse comme une orbite.
Comme dans cette exemple

http://director.mediabox.fr/index.php?act=...ew_post&f=6

Merci pour ce forum riche en info

Mathieu


#2 mathbell

    Ceinture Jaune

  • Members
  • 17 messages

Posté 20 août 2009 - 08:43

désolé !
Voici le bon lieu

http://v3d.pagesjaunes.fr/montpellier/


#3 glurp

    Modérateur

  • Moderateur
  • 1 249 messages

Posté 20 août 2009 - 10:09

Hello mathbell,

Je pense que pour un tel comportement de camera la solution la plus simple mathématiquement parlant est la suivante ;

- Redresser l'angle de la camera
- Avant la caméra au dessus du point visé
- Effectuer la rotation en Z
- Reculer la camera de la même distance qu'elle a été avancé
- Réappliquer l'angle de la camera

J'ai utilisé cette méthode pour un projet 3D et ça fonctionnait sans problème.

#4 mathbell

    Ceinture Jaune

  • Members
  • 17 messages

Posté 20 août 2009 - 10:15

Re-salut

J'ai trouvé , en attendanr des news de votre part ce scipt:

model.rotate(vector(0,0,0), vector(0,0,1), 20, sprite(1).camera)

cela permet de faire décrire une rotation parallèle à la caméra autour du centre de l’écran à l’objet

donc avec mon bouton cela donnerai :

property pClick

on mouseenter(me)
-- curseur de souris entre sur le bouton
pClick = 0
end

on mousedown(me)
if(pClick) then return
sprite(1).rotate(vector(0,0,0), vector(0,0,1), 20, sprite(1).camera)
end

on mousewithin(me)
pClick = 1
sprite(1).rotate(vector(0,0,0), vector(0,0,1), 20, sprite(1).camera)
end

mais director me dis qu'il y a une erreur ?

Handler not fonud object
sprite(1).rotate(vector(0,0,0), vector(0,0,1), 20, sprite(1).camera)
#rotate

pouvez vous m'aider ?

Mathieu







1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS - Tel. 0826 466 613 - Fax. 01 72 70 31 38

FFP