From d1530525ca14d3585f35777104b5fb5eeb90f038 Mon Sep 17 00:00:00 2001 From: var Date: Sun, 3 May 2026 14:38:57 -0500 Subject: [PATCH] Animation blending - transition smoothly between idle and run animations - use quaternions (versors) instead of yaw/pitch/roll - hide mouse and enable free-look mode by default on startup - rotate model 180 degrees in Blender so it faces away from the camera by default - add some makefile commands --- makefile | 10 ++++- res/model/human.glb | Bin 120840 -> 159344 bytes src/camera.c | 35 +++------------- src/camera.h | 2 +- src/game.c | 63 +++++++++++++++++++++++++++-- src/game.h | 2 + src/input.c | 22 ++++++++-- src/model.c | 17 ++++++++ src/model.h | 2 + src/render.c | 96 +++++++++++++++++++------------------------- src/shape.c | 6 +-- src/shape.h | 2 +- 12 files changed, 161 insertions(+), 96 deletions(-) diff --git a/makefile b/makefile index 0aa33dc..32c22d3 100755 --- a/makefile +++ b/makefile @@ -14,7 +14,7 @@ OBJDIRS := $(patsubst $(SRC)%, $(OBJ)%, $(shell find $(SRC) -type d)) CLEANDIRS := $(addsuffix /.clean, $(OBJDIRS)); # Explicit targets -.PHONY: all release clean +.PHONY: all release clean rebuild run .DEFAULT_GOAL := all # Build executable @@ -39,3 +39,11 @@ clean: $(CLEANDIRS) rm -f $(EXE) $(REL) %.clean: rm -f $**.o + +rebuild: + make clean + make all + +run: + make all + ./$(EXE) diff --git a/res/model/human.glb b/res/model/human.glb index 75366812412d8be11171bca0a17795c168a4fbd8..485d825e34eb8a8f1a678de934ba1f74f8f834f2 100644 GIT binary patch literal 159344 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%0D~8utRtvbM_R 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 I;bPAJ0k^kz-~a#s literal 120840 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[1] = 5.8f; c->width[2] = 0.6f; glm_vec3_zero(c->velocity); - glm_vec3_zero(c->look); - glm_vec3_zero(c->up); - glm_vec3_zero(c->front); - glm_vec3_zero(c->right); - glm_vec3_zero(c->rotation); + glm_quat_identity(c->rotation); + Camera_UpdateVectors(c); } void Camera_GetViewMatrix(Camera* c, mat4 m) @@ -24,30 +21,10 @@ void Camera_GetViewMatrix(Camera* c, mat4 m) void Camera_UpdateVectors(Camera* c) { - if (c->rotation[0] > 180.0f) c->rotation[0] -= 360.0f; - else if (c->rotation[0] <= -180.0f) c->rotation[0] += 360.0f; - - c->rotation[1] = glm_clamp(c->rotation[1], -89.0f, 89.0f); - c->rotation[2] = glm_clamp(c->rotation[2], -30.0f, 30.0f); - - // calculate the front facing unit vector by yaw and pitch - c->front[0] = cos(glm_rad(c->rotation[0])) * cos(glm_rad(c->rotation[1])); - c->front[1] = sin(glm_rad(c->rotation[1])); - c->front[2] = sin(glm_rad(c->rotation[0])) * cos(glm_rad(c->rotation[1])); - + glm_quat_rotatev(c->rotation, GLM_FORWARD, c->front); + glm_quat_rotatev(c->rotation, GLM_YUP, c->up); + glm_quat_rotatev(c->rotation, GLM_XUP, c->right); + // the look vector is the position + front glm_vec3_add(c->position, c->front, c->look); - - // reset the up vector - c->up[0] = 0.0f; - c->up[1] = 1.0f; - c->up[2] = 0.0f; - // cross product points to the right, perpendicular to both front and up - glm_vec3_cross(c->front, c->up, c->right); - // pitch up or down, around the axis of the cross product - glm_vec3_rotate(c->up, glm_rad(c->rotation[1]), c->right); - // roll around the axis of the front vector - glm_vec3_rotate(c->up, glm_rad(c->rotation[2]), c->front); - // recalculate right vector after rolling - glm_vec3_cross(c->front, c->up, c->right); } diff --git a/src/camera.h b/src/camera.h index a8eefeb..7081cdd 100644 --- a/src/camera.h +++ b/src/camera.h @@ -11,7 +11,7 @@ typedef struct vec3 up; vec3 front; vec3 right; - vec3 rotation; + versor rotation; } Camera; void Camera_Init(Camera* c); diff --git a/src/game.c b/src/game.c index 36e8c00..2e9f8bf 100644 --- a/src/game.c +++ b/src/game.c @@ -1,5 +1,6 @@ #include #include +#include #include "SDL2/SDL_timer.h" #include "game.h" #include "render.h" @@ -13,6 +14,7 @@ GameState *Game_New() if (!Render_Init(gs)) return NULL; gs->running = true; + gs->input.freeLook = true; return gs; } @@ -38,7 +40,6 @@ void Game_Update(GameState *gs) Camera_UpdateVectors(&gs->camera); - const float speed = 0.3f; vec3 move, front, right; glm_vec3_zero(move); front[0] = gs->camera.front[0]; @@ -50,6 +51,7 @@ void Game_Update(GameState *gs) right[2] = gs->camera.right[2]; glm_vec3_normalize(right); + // get player's desired movement direction if (gs->input.w) glm_vec3_add(move, front, move); else if (gs->input.s) glm_vec3_sub(move, front, move); if (gs->input.a) glm_vec3_sub(move, right, move); @@ -57,15 +59,70 @@ void Game_Update(GameState *gs) if (gs->input.q) move[1] = 1.0f; else if (gs->input.e) move[1] = -1.0f; - glm_vec3_scale_as(move, speed, move); + gs->charIsMoving = gs->input.w || gs->input.s || gs->input.a || gs->input.d; + // blend idle and run animations + if (gs->charIsMoving) + { + gs->animBlend += delta / 500.0f; + if (gs->animBlend > 1.0f) gs->animBlend = 1.0f; + } + else + { + gs->animBlend -= delta / 500.0f; + if (gs->animBlend < 0.0f) gs->animBlend = 0.0f; + } + + // apply acceleration ShapeInstance *target = &(gs->testModel.instance); + float accel = 0.005f * delta; + glm_vec3_scale_as(move, accel, move); + glm_vec3_add(target->velocity, move, target->velocity); + glm_vec3_clamp(target->velocity, -1.0f, 1.0f); + + // apply velocity, make camera follow vec3 displacement; glm_vec3_scale(gs->camera.front, -30.0f, displacement); displacement[1] += 10.0f; - glm_vec3_add(target->position, move, target->position); + glm_vec3_add(target->position, target->velocity, target->position); glm_vec3_add(target->position, displacement, gs->camera.position); + // decelerate + glm_vec3_scale(target->velocity, 1.0f / ((0.01f * delta) + 1.0f), target->velocity); + + if (gs->charIsMoving) + { + // gradually rotate model to face toward direction of velocity + float alpha = delta > 200.0f ? 1.0f : delta / 200.0f; + versor velQuat; + glm_quat_for(target->velocity, GLM_YUP, velQuat); + glm_quat_slerp(target->rotation, velQuat, alpha, target->rotation); + } + + if (!gs->input.freeLook) + { + // stay within a certain angle relative to the camera yaw + const float pi = 3.14159265358979323846f; + const float turnThreshold = pi / 3.0f; + + versor camRot, inverse, difference; + glm_quat_from_vecs(GLM_FORWARD, front, camRot); + glm_quat_inv(target->rotation, inverse); + glm_quat_mul(camRot, inverse, difference); + + vec3 axis; + glm_quat_axis(difference, axis); + float angle = glm_quat_angle(difference); + if (angle > pi) angle -= pi + pi; + + if (fabsf(angle) > turnThreshold) + { + angle += angle < 0.0f ? turnThreshold : -turnThreshold; + glm_quatv(difference, angle, axis); + glm_quat_mul(target->rotation, difference, target->rotation); + } + } + Camera_UpdateVectors(&gs->camera); } diff --git a/src/game.h b/src/game.h index 5ef2d34..e2f841f 100644 --- a/src/game.h +++ b/src/game.h @@ -22,6 +22,8 @@ typedef struct typedef struct { bool running; + bool charIsMoving; + float animBlend; uint64_t previousTicks; InputState input; SDL_Window *window; diff --git a/src/input.c b/src/input.c index 85485af..e35bc52 100644 --- a/src/input.c +++ b/src/input.c @@ -48,10 +48,26 @@ static void HandleKeyUp(GameState *gs, SDL_KeyCode sym) static void HandleMouseMotion(SDL_MouseMotionEvent e, GameState* gs) { - const float sensitivity = 0.4f; + const float sensitivity = 0.01f; Camera *camera = &gs->camera; - camera->rotation[0] += e.xrel * sensitivity; - camera->rotation[1] -= e.yrel * sensitivity; + vec3 front; + glm_vec3_copy(camera->front, front); + + // extract the pitch angle and clamp it so the camera can't go upside down + float pitch = glm_deg(glm_rad(90) - glm_vec3_angle(GLM_YUP, front) - (e.yrel * sensitivity)); + pitch = glm_rad(glm_clamp(pitch, -89.0f, 89.0f)); + + // apply the new pitch using the existing "right" vector + front[1] = 0.0f; + glm_vec3_normalize(front); + glm_vec3_rotate(front, pitch, camera->right); + + // apply yaw (invalidates the "right" vector, that's why pitch is applied first) + glm_vec3_rotate(front, -e.xrel * sensitivity, GLM_YUP); + + // update camera + glm_quat_for(front, GLM_YUP, camera->rotation); + Camera_UpdateVectors(camera); } static void HandleMouseDown(SDL_MouseButtonEvent e, GameState* gs) diff --git a/src/model.c b/src/model.c index 3a9caed..456c1e9 100644 --- a/src/model.c +++ b/src/model.c @@ -87,6 +87,7 @@ Model Model_LoadGltf(char *path) printf("Loading glTF model file...\n"); Model model = {0}; model.instance.scale = 4.0f; + glm_quat_identity(model.instance.rotation); cgltf_options options = {0}; cgltf_data *data = NULL; cgltf_result result = cgltf_parse_file(&options, path, &data); @@ -217,6 +218,22 @@ Model Model_LoadGltf(char *path) printf("skin: %s, joints: %d\n", skin->name, skin->joints_count); model.jointMatrices = calloc(skin->joints_count, sizeof(mat4)); + for (int i = 0; i < data->animations_count; i++) + { + cgltf_animation *anim = data->animations + i; + + if (0 == strncmp(anim->name, "run", 3)) + { + printf("run animation: %s\n", anim->name); + model.run = anim; + } + else if (0 == strncmp(anim->name, "idle", 4)) + { + printf("idle animation: %s\n", anim->name); + model.idle = anim; + } + } + for (int i = 0; i < skin->joints_count; i++) { cgltf_node *joint = skin->joints[i]; diff --git a/src/model.h b/src/model.h index 66676cc..5e79fce 100644 --- a/src/model.h +++ b/src/model.h @@ -9,6 +9,8 @@ typedef struct void *data; void *skin; void *head; + void *idle; + void *run; mat4 *jointMatrices; GLuint *vbos; GLuint vao; diff --git a/src/render.c b/src/render.c index 1371e23..d3d5254 100644 --- a/src/render.c +++ b/src/render.c @@ -1,6 +1,7 @@ #include #include #include +#include #include "SDL2/SDL.h" #include "GL/glew.h" #include "SDL2/SDL_opengl.h" @@ -220,6 +221,7 @@ bool Render_Init(GameState *gs) gs->window = SDL_CreateWindow("Sandbox", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1920, 1080, SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE);; gs->glContext = SDL_GL_CreateContext(gs->window); + SDL_SetRelativeMouseMode(SDL_TRUE); printf("Created OpenGL window.\n"); if (SDL_GL_SetSwapInterval(1) == 0) printf("Enabled VSync.\n"); @@ -318,10 +320,7 @@ static void Transform(ShapeInstance *instance, mat4 *matrix) glm_mat4_identity(tempMat); glm_translate(tempMat, instance->position); - - glm_rotate_x(tempMat, instance->rotation[0], tempMat); - glm_rotate_y(tempMat, instance->rotation[1], tempMat); - glm_rotate_z(tempMat, instance->rotation[2], tempMat); + glm_quat_rotate(tempMat, instance->rotation, tempMat); vec3 scale; scale[0] = instance->scale; @@ -332,43 +331,8 @@ static void Transform(ShapeInstance *instance, mat4 *matrix) memcpy(matrix, tempMat, sizeof(mat4)); } -static void DrawModel(GameState *gs) +static void ApplyAnim(cgltf_animation *anim, float t, float blend) { - Model *model = &gs->testModel; - ShapeInstance instance = model->instance; - cgltf_data *data = model->data; - cgltf_skin *skin = model->skin; - cgltf_animation *anim = data->animations; - mat4 modelMatrix; - glm_mat4_identity(modelMatrix); - - if (!gs->input.freeLook) - { - // rotate the whole model to stay within this angle relative to the camera yaw - const float turnThreshold = 1.047197f; // 60 degrees - const float deg180 = 3.14159f; - const float deg360 = 6.28318f; - // convert camera yaw (rotation around Y axis) to radians and add 90 degrees so it aligns with the gltf model - float camYawRadsGltf = (gs->camera.rotation[0] / -57.295828f) + 1.570795f; - if (camYawRadsGltf > deg180) camYawRadsGltf = camYawRadsGltf - deg360; - float *modelYaw = model->instance.rotation + 1; - float diff = camYawRadsGltf - *modelYaw; - if (diff > deg180) diff -= deg360; - else if (diff < -deg180) diff += deg360; - - if (turnThreshold < diff) - *modelYaw = camYawRadsGltf - turnThreshold; - else if (diff < -turnThreshold) - *modelYaw = camYawRadsGltf + turnThreshold; - } - - Transform(&model->instance, &modelMatrix); - - uint64_t ticks = SDL_GetTicks64(); - float t = ticks / 1000.0f; - while (t > 1.0f) t -= 1.0f; - - // apply local transformations for each bone for the current animation frame for (int i = 0; i < anim->channels_count; i++) { cgltf_animation_channel* channel = &anim->channels[i]; @@ -406,7 +370,9 @@ static void DrawModel(GameState *gs) cgltf_accessor_read_float(sampler->output, k + 1, p1, 3); glm_vec3_lerp(p0, p1, alpha, result); // glm_vec3_copy is not used here due to potential struct alignment issues - for (int x = 0; x < 3; x++) node->translation[x] = result[x]; + memcpy(p0, node->translation, sizeof(vec3)); + glm_vec3_lerp(p0, result, blend, result); + memcpy(node->translation, result, sizeof(vec3)); node->has_translation = true; } break; @@ -417,7 +383,10 @@ static void DrawModel(GameState *gs) cgltf_accessor_read_float(sampler->output, k + 1, q1, 4); // slerp (not lerp) for rotation glm_quat_slerp(q0, q1, alpha, result); - for (int x = 0; x < 4; x++) node->rotation[x] = result[x]; + memcpy(q0, node->rotation, sizeof(versor)); + glm_quat_slerp(q0, result, blend, result); + memcpy(node->rotation, result, sizeof(versor)); + node->has_rotation = true; } break; @@ -427,7 +396,9 @@ static void DrawModel(GameState *gs) cgltf_accessor_read_float(sampler->output, k, s0, 3); cgltf_accessor_read_float(sampler->output, k + 1, s1, 3); glm_vec3_lerp(s0, s1, alpha, result); - for (int x = 0; x < 3; x++) node->scale[x] = result[x]; + memcpy(s0, node->scale, sizeof(vec3)); + glm_vec3_lerp(s0, result, blend, result); + memcpy(node->scale, result, sizeof(vec3)); node->has_scale = true; } break; @@ -435,25 +406,40 @@ static void DrawModel(GameState *gs) break; } } +} + +static void DrawModel(GameState *gs) +{ + Model *model = &gs->testModel; + ShapeInstance *instance = &model->instance; + cgltf_data *data = model->data; + cgltf_skin *skin = model->skin; + mat4 modelMatrix; + glm_mat4_identity(modelMatrix); + Transform(instance, &modelMatrix); + + uint64_t ticks = SDL_GetTicks64(); + float t = ticks / 1000.0f; + while (t > 1.0f) t -= 1.0f; + + // apply local transformations for each bone for the current animation frame + ApplyAnim(model->idle, t, 1.0f); + ApplyAnim(model->run, t, gs->animBlend); if (!gs->input.freeLook) { // make head look where camera is looking cgltf_node *head = model->head; - vec3 a, b, yAxis; - glm_vec3_zero(a); - glm_vec3_zero(b); - glm_vec3_zero(yAxis); - yAxis[1] = 1.0f; - a[2] = 1.0f; - glm_vec3_rotate(a, model->instance.rotation[1], yAxis); - b[0] = gs->camera.front[0]; - b[2] = gs->camera.front[2]; + vec3 modelFront, camFront; + glm_quat_rotatev(instance->rotation, GLM_FORWARD, modelFront); + glm_vec3_copy(gs->camera.front, camFront); + modelFront[1] = 0.0f; + camFront[1] = 0.0f; versor desiredRotation, temp; - glm_quat_from_vecs(a, b, desiredRotation); - for (int i = 0; i < 4; i++) temp[i] = head->rotation[i]; + glm_quat_from_vecs(modelFront, camFront, desiredRotation); + memcpy(temp, head->rotation, sizeof(versor)); glm_quat_mul(temp, desiredRotation, temp); - for (int i = 0; i < 4; i++) head->rotation[i] = temp[i]; + memcpy(head->rotation, temp, sizeof(versor)); } // recalculate the joint matrices diff --git a/src/shape.c b/src/shape.c index 4f8024a..8e3e7da 100644 --- a/src/shape.c +++ b/src/shape.c @@ -32,7 +32,7 @@ Shape *Shape_New(GLfloat *vertices, int numVertices, GLushort *indices, int numI instance->scale = 2.0f; instance->collisionRadius = 1.0f; glm_vec3_zero(instance->velocity); - glm_vec3_zero(instance->rotation); + glm_quat_identity(instance->rotation); float *textureId = shape->instanceData + (i * 17); *textureId = 6; mat4 *matrix = (void*)(textureId + 1); @@ -105,7 +105,7 @@ Shape *Shape_MakePyramid(int numInstances) instance->scale = 1.0f; instance->collisionRadius = 1.0f; glm_vec3_zero(instance->velocity); - glm_vec3_zero(instance->rotation); + glm_quat_identity(instance->rotation); float *textureId = shape->instanceData + (i * 17); *textureId = i; mat4 *matrix = (void*)(textureId + 1); @@ -154,7 +154,7 @@ Shape *Shape_MakePlane() instance->scale = 1.0f; instance->collisionRadius = 1.0f; glm_vec3_zero(instance->velocity); - glm_vec3_zero(instance->rotation); + glm_quat_identity(instance->rotation); float *textureId = shape->instanceData + (0 * 17); *textureId = 5; mat4 *matrix = (void*)(textureId + 1); diff --git a/src/shape.h b/src/shape.h index c7dd1d4..332c240 100644 --- a/src/shape.h +++ b/src/shape.h @@ -11,10 +11,10 @@ enum typedef struct { vec3 position; - vec3 rotation; vec3 velocity; float scale; float collisionRadius; + versor rotation; } ShapeInstance; typedef struct