Reinventing 3d animations


Imagine your engine has no native animations support and you'd like to animate stuff while keeping the things as simple as possible. I think most modern games use skinned skeletons approach which is versatile but quite complex to implement, so that's probably not what you'd want to do.
For Octohill after some trials I've decided to do something simpler, since all the models in the game are low poly and bones don't really bring a lot of value there. Now, for every animated model I do the following:

  1. Save base mesh as OBJ model
  2. For every animation frame, save current vertex positions (like OBJ sequences but with faces/normals/uvs etc omitted)
  3. Load one single mesh to GPU
  4. In rendering thread, calculate new vertex positions (by interpolating between frames) of this mesh and update them in GPU
  5. Render this single mesh for every object that uses the model

This is somewhat similar to the good old morph targets, with multiple frames and instancing on top. While it may seem very simple it actually has very little overhead and allows me to smoothly animate tens of thousands of objects with thousands polygons each, without adding the complexity of the bones and skinning process:



The work is still in progress, but you can expect people, vehicles and trees to be properly animated with the next major update!

Get Octohill Ski Tycoon

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.