I was brought on to develop a flexible 3D modeling and texturing system for Tom’s of Maine, starting from a set of flat vector illustrations that had originally been created in Adobe Illustrator. The goal wasn’t just to recreate the product in 3D, but to build a system that could scale across multiple product variations while maintaining strict brand and color accuracy.
The first challenge was translating 2D production artwork into usable 3D assets. I began by extracting and rebuilding the label designs directly from the original vector files. Because this was a consumer product with established brand guidelines, PMS color accuracy was critical. However, the color space didn’t translate cleanly from Illustrator into a 3D environment, which introduced noticeable inconsistencies. A lot of the colors appeared washed out aside for the main barrel.
To solve that, I moved into Adobe Substance Designer with its simulated PMS engine, where I could more precisely control color values and build a material pipeline that respected the original PMS targets. I exported a series of masks from Illustrator to separate white ink, fragrance-specific colors, and the embossed/bump details; then recombined them procedurally in Substance Designer. This allowed me to rebuild the labels in a way that preserved color fidelity while also adding the physical nuance needed for realistic rendering.
On the modeling side, there was no existing 3D asset for the product, so I built it from scratch. I purchased a physical unit and reconstructed it using a micrometer to capture accurate dimensions. It included details that are easy to overlook but make a difference in motion and believability (wall thickness, the number of notches in the bottom dial, and the incremental rise of the product per rotation). While some of those mechanics were exaggerated for the animation, the underlying model was grounded in real-world measurements.
Given the number of product variations, I didn’t want to treat each one as a separate asset. That would have required creating a different Substance Painter file for each fragrance and would have slowed down production. Instead, I built a procedural system inside Cinema 4D using Xpresso and User Data. This allowed me to create a centralized control interface where a user could select a fragrance from a dropdown menu, and the system would automatically update the corresponding materials, adjust null colors, and update viewport text for quick identification.
The result was a scalable, production-friendly setup that reduced redundancy and made it easy to manage multiple SKUs within a single scene. It also gave the team a more efficient way to iterate on look development without having to rebuild or relink assets each time.