Source SDK

Source SDK

Not enough ratings
Ajuste de proporciones en modelos de juego
By Oitnemood
Aprende a sortear las limitaciones artificiales y crear modelos de juego con sus propias proporciones únicas fácilmente cada vez.
Basado en esta guía en ingles
https://gtm.steamproxy.vip/sharedfiles/filedetails/?l=german&id=2308084980
   
Award
Favorite
Favorited
Unfavorite
Introducción y propósito
Primero hablemos de qué es este sistema y por qué existe en primer lugar. El sistema de animación de Source es tanto traslacional como rotacional. Esto significa que cada fotograma de animación le dice al hueso su ubicación y rotación en lugar de solo la rotación. Como resultado, el tamaño del modelo y las proporciones de un modelo personalizado no tienen ninguna relevancia, más bien lo único que importa es la escala y las proporciones en cada animación. Los huesos del modelo serán forzados en cualquier lugar que la animación exija, lo que significa que puede ser aplastado o estirado si es necesario si el modelo no coincide con la escala necesaria.

¿Cómo arreglamos esto entonces? Técnicamente, podría enviar un conjunto de animación personalizado para cada modelo, pero esto consume mucho tiempo y casi triplicaría el tamaño de cualquier modelo que use, lo que es extremadamente malo económicamente para los servidores que usan docenas o tal vez cientos de modelos. En cambio, podemos hacer un poco de trampa utilizando el sistema de animación delta de la fuente. Las animaciones en los juegos suelen estar compuestas por varias capas diferentes. Un ciclo de caminata en GMod suele ser una animación de 9 vías que consta de las 8 direcciones en las que puede caminar y un ralentí centralizado. Si el jugador está armado, las aimlayers, que también son animaciones de 9 vías pueden mezclarse con la animación de la caminata para que la caminata impulse la mitad inferior del modelo (por ejemplo, pelvis y piernas) mientras que la aimlayer controlará la mitad superior (por ejemplo: brazos, hombros).

Echemos un vistazo a un ejemplo:
.png]

Esta muestra muestra al jugador caminando con la pistola usada. La animación puede mezclar move_x con move_y para los movimientos, aim_yaw y aim_pitch para la dirección del objetivo, y head_yaw y head_pitch adicionales para las direcciones de la mirada. La mayoría de las animaciones probablemente no se utilizan todas a la vez, pero el motor es capaz de ello, no obstante.
Animaciones de Delta
Con la mezcla de animación explicada brevemente, echemos un vistazo a las animaciones delta. Así es como se ve una de las animaciones parpadeantes por sí sola.

.png]

Parece un poco extraño, ¿no? Primero observemos el colapso de los huesos. Esto se debe a que el modelo que se muestra utiliza el sistema de proporciones, por lo que los huesos se están moviendo. En su lugar, echemos un vistazo a cómo se ve cuando se mezcla con la animación de pose t correcta.

.png]
Tal vez ahora es un poco más fácil ver lo que está pasando.
En esta animación, el jugador mueve su cabeza hacia atrás mientras tira de parte de su parte superior con ella.
El resto de la animación es t-pose sin embargo - ¿cómo diablos funciona eso? Esta es una animación delta por lo que es construir como una animación aditiva en su lugar.
Esta animación no está destinada a ser utilizada por sí sola, sino que se puede reproducir en cualquier otra animación como un gesto.
Veamos por última vez cómo podría verse la animación cuando se mezcla con una animación estándar.

.png]
Esto parece mucho más razonable ahora, ¿no? Esta animación encaja perfectamente en la parte superior de cualquier animación actual que ya se esté reproduciendo. Esto es ideal para animaciones solo destinadas a mover una parte del esqueleto o destinadas a ser solo un pequeño gesto aditivo encima de las animaciones existentes para cosas como estremecerse cuando se dispara, nerviosismo, rascarse una pequeña picazón, estiramiento, etc.
Animaciones Delta: Mecánica
Ahora que sabes para qué se pueden usar las animaciones delta, echemos un vistazo más profundo a cómo funcionan. Para esto, veremos parte del código en el QC de ejemplo proporcionado a continuación en lugar de mirar un ejemplo más complejo. Estas son las últimas 5 líneas del control de calidad del jugador proporcionado:

$sequence reference "animations/reference" fps 1 $include "QCIs/hitboxes.qci" $include "ragdoll/ragdoll_MIKU.qci" $animation a_proportions "animations/proportions" subtract reference 0 $sequence proportions a_proportions delta

Vamos a desglosarlo. La primera línea define la primera secuencia. Este será el t-pose original del modelo inactivo. Por ahora, lo que parece no es demasiado relevante aparte de saber que es solo una pose t estándar. Las siguientes 2 líneas no son relevantes para ajustar las proporciones del jugador, solo están en ese orden para garantizar que la 'referencia' sea la primera animación. En cambio, comencemos desde la cuarta línea. Esto es crear una animación que se usará en la siguiente línea. $ Las secuencias son las animaciones que ves en el juego, mientras que $ animaciones solo son utilizadas por el motor para manejar opciones avanzadas. En este caso, estamos definiendo la animación y seleccionando la animación delta que queremos. A continuación, resta la animación de referencia. La siguiente secuencia define la secuencia usando la animación $ anterior y la declara como una animación delta. Vamos a desglosarlo aún más.

$sequence $BASE-SEQUENCE-NAME$ "$SEQUENCE-FILE$.SMD" fps 1 $animation a_$ANIMATION-NAME$ "$ANIMATION-FILE$.SMD" subtract $BASE-SEQUENCE-NAME$ $SUBTRACTION-FRAME$ $sequence $DELTA-SEQUENCE-NAME$ a_$ANIMATION-NAME$ delta autoplay

La primera línea definirá la secuencia, enumerará su nombre y su ruta. También estableceremos una velocidad de fotogramas baja porque la secuencia que estamos utilizando es solo una pose en t de un solo fotograma. Los sistemas de animación estándar suelen tener una animación de referencia global de la que todas las animaciones delta pueden restar. Para ajustar las proporciones de un jugador, necesitaremos las nuestras, que podemos explicar más adelante. La segunda línea definirá la animación, listará su nombre, listará su ruta y luego la marcará como sustrayendo una secuencia. El número siguiente a 'restar $ sequence-name $ "es el fotograma del que se va a restar. El fotograma 0 es el primer fotograma que funciona bien para esta instancia. Esta animación $ nunca se ve fuera del motor. La siguiente secuencia convertirá esa animación $ en una secuencia $ que se puede usar en el juego y la enumera como una animación delta. ¡El indicador de reproducción automática asegurará que la animación aditiva siempre se reproduzca automáticamente sobre cualquier otra animación que sea esencial para garantizar que la secuencia se use realmente! Esto solo es necesario
¿Cuándo debe utilizar este sistema?
El sistema fue concebido originalmente como una forma de tratar las quejas con respecto a un cierto torso estirado.


Desde entonces, sin embargo, ha sido útil en muchos otros lugares, desde cambiar la altura del jugador sin necesidad de programación hasta simplemente garantizar la mejor plataforma para tu personaje. Incluso si tu personaje está muy cerca en proporciones del conjunto de animación de destino y estás bien con la altura predeterminada, puede ser una gran ayuda para aparejar áreas con huesos pequeños y condensados como los dedos.


Izquierda: primer intento de plataforma (sin proporciones)
Medio: limpieza extensa de la plataforma (sin proporciones)
Derecha: una plataforma de velocidad mucho más fácil (con proporciones)

Originalmente era una práctica común aplastar y estirar su modelo para adaptarse al esqueleto, lo que podría resultar en algunos modelos de aspecto muy extraño que también eran comunes. ¡No solo ya no es necesario, sino que simplemente garantizar mejores plataformas de aspecto también puede ser un poco más fácil! Esto se recomienda especialmente sólo para los modelos de reproductor y los NPC en los que es posible que desee más control sobre la plataforma de su modelo sin necesidad de utilizar un conjunto de animación personalizado.

También tenga en cuenta que aunque esto puede ser genial para cosas como aparejar los dedos, por lo general no funcionará con los modelos de brazos en primera persona debido a la forma en que se manejan.
Configuración preliminar
Antes de comenzar, necesitarás saber algunas cosas. Primero, necesitarás saber qué conjunto de animación reemplazarás. Esto es vital ya que estarás construyendo tu animación delta en parte a partir del esqueleto de animación. Si estás usando GMod, entonces es posible que desees saber si usará el conjunto de animación masculino o femenino. Si utiliza animaciones de jugador o NPC no es demasiado relevante ya que el esqueleto de jugador de cada género es básicamente el mismo que el esqueleto de NPC.

Querrá el bípedo estándar para el esqueleto de destino en el que se construirá su modelo. Incluiré una muestra masculina y femenina de Valve bípedo a continuación en la sección de recursos. Si necesita descompilar un modelo para obtener su esqueleto, asegúrese de usar un modelo de vainilla en lugar de uno personalizado, ya que pueden tener modificaciones en su esqueleto y los modelos que utilizan el sistema de proporciones no se descompilan correctamente y pueden necesitar sus archivos de proporciones reconstruidos.

masculino o femenino. Si utiliza animaciones de jugador o NPC no es demasiado relevante ya que el esqueleto de jugador de cada género es básicamente el mismo que el esqueleto de NPC.

Los esqueletos incluidos a continuación vienen con mallas, sin embargo, los archivos de referencia y proporciones idealmente no deberían tener malla en su versión exportada. También vienen con el conjunto estándar de Valve de $proceduralbones que se pueden quitar. Los únicos huesos necesarios en los archivos de referencia y proporciones son los huesos bípedos estándar (columna vertebral, brazos, piernas, cabeza, etc.). Cualquier $ proceduralbones o $ jigglebones no necesitan existir en los archivos de referencia o proporciones y tenerlos puede no hacer ninguna diferencia que no sea en el tamaño del archivo.

Este sistema debería funcionar en casi cualquier juego del motor source, lo que significa que puedes aplicar estas mismas reglas a casi cualquier otro del motor source, como L4D2 por ejemplo. Es posible que necesite una secuencia de referencia separada para cada sobreviviente con el que se compila el modelo.

El modelo no debe romper la jerarquía esquelética de su esqueleto de animación de destino (para GMod y L4D2 por ejemplo, no puede eliminar ninguno de los huesos de la columna vertebral o cambiar los nombres). El modelo también debe tener la misma orientación general para cada hueso. Esto significa que los ángulos no necesitan coincidir perfectamente, pero el eje correcto debe estar orientado en la dirección correcta, ya que el eje de animación está escrito en piedra para cada animación. Los huesos que enfrentan direcciones incorrectas pueden no animarse correctamente.
Configuración de bípedos "Biped"
Para esta parte asumiremos que tienes tu modelo amañado y listo para compilar. También asumiremos que está siguiendo las reglas enumeradas en la configuración preliminar anterior. Repasemos rápidamente algunas cosas con las que puede encontrarse y amplíe lo que discutimos anteriormente. Tenga en cuenta que es posible que necesite simplificar ciertas cosas para que pueda traducirlas a su propio editor de modelos.

El modelo ya está equipado con un bípedo Valve, pero utiliza sus propias proporciones y ubicaciones óseas. ¡Recuerde asegurarse de que las orientaciones óseas también coincidan!

.png]

Para este ejemplo he aislado la columna vertebral. Digamos que la animación espera que la columna vertebral se doble hacia adelante:


.png]

Para esto, todo coincide y no hay problemas. Las rotaciones pueden diferir ligeramente siempre que la orientación general coincida. Si la orientación no coincide y la columna vertebral espera inclinarse hacia adelante, ¡puede obtener algunos resultados no deseados!

.png]

En lugar de que la columna vertebral se doble hacia adelante, simplemente se rompe porque todavía se espera que se mueva en un cierto eje que ahora se enfrenta a la dirección incorrecta. ¡Asegúrese de que todas las orientaciones coincidan con las orientaciones de su esqueleto objetivo!

También discutamos rápidamente la jerarquía. Su modelo no puede bajo ninguna circunstancia eliminar los huesos en el medio de la jerarquía! Sin embargo, puedes engañar un poco si tienes que hacerlo. Para este ejemplo, veamos el esqueleto con 2 huesos de la columna vertebral en lugar de 4 (tipo de).

.png]

Puede parecer que este esqueleto utiliza 2 huesos de la columna vertebral, pero en realidad utiliza los 4.

.png]

Lo que estamos haciendo es simplemente anidar el hueso no deseado de la columna vertebral dentro de su hijo. Aquí se ve el hueso «Pelvis» (el hueso más inferior, colocado horizontalmente). Directamente arriba está el hueso de la columna vertebral (comenzando la cadena vertical y conteniendo un cono que apunta hacia abajo). Está anidado en su único hijo, «Spine1» (mostrado con la conicidad apuntando hacia arriba).

.png]

A continuación tenemos «Spine2,» el hueso más largo con una conicidad que también apunta hacia arriba. El último hueso, «Spine4», está anidado dentro del cuello y se muestra con la conicidad apuntando hacia abajo. Este modelo en particular sólo está aparejado a los huesos Spine1 y Spine2, mientras que la columna vertebral y Spine4 huesos no tienen pesos y están «colapsados» en su hueso hijo, sin embargo, el modelo no los elimina. Tenga en cuenta que aunque esto funciona, duplicará las rotaciones en la columna vertebral y puede crear una mezcla de peso no deseada y, como tal, es mejor simplemente usar los 4 huesos de la columna vertebral si es posible.
Definición del fichero de referencia del modelo
Ahora que la primera pasada del archivo de proporciones está configurada, podemos configurar el archivo de referencia. Recuerde que este esqueleto debe ser el esqueleto de destino del conjunto de animación deseado que planea usar. Para esto estamos usando el bípedo hembra GMod estándar ya que usaremos f_anm.mdl como nuestra fuente de animaciones. Básicamente vamos a tratarlo de la misma manera que el archivo de proporciones inicialmente. Retire las mallas y los huesos que no sean el ~ primario 53.

.png]

El archivo de proporciones no necesita contener una malla. Puede utilizar el archivo de referencia de su modelo como el archivo de proporciones, pero para esto vamos a hacer nuestro propio lugar, ya que nos da más control que podemos discutir más abajo. Por ahora, vamos a quitar la malla y mirar el esqueleto solo.

.png]

A continuación, podemos eliminar cualquiera de los huesos bípedos no estándar, como los utilizados como $jigglebones o los utilizados como $proceduralbones. Los huesos de apego también son innecesarios para esto.

.png]

Nuestro modelo tiene ahora unos 53 huesos para el núcleo bípedo. Una pelvis, 4 huesos de la columna vertebral, un cuello/cabeza, 4 en cada cadena de brazos, 15 dedos, 4 en cada cadena de piernas (incluyendo los dedos de los pies). Cualquier hueso adicional se puede quitar también. Antes de avanzar demasiado, ahora también es un buen momento para asegurarse de que el esqueleto esté alineado consigo mismo y apuntando adecuadamente a sus hijos. Tenga en cuenta que estos cambios también deben existir en el bípedo del modelo, ya que en esta etapa el esqueleto de proporciones debe ser idéntico.
¡Veo demasiados esqueletos con huesos torcidos como este abajo!

.png]

Ahora que este esqueleto se ha aislado, se puede guardar como proportions.smd (cualquier nombre funciona siempre que los cambios lo reflejen en su control de calidad más adelante).
Definición del fichero de referencia del modelo
Ahora que la primera pasada del archivo de proporciones está configurada, podemos configurar el archivo de referencia. Recuerde que este esqueleto debe ser el esqueleto de destino del conjunto de animación deseado que planea usar. Para esto estamos usando el bípedo hembra GMod estándar ya que usaremos f_anm.mdl como nuestra fuente de animaciones. Básicamente vamos a tratarlo de la misma manera que el archivo de proporciones inicialmente. Retire las mallas y los huesos que no sean el ~ primario 53.

.png]

Ahora que el núcleo bípedo ha sido aislado, podemos hacer una limpieza rápida si es necesario. Esto es principalmente limpieza visual que necesito hacer en mi propio extremo debido al programa de modelado que estoy usando y puede que no sea necesario en el suyo.

.png]

El esqueleto de referencia está ahora preparado. Hablemos una vez más sobre las animaciones delta muy rápido. La diferencia entre este esqueleto y el esqueleto de proporciones se convertirá en una animación aditiva. Esto significa que queremos asegurarnos de que no tenemos diferencias de rotación entre los esqueletos en esta etapa. Querrás hacer coincidir las rotaciones de un esqueleto con el otro. El utilizado técnicamente no importa, pero para este ejemplo vamos a hacer coincidir las rotaciones del esqueleto de referencia con las animaciones del esqueleto de proporciones.

En 3DS Max he guardado el archivo de proporciones como una animación que puedo importar en el archivo de referencia, a continuación, eliminar los marcos de traducción y escala por lo que básicamente sólo se lleva sobre los marcos de rotación. Si no sabe cómo hacer esto en su propio editor de modelos, rotar manualmente los huesos debería estar bien, solo asegúrese de que cada hueso del esqueleto de referencia coincida con cada hueso del esqueleto de proporciones. Echemos un vistazo a cómo se verá la diferencia.

.png]

Este es el esqueleto de referencia original sin más cambios que la limpieza.

.png]

Este es el mismo esqueleto con las rotaciones aplicadas. Observe que cosas como la longitud del hueso, la ubicación del hueso o las proporciones generales en este esqueleto no cambian, solo cambian las rotaciones. Esto nos permitirá compilar el modelo con cambios solo en las longitudes de los huesos, ya que esa es la única diferencia entre estos esqueletos en la actualidad. Podemos aprovechar las diferencias para nuestro propio beneficio más adelante.
Definición de su esqueleto ($definebones)
En esta etapa, ahora necesitamos hacer uso de la función $ definebones de la fuente para asegurarnos de que todos nuestros huesos estén definidos y en las posiciones correctas. Para ello puede utilizar Crowbar o GUIStudioMdl. Mientras personalmente realizo compilaciones estándar usando cualquier rama de studiomdl y un script por lotes, el proceso de manejo de $ definebones es un poco complicado, así que recomendaría cualquiera de los programas anteriores. Ninguno de los dos son realmente compiladores, sino que simplemente agregan una GUI a la rama especificada de studiomdl. En cualquier caso, ambos harán que definir los huesos sea mucho más fácil.

Primero, volvamos al esqueleto estándar de su modelo o al esqueleto de proporciones. No usaremos el esqueleto de referencia. Básicamente solo quieres generar una animación ficticia corta que solo mueva todos los huesos. Al ver los archivos QC Sample proporcionados a continuación, este es el archivo define_ref.smd en la carpeta de animaciones. La animación no necesita verse bonita en absoluto. Normalmente solo creo un marco con el conjunto t-pose estándar, luego otro marco creado seleccionando todos los huesos y girándolos todos en cada eje.

Para esto, realmente solo queremos asegurarnos de que estamos comenzando a usar cualquiera de los esqueletos modificados que se ajustan a las proporciones de su modelo y usarlos para mostrar al motor que todos están animados y, por lo tanto, son necesarios para el modelo. Podría ser útil crear un QC minimalista separado como el DEFINE.qc en el directorio de QC de ejemplo que se proporciona a continuación. Este control de calidad realmente solo necesita tener los directorios, las mallas del modelo, y solo debe tener una sola animación, siendo la que se crea arriba. Recuerde, solo asegúrese de que es una animación simple que gira cada hueso (idealmente en cada eje solo para una medida adicional) y al igual que el archivo de proprciones, solo necesita definir los huesos centrales. Los jigglebones no necesitan ejecutarse a través de las etapas definidas, sin embargo, tenga en cuenta que los $ proceduralbones a menudo deben definirse para garantizar que no se contraigan.

Una vez que haya creado la animación y el control de calidad para la definición, querrá ejecutarlo a través de Crowbar o GUIStudioMdl con la opción Definir huesos marcada. El resultado debería ser algo como esto:

.png]

Si tiene problemas con las definiciones, puede intentar generar este conjunto con diferentes ramas del motor si es necesario. Una vez generados, seleccione la tabla que generó y asegúrese de tener todas las instancias de $ definebones.

.png]

Cuando los tenga todos seleccionados, puede copiarlos y pegarlos en su archivo QC y asegurarse de que se eliminen todas las instancias anteriores de $ definebones. Si todavía está utilizando el QC de ejemplo proporcionado, puede pegar este código sobre la instancia existente en el archivo commonbones.qci ubicado dentro de la carpeta QCI. Antes de continuar, también tenga en cuenta que algunas ramas del motor parecen generar anomalías dentro de la tabla de definición generada. Verifique dos veces si los tiene y límpielo. Todas estas anomalías son las mismas, por lo que incluso puede usar algo tan simple como el Bloc de notas de Windows o su equivalente de Mac/Linux, siempre que tenga una función de reemplazo. Debido a que todas estas instancias se ven iguales (si ocurre), simplemente seleccione la que sea la más fácil de encontrar. Para mi ejemplo, uno se generó parcialmente dentro del comando $ definebone, lo que lo hizo mucho más fácil de manejar.

.png]
Una vez que lo haya seleccionado, use cualquier función de reemplazo en su editor de texto para reemplazar todas las instancias y simplemente deje el campo «Reemplazar con» en blanco para eliminar todas las instancias en su lugar. En la mayoría de los editores de texto de Windows, Ctrl + H abrirá la función Buscar y reemplazar. Abrirlo con el texto resaltado lo pondrá automáticamente en el campo «Buscar» y solo usará «Reemplazar todo» para borrar todas las instancias, luego verifique dos veces para asegurarse de que todo esté limpio sin anomalías de texto restantes.
.png]

Personalmente, no me he topado con una rama del motor, pero generé diferentes anomalías cada vez, así que siempre que seleccionara correctamente una instancia de la anomalía del texto y reemplazara todas, debería haberlas obtenido todas con éxito. Algunas de las sucursales más nuevas pueden no tener este problema en absoluto y Crowbar no parece tener en la rama GMod o SFM otros problemas pueden surgir en su lugar, así que experimente si debe hacerlo. Si no aparece ninguna anomalía, puede dejar la prueba tal cual.
Compilación y pruebas iniciales
En esta etapa, el modelo puede ser compilado para su prueba inicial.

.png]

Recuerde ver su registro de compilación y diagnosticar cualquier problema que pueda ocurrir si es necesario también. En el caso de que su modelo no pueda compilar y devuelva «ERROR: 'EXCEPTION ACCESS VIOLATION' (afirmación 1)», probablemente se haya encontrado con una limitación genérica del motor. Este error puede ocurrir si tiene demasiados grupos de $ bodygroups, demasiados polígonos, etc. Las limitaciones pueden variar según la rama del motor que compile. Algunos pueden ser omitidos [parcialmente], otros no.

Personalmente tiendo a compilar para SFM primero para poder usar la herramienta hlmv de SFM, que es un poco más avanzada que la de GMod. Echemos un vistazo a cómo lo hicimos.

.png]

Esta compilación en particular funcionó casi a la perfección, pero tiene un problema que vale la pena visitar. El segundo problema, el desgarro alrededor de los codos, se debe en realidad a que los codos necesitan nuevos valores en nuestro archivo VRD $ proceduralbones. Esto no está relacionado con la configuración de proporciones que hicimos, así que lo ignoraremos por ahora.

En esta etapa se puede hacer su propio modelo. Si, sin embargo, como yo, su modelo tiene algún recorte (en este caso, el tema que vale la pena visitar que mencioné anteriormente es el recorte de manos con la pelvis), podemos lidiar con eso ahora. Si tu modelo es realmente alto, tiene un vestido o tiene un problema similar que puede causar recortes, pasemos a la primera etapa de pulido.
Pulir las proporciones del jugador
Por lo general, hay un par de cosas que es posible que desee ver en esta etapa. Repasemos las animaciones delta por última vez. La secuencia de referencia se define, la animación de proporciones se define y resta la secuencia de referencia, luego la secuencia de proporciones aditivas se define y se reproduce automáticamente. Hemos construido la primera pasada asegurando que las únicas diferencias entre las animaciones de referencia y proporciones son las longitudes de hueso. Sin embargo, con eso fuera del camino, podemos hablar de usar las diferencias a nuestro favor.

En este caso particular voy a empujar cada brazo unos 10 grados. Desafortunadamente, esto modificará cada animación, así que recuerda usarla con moderación, pero esto asegurará que los brazos no se recorten con la pelvis. Así es como se vería el resultado final para eso:


Esta instancia en particular está casi terminada, sin embargo, también tenga en cuenta que para los modelos más grandes es posible que desee empujar la pelvis hacia arriba o hacia abajo para garantizar que los pies del jugador se conecten correctamente con el suelo o para garantizar que sus piernas no se recorten entre sí. Este es un ejemplo de un modelo más grande:

.png]
Crear modelos masivos es un poco más difícil, pero si empujamos la pelvis hacia arriba en el archivo de proporciones, la diferencia entre las alturas de eso y el archivo de referencia dará como resultado que la pelvis sea empujada hacia arriba en el juego para que el jugador no tenga sus piernas medio en el suelo. Esto también se puede utilizar para modelos más cortos para empujarlos un poco más hacia el suelo.

.jpg]
Hacer esto puede permitirnos crear un modelo que es correctamente ~ 8 pies de altura, sin embargo, para este caso en particular también tendremos que empujar los brazos y las piernas fuera del cuerpo un poco para reducir el recorte.

.jpg]
Ahora podemos utilizar las diferencias a nuestro favor. Recuerda que esto afectará a todas las animaciones de este modelo, ¡así que úsalo con moderación!

¡Estamos casi al final, ahora!
Polaco: Manejo de Ragdolls
No hay mucho que haya que decir aquí, afortunadamente. Una vez que todo está configurado para trabajar con el sistema de proporciones,
el ragdoll se puede construir en el esqueleto de proporciones modificadas, el mismo al que están amañadas las mallas.
Para la secuencia ragdoll puede simplemente reciclar reference.smd como fuente. Gracias a los esfuerzos de Kilburn cuando estaba con el equipo de Facepunch, los cambios en la forma en que se manejaban los ragdolls en GMod les permiten soportar este sistema mucho más fácilmente.
Aparte de construir un ragdoll en su esqueleto modificado y asegurarse de que todavía define la animación ragdoll, el resto se maneja en gran medida de la misma manera que normalmente lo manejaría.
Polaco: IKChains
Los modelos de jugador (así como los NPC y modelos similares) utilizan IKChains para ayudar a conectar sus pies al suelo.
Esto permite al jugador pararse en superficies irregulares empujando los pies hacia arriba y doblando las rodillas. Para esta instancia en particular, echaremos un vistazo al archivo ikchains.qci del archivo QC de ejemplo (ubicado en la carpeta QCI).
Echemos un vistazo a las líneas que puede necesitar modificar para esto.

$ikautoplaylock rfoot 0.5 0.1 $ikautoplaylock lfoot 0.5 0.1

El código anterior contiene los valores IK de pies utilizados para el primer modelo con el que hemos estado trabajando. De los dos valores enumerados, el primero es el valor para la posición del pie y el segundo es para el ángulo. Los modelos con cambios drásticos en la altura pueden necesitar modificar el ángulo un poco, pero la mayoría de los modelos solo necesitan modificar la posición. Si bien 0.5 funciona para este modelo, su propio modelo podría funcionar mejor con 0.25, 1.0 o 0.1, por ejemplo. Experimenta y ve qué funciona mejor.

.png]
Para obtener los mejores resultados, use hlmv con el suelo activado y asegúrese de que el valor de la posición se ajuste para que el pie se asiente lo más cerca posible del suelo con el mínimo recorte posible. Yo personalmente uso la animación «menu_walk» para facilitar su uso. Las animaciones como walk_all también funcionarán si ajusta los valores de movimiento, pero la actualización de la vista al recompilar el modelo restablecerá los valores de movimiento cada vez. También puede ralentizar la animación con el control deslizante directamente debajo de las 5 casillas que puede usar para establecer animaciones para asegurarse de que sea fácil ver dónde se conectan los pies.

.png]

Una vez que los pies se conectan correctamente, también es posible que desee ajustar la altura de la pelvis para que se asiente lo suficientemente bajo como para que las piernas ya no se rompan al intentar conectar con su IK Target en el piso.
Extras: Casco del jugador y altura de la vista (GMod)
Vale la pena señalar que L4D2 y GMod no hacen uso de los valores del cuadro delimitador de su modelo y no tienen forma de cambiar la altura de la vista. L4D2 cambio, los cambiará dependiendo del sobreviviente utilizado. GMod admite cambios a través de lua que en realidad son bastante fáciles de manejar e implementar, pero tenga en cuenta sus usos, ya que podría dar a un jugador una ventaja o desventaja basada en el modelo.

Incluiré los parámetros de GMod a continuación si desea cambiarlos de todos modos. Sin cambiar estos valores, la altura de la vista seguirá siendo la predeterminada, lo que significa que la altura que se muestra en primera persona puede no alinearse con la posición de los ojos del modelo. Lo mismo se aplica al casco del jugador, que es la caja de límite de colisión del jugador mientras está activo y vivo (no un ragdoll). Si esto no coincide, los jugadores a los que se les da un aumento significativo de altura podrían atravesar cosas como puertas, mientras que los jugadores a los que se les da una disminución significativa de altura podrían no encajar en grietas más pequeñas en las que su altura sugiere que deberían encajar sin problema.

NOTA: Si cambias la altura de visión o el casco del jugador, asegúrate de cambiar sus valores para su función de pato equivalente también y restablecerlo cuando el jugador cambie de modelo.
Notas finales
Como último recordatorio, el sistema de proporciones puede funcionar en casi cualquier juego de Source. Sólo asegúrese de que la animación de referencia comienza desde el bípedo de animación de destino. Para GMod, tenga en cuenta que este método no se puede usar en c_arms y no se puede usar con los v_arms de L4D2, ya que ambos modelos están fusionados en las animaciones del arma. Para obtener los mejores resultados, es posible que deba aplastar y estirar el modelo para que se ajuste lo más cerca posible de la malla objetivo.

También vale la pena señalar que este sistema es una forma bastante hacky de hacer las cosas en general. Los modelos pueden en su mayor parte ser tan exagerados como quieras, pero los modelos que son demasiado pequeños pueden tener problemas con las animaciones en cuclillas, lo que resulta en que estén parcial o completamente enterrados. Los modelos de armas también se fusionan automáticamente con hueso en su mano y siempre tienen el mismo tamaño, por lo que los modelos de jugador con exageraciones pesadas de una manera u otra pueden tener problemas con sus manos sosteniendo armas correctamente. He experimentado con la fijación de esto moviendo el sistema de proporciones en la animación en su lugar que parece funcionar (incluso sin ajustar manualmente todas las animaciones), pero hacerlo derrota una gran razón para el uso de este sistema en el primer lugar.

También tenga en cuenta que la descompilación de modelos con proporciones personalizadas puede requerir que los reconstruya y la descompilación de archivos de animación se desaconseja fuertemente debido a cosas como macros de animación que se truncan completamente en la compilación.

Por más larga y amenazadora que sea esta guía, la mayor parte de ella fui yo tratando de compilar años de experimentos para cubrir tantas posibilidades y errores como puedas encontrar. No soy el mejor para explicar las cosas, que es en parte la razón por la que he dejado de escribir esta guía durante tanto tiempo (junto con no esperar que esto explote tanto y ser aparentemente el único en el mundo que no usa Blender). Una vez que entiendes cómo funciona el sistema, en realidad es bastante fácil hacer casi cualquier cosa, aunque ciertamente vale la pena comprender cualquier problema o problema que este sistema tenga o no pueda solucionar.

Por último, si usted no puede entender mis explicaciones enrevesadas acepto casi todas las solicitudes de amistad y estaría encantado de ayudarle, aunque a menos que utilice 3DS Max, probablemente no puedo ayudarle con nada específico a su editor de modelos! Trataré de limpiar esta guía para hacer las cosas más fáciles de entender o agregar cualquier cosa que me haya perdido si es necesario. Los pensamientos y las críticas son siempre bienvenidos.
Recursos
1 Comments
El Weon Con Capucha 4 Nov, 2024 @ 10:50pm 
bello