Hola .
¿Alguien me podría informar si existe algun maxscript o documentación de como obtener los datos de los objetivos de un morph , es decir tengo una cara con 20 objetivos (mover ceja,arriba, izquierda, boca...) y la animación tiene 500 frames ¿hay alguna forma de sacar esos datos en un fichero .txt o .x?
Mil gracias
En la documentación de MAXScript tienes todas las funciones necesarias para obtener la información que necesitas. Por ejemplo, este script te muestra algunos datos sobre los targets del modificador morph (que en este caso está asignado al objeto seleccionado, de ahí lo del $):
for i = 1 to 100 do (
local active = WM3_MC_IsActive $.modifiers["morpher"] i
local valid = WM3_MC_IsValid $.modifiers["morpher"] i
local hasTarget = WM3_MC_HasTarget $.modifiers["morpher"] i
local useVertSel = WM3_MC_GetUseVertexSel $.modifiers["morpher"] i
local name = WM3_MC_GetName $.modifiers["morpher"] i
local value = WM3_MC_GetValue $.modifiers["morpher"] i
format "active: %\tvalid: %\thasTarget: %\tuseVertSel: %\tname: \"%\"\tvalue: %\n" active valid hasTarget useVertSel name value
)
WM3_MC_GetName te devuelve el nombre del nodo que se esta utilizando en el canal i y WM3_MC_GetValue te devuelve el porcentaje que se utiliza en un frame determinado para el canal i. Al parecer no se puede obtener el valor en un frame determinado con "at time" (como debería ser). En lugar de eso tendrás que mover la barra de tiempo al frame necesario:
-- Guardamos el frame actual para restaurarlo posteriormente
curTime = sliderTime
-- Especificamos el frame que nos interesa
sliderTime = 50f
-- Recogemos el porcentaje de morphing para el canal 1
WM3_MC_GetValue $.modifiers["morpher"] 1
-- Restauramos el frame anterior
sliderTime = curTime
Saludos.
Gracias ¿pero como visualizo esos datos o exporto ellos?
He creado un pequeño script que muestra cómo exportar algunos de los datos del morpher a un archivo.
DescargarIncluye un pequeño video demostrativo.
Aquí tienes la salida:
morphTargets 2 {
target 0 "Sphere02"
target 1 "Sphere03"
}
frames 26 {
frame 0 0.0 0.0
frame 1 1.8176 0.4672
frame 2 6.8608 1.8176
frame 3 14.5152 3.9744
frame 4 24.1664 6.8608
frame 5 35.2 10.4
frame 6 47.0016 14.5152
frame 7 58.9568 19.1296
frame 8 70.4512 24.1664
frame 9 80.8704 29.5488
frame 10 89.6 35.2
frame 11 96.0256 41.0432
frame 12 99.5328 47.0016
frame 13 100.0 52.9984
frame 14 100.0 58.9568
frame 15 100.0 64.8
frame 16 100.0 70.4512
frame 17 100.0 75.8336
frame 18 100.0 80.8704
frame 19 100.0 85.4848
frame 20 100.0 89.6
frame 21 100.0 93.1392
frame 22 100.0 96.0256
frame 23 100.0 98.1824
frame 24 100.0 99.5328
frame 25 100.0 100.0
}
Al principio se almacena la lista con los targets activos en el morpher y a continuación los frames de animación. El formato es el siguiente:
frame numFrame target{1}Value target{2}Value ... target{n}Value
Saludos.
Muchas gracias (ole)