While working on another VR project based on Labyrinth (1986) I realised I could create a vertex animation shader to create looping, reaching arms, based on the "Helping Hands" from the film, just not nearly as entertaining...
I was aiming for a background like asset, never expecting to be too close so textures were not high on the list, far more about the shader idea and if it would perform well at all.
Using Vertex Colours for the mesh I used Red to mask the fingers, Green to mask the hand and fingers and Blue to mask the forearm, hand and fingers I'd use each of these RGB values to move the mesh to a position where the pivot was ideal for rotating the fingers, rotate about that axis with a sine wave, mask with the Red vertex colour, move the mesh again to a pivot point for the hand, rotate about axis with the Green vertex colour as a mask, move again for the elbow, rotate with Blue vertex colour mask then move to the original position for rotation at the shoulder. I also used alpha on the fingers to offset their rotation animation so that they moved one after another.
I chose to add some randomisation based on object position to change the scale of the arms and the speed of every animation (fingers, hand, elbow, shoulder) so that all arms would feel suitably different even though they're all performing the same movement.
Lastly I did include an "evil" hue change to affect the colour of the arms for more randomisation, but I don't feel it's the best way and potentially replaced with other much cheaper methods for changing the colour of the textures.
I'm happy with the mechanics and proof of concept for this but I'd like to make them much more visually entertaining, more accurate on the fingers and see if there's any more purely shader driven animation/interactions that can be done without needing to resort to bones and animations.
I hope you've enjoyed!
Around 100 of the arms placed in a Mobile VR scene, running around 8ms for the full scene, the shader appears to be very performant.
A single arm for better visibility.
Top view of an arm.