[BUILD] Select Through 3.31
[DIFF]sthru311
The aim is of this build is to preserve default blender behaviour while offering a high degree of customization and flexibility for mesh selection. It is mostly the same as select through 3.2 but presented differently, and with 2 new / fleshed out features. Each feature has its own header button that can be hidden. There are 3 main features (Custom Mesh Selection, Ignore Backface, and X-Ray alternatives) with some extra miscellaneous things that I do for myself.
Ignore Backface Selection
Verts, edges, and faces that are not facing the viewport will not be selected with box, lasso, and circle select. This is based on normals of each element. Thereâs some options for different ways of determining what verts/edges are facing the viewport.
âVerts of Faceâ will select verts that are part of a face that has normals that point toward the viewport. This is what I will be using because I just want selection to act more like I am expecting, instead of grabbing occluded geometry
But if you care about being more technically correct for some reason, you can use âVertâ instead. It will look at the normal of each vert individually rather that the face(s) it is part of. This works faster, but will result in some of the border verts not being selected because their normals are just a little outside of what is wanted
âEdges of Faceâ is the same deal
âEdgeâ doing the same thing as âVertâ where you donât get some of the border edges
Besides these options, you can decide to keep the box, lasso, and circle select tools the same, or some combination of 2 of them, or have them all different from each other. Any of the tools can be disabled entirely, either by turning them off, or not having any of the vert/edge/face options enabled. Any combination of verts, edges, and faces can be enabled and disabled as well.
You can adjust how close the alignment between the viewport and the vert/edge/face needs to be. Having at 0 should be enough on paper, but it is not, it will catch stray occluded mesh elements. I had thought 0.1 was good, but it still catches the occasional stray, so I have the default backface threshold set to 0.15. Setting it to 1.00 will mean it needs to be perfectly aligned with the viewport. There is an interesting aspect of this regarding quad view. Quad view should show you the exact top, front, and right side of a mesh, but even with a cube it will not think it aligned until you set your backface threshold to 0.99 or lower. But if you just align your viewport using the numpad keys (num1 for front, etc) there is no such limitation, threshold at 1.00 and pressing num1 for front view will select these mesh elements as expected. This is all assuming a cube or similar flat surface aligned with front/top/right.
You can flip which direction it will filter out. I canât think of a reason for this but it is there if needed. The button tells you what it is currently set to do, âSelecting Forwardsâ means it will not select occluded mesh elements that are facing backward. This is assuming you donât have flipped normals and are not inside your mesh. I guess if you were inside your mesh looking outward this could be useful somehow.
A convenience feature, you can see and control which tools will use ignore backface selection from the dropdown, without needing to switch to the tool beforehand.
Another convenience feature. You can decide whether to use ignore backface selection in Near select, X-Ray select, or Both. If you also use âSelect Throughâ or âAuto X-Rayâ these are considered X-Ray.
Custom Mesh Selection
Iâve added the ability to do all of the selection styles for all of the tools in any shading mode.
Face options
Touch means that any face that is hit by the selection area (box, lasso, or circle) will get selected. It is what Blender does in near select, but not in X-Ray. There is one small exception to this, and that is intersect selection in X-Ray. It has some weird bug that I havenât figured out or gotten help with, so as a fallback, you get enclosed selection if you do an intersect. Whatâs an enclosed select?
Enclose means that only the faces that are fully inside of the selection area will be selected.
Center means that you will select a face if the selection area hits the faceâs center point, which can be seen if you turn on facedots. Itâs what Blender does this in X-Ray, but not in near select.
Default means you get what Blender does already, touch in near and center in X-Ray. This will also happen if you leave touch, enclose, and center face selection disabled.
Edge options:
Touch and Enclose mean the same thing as what happens with faces, as seen above, just with edges
Default edge selection will happen if touch and enclose edge selection are disabled. With box and lasso it means that you will do an enclosed edge select, BUT if the selection area doesnât fully enclose any edges, it will then attempt a touch edge select. With circle select there is no difference between default and touch. I had implemented a hybrid style of edge selection for circle but it really doesnât make much sense so I scrapped it.
Tools lets you see and control which tools will use custom mesh selection from the dropdown, without needing to switch to the tool beforehand.
Tool synchronization exists for each feature and acts independently. Meaning, Ignore Backface synchronization has no effect on whether Select Through, or any of the others, are synchronized. For Select Through and Auto X-Ray all it does it keep the on/off status the same for whichever combination of the 3 tools you wish. For Custom Mesh and Ignore Backface it keeps the settings below them synchronized (Face, Edge, and/or Vert selection options). In every feature, the synchronizations are all on by default, meaning it acts like one button for all 3 selection tools, with the option of individual control should you want that.
Keymap control is an optional control method for Select Through and Custom Mesh Select. When enabled it will use the keymap entry instead of the header button. Keymap off = nothing from the keymap matters. Keymap on = nothing from the header button matters. The keymap offers more flexibility for how you assign it to a shortcut, but has no ability to toggle, or visual feedback if that is desired.
X-Ray Alternatives
There are 2 ways of using X-Ray differently.
Select Through will give you the selection of X-Ray without changing the visuals. Tool synchronization and keymap control are available.
Automatic X-Ray will turn X-Ray on for you, and back off again when finished. Tool synchronization is available.
Hiding the header buttons
You can hide any of the new header buttons, and the regular X-Ray button. I also added an alternate header that combines the xray and viewport shading buttons. 1 button can very easilly show you the same information as these 5 buttons do. If you do not want to switch between shading modes with pie menu, or a keyboard shortcut, you can still click on them like they were in your header, they are inside the popover at the top just in case you miss them and want to give them a click for old times sake.
Miscellaneous stuff:
Facedots can be turned off in X-Ray shading. Their visibility has no effect on selection, meaning you can still use face center select with them off. You probably want these on in X-Ray to have a reliable way of single clicking on faces, but you now have the option to turn them off when needed.
Header highlight will change how much the active header will brighten, or disable it at 0 which is what I do
I use a different edit crosshair for my mouse cursor. The regualr one blocks what I want to click on so I made it more open. Iâve tried different things over time, this is what I am using most recently and will probably keep it for a while.
You can adjust the single click select radius if you turn this feature on. Bigger or smaller than youâre used to, affects vert, edge, and face.
Added benefit of using this is that Iâve made face select consistent with edge and vert. With faces, you have to put the cursor all the way on top of them, this is not the case with verts and edges where you have a lot of play with how close you need to be. I like this amount of slack / leeway / play that you get, it is to be expected. But I always found it to be way too much, especially if you ever want to click in empty space to deselect. Default value of 75 will preserve the blender selection radius you are used to, but you can make it more or less now.
Adjustable zoom speed and frame select distance. Tooltip for zoom says âdollyâ which is probably wrong, Iâll fix that next build if I remember.
These shortcuts youâll have to add manually if interested.
Some python shortcuts derived from this:
https://github.com/dpdpforlife/QWER
It is pretty neat, you can tweak based on which gizmo is showing. Also has a more convenient way of switching between move, scale, and rotate.
Another python shortcut to toggle between box and lasso, instead of going through circle and tweak as well.
Repeat tool is like repeat last except it just invokes the last operation rather than executing it
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.