X-Ray selection experiments build

[BUILD] Blender 3.50 Custom Build
[DIFF] 350 custom

The latest commit to that diff has some binary junk either from doing a make icons or something else icon related, so you’ll have to scroll through a few things. Go have a look at this diff to get a better idea what is going on. That one will be updated to main (currently 3.6) but doesn’t have a couple ui things in it yet. Mainly it doesn’t show the mesh options thing if you are using the move, scale rotate tools with box, lasso, or circle.

I’ll probably make some videos for the different features, so I might as well make one for this build as well. Will be a few days at least though. For now I’ll just post a few screenshots with some descriptions

First thing, I’ve setup defaults, but they won’t apply if you already have a startup file for Blender 3.5. You’d either manually set them or start fresh if interested in seeing what the defaults are. My intention is to not alter vanilla Blender, but have some optional extensions of existing behaviour.

Second thing, a lot of these options are available as either a toolsetting or from the keymap. It’s an all or nothing thing, either all from keymap or all from toolsetting / header button. There’s a Userpref -> Input -> Mouse -> Drag Select Control to choose which way you want to use. Default is toolsettings. The toolsettings / header areas should disappear when you choose keymap, and the Mesh Options is collapsable.

The keymap options will only disappear if you use one of my optional box or lasso operators that merely hide the new operator props. Circle is also there but it doesn’t work right, you’ll see if you try to use it, the radius doesn’t update. Don’t really care about this, was a last minute idea, but wanted to at least attempt to make the keymap more dynamic. You can try these by changing the keymap id, just add a _toolsetting to the end of box and lasso. From view3d.select_box to view3d.select_box_toolsetting

1. Keymap Click-Drag Direction

Simplify mouse drag direction to left/right or up/down. Userpref to choose which one, Eight = no change (N, NE, E, SE, S, SW, W, NW) and then you have either Left Right or Up Down. If you use LR or UD you will have some operators that show up in the keymap to pick the direction for that keymap item. If you have something mapped to a non-applicable direction like South-East it will tell you it doesn’t have a direction for that keymap item. The only thing in the default keymap I’ve seen that uses anything like that is view3d.view_axis that does an Alt + Middle Mouse + North etc. No big loss especially if you have a numpad available. I actually thought directional keymap options were a new thing that was done after this and this were made, but turns out these directional options have been in keymap the whole time. Not interested in using directional drag for now, but it was interesting and relatively easy except for the adding to keymap part.

2. Mesh Select Options

Edges and Faces have new ways to select them with box, lasso, and circle. If you use the toolsetting version, you have directional control available in toolsettings. This area is collapsable.


  1. Hybrid - Blender default for box and lasso. If any edge is fully inside the selection area, select fully enclosed edges. Otherwise select any edges touched by the selection area. Not available for circle.

  2. Touch - edges that are touched by the selection area, default for circle

  3. Enclose - edges that are fully inside the selection area


  1. Auto - Blender default. If in solid shading, select any faces that are touched by the selection area. If in X-Ray, select faces when the selection area touches their center / facedot.

  2. Touch - faces touched by the selection area

  3. Enclose - faces fully inside the selection area

  4. Center - faces whose center is touched by the selection area

3. Auto X-Ray
Turn on X-Ray during box, lasso, and circle. Either keymap or in a new popover next to the xray header button. Object and/or Edit mode, each tool can be opted out of individually. Optional header button that can either replace or sit next to the existing xray header button. Both this and select through have a custom icon provided by AlexeyAdamitsky

4. Select Through
Select unseen objects and mesh elements. Technically, this is just using X-Ray selection without the X-Ray visual change. In vanilla, you are forced to use select through in object, and are forbidden to use it in mesh. Now you have control over this. It works, and is located, exactly the same as Auto-Xray. If you turn off all 3 buttons in the xray popover, it will keep the xray button up there. You could have all 3 buttons visible if you wanted, but is it worth the risk? Who knows what would happen to your brain if you did this for very long? I hereby indemnify myself from all liability resulting from any psychological damage you incur should you ignore my warning and have all 3 xray header buttons visible. I will not show you this, I wouldn’t dare.

5. Viewport Facing Select
Can select mesh based on the direction of their normal, relative to the viewport. Box, lasso, and circle, near and/or xray select. This can filter for either facing toward the viewport, or away from it. It is toolsettings only, for box, lasso and circle. It is on/off for all 3 tools, but can do solid shading, xray, or both. Each mesh element (vert, edge, face) can be opted out of, and set differently. For me personally, I just wanted near select to not be so unreliable, because it almost always selects stuff that it should not. At least edge and face, verts seem good. I’ll make a video later, probably youtube for all the videos I am going to make because I can’t imagine they’d like that much space being used.


  1. Front Verts - select verts that have normals facing the viewport
  2. Vert of Front Face - select verts if they are part of a face that has a viewport-facing normal
  3. Rear Verts - select verts that have normals that are facing away from the viewport
  4. Vert of Rear Face - select verts if they are part of a face that has a normal that faces away from the viewport
  5. All Verts - select verts regardless of their normal direction

Same as above, just replace vert with edge

Front and rear faces, same as vert and edge. Then there is Faces of Front Vert and Faces of Rear Vert. Faces of front vert will select a face if it contains at least one vertex that has a normal pointed at the viewport. Faces of rear vert is the same, just in reverse.

The All Faces etc are a way to opt out of a particular mesh element being calculated. This is for performance. The way I plan on using this would be in near select only, threshold seems to matter less than previous build so I think it’s fine at 0. This doesn’t mean it isn’t effective, it just doesn’t seem as necessary to give it a little padding to filter out unwanted edges and faces. Based on a very small amount of testing though. If you set the threshold higher, the mesh needs to be facing more and more in the direction of the viewport.

This still does not do exactly what I had hoped for, with faces you are stuck in a middle ground where you have to choose between not being able to select something visible but technically not pointed at the viewport, or having a more reliable (but still selects unseen faces so who cares) version. I think I will opt for the more reliable but sometimes annoying (because you can’t select something you can see) Front Faces rather than getting the same wonky behaviour that vanilla offers, just less of it and less often. Edges are either following the lead of Front Faces (reliable but not perfect) or they will actually look at the edge normals and not select things at the edges of your mesh. Verts don’t seem to have any problems as far as selecting unseen verts in near select. So I just leave them on All to save performance. Otherwise they will behave the same as edges do, follow how Front Face works or not select things on the edges of your mesh.

This feature also does not change anything about the other side of “select what you see” being wishful thinking. Flip some normals on your mesh and turn on backface culling. You can probably “see” some interior mesh elements that are behind a now invisible bit of mesh that has rear-facing normals. Near select (aka not X-Ray) will still not select what you can see. It will hit an unseen exterior bit of mesh and stop dead without proceeding to what is actually visible.

This is just how bitmap selection works, at least for now. I would not hold my breath for anything on that front. Like I had said a while back, maybe the planned use of Vulkan will affect the 3d Viewport and maybe that would actually change at least some of the really unusable and inconsistent aspects of near select.

Regardless, I think this can serve some purpose outside of my intentions. I don’t expect to see it getting any serious consideration for real blender, but you never know.

Second picture is how I plan on using this feature, if interested.

6. Select Object Origin
Keymap or toolsetting for box and circle. Can choose to select by object origin or not. Sorry, lasso don’t work right. But there’s good news, because this addon can get you what you want for lasso object select and probably other things you might not even know you needed. I’m not the one to ask about this addon though, because I’m not very familiar with it.

7. Single-Click Radius for Mesh
Selecting mesh with a single click has a radius that is a little excessive in my opinion, too big. Now it has an adjustable range in Userprefs -> Editing -> Miscellaneous -> Adjustable Click-Select. The default value will be the same as it is in vanilla Blender, but this is an opt-in feature. Why? Because despite this large radius for verts and edges, Blender has no love for single-clicking faces. Your cursor is either on top of the face, or you get nothing. This feature will change this so the three mesh elements behave the same. The radius itself is adjustable from “act like faces and make me click exactly on top of everything” to “please send help, the selection radius is twice as big as before”. Can also disable the small bias that is given to unseleced mesh elements. That is something that likely wouldn’t even be noticed, but it is there and can be seen if you put your cursor out in empty space at the limit of the selection radius. You can select something, but until you move the cursor a little closer, you won’t be able to deselect it.

8. Repeat Tool
New operator that will invoke the previous operator. Similar to repeat last except it will invoke instead of executing. Filters out stuff like delete, tranform, select all. Probably need to go through and do a proper filter list. If you ever need to undo, it loses memory of what was done before. Has to be added to keymap manually, id is screen.repeat_tool.

Why do this? Maybe you need to perform an awkwardly mapped, or unmapped, operator a handful of times on different things. And instead of executing it exactly the same way every time, you only want to invoke it, then proceed from there. Now you can do this a little easier. Perform the more obscure operator one time, then do a repeat_tool, which would ideally be mapped to something convenient.

9. Combine X-Ray and Shading Header Buttons
I don’t need a button to tell me when X-Ray is on, it’s usually pretty obvious. I also don’t need 4 buttons to pick a shading mode, I’ll use the pie menu or a keymap. And I definitely don’t need 4 buttons to tell me which shading mode I’m currently looking at, it’s usually pretty obvious and can be done with 1 button.

So, why not take 5 buttons I don’t need, and turn them into 1 button I don’t need? To be fair, I guess I need this button for one reason. It serves as an anchor for the Shading popover, because a floating myserty popover would just be weird. It is the usual X-Ray header button, except it changes its icon to reflect which shading mode you’re in. If enabled, the 4 clickable shading mode buttons will show themselves at the top of the Shading popover should you need them.

Finally, instead of having 2 X-ray header buttons, just replace the first one with a button to tell you if Select Through or Auto X-Ray is on. Not an option if you aren’t using toolsetting to control that, but not a big deal I imagine. You could always edit space_view3d.py to put the xray options back in the shading popover and remove the xray button + popover.

10. Frame Selected Distance
Sometimes view3d.view_selected puts the camera too close. I’d like to have control over that, and maybe even have different mappings for short and medium distance. This is an easy way to avoid extra scrolling, and scrolling, and scrolling, every time I use Frame Selected to get where I want it to be. The max offset I used was 1000, which is the edge of the default clipping.

11. Zoom Speed
Sometimes, you gotta go fast. Now you can. A bit sensitive though, careful how high you set this thing.

12. Header Highlights
The header of the active windows gets brighter. Don’t need this, can adjust it to be twice as bright or turn it all the way down. Userpref -> Interface -> Editors -> Header Highlight

13. X-Ray Facedot Toggle
Operator in Viewport Overlay Popover to turn off facedots for the current shading type (solid or xray).

14. Alternate Cursor(s)
This replaces the edit mode crosshair with a larger and more open one. The vanilla crosshair blocks what I am trying to look at, so I made this. I also included a bigger one, it’s too big but I had tried to mess with the one I already have and decided to make it optional. Userpref -> Editing -> Miscellaneous -> Alternate Cursor (and Large Cursor) PrtScn doesn’t capture cursor, so I’ll make a video and use a frame of that later.

I want to expand on this, make a handful of different cursor options for different things. Not a priority, but implementing should be pretty easy. I am thinking a dropdown list of cursors for each type that have options, with an icon representing what they look like (roughly).

Making a good cursor is very nitpicky and subjective work that I’m not terribly knowledgable about. If there’s any interest in this, I will likely ask for people to submit their own designs. Serious ideas or just nonsense for fun, who cares.

15. Python Macro / Operators
I put a few things I found useful inside of space_view3d.py. This is not where they should go, and should probably be some other place. Never figured out where that place is, and since they work fine I never looked very hard.

Gizmo Tweak / Move / Scale / Rotate
Show hide the translate tools, and depending which one is visible, you can do a tweak event instead of the usual click-drag on a gizmo thing. Taken from this, but I changed the names (can be mapped to whatever you want not just Q W E R) and just add them to the keymap manually instead of having icons / buttons for them.

Box Lasso
Cycle between box and lasso select instead of tweak → box → circle → lasso. id is view3d.box_lasso

I think that’s everything. Build has been updated. Depending how far out it is, any new fixes will be implemented in 3.51

Topic split off from Decoupling x-ray and limit selection to visible.

A lot has been made out of this when we’d all be just fine with a closed source Blender. But it aint like that so here’s a new custom build.

This one is a little different because it also has the other stuff I add. I figured why not, it’s all optional. It saves me a little time as well, don’t have to go through and clean out every non-select through feature from my personal build, or apply the same select through fixes twice.


Looks interesting.

Not sure about Show/Hide functionality and prefix, usually it is Show/Show Hide/Hide functionality with no prefix, when highlighing means “show”.

Do you have linux builds?

It is general problem of an industry standards implementation - it wasn’t run by people fluent in industry standard software solutions with experience of moving from ISS to Blender, only by people who are a bit familiar with them.
As a result blender has got an imitation of ISS even without solving famous ISS issues, like avoiding cycling between selection modes you mentioned there, and at the cost of heavy unnecessary damage.
(the same thing happens when linux tries to imitate windows interface without understanding the ideas behind it)

For example, the display of facedots in solid mode was broken and remained useless for a year.
As a result of such kind of damage of different functionality our company was completely bulldozered from blender.

I appreciate you looking into issues before offering solutions.

That’s funny, the two buttons do the same thing and are right next to each other, but I didn’t think about how they work opposite from each other. I was looking at it from what is in normal blender, and trying to be more specific about what is different in this build so it was more clear what would happen. But that makes no sense, setting on should = button visible and just say what button it affects.

Just a windows build but the DIFF should work the same if you want to make one. The link has the diff itself with the icon, alt cursor, and a readme. Doing a make icons might be different in linux if there’s no inkscape for linux, but if that’s the case it should be really similar. That or just change the diff a little to use a different icon. There’s like 1 or 2 things keeping me in windows for now, but that may easilly change.

We were close to an acceptable solution but unfortunately it once again turned into a button adding competition :frowning:

There’s two different things being done here by me. This custom build is not intended for real blender. This more complex build is for me, and anyone who wants to use it. The other one, that is simpler, is what we are waiting for some further response on. I just explained how and why I did what I did when I sent that diff off for review. Go read my posts from 10 or 11 days ago if you really didn’t know or just forgot.

Feel free to ask around for more input from the devs if you want, but I think we’re meant to wait for people to have less important things to do and get back to us. I wouldn’t exactly hold my breath though, it is something that was already rejected for what I would call philosophical reasons. Which is understandable, and not a big deal. Otherwise I guess you could discuss, or implement, what could be done to align the concepts of select through with how real blender does things.

Or just use this select through (and other stuff) build, and see what weird or wrong stuff you can find with it.

Tested win version (on my work).
I would like to provide some feedback in case if it is interesting.

  1. Facedots displayed in wire/xray when they are off, but solid mode facedots are on.

So it is not “xray facedots” checkbox, what can be recognized as “display xray facedots”.
It better be named as “select faces by area” checkbox with inverted functionality, since it control only selection type, with no visual impact.

  1. “select faces by area” checkbox should be represented in select through custom setup as well, so you can control selection style by switching SThrough button, the same way it works with with “safety edges” which enforces “All edges” checkbox.

  1. In tweak mode AutoXray and Sthrough buttons are unaccessible, but functionality works if they was turned on in other mode.
  2. Autoxray jammes if selection border has no area.

Hope it was interesting. What do you think about that?


Always interested in feedback and bugs, thanks

  1. X-Ray facedots is named that way to make it shorter but it’s shortness is outweighed by being confusing. Not sure what to do about it but I had a couple different ideas.

At the moment I put it under the “Drag Select” heading to imply that it means “drag select by xray facedots” and gave it a tooltip. But it has the issue where it is easilly mistaken for toggling facedot visibility.

One solution is like you say, just call it “select face area” or similar. Now that there is also an “enclosed faces” option there’s a problem with this being two checkboxes and one has to have priority over the other. Already have this problem with “xray facedots” having priority over “enclosed face”, but at least it is sortof isolated in a specific context of needing to be in xray with facedots visible. A “face area” and “enclosed face” checkbox both existing and being on is a little worse since they both work in either mode regardless of facedot visibility.

To fix that I thought I’d make an operator for each one that will just toggle the other one off when needed, but I can’t put an operator in tool settings. It formats it all weird by putting the operator in that left side area where the headings are, and in the toolsettings panel (not the viewport one) it isn’t even clickable.

So I am thinking I will have a look at some of the other properties like the viewport shading buttons (wire solid material render) and emulating how that works. I could also expand this into some further properties. Have a “solid face” and “xray face” text label that looks like the “tool synchronization” label but with a gear next to it. If you click on the gear it expands and you can choose between area/enclosed in solid, and area/enclosed/facedot in xray.

  1. The feedback I got from having the ability to select through by facedot was negative, but I don’t see any reason not to have the option. It makes it more clear what will happen as well.

  2. Besides hiding header buttons I didn’t see any other functionality that would occur outside of box/lasso/circle select. So I put the button visibility stuff inside the viewport->view menu beneath “alternate header”. Is there anything you’ve noticed as far as autoxray, select through, enclosed faces, xray facedot select, or all edges select with tweak?

  3. Fixed this. Finally did it right by having autoxray happen only in gesture_ops instead of also inside view3d_select. This led me to actually checking that additional exit case where the seleciton box isn’t valid. Also cleaned it up by sending a handful of copy-pasted stuff that was spread out among box/lasso/circle into one thing

  1. I am not sure that enclosed faces require attention at this step, since implementing directional selection differentiation mechanics can fix this problem in a better way.
    At the moment it looks like an attempt to add manual selection differentiation mechanics, but in not centralized (dissolved across build) way.

  2. In my opinion adding such an option to select through controls will help to customize select through behaviour in a more flexible way. Select through is usually used with area selection (because occlude geometry covers facedots), while non-select through with manual/auto xray switching mechanics provide facedots acessibility and can be used with facedots selection. I think it is logical to have the ability to force area selection for select through mode.

  3. I think that AX and ST buttons should be active and work in tweak mode the same way they are active in other modes, because you have access to box circle and lasso selections in that mode via hotkeys.
    (Btw, the point of using hotkeys is immediate access, which allow you to quickly alternate them carving complex selections without selection modes switching or cycling - in BCBBC way, where LMB is for selecting and MMB is for deselecting. Such a mechanics also allow to not interrupt your attention from a model)
    This way, I dont see any differentiations between tweak mode and other (box circle lasso) modes that are needed to be hardcoded.

  4. Okay) By the way, I forgot to test that python copypasted stuff, maybe next time.

Thank you for attention.

  1. I am interested in directional control but for now I prefer a property toggle. Even if the (anti)clockwise thing gets figured out by somebody, I’d want a toggle as an option to avoid needing to draw my selection areas a certain way. Enclosed face is the only thing that is fully functional besides. Facedots not available in near select, and face area breaks in through/xray when doing intersect selection mode, with enclosed face being done as a fallback.

  2. It works this way already, where select facedots only cares about 3 things: Are you in xray? Are facedots visible in xray? Is xray facedots toolsetting enabled? AX as implemented will satisfy the being in xray, just for clarity’s sake. But yeah, I will just add the ability to do facedot select in ST mode. It might be useful for some reason but I don’t forsee what right now. It would be the same as safety edge where you could “turn the safety off” so to speak and do something that isn’t exactly expected, but potentially wanted for some reason.

  3. I did it this way to show what isn’t available in circle and also tidy things up in the toolsettings when these options aren’t applicable. Didn’t think about the direct keymap stuff, so I’ll probably just add tweak to the list of things it shows up for. I will say that calling BLC directly isn’t fully realized (header buttons won’t reliably reflect the ST or AX status if they are checking a non-select or non-select-fallback tool that is calling them) but supported because it will work fine despite potentially inaccurate header feedback.

  4. I was just talking about how autoxray is implemented. Gesture_ops calls xray to turn it on/off as needed but it isn’t just a single line you have to set up pointers and other stuff like this:

wmOperatorType *ot = WM_operatortype_find("VIEW3D_OT_toggle_xray", true);
PointerRNA ptr;
WM_operator_properties_create_ptr(&ptr, ot);
WM_operator_name_call_ptr(C, ot, WM_OP_INVOKE_DEFAULT, &ptr, NULL);

So having that copy-pasted 6 times wasn’t the right way to do it, but going back and checking stuff got me to do it better.

As far as python, the gizmo tweak stuff seems alright. Box-lasso toggle I made works ok for what I want it for which is just edit mode. Works fine for uv edit as well, just don’t assign to something like image editor where it will warn you that it doesn’t know what a box or lasso select is. Might work on a filter to eliminate that.

  1. I will just add the ability to do facedot select in ST mode

Hm, wait, thats weird…
From my experience during testing build, ST does not force face area selection, and respects “X ray facedots” checkbox, so there is already the ability to do facedot selection in ST mode if this checkbox is on. Isnt it?
Or am I missing someting?

  1. I will try to explain the issue without making it even more confusing.
    In short, there is no way to
  • make ST mode always use area selection in both Xray and Solid modes, according to classic ST behaviour
  • and make noST mode use facedots selection in Xray, and area selection in Solid, according to Blender defaults behaviour

so switching ST button you always have to switch Xray facedot checkbox as well to achieve such a differentiation, in case if user want to keep Blender default behaviour extended by classic ST mechanics.

If there will be ability to force face area selection for ST (simultaneously, both in Xray and Solid modes), such a differentiation can be achieved, and it will be possible to switch between (and indicate) those modes via single button.
Hope it sounds more clear.

I get what you are saying, and it works that way already, it’s just a little unclear what select through means. ST only happens if you are not in xray to begin with, and that’s the way it has always been. I get the confusion, based on how the 3.1 build had xray “modes” to designate which of the 3 things (default xray, auto xray, or select through header button/keymap) would make use of the space where the default xray header button is. Now in 3.2 the header situation is similar, but different. You can get the same ability to hide buttons you don’t need, but it isn’t all or nothing. It is however you want it where you could have 1, 2, or all 3 of the xray, AX, and ST buttons up there.

If you want ST to use face area all you need to do is not turn on “enclosed face”.
If you want nonST to use facedots you just have keep xray facedots visible, go into xray shading, and leave “xray facedots” enabled.
This is also the default behaviour.

I am going to alter this slightly though in an update that I will put up in about a week. Going give things a little more time to be discovered and posted here if there’s anything else people find.

It will be more of a clear and absolute choice which mesh elements will be used, instead of having to understand that enclosed faces only happen in xray if “xray facedots” is off. Also I just thought about it, I am going to get rid of the “safe edge/face” idea and just give ST its own mesh element section

Aw, so it is supposed that ST influence only Solid mode? That explains a lot.
So it looks like I am missing Xray mode support for ST then, to obtain complete classic ST mechanics…
(In software where ST mechanics is presented, it influence both solid and wire/xray modes, allowing selecting faces in both modes by area)

No, it is just something that is still being confused. Fixing that right now. Kio’s build made it where you had to have ST on to get face area select in x-ray. I have removed this requirement since very early on, if not right away. Same goes for x-ray facedot visibility, if ST was on, xray facedots would disappear. I made both of those things “decoupled” from ST.

You can select by face area in x-ray however you wish. AX, ST, both, or neither. That is why that tool setting “x-ray facedots” exists. Turn it off, you get face area select unless “enclosed faces” is on. That is the only thing that influences face selection other than ST forcing non-facedots when in solid shading, or xray facedots not being visible, or simply not being in xray.

Right now it is not obvious without reading the tooltips, but here is how it works:
If Select X-ray facedots ON, X-ray Facedots VISIBLE, Xray Shading ON - only way to get facedot selection

Then, reagardless of near/through select it checks if “enclosed face” is on, and will do either face area or fully enclosed faces. The one exception to this is face area is broken in through/xray if doing intersect selection and the workaround for making it at least do something requires a swap in/out of edges mode, which means the end result will only be fully enclosed faces.

Going to make this much more clear though, almost done and will show a screenshot later or tomorrow.


Thanks for making a build for 3.2, now I can use it for my daily work.

Also I found a bug - using auto x-ray on a curve objects turns on x-ray shading permanently instead of just while making a selection.

Should have this fixed now, checking it out led to finding this bug
It isn’t something that would be noticed unless you are in a debug build, but pretty neat.

Preview build for 3.21. Its a Lite build of RC, will upload the real thing once release probably. I’d appreciate one more check over things if anybody wants to do it.
[PREVIEW BUILD] 321RC Lite Sthru

Autoxray issues should be cleared up, and changed the way mesh element options are presented. Not as straightforward as 3 checkboxes, but it shouldn’t require as much guessing to figure out what to expect.

Planning on putting these options in a popover next to the vert/edge/face button. I had it all finished and setup inside of toolsettings but theres an issue with that for reasons I don’t understand. The viewport TS works fine, but the side panel one doesn’t work. You can make it show up in there fine, but it has no affect on selection. It has to be defined somewhat differently in python to show up, which may have something to do with it. Either way it isn’t there, but I left it in the viewport TS panel just to show what it could work like. Not much difference whether it is in TS or the popover next to the VEF buttons, so feel free to convince me to keep it in the viewport TS. Being in viewport means there’s no rightclick->reset to default, because for whatever reason that isn’t possible.

So, how does it work? It can be as simple as this:

Or as complex as this:

Near Face will change how near faces are selected by box and lasso. Meaning not in X-Ray, and not Select Through, that’s it. This also means circle will never use this because it only has options for “center” or “touch”

“Touch” means the same thing as what has been reffered to as “area” but I changed the wording so it is the same for face and edge (edges are 1-dimensional and don’t have area). It’s also about as simple as it could be described, touch face or edge with the selection area, and it will select the face or edge. Face “area” is less intuitive.

Enclose means you only select faces that are fully inside the selection area.

X-Ray face is the same as near, but for X-Ray shading. It has a “Center” option, which means select any faces whose center is inside the selection area. It does not care if facedots are visible or not. This goes the same for Select Through. I decided to leave it in your hands what the selection will do. If you want to select by invisible facedots, go for it. If you want to have facedot visibility act as your selection toggle, you can set up a python maco to keep them synced up. Shouldn’t be an issue for you guys though, I don’t think anybody who wants to turn facedots off will want to be selecting by them in any context.

Edge works for edges at all times, with and without X-Ray. “Enclose” is the default way blender does it, meaning adaptive, where it will give you only enclosed edges, or if you don’t fully enclose any edges it will give you any edges you touch with the selection area. “Touch” will give you any edges you touch with the selection area.

By default, “Select Through Filter” will be on. This means you can set a separate filter for select through while maintaining X-Ray Face/Edge. If you turn this off, it will just use X-Ray Face and Edge.

“Circle” and “Circle Select Through FIlter” are both off by default, but are there if you want them. It is like the select through filter but for circle. You can have one or both of them, they are separate things. Circle select options are very limited, face only, and you can select by either Touch or Center in X-Ray and/or Select Through. Otherwise it will use either X-Ray (Enclose will fallback to Touch) or Select Through (Enclose will fallback to Touch) depending on what is applicable.

If you are in X-Ray shading, and have Select Through on, both the filter and have it on (header button is lit up) you will get the Select Through filter behaviour despite select through not actually happening (xray is on there’s nothing in the way to select through anymore).

That is a lot of explanation for something that is meant to be simple to understand, but I wanted to make it as simple or complex as is reasonable. All of that while also maintaining default behaviour of both vanilla blender and select through as it was originally designed. Otherwise you’d be forced to use something more complex than you want, maybe you don’t care if select through or circle has it’s own filter. Or you’d have to deal with whatever decision I make for you regarding what I think you might want, maybe you want circle to use face center and box/lasso to use enclosed faces.


It’s amazing to see everyone in this thread trying hard to solve that issue, everyone that spends his/her free time on improving Blender should be applauded!

But to me, this looks like a nightmare, sorry.
This looks like the most complex solution to a pretty simple problem and would require way too much effort for users to figure out.


Lord have mercy… maybe this is the best way, but it certainly frightens me a bit ! I’d rather have a single way of dealing with this stuff, hardcoded but thought-through all the way, as uncomplicated as it is right now in vanilla, only better


@ManuelGrad @Hadriscus What do you have in mind/ how would you change it? If it’s so simple, then you should be able to make a suggestion ey. :smiley:

But, I think it’s not that difficult. If you want more options, you would have to enable them manually anyways and you’d know what you are looking for. Otherwise, they’d be the same as the short options menu. Most people would leave these at their defaults anyways.


Are these stored in preferences ? I wonder if that’s not source of problems for pipeline (sharing of blend files in the same department) if these are defined in the scene. They should be user-level preferences, not tool settings, right ?

1 Like