# Way to color shade selected object

Is there possibility to get color overlay over selected object (in object mode). Just like when you select something in edit mode.

Default indication is border over mesh, but this can be very unclear in some situations and you end up tab-ing into edit mode or looking in scene graph to see which mesh have you selected.

One work around for the problem of not being able to see which mesh is selected (because the edges are blocked from view); is to turn on display Wire.

In the Properties window on the Object tab, under the Display category there are several options for different things that can be displayed in the 3D view along with the object. Check the button for Wire and Draw All Edges, then the edges will be overlaid on on mesh, which when selected will change to be the selection color.

I have created an addon called Selected Wireframe that will turn on Wire and Draw All Edges for all the selected objects. It will respect the object's wire and Draw All Edges settings, and leave the object unchanged when not selected.

Usage is simple, after installing and enabling the addon, just click the Show Wire button in the Tools tab of the Tool Shelf. Then when you do not want the wirefrmes displaying on the selected object, click the Hide Wire button in the same place.

Paste this into text editor and run it, it will switch an orange material based on your selection.

import bpy

mat = bpy.data.materials.new(name="Selected")
mat.diffuse_color = (1,0.5,0)

def sel_handler(scene):
for ob in [o for o in scene.objects if o.type=='MESH']:
if ob.select:
if len(ob.data.materials):
ob.data.materials[0] = mat
else:
ob.data.materials.append(mat)
else:
if len(ob.data.materials):
ob.data.materials[0] = None

bpy.app.handlers.scene_update_pre.append(sel_handler)


It will override your materials though, so be careful.

Another possibility would be to draw with bgl module over viewport what is selected, but because it would be in python the performance on high-poly meshes would be superslow..

• Would have written a script as well but it would be a pain to get it working "properly". This breaks when you look through the camera or select an object that you can't apply materials to. Also not possible to switch the current material with the object selected. Perhaps have it get the current material if any and push it back when the object is deselected. Messy to work with outside of simple test cases. – iKlsR Jan 24 '15 at 19:13
• Yup I kept it just super-simple, the material switching is not a good idea at all, even done properly. Best would be to implement in bgl or to fork blender and do it properly. – Jaroslav Jerryno Novotny Jan 24 '15 at 19:17

In situations like this I find quickly toggling wireframe mode (Z) very useful:

There exists no builtin option to change the overlay color of the selected object except in object mode, at most you can change the border color in your user prefs.

One alternative is to change the object color in the Options panel under Display and then create a material and under its Options tick Object Color.

The few extra clicks is slightly a bit tedious in my opinion but you can use the same material when rendering, you just have to untick Object Color in the material settings so it doesn't interfere. This process could also be converted to a script to make it more efficient.

• hmm. I don't know if there s no way. I accidentally did it once. let me check it out to see... – Scalia Jan 24 '15 at 20:19
• @VinceScalia it was with a MatCap material in previous versions of Blender, wasnt it.. – Jaroslav Jerryno Novotny Jan 24 '15 at 20:26
• @Jerryno I have no idea. it was a mistake and I couldn't turn it off. – Scalia Jan 24 '15 at 21:22
• @VinceScalia More than likely matcap before 2.71. It's not possible to change the overlay color in object mode. – iKlsR Jan 24 '15 at 21:56