Mirror morph mediante skin wrap

Mensajes de los cursos de junio y octubre del año 2010.

Moderadores: David, Tutores

Responder
DavidAlvarez
Junior
Junior
Mensajes: 25
Registrado: Mié Oct 06, 2010 10:33 am

Mirror morph mediante skin wrap

Mensaje por DavidAlvarez »

En la última PyR se habló de esta técnica, siento no haber tenido tiempo para abrir antes este post, en cualquier caso he dado con el enlace en el que se describe la técnica.
http://www.3dtotal.com/team/Tutorials/m ... ets_01.asp
Mas adelante subiré el script que automatiza los pasos, mas que un script es una especie de macro que pretende ahorrar ciertos pasos y que puede requerir según el caso de cierta edición, con lo cual es importante saber exactamente que es lo que estamos haciendo por si hay que tocar algún parametro del codigo.

Un saludo

matancillas
Iniciado
Iniciado
Mensajes: 10
Registrado: Mié Oct 06, 2010 10:18 pm

Re: Mirror morph mediante skin wrap

Mensaje por matancillas »

Muchas gracias por el Link, Sin plugin siempre será mejor :)
salu2

DavidAlvarez
Junior
Junior
Mensajes: 25
Registrado: Mié Oct 06, 2010 10:33 am

Re: Mirror morph mediante skin wrap

Mensaje por DavidAlvarez »

Gracias Eleazar, aunque considero que es es preciso saber como funcionan las cosas en este caso el script ahorra mucho trabajo, a mi me lo ha ahorrado en su momento. Aquí os dejo el script que es mas que nada un macro y en el que en algunos casos habrá que retocar algun parametro para que funcione correctamente. De ahí que interese saber que estamos haciendo.
Un saludo

Código: Seleccionar todo

--has de seleccionar el objeto origen y el target, en este orden ademas
clearlistener()
ArrayObjetos = getCurrentSelection()
Origen = ArrayObjetos[1]
Destino = ArrayObjetos[2]
--clono objeto seleccionado y lo asigno a una variable
maxOps.cloneNodes Origen offset:[0,0,100]  cloneType:#copy actualNodeList:#() newNodes:&result 
referenciaMorfo = result[1]
referenciaMorfo.name = "referenciaMorfo"
--clono copia de objeto seleccionado y lo asigno a una variable
maxOps.cloneNodes referenciaMorfo offset:[0,0,100]  cloneType:#copy actualNodeList:#() newNodes:&result 
Morfeado = result[1]
Morfeado.name = "Morfeado"
--lo escalo en menos x
scale Morfeado [-1,1,1]
--elimina edit poly del morfo
deleteModifier referenciaMorfo 1
-- creo una copia que llevará aplicado el skinwrap
maxOps.cloneNodes referenciaMorfo offset:[0,0,100]  cloneType:#copy actualNodeList:#() newNodes:&result 
Skinwrapeado = result[1]
Skinwrapeado.name = "Skinwrapeado"
--defino variable morpher
myMorpher = morpher()
addmodifier $Morfeado myMorpher
MorfeadoMorpher = Morfeado.modifiers[1]
-- añadimos morfo al primer canal
WM3_MC_BuildFromNode MorfeadoMorpher 1 referenciaMorfo
--defino array para poder asignar el objeto en el skin wrap
ObjArray = #()
append ObjArray Morfeado

WM3_MC_SetValue myMorpher 1 100.0 --sets the key of the first morph channel to 100%
slidertime = 10 -- changes the slider time 
with animate on
(
	WM3_MC_SetValue myMorpher 1 0.0 --sets the key of the first morph channel to 0%
)
(
slidertime = 0
-- defino la variable para el skin
mySkinWrap= Skin_Wrap()
-- asigno parametros, es posible que halla que tocar esto según algunos ejemplos.
mySkinWrap.engine = 1
mySkinWrap.falloff = 0.01
mySkinWrap.distance = 0.1
mySkinWrap.faceLimit = 1
-- añado el modificador al objeto clonado
addmodifier Skinwrapeado mySkinWrap
--añade objeto a la lista de skin_Wraps
Skinwrapeado.modifiers[#Skin_Wrap].meshList = ObjArray;
)

slidertime = 10

collapseStack SkinWrapeado


delete Morfeado
delete referenciaMorfo

slidertime = 0
myMorpherFinal = morpher()
addmodifier Destino myMorpherFinal
MorphDelMorpher = Destino.modifiers[#morpher]
WM3_MC_BuildFromNode MorphDelMorpher 1 Skinwrapeado
WM3_MC_SetValue MorphDelMorpher 1 100.0
delete $Skinwrapeado
--Añadir morpher y el target al objeto original
/*
myMorpherFinal = morpher()
addmodifier miObjetoOriginal myMorpher
MorphDelMorpher = miObjetoOriginal.modifiers[#morpher]
-- añadimos morfo al primer canal
WM3_MC_BuildFromNode MorphDelMorpher 1 Skinwrapeado
*/
Lo posteo tal cual yo lo uso ya que no he tenido tiempo de limpiarlo de basurilla, espero que los comentarios lo hagan comprensible.

Responder

Volver a “Convocatorias 2010”