¿Las animaciones de Minecraft están codificadas en el juego? [cerrado]

12

Me gustaría saber cómo funciona el sistema de animación en Minecraft. Tengo la sensación de que todas las turbas están codificadas en el juego. ¿Notch realmente se sentó allí y creó las matrices para todos los huesos de animación a mano?

Me gusta recrear juegos por diversión, así que me gustaría saber cómo hizo esto. Además, si realmente los codifica ... ¿hay una mejor manera?

Radenon
fuente
2
¿Por qué crees que puede tener animaciones codificadas?
Ali1S232
Parece que esta pregunta solo es respondida por Notch.
MichaelHouse
99
Más al punto, ¿por qué te importa cómo lo hizo Minecraft? ¿Tienes una idea sobre cómo lograr lo mismo de otra manera?
Tetrad
1
minecraftforum.net/topic/361430-181smp-smart-moving El creador de este mod podría tener una respuesta para usted, pero la animación no es un área del código de Minecraft que he revisado antes.
James
1
He revisado el código MCP antes, y estoy 99% seguro de haber visto las animaciones codificadas. Sin embargo, ya no tengo Minecraft (o incluso Eclipse) para verificar.
BlueRaja - Danny Pflughoeft

Respuestas:

18

Como han dicho otros, sí, los modelos y las animaciones están codificadas. Si desea ver cómo se hizo esto, vaya al wiki de Minecraft Coder Pack .

El paquete fue creado para ayudar a los creadores de mods a descompilar, cambiar y recompilar las clases de Minecraft. Las instrucciones se incluyen en los archivos Léame que vienen con el paquete. El paquete contiene scripts para descompilar, recompilar y volver a confundir el juego y el servidor.

Las clases que querrá ver son: ModelBase, ModelBiped y ModelRenderer.

ModelBiped contiene las siguientes funciones que realizan las animaciones humanoides:

public void render(Entity entity, float time, float f1, ...)
{
    setRotationAngles(time, f1, ...);
    ...
}

public void setRotationAngles(float time, float f1, ...)
{
    ...
    bipedRightArm.rotateAngleX = MathHelper.cos(time * 0.6662F + 3.141593F) * 2.0F * f1 * 0.5F;
    bipedLeftArm.rotateAngleX = MathHelper.cos(time * 0.6662F) * 2.0F * f1 * 0.5F;
    ...
}

Los movimientos del brazo son simplemente funciones de coseno. El brazo derecho está compensado por PI para hacerlos girar en direcciones opuestas.

gráfico de los movimientos del brazo

Espero que eso responda tu pregunta =)


Si desea obtener más información sobre cómo modificar realmente Minecraft, consulte esta pregunta:

¿Cómo agrego una mafia personalizada a Minecraft?

zfedoran
fuente
Hermana! Rotación euclidiana :(.
Jonathan Dickinson
8

Los modelos en Minecraft están codificados. No existe una noción de jerarquía de bloques (solo una lista de bloques). Esto significa que las animaciones se realizan de forma procesal (de una manera muy básica) o valores codificados con interpolación.

Hay algunos editores para modelos de Minecraft como Techne o FMCModeler que permiten importar / exportar código de modelo de Minecraft para modificaciones, pero no admiten animaciones, ya que probablemente se maneja de manera diferente para cada modelo.

Aquí hay una muestra rápida generada con FMCModeler:

//variables init:
public ModelRenderer box;

//constructor:
box = new ModelRenderer(0, 0);
box.addBox(0F, 0F, 0F, 16, 16, 16);

//render:
box.render(f5);

Una mejor manera de hacerlo sería construir un modelador completo basado en bloques con algunas nociones de jerarquía de bloques para que pueda animar los modelos con fotogramas clave e interpolación.

Actualmente estoy construyendo una herramienta de construcción de juegos multijugador que hace precisamente eso (entre otras cosas, http://craftstud.io/ ). Ya permite construir modelos complejos con textura estática y hay más en camino.

Aquí hay un modelo complejo construido con CraftStudio. Como puede ver, los bloques están dispuestos en un árbol a la derecha: http://i.stack.imgur.com/FRQeV.png

Cada bloque se serializa en el disco / a través de la red con los siguientes datos:

  • Identificación única
  • ID del nodo principal
  • Posición (afecta a los descendientes)
  • Escala (afecta a los descendientes)
  • Ángulo (afecta a los descendientes)
  • Desplazamiento desde el punto de pivote
  • Tamaño de bloque
  • Desplazamiento de textura de bloque (desplazamiento de coordenadas UV para el texturizado)

Planeo agregar soporte de animación almacenando un mapa con nombres de animación como clave y una lista de fotogramas clave como valor. Cada fotograma clave se asociará con un bloque y un valor para animar. Entre los fotogramas clave, los valores deben interpolarse (ya sea linealmente para la posición o esféricamente para los ángulos, buscar lerp y slerp).

Elisée
fuente
0

Los modelos de bloques de Minecraft en realidad no están codificados en el juego a partir de 1.8 y se pueden editar usando paquetes de recursos. El sistema de modelado JSON es bastante fácil de entender y existen modelos en / models / block. Luego puede mirar el código para ver cómo interpreta los modelos JSON.

Tubular
fuente