[maxscript] question de newbie sur 1boucle /caméras et /cibles

question de newbie sur 1boucle /caméras et /cibles [maxscript] - Ressources - Graphisme

Marsh Posté le 28-05-2004 à 15:28:13    

Bonjour,
 
J'essai de faire du maxscript et j'ai un piti problème pour exporter les caractéristiques des caméras de type cible dans une scène.  
Pour cela j'ai écris :

Code :
  1. count = 0
  2. --for cam in cameras do
  3. (
  4. --select cam
  5. if ( ($.type) == #target ) then
  6. (
  7.  format "\n# Camera % to come...\n" count to:export_file
  8.  format "cp % "    ($.pos).x to:export_file
  9.  format "% "       ($.pos).z to:export_file
  10.  format "% \n#\n"   ($.pos).y to:export_file
  11.  -- Cas de sa cible
  12.  format "ct % "   ($.target.pos).x to:export_file
  13.  format "% "      ($.target.pos).y to:export_file
  14.  format "% \n#\n" ($.target.pos).z to:export_file
  15.  format "cz % "   ($.nearclip) to:export_file
  16.  format "% \n#\n" ($.farclip)  to:export_file
  17.  format "cf % \n#\n" ($.fov)   to:export_file
  18.  count = count + 1
  19. )
  20. else
  21. (
  22.  -- ...
  23. )
  24. clearSelection()
  25. )


 
Alors, si je sélectionne une caméra dans la scène et que je lance le script ça roule comme il faut.
 
Par contre si j'enlève les 2 lignes de commentaires du début :
--for cam in cameras do  
(
 --select cam
 
et bien la boucle boucle sur tous les caméras certe, mais aussi sur les cible ce qui plait pas trop quand on arrive sur un $.target.pos par exemple (même $.type) puisque c'est déjà à l'intérieur d'un objet caméra.
 
je voulais donc savoir comment faire une boucle qui sélectionne uniquement les caméras de la scène et pas les cibles avec.
 
Merci à vous.

Reply

Marsh Posté le 28-05-2004 à 15:28:13   

Reply

Marsh Posté le 28-05-2004 à 16:03:39    

normalement ca ne devrait même pas marcher dès le moment où tu lui demande de donner le type d'un target.
 
donc tu peux utiliser ça avec un try:

Citation :

count = 0  
     
  for cam in cameras do  
  (  
  --select cam  <- pas besoin de la selectionner, tu peux récupèrer ses propriétés dans ta boucle for avec cam au lieu de $
   try
   if ( (cam.type) == #target ) then  
     (  
     
    format "\n# Camera % to come...\n" count to:export_file  
    format "cp % "    (cam.pos).x to:export_file  
    format "% "       (cam.pos).z to:export_file  
    format "% \n#\n"   (cam.pos).y to:export_file  
         
   
    -- Cas de sa cible  
    format "ct % "   (cam.target.pos).x to:export_file  
    format "% "      (cam.target.pos).y to:export_file  
    format "% \n#\n" (cam.target.pos).z to:export_file  
    format "cz % "   (cam.nearclip) to:export_file  
    format "% \n#\n" (cam.farclip)  to:export_file  
    format "cf % \n#\n" (cam.fov)   to:export_file  
       
     
    count = count + 1  
   )  
   else  
     (  
    -- ...  
   )  
   clearSelection()  
  )  
catch ( )


 
comme ça lorsqu'il essaiera de trouver le type d'un target, ca va renvoyer une erreur, que le try va sauter et passer à ce qui est après catch et donc si tu mets rien dans le catch il fera rien et passera à la caméra suivante.


---------------
TZR un jour…  |  gamertag: cropNcut
Reply

Marsh Posté le 28-05-2004 à 17:25:30    

merci bien darth21, j'vais aller tester ça.
ça marchait parce que la boucle n'y était pas, c'était juste sur l'objet sélectioné (et je sélectionnais la cible dans la scène a la mano). Donc y devait pas aller sur la cible. Sinon je vois pas. Mais merci encore.  
C'est pour ça que j'avais mis la ligne en commentaire mais c'était pas très explicite.

Reply

Marsh Posté le 28-05-2004 à 17:35:24    

ben oui parceque quand tu faisais ta boucle, il devait t'envoyer peter dès le premier test (==#target) lorsqu'il tombait sur un target de caméra donc ca aurait jamais marché - sauf à la main. ;)


---------------
TZR un jour…  |  gamertag: cropNcut
Reply

Marsh Posté le 28-05-2004 à 18:06:36    

exact :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed