Forums Développement Multimédia

Aller au contenu

affecter les valeurs X/Y/Z d'un vector à des variables?

Director

5 réponses à ce sujet

#1 elran

    Ceinture Orange

  • Members
  • PipPipPip
  • 31 messages

Posté 30 March 2010 - 15:17 PM

et rebonjour,

voilà, cette fois ci, je souhaiterais, comme le dit le titre, affecter les valeurs x, y, z de vector (vector( x, y, z))

à 3 variables: vignette_x, vignette_y, vignette_z.

mais peut être que je me trompe et que ce sont les valeurs x, y, z de:

member("ma_scène").model("mon_modèle").transform.position

que je souhait récupérer, mais bien dans 3 variables différentes...

le but est donc d'enregistrer le point de départ de ma vignette pour qu'après une modification de sa position, je puisse la faire revenir en arrière...

j'ai bien réussi, en faisant comme ceci:
pos_vignette_depart = member("scene").model("Vignette_1").transform.position

mais je ne peut pas jouer sur chacune des valeurs séparément puisque je récupère: vector(valeurX, valeurY, valeurZ)
hors j'en aurais besoin, lorsque je ferais une boucle pour revenir à la position de départ...

#2 Alexx

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 343 messages

Posté 30 March 2010 - 15:23 PM

Salut,

ta variable pos_vignette_depart sera un objet de type vector
tu peux alors directement jouer sur ses propriétés x,y et z

par exemple :

pos_vignette_depart.x = 50

tu peux aussi faire :

pos_vignette_arrivee = pos_vignette_depart + vector(100,0,0)

ainsi ta variable pos_vignette_arrivee sera décalée de 100 unités sur l'axe X par rapport à la position de départ

Modifié par Alexx, 30 March 2010 - 15:24 PM.


#3 elran

    Ceinture Orange

  • Members
  • PipPipPip
  • 31 messages

Posté 30 March 2010 - 15:43 PM

salut, et merci pour ta réponse,

petite précision, c'est ça:


pos_vignette_depart = member("scene").model("Vignette_1").transform.position
 

qui fait que pos_vignette_depart devient un objet de type vector??

ou faut il que je déclare pos_vignette_depart comme objet vector?





Voir le messageAlexx, le 30 March 2010 - 15:23 PM, dit :

Salut,

ta variable pos_vignette_depart sera un objet de type vector
tu peux alors directement jouer sur ses propriétés x,y et z

par exemple :

pos_vignette_depart.x = 50

tu peux aussi faire :

pos_vignette_arrivee = pos_vignette_depart + vector(100,0,0)

ainsi ta variable pos_vignette_arrivee sera décalée de 100 unités sur l'axe X par rapport à la position de départ


#4 glurp

    Modérateur

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1260 messages

Posté 30 March 2010 - 16:43 PM

Salut elran,

Il n'est pas nécessaire de typer les données sous Director, puisque le typage est automatique :


-- Ce code fonctionne, les types sont modifiés automatiquement --
tVariable = vector(5,5,5)
tVariable = 3.5
tVariable = "lala"
 

Je rajouterai qu'il est possible de consulter les valeurs d'un vector comme une liste


-- Exemple --
tVector = vector(3,4,5)
put tVector[2]

tVector[2] = 9
put tVector
 

Et que les valeurs de position et rotation peuvent être accédées séparément


put tModel.transform.position.x
put tModel.transform.rotation.z
 


#5 elran

    Ceinture Orange

  • Members
  • PipPipPip
  • 31 messages

Posté 30 March 2010 - 17:13 PM

Salut Glurp,

et merci pour tes précisions!

j'avoue ne pas être du tout habitué aux langages de programmation avec typage automatique, comme director, ou flash, mais
faut reconnaitre que c'est assez pratique, juste un peut déroutant au départ.
au moins quand on déclare une variable et qu'on la type, c'est écris, alors qu'avec le typage auto, parfois (mais je ne suis pas très
familier avec le lingo ou AS ou JS) on ne sait pas trop à quoi on à affaire... ;)

jusque là je n'ai développé qu'en "pascal objet", ou plutôt Borland Delphi.

bon en tous cas ça s'avère plus simple et plus pratique que je ne le croyais de récupérer la position x, y ou z, OUF! ;)

Val-Jean.


Voir le messageglurp, le 30 March 2010 - 16:43 PM, dit :

Salut elran,

Il n'est pas nécessaire de typer les données sous Director, puisque le typage est automatique :


-- Ce code fonctionne, les types sont modifiés automatiquement --
tVariable = vector(5,5,5)
tVariable = 3.5
tVariable = "lala"
 

Je rajouterai qu'il est possible de consulter les valeurs d'un vector comme une liste


-- Exemple --
tVector = vector(3,4,5)
put tVector[2]

tVector[2] = 9
put tVector
 

Et que les valeurs de position et rotation peuvent être accédées séparément


put tModel.transform.position.x
put tModel.transform.rotation.z
 


#6 papwal

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 201 messages

Posté 03 April 2010 - 17:57 PM

en théorie on a presque jamais besoin d'accéder à X Y Z, sauf cas où on veut faire des effets qui impliquent les axes (gravité par exemple)

le script lingo est étudié pour traiter les objets vector exactement comme des variables, tu peux les additionner, les soustraire (idem pour les objets list (tableau) et point (vector2d) ) , calculer produit scalaire et produit en croix, et les multiplier par des objet transform (matrice 3d)

il y'a un article pratique sur wikipedia pour démarrer: http://fr.wikipedia.org/wiki/Lingo



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

FFP