This was just a little “for fun” modeling and animation project. I’ve always been a huge fan of Nebo’s bad ass flashlights, and I got the one I’ve been waiting for them to make for years (a high lumen 16550 based light that didn’t chew up AAA’s by the ton).
It was so well designed and machined I decided to disassemble and model the whole thing (at least to the extent I could without breaking it). Armed with nothing more than Rhino 7 WIP (beta of the next rhino version) and my trusty digital calipers I measured everything down to 1/64" and built the model.
Once modeled I imported the Rhino file into Blender 2.81 & later 2.82 and started to figure out how to rig this thing. It took a fair bit of trial and error to nail down the restraints in order to pull off the assembly animation.
Since I’d literally modeled all the threads of all the various pieces it was fairly easy to figure out the rotational and locational transformations, but pulling the whole chain along for the ride as the pieces got assembled led to a whole mess of restraints the further towards the end.
What I hadn’t counted on was the rotations. The first trial renderings looked like the parts were moving backwards. A whole lot of brain cycles went into trying to figure out where I was getting bitten by gimbal lock, and nothing I tried would work. Finally when flipping channels looking for a weather update on of the off air channels was re running some western movie and I spotted the backwards rotating spokes on a covered wagon and the light went on.
Wasn’t gimbal lock at all, but the dreaded stagecoach effect. So the “nubs” around the focus ring and the mode switch were just not lining up with the frame rate and there was the problem.
So the solution was to pull down a prime numbers chart and find the closest prime number to the required degrees of rotation for a given movement with the rationale being a prime number can’t be evenly divided by anything and thus the total number degrees of rotation divided by the number of frames the rotation occurred over would always yield a different non integer value for each frame. It took a liltle experimentation to make it all come together.
Rendering was done on 3 ancient (like circa 2009) Mac Pro towers (my cheap shit render farm) that I’d put dual 6 core Xeons and a bunch of cheap recycled server pull ram in. Two of the boxes are running a pair of 4GB Gtx 970’s under Cuda, and the main box was CPU only as I had to update to a newer mac OS to run the latest Rhino, which meant a new Metal Graphics card (AMD suckage) that does neither Cuda nor Open CL. That box renders 2x+ slower than the Nvidia Cuda boxes, even though the Nvidia boxes are running 5 year old GPU’s.
Render time between the 3 boxes was about 30 hours. The blender file was 180mb, and the objects poly count over 200K.