Source SDK

Source SDK

Not enough ratings
$sequence "secuencia para animaciones de personajes" - motor source
By Oitnemood
Versión traducida al español de la guía de valve
https://developer.valvesoftware.com/wiki/$sequence

El comando QC $sequence define una animación esquelética. Se puede utilizar por sí solo, o, para hacer uso de las características de animación esquelética más avanzadas de Source, junto con uno o varios $animations.
Nota: Todos los modelos que tienen polígonos deben tener al menos un $sequence. Si en realidad no quieres ningún movimiento, es más fácil reutilizar tu SMD de referencia. Los modelos que utilizan únicamente $includemodel no requieren ninguna $sequences.

Para hacer: ¿Qué sucede si no existe ninguna $sequences en el $includemodel?
Usage
   
Award
Favorite
Favorited
Unfavorite
Uso
$sequence tiene dos modos. Uno accede directamente a una sola animación esquelética (SMD o DMX), mientras que el otro necesita $animation intermedios.
Nota: una animación esquelética DMX solo se puede utilizar si el juego para el que se compila el modelo tiene dmxconvert.
Nota: Un $sequence puede ver solamente $animation que vienen por encima de él en el archivo QC.

  • $sequence <nombre> <animación esquelética SMD/DMX> <opciones sencillas>
  • $sequence <nombre> { // llave de apertura debe estar en la misma línea que el comando
  • <$animation name(s)>
  • <advanced options>
  • <events>
  • <simple options>
  • }

Ejemplos

  • $modelname "weapons/shell.mdl"
  • $cdmaterials "models/weapons/"
  • $body shell "shell-ref.smd"
  • $sequence idle "shell-idle.smd"
  • $animation a_strokechin "strokechin.smd" subtract idle 0

  • $sequence strokechin {
  • a_strokechin
  • delta
  • }
  • $sequence run_holding_all {
  • a_runS
  • a_runSE
  • a_runE
  • a_runNE
  • a_runN_SMG
  • a_runNW
  • a_runW
  • a_runSW
  • a_runS

  • blendwidth 9
  • blend move_yaw -180 180
  • addlayer layer_run_holding
  • ACT_RUN_RIFLE 1
  • node "running"
  • }

Opciones

El nombre de la animación. Aparecerá en HLMV, Hammer, etc.
<string|Skeletal animation file>
Ruta de acceso al archivo de origen del $sequence. Al incluir esto, usted le dice a studiomdl que usted está utilizando la versión simple del comando.
frame <int|start frame> <int|end frame>
Especifica un rango de fotogramas que se extraerán de la animación de origen. Útil para recortar fotogramas no utilizados en una animación determinada.
Por ejemplo, si la animación de origen contiene 80 fotogramas, pero esta animación solo debe reproducir los últimos 30 fotogramas, los fotogramas 50 80 cargarán solo esos fotogramas.
También se puede utilizar para extraer un solo fotograma de animación haciendo que los fotogramas inicial y final coincidan.
marcos es un alias de marco y se puede utilizar indistintamente con él.
Advertencia: Todos los números de fotograma utilizados en otra parte de la secuencia (por ejemplo, eventos de animación)son relativos al fotograma inicial.
origin <float|x> <float|y> <float|z>
Ajusta la posición de la animación dentro de su propio espacio local.
angles <float|x> <float|y> <float|z>
Ajusta la rotación de la animación dentro de su propio espacio local.
rotate <float|angle>
Idéntico a los ángulos, pero sólo gira a lo largo del eje Z.
scale <float|scale>
Multiplica el tamaño del esqueleto en esta secuencia. Se aceptan valores negativos.
reverse (in all games since )
Invierte la animación.
loop
Tiene tres efectos:
1. Hace que la secuencia se repita sin fin hasta que se detenga.
2. Impide que la secuencia se reinicie si se activa mientras ya se está reproduciendo.
3. Hace que studiomdl realice alguna limpieza entre el primer y el último fotograma.
Oculto
Impide que el $sequence aparezca en las interfaces de usuario. Útil para secuencias que sólo sirven como capas de otros.
fps <float|frames per second>
Invalide la velocidad de fotogramas de la animación. Si no está especificado, el valor predeterminado es 30.
Nota: Estos son fotogramas de animación - no marcos de pantalla!
<string|motion extract axis>
Las animaciones de movimiento son más fáciles de crear si el modelo realmente avanza, pero para la reproducción en el juego debe "caminar sobre el terreno". Este comando resuelve el problema quitando la traducción de hueso raíz de una animación. Los ejes aceptados son:
*X, Y y Z
* LX, LY y LZ - el hueso de la raíz se mueve a lo largo del eje hasta que la animación está medio completa, y luego se mueve de nuevo a su posición original.
Consejo: Puede extraer movimiento de cualquier combinación de ejes. Sólo pon un espacio entre cada uno.
Este comando también está disponible en $animations.
  • activity <string|name> <float|weight>
Vincula la secuencia a una actividad.
Consejo: Si un nombre de actividad comienza con "ACT_", se puede quitar la palabra clave activity. Cuando se ve ACT_, es implícitamente una actividad.
Si más de un $sequence tiene la misma actividad,el peso especifica la probabilidad de que se elija esta secuencia cuando se llama a esa actividad. Las probabilidades de cualquier $sequence juego en particular es simplemente su peso sobre la suma de todos los demás pesos.
Por ejemplo, si un $sequence denominado swing_a tiene un peso de 2, y otro $sequence denominado swing_b tiene un peso de 1, entonces hay una probabilidad de 2/3 para que swing_a juegue en lugar de swing_b.
Nota: Si solo hay una secuencia vinculada a la actividad, su peso es irrelevante.
Autoplay
Hace que la secuencia se reproduzca en todo momento, además de cualquier otra animación, sin importar lo que el modelo esté haciendo. Bueno para animaciones de respiración mezcladas y otros movimientos automatizados. Si un modelo tiene varias $sequences de reproducción automática, están en capas en el orden en que aparecen en el control de calidad.
Advertencia: No uses esto para una animación que se pueda reproducir normalmente, o terminarás con ella reproduciendo dos veces y el movimiento duplicando.
addlayer <cadena|other $sequence nombre>
Reproduce otra secuencia encima de esta. Las animaciones comienzan y terminan juntas, por lo que las discrepancias en su tiempo de ejecución total (velocidad de fotogramas * número de fotogramas) afectarán proporcionalmente a la velocidad de fotogramas de la capa agregada, si corresponde. La otra $sequence no tiene que estar por encima de la actual.
Esto se utiliza generalmente para agregar capas delta-ed como matrices de objetivos o capas especialmente ponderadas que solo afectan a huesos específicos.
La otra $sequence se puede declarar con anticipación si se importará en tiempo de ejecución.
blendlayer <string|other $sequence name> <int|startframe> <int|peakframe> <int|tailframe> <int|endframe> [opciones...]
Similar a addlayer, pero la nueva secuencia solo se reproduce sobre fotogramas especificados y acepta una serie de opciones.
La animación comienza a una intensidad del 0% en el marco inicial,alcanza una intensidad del 100% en la estructura pico,comienza a desvanecerse en el fotograma de cola y se desvanece por el marco final.
Opciones:
Spline
En lugar de desvanecer la capa linealmente, desvanezca con una curva de spline.
xfade
La capa sólo se desvanecerá y no retrocederá.
poseparameter <string|name>
Permite que un parámetro pose controle el desvanecimiento de la capa en lugar del marco del $sequenceprimario. Cuando esta opción está presente, el rango de fotogramas se utiliza en su lugar para determinar cómo el valor del parámetro pose debe hacer que la capa se desvanezca dentro/fuera.
Ejemplo: blendlayer aimmatrix -1 0 0 1 poseparameter move_x
param value: -2.000 -1.500 -1.000 -00.80 -00.60 -00.40 -00.200 000.00 00.200 00.400 00.600 00.800 1.0000 1.5000 2.0000
layer weight: 0.000% 0.000% 0.000% 20.00% 40.00% 60.00% 80.00% 100.0% 80.00% 60.00% 40.00% 20.00% 0.000% 0.000% 0.000%
Estos valores cambiarán al hacer uso de la opción spline, pero seguirán comenzando y finalizando al mismo tiempo.
noblend
Hace que blendlayer ignore el desvanecimiento por completo, lo que efectivamente le permite actuar como addlayer pero con un rango de fotogramas específico.
local
Para hacer
Tiene algo que ver con cambiar la forma en que la capa se mezcla “blend”, pero no está claro específicamente lo que cambia.
Advertencia: A menos que la secuencia mezclada tenga la opción en tiempo real, la velocidad de fotogramas de la secuencia mezclada se ajustará en relación con la secuencia primaria para que comience en el fotograma inicial y finalice en el fotograma final. Por ejemplo, si las secuencias padre y mezclada se reproducen a 30 fotogramas por segundo y duran 30 fotogramas, pero la secuencia mezclada solo se reproduce durante los fotogramas 5 a 20 (un total de 15 fotogramas, solo la mitad de su longitud original), la secuencia mezclada se reproducirá a 60 fotogramas por segundo(¡el doble de su velocidad de fotograma original!) para que pueda comenzar en el fotograma 5 y terminar en el fotograma 20.
Snap
Elimine todas las mezclas al realizar la transición a esta animación. Esto es útil para animaciones de reacción que son el resultado de cambios repentinos y violentos en el estado de la modelo, como un flinching de criatura o un disparo de arma.
Realtime
En lugar de reproducir la animación desde su primer fotograma cada vez que se le pide que reproduzca, la animación siempre se reproduce en relación con el reloj del sistema global. Útil para agregar capas que no deben jugar al mismo ritmo que sus $sequence primarios, como la respiración.
fadein <float|segundos>
Invalide cuánto tiempo pasa esta animación desvaneciéndose. El valor predeterminado es 0.2.
Nota: fadein 0 logra el mismo efecto que snap,pero HLMV no lo reconocerá como un ajuste cuando se habilita la fusión automática, por lo que el ajuste es necesario.
fadeout <flotar|segundos>
Anule el tiempo que esta animación pasa desvaneciéndose. El valor predeterminado es 0.2.
Pesartlist <string|weightlist name>
Selecciona un $weightlist para aplicar a esta secuencia.
Si se utiliza una lista de peso predeterminada, esto la invalidará con la lista de peso especificada para esta animación.
localhierarchy <cadena|nombre del hueso> <cadena|nuevo nombre del padre> [rango <int|marco de inicio> <int|marco de pico> <int|marco de cola> <int|marco de fin>]
Cambia el elemento primario de un hueso solo para esta animación. "" se puede utilizar para extirpar el padre de un hueso.
Esto es principalmente útil para asegurar que un hueso se mezcla correctamente. Como ejemplo, si un arma normalmente se mantiene en la mano derecha, pero durante esta animación se mantiene en la mano izquierda, se mezclará como si estuviera siendo sujetada por la mano derecha. Esta opción se puede utilizar para que se mezcle con respecto a la mano izquierda en su lugar, lo que eliminará el nerviosismo causado por la mezcla.
rango es opcional y requiere cuatro números de fotogramas que especifiquen cómo se debe mezclar la jerarquía sobre los fotogramas especificados.
Nota: Esto no afecta a las animaciones durante las transiciones, por lo que es necesario ajustar.
comprimir <int|frameskip>
Omita una cantidad determinada de fotogramas para reducir el tamaño del archivo de modelo
poseciclo <string|pose parameter>
Hace que el parámetro pose especificado controle el marco de animación en lugar de la animación específica que debe reproducirse en una secuencia de mezcla.
Avanzada
Además de todas las opciones simples:
Delta
Indica a Source que todos los $animations a los quese hace referencia en esta secuencia se han restado. El $sequence se reproducirá encima de las secuencias que se están reproduciendo actualmente, en lugar de anularlas.
Advertencia: ¡Usar esto con un $animation que no se ha restadotiene malos resultados!
predelta
El complemento al comando "presutract", esto indica al sistema de composición de animación que agregue la configuración ósea actual encima de un marco de referencia diferente en lugar de reemplazar la animación de cada hueso basado en el esquema de ponderación de fundido cruzado típico.
blend <string|name> <float|min value> <float|max value>
Para hacer: Documentación
Puede tener hasta 8 parámetros únicos.
blendwidth <int|width>
Para hacer: Documentación
En lugar de solo mezclas 1x1, 2x1, 3x1, 2x2 y 3x3, al mezclar ancho, ahora puede tener mezclas rectangulares de cualquier tamaño como mezclas rectangulares de tamaño como 7x1, 3x4, 2x9, etc.
blendref <string|name>
Para hacer: Documentación
blendcenter <string|name>
Consulte Secuencia de mezcla.
ikrule
Consulte $ikchain.
iklock
Congela el hueso especificado en un $ikchain.
Consulte $ikchain.
activitymodifier <string|modifier> (en todos los juegos desde ) (también en )
Para hacer: Documentación
Misceláneos
nodo (nombre)
Etiqueta la secuencia como perteneciente a un punto de la tabla gráfica de transición de secuencia. Esto es para animaciones que no cambian el estado del gráfico, como animaciones en bucle. Varias secuencias pueden estar en la misma entrada en la tabla de gráficos, momento en el que no necesitarán animaciones de transición para moverse entre sí.
Como alternativa, puede tenerlos en diferentes puntos y omitir expresamente las transiciones (consulte $skiptransition). Las secuencias sin declaración se asumen en el nodo raíz y el gráfico de transición asume que cualquier secuencia puede moverse del nodo raíz o al nodo raíz sin una transición intermedia.
transición (de) (a)
Esto especifica que la animación entra desde un punto en el gráfico de nodos y sale en otro punto. Esto se utiliza para reproducir secuencias de transición como walk_to_stand, run_to_crouch, etc.
rtransición (nombre1) (name2)
Lo mismo que la transición, pero marca la secuencia como capaz de ejecutarse en orden inverso. Esto fue utilizado por el tentáculo en HL1, pero no recomiendo que se utilice excepto en casos especiales.
exitphase (fase)
Al realizar la transición entre animaciones en bucle, como "stand_to_run", esto indica al sistema de movimiento dónde iniciar la siguiente secuencia, suponiendo que esté en bucle. También se supone que ha realizado todas las secuencias que comparten el siguiente nodo para que coincidan en fase (consulte startloop).
$skiptransition (name1) (name2) [(name3) ...]
Esto agrega una regla al gráfico de transición para permitir el movimiento directo entre todos los nodos con nombre. Esto es útil para las transiciones entre nodos con nombre únicos que pueden no requerir ninguna animación intermedia específica. Esta es la manera de evitar que el gráfico de transición obligue a "caminar" a "correr" para en su lugar ser un "paseo" para "ponerse de pie" para "ejecutar" la transición.
keyvalues { [stuff] }
Agregue un bloque keyvalue (consulte $keyvalues) a una secuencia específica. Esto se utiliza para configurar gestos para Faceposer.