I have a group of objects with several pieces that need to be separately positioned so I cannot join the meshes, but it creates a lot of clutter in the object search panels. I don't need to have them visible in the object selector panels at all, is there any way to hide them or at least group them in a way that they show up as a single object in search? I need to still see them in viewport and renders.

  • $\begingroup$ group them into a collection? $\endgroup$
    – moonboots
    Commented Nov 22, 2023 at 15:00
  • $\begingroup$ I did test this, it indeed works when I do: box.prop_search(context.scene.LayoutHelper, "compass_object", context.collection, "objects" In my case I need the list to display regardless of collection so I'm trying my luck using something else, but this definitely put me in the right path, although the solution would be restricted to my own custom panels. Thanks! $\endgroup$ Commented Nov 23, 2023 at 9:19

2 Answers 2


I'm not sure if it's what you want, but you can add restrictions in the outliner so only visible objects will be visible in the outliner.

enter image description here

  • $\begingroup$ Thanks, I need the objects to be hidden not in the view layer list but in object search panels, I assumed there would be a solution in Blender default UI but for now I'm just OK with having this in my custom panels, and this did give an idea to have an array of objects according to the "selectability" status. I'm not trying to store the object pointer array in my custom class but ran into a few problems but I'll post here if I can get it to work. $\endgroup$ Commented Nov 23, 2023 at 9:26

Took a while, I tried making a CollectionProperty containing objects that met my criteria and doing a prop search on it but prop search was not accepting to display those objects. An enumeration based solution seemed like too much of a hack and an overkill. Instead I stumbled upon a solution which lead me to be able to filter objects based on arbitrary criteria, simply by "poll" on a PointerProperty with a type bpy.types.Object, I could have gone with a custom property but to keep it intuitive I used the selectable state of the object.

 compass_object: PointerProperty(
     name="Target Object",
     description="Select an object to Target",

and the filter for the poll was simply:

def selectable_filter(self, object):
    return not object.hide_select

I didn't know poll could be used right in the PointerProperty that you stored the reference to the single object itself. It's counter-intuitive for me but I can understand the design decision now. This doesn't save the clutter from default Blender Panels but at least it gives me a way to filter out unnecessary things in my custom panel.


You must log in to answer this question.

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