Intento calcular y mover los vértices a su "radio" medio y formar un círculo a partir de estas nuevas posiciones.
Ejemplo: Tengo 8 vértices seleccionados, tengo un pequeño script en Maya que iterará a través de cada punto, encontrará la distancia desde el centro de la selección hasta el punto actual en el bucle. Guarda estos valores y crea un valor de "distancia media desde el centro".
- Negro = Posición de cada vértice (X,Y,Z)
- Rojo = Distancia entre el centro y el vértice
- Azul = Promedio de TODOS los vértices desde el Punto Central (X,Y,Z) & Vértice (X,Y,Z) = integerXYZ (azul es la misma distancia)
- Verde es la posición que intento encontrar en (XYZ)
No sé cómo calcular las coordenadas (X,Y,Z) del punto verde.
He calculado esta información con: (hasta la posición de los puntos verdes):
import maya.cmds as cmds
import math
sel = cmds.ls(sl=1, fl=1)
averageDistance = 0
cmds.setToolTo('Move')
oldCoordArray = []
oldDistanceArray = []
newXPos = 0
cs = cmds.manipMoveContext("Move", q=1, p=1)
for i in range(0, len(sel), 1):
vts = cmds.xform(sel[i],q=1,ws=1,t=1)
print vts
x = round(float(cs[0]),2) - round(float(vts[0]),2)
y = round(float(cs[1]),2) - round(float(vts[1]),2)
z = round(float(cs[2]),2) - round(float(vts[2]),2)
distanceFromCenter = math.sqrt((x * x) + (y * y) + (z * z))
oldCoordArray += [(round(float(vts[0]),2),round(float(vts[1]),2),round(float(vts[2]),2))]
oldDistanceArray += [(distanceFromCenter)]
averageDistance += distanceFromCenter
if (i == len(sel) -1):
averageDistance /= len(sel)
print 'average Distance: %s' %averageDistance
for i in range(0, len(sel), 1):
#Calculate percentage difference between distances
t = oldDistanceArray[i] * 100 / averageDistance
percDiff = (t / 100) * oldCoordArray[i][0]
newXPos -= (oldCoordArray[i][0] / percDiff) * 100
(imagen original ici )