Historia procedimental
Esta corta animación es una continuación de la anterior escena realizada con OpenGL en Golang.
Para esta se creó una nueva forma "Cápsula" de la misma forma en que se han creado todas las anteriores. Esta se crea de forma procedural, recibiendo como entradas la altura y los radios inferior y superior. Esta nueva forma se usó para el cuerpo y brazos de la persona que se puede ver en la animación.
Por comodidad se trasladaron todas estas funciones de creación de vértices, junto a algunas funcionalidades de creación e inicialización de la ventana, a una librería externa, se puede visitar aquí.
Para el control de las distintas animaciones que se observan en el video, se crearon dos listas, en las que se guardaron los tiempos de duración, en segundos, de cada animación y las funciones que generan cada animación con respecto al momento en el tiempo dado.
Para que estos tiempos pudieran ser medidos en segundos y que fueran independientes de la velocidad del loop principal, se dio uso de la hora del sistema y se normalizó este tiempo de forma que para cada animación el tiempo 't' fuera un valor entre 0,0 y 1,0
Dando uso a lo anterior se crearon cada una de las tres escenas. La animación comienza con una vista en primera persona, la persona mira alrededor y se da cuenta del pozo. Para esto y las demás escenas que involucran un cambio en la cámara se usa la función de mgl32 LookAtV, que recibe como parámetros la posición de la cámara en el espacio, la posición a la que observa la camara y la dirección que será considerada como arriba. Para esta primera escena se usaron tres curvas de Bézier para cambiar en el tiempo la posición a la que observa la cámara, siendo la última aquella donde se encuentra el pozo. Para esto se dio uso a la función BezierCurve3D, también de la librería mgl32. Luego, para enfatizar el hecho de que la persona centra su atención en el pozo se modifica la cámara de forma que muestre un encuadre más cercano de dicho pozo.
Para la segunda escena, se muestra como la persona después de percatarse del pozo, camina alegremente (tambaleando de lado a lado) hacia él con la esperanza de lanzar una moneda dentro y pedir un deseo. Esta escena se compone de tres movimientos, para mover a la persona desde su posición inicial hasta el pozo se utilizó una curvas de Bézier con tres puntos guía, para el tambaleo se usó la fórmula Sin(2Pi*[numero de tambaleos]*t)*amplitud, para así obtener el ángulo en el tiempo, y por último para cambiar la dirección en la que mira la persona al caminar se usó la fórmula de dirección de un vector tan(theta)=y/x.
Para la tercera y última escena, se muestra como la persona llega al pozo, balancea su brazo y lanza la moneda dentro, luego la persona alza sus brazos como muestra de la felicidad que le produce el haber podido pedir su deseo. Esta escena se compone de tres partes, cada una de estas consta de múltiples movimientos. Para el movimiento del brazo primero se realizó un posicionamiento de este, de forma que queda paralelo al cuerpo y apuntando hacia atrás, luego, aun paralelo al cuerpo, se rota el brazo hacia el frente. Luego de esto se realiza el movimiento de la moneda, el cual hace uso de una curvas de Bézier para realizar el movimiento desde la mano de la persona hasta dentro del pozo, al mismo tiempo en que la moneda se traslada en el espacio, gira en el eje x. Por último, se posicionan los brazos a 45 grados con respecto al cuerpo al tiempo que giran hacia el frente quedando en alto.
Al final después de crear cada vértice, dibujar cada primitiva, posicionar cada una de ellas a través de distintas transformaciones a través del tiempo, la persona logra pedir su deseo.


Comentarios
Publicar un comentario