Source SDK

Source SDK

Not enough ratings
hacer que la cabeza del personaje del jugador se mueva (head_rot)
By H-H-G-M
Una rápida explicación de los Aimlayers, se puede aplicar también para mover el torso.
la guía es una versión traducida de la guía de bumb attack créditos a el.
https://gtm.you1.cn/sharedfiles/filedetails/?id=2434451813
Esta guía asume que usted ya sabe cómo hacer y exportar animaciones para los modelos de origen en Blender, por lo que no cubrirá ese proceso en detalle.
   
Award
Favorite
Favorited
Unfavorite
Principal
Creación de las animaciones necesarias
Para crear un aimlayer vas a necesitar 9 poses para tu playermodel:

LookUpRight "Mirar hacia arriba a la derecha"
LookUp "Mirar hacia arriba"
LookUpLeft "Mirar hacia arriba a la izquierda"
LookRight "Mirar a la derecha"
Reference "Referencia"
LookLeft "Mirar a la izquierda"
LookDownRight "Mirar Abajo Derecha"
LookDown "Mirar hacia abajo"
LookDownLeft "Mirar hacia abajo a la izquierda"

Cada una de estas animaciones debe ser exportada con un cuadro de animación.

aquí el ejemplo con modelo de Bump Attack


Para el modelo de jugador sólo se ha posado el cuello y la cabeza, pero las poses de puntería pueden afectar a todos los huesos que quieras. Esto significa que puedes hacer que todo el cuerpo se incline hacia delante o hacia atrás al apuntar hacia arriba o hacia abajo, por ejemplo.
Creación de Weightlist
Una vez creadas las animaciones podemos empezar a trabajar con el archivo .qc.

Lo primero que vas a necesitar es crear una lista de huesos Weightlist. Una lista de pesos se utiliza para hacer que una animación sólo afecte a huesos específicos en su modelo. Esta es la Weightlist que utiliza mi modelo:

  • $weightlist "weights_layer_Look" {
  • "ValveBiped.Bip01_Pelvis" 0
  • "ValveBiped.Bip01_spine" 0
  • "ValveBiped.Bip01_Head1" 1
  • "ValveBiped.Bip01_R_Forearm" 0
  • "ValveBiped.Bip01_R_Hand" 0
  • "ValveBiped.Bip01_R_Finger0" 0
  • "ValveBiped.Bip01_L_Forearm" 0
  • "ValveBiped.Bip01_L_Hand" 0
  • "ValveBiped.Bip01_L_Finger0" 0
  • "RightThigh" 0
  • "RightCalf" 0
  • "ValveBiped.Bip01_R_Foot" 0
  • "ValveBiped.Bip01_R_Toe0" 0
  • "LeftThigh" 0
  • "LeftCalf" 0
  • "ValveBiped.Bip01_L_Foot" 0
  • "ValveBiped.Bip01_L_Toe0" 0
  • }

Usando los nombres de los huesos de tu modelo desde blender, cualquier hueso con un peso de 0 no será afectado por la animación, y cualquier hueso con un peso de 1 será totalmente afectado por la animación. Si un hueso tiene un peso menor a uno, será parcialmente afectado por la animación, permitiendo que múltiples animaciones se mezclen. Los hijos heredan el peso de su hueso padre si no están incluidos en la lista de pesos.

Este es el formato básico para que puedas empezar:

  • $weightlist "weights_layer_Look" {
  • "Bone1" 0
  • "Bone2" 0
  • "Bone3" 0
  • }

Asegúrate de que los huesos que has planteado están afectados por la Weightlist, y que los demás no lo están.
Añadir sus animaciones
Ahora que has creado una lista de pesos es el momento de añadir tus animaciones al .qc y asignarles la weighlist.
Esto es lo que debe estar configurado en las animaciones de mirar.

  • $animation "a_lookU" "anims\a_head_rot_up" {
  • fps 24
  • weightlist "weights_layer_Look"
  • }

  • $animation "a_lookUR" "anims\a_head_rot" {
  • fps 24
  • weightlist "weights_layer_Look"
  • }

  • $animation "a_lookUL" "anims\a_head_rot" {
  • fps 24
  • weightlist "weights_layer_Look"
  • }

  • $animation "a_lookR" "anims\a_head_rot_right" {
  • fps 24
  • weightlist "weights_layer_Look"
  • }

  • $animation "a_lookL" "anims\a_head_rot_left" {
  • fps 24
  • weightlist "weights_layer_Look"
  • }

  • $animation "a_lookD" "anims\a_head_rot_dwn" {
  • fps 24
  • weightlist "weights_layer_Look"
  • }

  • $animation "a_lookDR" "anims\a_head_rot" {
  • fps 24
  • weightlist "weights_layer_Look"
  • }

  • $animation "a_lookDL" "anims\a_head_rot" {
  • fps 24
  • weightlist "weights_layer_Look"
  • }

La línea,

  • weightlist "weights_layer_Look"

se refiere al nombre de laweightlist que creamos antes y le dice a la animación qué huesos deben ser afectados. Si haces más weightlist por cualquier razón asegúrate de darles a cada una un nombre único.

Si las animaciones y la weightlist que creaste usan los mismos nombres que la mía puedes simplemente copiar lo siguiente en tu .qc:
Creación de una secuencia de mezcla "blend"
Con todas las animaciones añadidas podemos usarlas para hacer una secuencia de mezcla. Esto le dirá al juego que mezcle las animaciones en función del ángulo en que se mire en el juego:

  • $sequence "Look" {
  • "a_LookUR"
  • "a_LookU"
  • "a_LookUL"
  • "a_LookR"
  • "anims\a_head_rot" //a_head_rot animación de mirar al centro
  • "a_LookL"
  • "a_LookDR"
  • "a_LookD"
  • "a_LookDL"
  • blendwidth 3
  • blend "aim_yaw" -66 66
  • blend "aim_pitch" -66 82
  • fps 24
  • loop
  • hidden
  • weightlist "weights_layer_Look"
  • }

Es muy importante que las animaciones se añadan en el orden correcto como se muestra arriba.

y que añadas una animación en donde dice anims\Reference para que no haga fallas y se configure correctamente
Aplicar el Aimlayer
Por último, es el momento de aplicar el aimlayer a sus otras secuencias. Puede hacerlo añadiendo la línea

  • addlayer Look

a cualquier secuencia. Look es el nombre de la secuencia de "blend" que hemos creado en el paso anterior.

Aquí hay un ejemplo de cómo se ve esto:

  • $sequence "idle_all_01" {
  • "anims\a_idle.smd"
  • activity "ACT_HL2MP_IDLE" 2
  • fadein 0.3
  • fadeout 0.3
  • fps 30
  • loop

  • addlayer look

  • }

Si una secuencia no incluye la línea addlayer no utilizará el aimlayer, por lo que hay que añadir la línea a cada secuencia que se quiera utilizar.
Notas finales
Dado que la línea de addlayer te permite elegir qué secuencias utilizan tu aimlayer, puedes hacer múltiples aimlayers diferentes para tu modelo y hacer que diferentes secuencias los utilicen. Por ejemplo, mi modelo utiliza capas de puntería distintas y para la cápsula de prisioneros:



  • $sequence "aim_y_pistol" {
  • "aim_pitch_up"
  • "aim_pitch_down"
  • blend "aim_pitch" -66 82
  • blendwidth 2
  • fadein 0.2
  • fadeout 0.2
  • hidden
  • addlayer look
  • }

  • $sequence "aim_x_pistol" {
  • "aim_yaw_right"
  • "aim_yaw_left"
  • blend "aim_yaw" -66 66
  • blendwidth 2
  • fadein 0.2
  • fadeout 0.2
  • hidden
  • addlayer look
  • }

Si quiere hacer varias capas de puntería, sólo tiene que volver a seguir los pasos de esta guía, pero utilizando nombres diferentes.

También es posible añadir varias capas a la misma secuencia. Esto es útil si haces capas de puntería para sostener armas y quieres que tus secuencias usen la misma capa "Look" pero diferentes poses de puntería de armas.