Whats the best way to add markings to a character and control their positions in 2.9?

Does anyone know of a good way to overlay markings, bruises, scratches, cuts and so on, on characters. I’m doing action based anime style animations. I know I can just make shape keys with separate faces, but I want more control and flexibility to put it anywhere on their body’s and cloths, plus z-fighting, I think that’s what its called, will happen. Basically I want something I can control, key frame, and flexible enough that I can put it anywhere on the mesh. Also, this has to be able to overlaid onto existing materials and textures.

Also, this for key framed decal not textures that will be a part of the character.

Example of what I’m looking for.

Load an image onto a plane then shrinkwrap it around a target. Set the material’s blend mode to alpha blend and shadow mode to none. To avoid z-fighting you can toy with the offset setting of the shrinkwrap modifier:


After that you can parent the decal to the model so that it stays in place.

What’s the best way to control shrink wrap. Not sure if I messed something up or not but when I tested it on a character mesh, it morphed it quite a bit.

I just tested it, and it doesn’t follow rigged objects well, even when parented to the object or rig.

I saw this post the other day and haven’t really found much but I thought I would mention what I did find. It seems to me there must be a way that anime creators do that…

The best way is to build them into the texture. That can be done with texture painting. If you want to animate them being added, make multiple textures and animate the fac of a MixRGB node.

Even if you choose to use another technique, it’s best to bake it to texture when you’re done.

There are other techniques. One is use object coordinates from an empty to create a decal:

I made two material pathways to demonstrate how you can nodegroup this, to chain multiple decals together.

For use with a rig, this requires controlling the empty from your armature in some way. The best way is probably an armature constraint, but no matter what you do, the texture won’t really follow the deformation of the mesh, except at the very point/plane of the empty-- it will be projected. (However, you can bake to texture, at which point it’ll be texture and follow deformation appropriately.)

You can use a UV project modifier to do something similar.

If you want to use a decal mesh, the best mesh is a copy of your existing mesh. Just select some faces, duplicate, and separate. To prevent z-fighting and clipping, throw a low-strength displace modifier on them. It will come with the armature modifier you have on your mesh; it’s best to displace after the armature.

You can do a shrinkwrapped plane, but it’s not as good as a copy of your mesh-- the differences in topology make clipping likely, and it doesn’t come with your weights. The best way to deform with your rig is to give it a surface deform modifier (after the shrinkwrap), targeting your mesh, and bind. But you can also apply the shrinkwrap, data transfer to copy weights, and then parent it to the same armature.

Decal mesh solutions have some issues. You’ll want to disable shadows, and probably enable backface culling (in Cycles, via nodes.) For Eevee, I think you’ll always have some potential problems with contact shadows and AO, that are basically unfixable, except by disabling same.

You can bake decal mesh solutions to texture with a selected-to-active bake, although you’ll probably want to bake from an active with reversed normals, and surround it with a big sphere. Baking alpha textures in Blender requires two bakes and some material edits. In addition to making this perform better, it will eliminate any potential clipping/z-fighting issues, and it will address any problems you have with contact shadows/AO.

2 Likes

Sorry for the late reply, life right now. I’ll do some tests, current I can’t truly test this out, but I’ll do some testing that I can do right now, but I think I’ll do a mix of decal mesh with shape keys and the shrink-wrap method you suggested.

I am coming across a weird problem, I keep getting “target has edges with more than two polygons” whenever I try to bind it, do you have a fix for this.

Well, does the target have any edges that connect more than two faces? (You can use a “select non manifold” operation in edit/vertex mode, with only “multiple faces” enabled in the operator panel, to find out.) If it does, then you can’t use a surface deform modifier-- but if it does, that’s going to be a problem for plenty of other stuff (like normals) and it’s something you really ought to fix.

I tested it on 2 meshes, one was a gohan model I found online while the other is a vroid model. It worked on the gohan model but not the vroid one. While messing around abit, I found that parenting the image to bone (relative) works fine, tho I still have to test around abit.