2
$\begingroup$

In Blender, I have two materials; one of them is for the face, and the other is for the lipstick.

These are the nodes of the material of the lipstick: enter image description here

These are the nodes of the material of the face: enter image description here

So I want to animate the lipstick like this that the face including lips at the first frame has only Material.001 and then the material of the lips are changing to that red material that looks like a lipstick. I don't want the face material to just change its opacity to that red material I want it to appear like this:

enter image description here

The above gif is something that I made in a 2D software to make it clear what I mean.

I tried the answer but it looks like this:

enter image description here

$\endgroup$
6
  • $\begingroup$ Do you want that "one full face turns red after the previous one" kind of effect, or is it ok if it kind of sweeps over time covering all the faces? $\endgroup$ Oct 29, 2023 at 11:52
  • $\begingroup$ This is what Imean by sweeping : i.imgur.com/F5Fr3Yn.gif $\endgroup$ Oct 29, 2023 at 12:16
  • $\begingroup$ @TheKalaakaar What you did is acceptable; you can answer if you want. But did you do it in a different way than in the below answer? $\endgroup$
    – dsa
    Oct 29, 2023 at 12:55
  • $\begingroup$ I did it in almost the same way. Only difference that I seperated the UV map's x and y coordinate and used a greater than node. The UV square stuff was the same. Well, it doesn't matter now. Hope his answer helped.Have a nice day $\endgroup$ Oct 29, 2023 at 12:57
  • $\begingroup$ @TheKalaakaar There is a problem; I did the same as the answer below, but it just changed the color, not the material itself. In the gif you showed it works the way I wanted, what am I doing wrong? I updated my post. $\endgroup$
    – dsa
    Oct 29, 2023 at 15:14

2 Answers 2

2
$\begingroup$

This is what I did:

Just like in the answer provided by moonboots I made the UVs and straightened them out with the UV Squares addon. Now I laid that island in a way that it covers the Y-axis of the UV space from 0-1. Like this:
enter image description here

Next, in the shader, I seperated the Y-axis of the UV map and used a Less Than Math Node to get a mask. Now I simply used this mask as the factor for a mix shader node. In moonboots's answer, he plugged the colour output from his colorramp into the base color of the principled bsdf. But this meant that there is only one single shader. This was probably the problem you are having. Anyways this is the node setup: enter image description here

And the final output:

enter image description here

Note: A few other things which might mess tihngs up:

  1. I noticed that you were using a texture for the first material. If you really need it, then create a second UV map and use it for all the UV square hulabaloo
  2. In the mix shader, the red one is your metallic lipstick thingy material and the skin coloured one is the exact same material as the one in the first slot.(Atleast that is what is shown in the gif provided by you) Make sure all the values match, or else it will look different.
    In case you do want it to look different, you can. Obviously no issues with that.
$\endgroup$
1
  • $\begingroup$ This was the way I did it. I guess you wouldn't strictly need a second UV map, if important for economy.. you could, say, map the lips lined up along the bottom of UV space, mask out 'Y<whatever' in another mix to reserve that region for the lips, and animate their threshold in X, without affecting the rest of the texture. $\endgroup$
    – Robin Betts
    Oct 29, 2023 at 18:47
1
$\begingroup$

Select the lips and give them another material with a ColorRamp that has both the skin color and the lips color, create a seam where it is supposed to cut, unwrap, enable the UV Squares addon and in the UV Editor> N panel > UV Squares, click on the To Grid By Shape button:

enter image description here

Now when you move the Location value of the Mapping node you can make the lips color progress:

enter image description here

$\endgroup$
1
  • $\begingroup$ the master strikes back again... +1 $\endgroup$
    – Chris
    Oct 29, 2023 at 14:53

This site is temporarily in read-only mode and not accepting new answers.

Not the answer you're looking for? Browse other questions tagged .