While working at the now (sadly) closed company Zydigo Technologies, I was hired to become part of a small team working under Curtis Bay (now Commercial Content Director at Nike). Bay ingeniously designed a "virtual product" concept which pioneered interactive complexity in Macromedia (now Adobe) Flash, which at that time had only the barest of rudimentary programming capabilities. By keeping track of dozens of numeric variables Flash wasn't designed to use in this manner, Bay invented a way to create fully interactive 3D models of Hewlett Packard LaserJet printers that could be disassembled on screen in order to learn how to repair various printer part malfunctions in real life.
My colleague Alejandro Cruz and some assistants painstakingly drew still pictures of the printer from a series of photographs taken of the printer from various angles on a spinning platform. Then he and I worked separately on creating virtual teardowns of different models of LaserJet printers. This was an intensely difficult process, as it required mentally tracking dozens of cryptically named variables which kept track of which parts of the printer had been removed by the user and which had not. Every time we tested these virtual printers to see if we had correctly implemented the programming, it took an hour for Flash to compile the interactive printer animation. If we made a single error, it would take another hour to build the printer again while we worked on a second assignment on a second computer as the first computer chugged away, struggling with all its RAM to rebuild the virtual LaserJet! Difficult work, but quite satisfying when all of the bugs were defeated and each project came together in the end.