|
|
@ -4,9 +4,9 @@ |
|
|
|
* |
|
|
|
* LIMITATIONS: |
|
|
|
* - Only supports 1 armature per file, and skips loading it if there are multiple armatures |
|
|
|
* - Only supports linear interpolation (default method in Blender when checked |
|
|
|
* - Only supports linear interpolation (default method in Blender when checked |
|
|
|
* "Always Sample Animations" when exporting a GLTF file) |
|
|
|
* - Only supports translation/rotation/scale animation channel.path, |
|
|
|
* - Only supports translation/rotation/scale animation channel.path, |
|
|
|
* weights not considered (i.e. morph targets) |
|
|
|
* |
|
|
|
* Example originally created with raylib 3.7, last time updated with raylib 4.2 |
|
|
@ -42,7 +42,7 @@ int main(void) |
|
|
|
|
|
|
|
// Load gltf model |
|
|
|
Model model = LoadModel("resources/models/gltf/robot.glb"); |
|
|
|
|
|
|
|
|
|
|
|
// Load gltf model animations |
|
|
|
unsigned int animsCount = 0; |
|
|
|
unsigned int animIndex = 0; |
|
|
@ -63,9 +63,9 @@ int main(void) |
|
|
|
//---------------------------------------------------------------------------------- |
|
|
|
UpdateCamera(&camera, CAMERA_THIRD_PERSON); |
|
|
|
// Select current animation |
|
|
|
if (IsKeyPressed(KEY_UP)) animIndex = (animIndex + 1)%animsCount; |
|
|
|
else if (IsKeyPressed(KEY_DOWN)) animIndex = (animIndex + animsCount - 1)%animsCount; |
|
|
|
|
|
|
|
if (IsMouseButtonPressed(MOUSE_BUTTON_RIGHT)) animIndex = (animIndex + 1)%animsCount; |
|
|
|
else if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) animIndex = (animIndex + animsCount - 1)%animsCount; |
|
|
|
|
|
|
|
// Update model animation |
|
|
|
ModelAnimation anim = modelAnimations[animIndex]; |
|
|
|
animCurrentFrame = (animCurrentFrame + 1)%anim.frameCount; |
|
|
@ -85,7 +85,7 @@ int main(void) |
|
|
|
|
|
|
|
EndMode3D(); |
|
|
|
|
|
|
|
DrawText("Use the UP/DOWN arrow keys to switch animation", 10, 10, 20, GRAY); |
|
|
|
DrawText("Use the LEFT/RIGHT mouse buttons to switch animation", 10, 10, 20, GRAY); |
|
|
|
DrawText(TextFormat("Animation: %s", anim.name), 10, GetScreenHeight() - 20, 10, DARKGRAY); |
|
|
|
|
|
|
|
EndDrawing(); |
|
|
|