XSIforum.com
Foros 3D => Autodesk Softimage => Principiantes => Mensaje iniciado por: juanjgon en 21 Junio 2011, 13:42:40
-
Hola a todos ... despues de un tiempo desenganchado de softimage estoy de vuelta y un poco oxidado ;)
Tengo una escena con un modelo de árbol y varias cientos de instancias del mismo, y ahora quiero cambiar ese modelo de árbol por otro ... ¿como puedo reemplazar un objeto por otro en la escena? ... lo que busco es algo parecido al comando del Ligtwave que te permite reemplazar un objeto por otro simplemente seleccionando su archivo.
Un saludo,
Juanjo
-
Amigo,...mal lo llevas si piensas en LW usando XSI...XD
Lo digo porque yo también vine de LW,...y me rompi la cabeza mucho tiempo intentanto emular LW en XSI... ;)
Bueno, al grano: no se puede,....y si se puede.
Es decir, tienes que tener el modelo referenciado para poder hacerlo lo que quieres.
Mirate la ayuda porque es muy largo de explicar aqui y hay muchas opciones que te resultarán interesantes.
Suerte y bienvenido de nuevo.
-
Gracias, ya me imaginaba que el camino es utilizar siempre referencias externas para ese tipo de objetos. Ya miro la mejor forma de hacerlo ;)
Un saludo,
Juanjo
-
O con un poco de scripting! :D
Selecciona el modelo "viejo", luego el "nuevo" y ejecuta esto... con un poco de suerte debería reemplazar tanto el modelo original como las instancias que tengas en la escena.
Xsi = Application
Sel = Xsi.Selection
def ReplaceModel(p_oOldModel, p_oNewModel, p_bDelete = True):
p_oNewModel.Kinematics.Global.Transform = p_oOldModel.Kinematics.Global.Transform
oInstanceGroup = p_oOldModel.Groups("InstanceGroup")
if oInstanceGroup:
lInstances = Xsi.Instantiate(p_oNewModel, oInstanceGroup.Members.Count)
for i, oOldInstance in enumerate(oInstanceGroup.Members):
oNewInstance = lInstances(i)
oNewInstance.Kinematics.Global.Transform = oOldInstance.Kinematics.Global.Transform
if p_bDelete:
if oInstanceGroup: Xsi.DeleteObj(oInstanceGroup.Members)
Xsi.DeleteObj("B:%s" % p_oOldModel.Name)
return True
ReplaceModel(Sel(0), Sel(1))