Here’s a classic model dragged out of retirement. It’s a first person weapon model of a grenade launcher. At the time I think it was inspired by the Natural Selection grenade launcher, and features a large rotating drum after that model.
When I started this model (about a decade ago) the model had a full colour skin, where the body was painted in ghastly, garish red. Coming back to this model today, I had to change that, so I did a quick palette shift to a much less offensive beige. Since I made the switch using QME, I’ve ditched the full colour skin, and I don’t think we’ve lost much in doing so.
The model has one animation sequence – the attack animation, plus a standing pose. This animation is unfortunately not interpolation friendly. The empty chamber on the drum is a permanent fixture, normally hidden below the stock. The plan was to have the drum spin instantly clockwise to expose it on the moment of firing, and then animate the rotation anti-clockwise to return to idle. Engines with interpolation expose this clockwise rotation, and makes the whole thing ugly.
Fitzquake saves us here by disabling weapon interpolation when a muzzleflash occurs. In other engines, your only option might be to split the model into two files, one containing just the idle animation and the other containing the attack first and the idle frame at the end. On the first frame of the attack animation, rather than changing the weapon frame, you change the weapon model to the attacking variant, thereby avoiding interpolation. If I was designing this model today, I’d probably rethink this aspect of the design, but since it’s an old model we play the hand we’re dealt.
Another aspect of this model exposed by its age is found in the vertex normals. At the time I didn’t have a proper grasp of how they worked, and I did a great deal of the work on this model using QME. Because of how the skin was unwrapped, QME smoothed most of the surfaces individually, making the model look very angular. To fix this before release, I concocted the python script included with the model. It uses the qmdl module, and averages the normals on all coincident vertices. The script can be used on any model, so even if this model doesn’t float your boat, you might want to pick it up just for that!