[Algorithms] Skeletal Character Animation with Mesh Interplation?
Brought to you by:
vexxed72
|
From: Bass, G. T. <gt...@ut...> - 2000-11-19 17:37:35
|
List folks, I know two common forms of character mesh animation are quake-style mesh interpolation in which each animation keyframe is stored as a complete set of vertices, and half-life-style skeletal animation in which only the bone transforms are stored per keyframe. I'm guessing most skeletal systems interpolate a skeletal pose from the nearest two keyframes every time an animation frame is rendered, but I'm curious if there may be a cheaper alternative that combines the best features of both methods. I'm not sure if the following is a widely used technique, but it just occurred to me, so I thought I'd suggest it to the list. Consider this: every few frames, perhaps every 1/10 second, the skeletal system is used to create a complete target mesh for the next skeletal keyframe, then as each frame is rendered the output mesh is interpolated nearer the keyframe mesh until they are the same, then a new target mesh is created for the next skeletal keyframe. This would double the storage needed for each output mesh as compared to a pure skeletal approach, but the per-frame computations could be far less, and there wouldn't be nearly the kind of memory demand one sees with pure mesh interpolation. Obviously there are some downsides to this. If you only generate target meshes once per keyframe, then you can only mix multiple skeletal animations on exact keyframe boundaries, although some skeletal solutions may already have this limitation. Obviously the system becomes less efficient if you need to switch animation sets between keyframes, though perhaps still more efficient than pure skeletal animation except in the unlikely worst case scenario in which the animation set changes every single frame. Anyway, I thought this idea may help reduce CPU usage when simulating environments with large numbers of skeletal system characters. As usual the price of reduced CPU usage is more memory usage. Any comments on this? Is anyone already doing this? Regards, Garett Bass gt...@ut... |