Unity: Applying and Adjusting Model Makeup at Runtime

I’m working on a Unity project where I fetch a dynamic 3D model from an API, which can be different for each user. My goal is to allow users to apply and adjust makeup to the model (face, eyes, lips) in real-time during runtime.

What I want to achieve:

Enable users to add, remove, and adjust makeup in real-time (e.g., colors, textures, opacity) to dynamic 3D models. Provide a variety of makeup options (e.g., eyeshadow, lipstick, blush, etc.). Create an intuitive UI for selecting and adjusting different makeup options. Ensure that the app performs well on both Android and iOS devices

Challenges:

The model is fetched dynamically and is different for each user. I need to apply makeup textures/materials specifically to face regions (e.g., lips, eyelids) without knowing the exact model details in advance.

  • What I’ve tried:

I’ve successfully retrieved the 3D models from the API and displayed them in Unity. I have applied static materials and textures to fixed models, but since the models vary for each user, the makeup doesn’t always align with the model’s facial features. I’ve experimented with Unity’s SkinnedMeshRenderer and material properties to dynamically change textures, but I’m struggling to properly target specific regions (e.g., lips, eyes) on varying face models.

  • What I’m expecting:

I want a solution that can dynamically apply makeup to specific areas (e.g., lips, eyelids) on any 3D model, regardless of variations in model structure. The makeup should be adjustable (colors, opacity, etc.) and should smoothly adapt to different models. I’m looking for efficient techniques to ensure this works on mobile devices without performance issues.

If this „adaptation“ is based on bones then all models need to have the same bone structure. If this is not the case at best you can write different code paths for each commonly found bone setup. But if these are all over the place using different number of bones, orientation, even names, then you‘ll work on this forever and it will still not work satisfactory. Unfortunately there is no commonly accepted standards ffor bone hierarchies.