SkinnedMeshRenderer, manual updates?

Is it possible to manually select when the SkinnedMeshRenderer updates the mesh? I would like to update “less important” models every 3-4 frames instead of every frame for performance reasons (this is on the iPhone, but the same might apply to other platforms). Since we can’t get the output of the SkinnedMeshRenderer (right?) there is no way to cache the result.

through bruteforce … you could pause - unpause it

but the overhead from that might potentially be higher than just animating it.

and no you can’t cache the output but its also no problem as the low end iphones do the animation through using the VFP which helps a lot there.
Also its with iphone targeted models not that heavy actually. just ensure that you remain on 1 to at max 2 vertex weights and no overly deep hierarchies

what you also can do but thats near granted the thing with the worst performance, is driving the animation manually through bone rotations as the skin will update along it

I did some more checking, and it seems the iPhone version skins meshes that are visible even when all animations are stopped. There is no penalty for skinning in the profiler on MacOS X. Just using the standard bind pose and a mesh renderer instead gives much better performance on the iPhone.

thats because if you cut the skinned one its no longer skinned. if you altered the bones, the skin would ignore it

if the difference though is drastic I would check if the model is really iphone optimized (<= 20 bones, 1-2 weights per vertex at max, model not too detailed)

also on an iphone 3GS+ it will have a heavier impact as those have no VFP anymore, they emulate VFP through the cpu so if you are cpu restricted in some form, it will have a higher impact.

all that said, its hard to say much more here, as “much better performance” does not imply much.
20-30 FPS is where you will end, above is rare unless its a simple game and you on an A4 based device

Sorry, I wasn’t clear enough what I was doing (and maybe hoping for).

In a perfect world, once the mesh is skinned it wouldn’t need to be updated again until any of the bones changes (i.e. the animation is playing again). If the skinning is done to a VBO or similar that should yield performance at least in the ballpark of a static mesh when the animation is not playing. That seems currently not to be the case on the iPhone, performance is the same regardless of the animation playing or not. The difference is 60 fps on the static meshes versus around 30 fps on the skinned ones. If we could skip skinning/upload every 4 frames for example that might be a welcome boost in performance.

We are testing on an iPhone 4 currently.