Rim is supported in SpatialMaterial
, all you have to do is to enable it. It works in editor of from a script.
It shouldn't be too hard to do it with a bit of scripting:
Get all materials of your character, and enable rim on them:
extends MeshInstance
func set_rim(enabled):
for i in mesh.get_surface_count():
var mat = mesh.surface_get_material(i)
mat.rim_enabled = enabled
# + set other params if needed
However that will modify all MeshInstances
if you re-used the same mesh multiple times.
Another way is to use material_override
, which will temporarily use a different material for only one particular MeshInstance
. So you could duplicate the mesh's material, set rim params and set it as an override.
However, if your mesh has multiple materials it's a known problem: https://github.com/godotengine/godot/issues/14588
Apart from that, I'm not sure what you want to be added in the engine, the effect you posted in your screenshot can be achieved already. If what I said doesn't help you, please explain your problem better because I don't understand half of what you wrote...
If you can't find a solution anyways, you can go to the Github, do a search, explain clearly your problem, why you can't do it and why it should be built-in.