XSIforum.com

sustituir elemento

0 Usuarios y 1 Visitante están viendo este tema.

sustituir elemento
« en: 29 Julio 2010, 00:25:28 »
Hola a todos

Imaginar que tengo un rig, y un controlador en medio del rig, con su jerarquia hacia arriba y hacia abajo de elementos, con expresiones que hacen referencia a dicho elemento o con constraint aplicados u objetos constreñidos a él.

¿es posible sustituir dicho elemento por otro sin romper la jerarquia, las expresiones, constraint y cualquier otra cosa que haga referencia a dicho elemento?

imaginar que tienes un null con un icono de cubo y ahora decides cambiarlo por una curva.

¿hay algun script que lo haga?


Re: sustituir elemento
« Respuesta #1 en: 29 Julio 2010, 10:41:55 »
De forma nativa es como en cualquier programa cuando quieres reemplazar todo el objeto (no sólo el shape ;))... se hace a mano y con cuidado :)

Por script seguro que puedes, no sé si exista algo hecho por ahí pero si se puede a mano con cuidado seguro que se puede hacer por scripting, lo más difícil probablemente es encontrar todas las dependencias (constraints que apuntan al objeto) pero teniendolo no es más que utomatizar un par de cosas.

Re:sustituir elemento
« Respuesta #2 en: 23 Diciembre 2011, 18:37:16 »
retomo el tema... vaya, año y medio despues!

He estado pensando en el tema, ya que tengo un rig con unos controladores feos y poco practicos... son unas curvas.
Se me ocurre sustituir todos los controladores por unos nuevos.... como son curvas, podria "redibujarlos" con otra forma, lo más practico será con scripts.
La idea sería leer la forma del controlador bueno, y reedibujar los controladores antiguos.
¿Que comando me lee la forma de una curva para luego redibujarla?

gracias

Re:sustituir elemento
« Respuesta #3 en: 24 Diciembre 2011, 00:14:17 »
Si son curvas vs curvas puedes recrear su forma sin problemas mediante scripting, algo asi...
Código: (python) [Seleccionar]
from siutils import si
sisel = si.Selection

def GetShapeData(p_oObj):
return p_oObj.ActivePrimitive.Geometry.Get2()

def SetShapeData(p_oObj, p_lData):
si.FreezeModeling(p_oObj)
p_oObj.ActivePrimitive.Geometry.Set(*p_lData)
si.Refresh()
return True

lData = GetShapeData(sisel(0))
SetShapeData(sisel(1), lData)
El código es bastante chorra, básicamente coge la descripción de la primera curva seleccionada mediante la función GetShapeData y se la asigna a la segunda curva seleccionada mediante SetShapeData... me imagino que querrás automatizar el proceso para varias curvas y tal y tocará reordenar un poco las llamadas a dichas funciones, pero eso ya te lo dejo a ti ;)

Re:sustituir elemento
« Respuesta #4 en: 24 Diciembre 2011, 00:16:39 »
muchas gracias César.
con eso me basta.