I've seen lots of imitation tattoos on film, both live action and CG, which fail to capture the various phenomena involved in tattoo interaction with skin over time; imitation tattoos often suffer from epidermal appearance, crisp lines, even color distribution, lack of discoloration outside the tattoo region, and unrealistic color palettes. I decided to build those parameters into a simple procedural shader that could be run on any base tattoo image.
The parameters imitate the following phenomena:
- Blowout: When ink is deposited too deeply, a portion reaches the hypodermis and dissipate significantly, leaving shadowy traces in the region of the tattoo.
- Age: As tattoos age, pigment deposits may loosen and shift over time, blurring and wavering previously crisp demarcations.
- Healed: When a tattoo is first deposited, the epidermal layer also holds pigment; while the pigment remains in the dermis, it's expelled from the epidermis during the healing process, giving the healed tattoo an appearance of reduced ink saturation.
- Ink color: Some pigment hues, due to their chemical formula, just aren't viable for settling into the skin long term. This parameter ranges over a spectrum of viable ink candidates.
A challenge of this process was integrating image-level distortion into procedural shading in the Maya-to-Arnold pipeline. Because M2A generates texture files from images as an intermediate rendering step, directly editing the underlying images prohibited real time interaction with the renderer. My solution was to run a script that generates and links images with the extremes of blowout and blur baked in, and to allow the parameter sliders to drive interpolation between the images rather than direct image manipulation.