quarta-feira, 21 de setembro de 2011

Back to Maya ; )





Fazendo uns testes pra ajudar meu namorado, acabei voltando aos scripts do Maya.
Resolvi fazer alguns scripts aplicando os conceitos básicos de Geometria Analítica,
Vamos ver se eu tomo vergonha e posto com mais frequência ; )

Segue o código:



  1. import maya.cmds as cmds
  2. import math
  3. from operator import itemgetter, attrgetter
  4. grupo=[]
  5. ref = cmds.ls(sl=True) # selecionar o objeto de referência
  6. selected = cmds.ls(sl=True) # selecionar os objetos para interação
  7. def montagrupo(obj):
  8.     global grupo
  9.     lista=[]
  10.     for each in obj:
  11.        
  12.         #grassman (B-A) = vetor diretor        
  13.         # Ponto A        
  14.         xa = cmds.getAttr(each+".translateX")
  15.         ya = cmds.getAttr(each+".translateY")
  16.         za = cmds.getAttr(each+".translateZ")
  17.         # Ponto B
  18.         xb = cmds.getAttr(ref[0]+".translateX")
  19.         yb = cmds.getAttr(ref[0]+".translateY")
  20.         zb = cmds.getAttr(ref[0]+".translateZ")
  21.         # B - A
  22.         x = xb - xa
  23.         y = yb - ya
  24.         z = zb - za
  25.        
  26.         # magnitude do vetor diretor (Pitagoras)
  27.         d = math.sqrt( round( (x*x + y*y + z*z)5) )
  28.         lista.append( (each,d) )
  29.         
  30.     
  31.     grupo = sorted(lista, key=itemgetter(1))
  32.     #grupo = sorted(lista, key=itemgetter(1), reverse=True) )  # inverso    
  33.     lista
  34.    
  35.  def scaleobjs():
  36.     plus=0.1   
  37.     for nome in
  38.         #print "each", nome[0]
  39.         cmds.select(nome[0])    
  40.         cmds.scale(plus,plus,plus, absolute=True) grupo:
  41.         plus=plus+0.05
  42.         print plus

  43. def umachamada():
  44.     montagrupo(selected)
  45.     scaleobjs()