I'm a graphics programmer but I like to dabble in modelling just to better understand how artists use the tools. For the first time, I've modelled and rigged a human character. So far I've modelled them in a SFW way, lacking genitalia, but I'd also like to use the model to render realistic nudes. How can I get both uses from my character? Ideally I'd like to be able to use the same pose on both variants.
I can think of a few options, but they all have pros and cons.
Model the genitals, then use a shape key to flatten them into the mesh. This seems most flexible, but my SFW version will have bad topology in that area because you can't change topology with shape keys.
Have the genitals as a separate object. This keeps the SFW version clean (pun intentional), but the realistic version will have intersecting geometry. Maybe that's not hard to handle if it's parented to the rig well.
Just save the two versions in different files. Then when I want to put them into a scene, I can link whichever version I want and switch between them. It seems like doing it this way I wouldn't be able to make any further changes (e.g. to fix up rigging problems that show up when I pose the character) because I couldn't make the exact same change in both files. This is a big issue for me because I'm not confident I've done a good job of the modelling and rigging.
Is there an option I've missed, or have I misunderstood one of the options? Maybe some pros or cons are much smaller than I've described and one of the options is clearly better to an experienced artist.
To answer comments: it's not an incredibly realistic model because I'm just not that good, but I'm modelling for offline rendering with a particle system for hair so I'm not worrying about polygon count. Baking the shape into a normal or displacement map might be fine for a female character but male genitals have more effect on the silhouette. I'm not really thinking of animations - more stills of static poses - but I'd like to keep open what I can try out as I go.
I know that workflows aren't really designed for going backwards and I have to commit to the polygons at some point, but I do keep having to go back when I find errors so I'd like to minimise that pain even if it limits me in other ways.