Indeed, it is very controversial topic which already started several massive holywars.
Many words have already been said, many proposals discussed.
However, here is our proposal of a single button solution to this problem in the summarizing post, as a result of all those negotiations.
It is pretty simple, safe and can satisfy both sides.
Is there an update on when this checkbox will be added back in? Removing āLimit selection to visibleā it in 2.8 has clearly upset a lot of people, is there a place we can vote to add it back?
The thread posted by MetinSeven doesnāt seem to have any sort of āacceptedā or āpendingā status.
https://developer.blender.org/T73479
Another sign-up from me to voice my wish for this option. Sometimes it seems like Blender devs get a bit too stuck in adhering to some āparadigmā instead of looking for the best solution to a problem. Adherence to paradigms should not trump usability. Adding one checkbox does not suddenly make Blender too complicated. Surely more checkboxes and controls will be added in the future as more features get added.
So depressing how the devs completely ignore this long-standing issue. My team refused to adopt Blender at work because of this, and I need to rely on modded releases to be able to select comfortably. Despite the mega-long thread here and in developer.blender.org, for years there has only been radio-silence from the devs, unless people become āsourā.
@lcas Have you perhaps kept releasing modded releases using the original patch made by thomas in newer releases? Any 2.92 stuff llaying somewhere? Still using your previous 2.83 mod.
Every time thereās new stable blender release, I make myself a version with Kioās original patch. Luckily so far it has mostly worked, but I am worrying every version that something will change and I wonāt know how to fix the patch. Then I will have to use outdated Blender version because I simply can not imagine using Blender with the unusable, face dot based, broken selection in official builds The modeling productivity becomes incomparably worse.
Hereās 2.92 with the Select Through patch. It has just that patch, otherwise itās completely same as vanilla 2.92:
I will try to make 2.93 as soon as itās out, holding fingers crossed that the patch will still work.
Thanks Ludvik, Iām pretty optimistic that thereās nothing too crazy that would make a select through patch prohibitively difficult. I base that optimism on the approach the devs have taken so far. For example with the BKE_mesh_wrapper_ensure_mdata
that was given, itās what makes the 2.83 (or 2.82?) patch work. Itās not what anybody really wants for efficiencyās sake, but it works fine.
Iād started working my way through a couple C books, hoping to get a clue what Iām doing so I can rewrite Kioās work for the newer way Blender handles meshes. But you know how reading text books āfor funā usually goes, always something more important that needs doing, right?
If the current workaround stops, it would hopefully be something really easy like itās been so far like changing a variable name. Iām also pretty sure that if that happens, the newer and improved workaround would already be written (and probably implemented for select through functionality) by the devs.
I just started going through from scratch, building Blender for the 2.93 release, you know refamiliarize myself with a few things. Iāll throw up a diff patch and/or full build as well, thanks again for any help and feedback, itās good to know when somethings messed up so Iām not using a bad build myself
BUILD 2.93.0 Select Through Facedot
DIFF 2.93.0 Select Through Facedot
This separates Facedot display from the Select Through tool setting. Before, facedots in xray showed up depending on whether Select Through was on or off. Now they will show up based solely on the usual āCenterā checkbox in Viewport Overlay dropdown. This Center checkbox will no longer be greyed out in xray mode. Selection by facedot vs face area will act according to facedot visiblity. Can select through by facedot in solid shading mode, I donāt personally like this but it could have itās uses. I would like to figure out how to select by facedot without selecting through, but havenāt seen anything illuminating enough to hit me over the head with a solution for that.
BUILD 2.93.0 Select Through Kio
DIFF 2.93.0 Select Through Kio
This is the same Select Through as Kio made it with one difference. When Iām working on different things, I modify the timing print to be done at runtime because I rarely if ever do a debug build. This is just a thing that shows up in the console window to tell you how long it takes for each select operation to complete. Useful for curiosityās sake if nothing else, but you probably donāt want it printing every time you select in a release build. Kioās build doesnāt do that of course, but the way I modify his work for my own convenience it would, so I remove it after Iām done with testing. I donāt even know if you actually need to make a debug build for this time printing to happen, maybe thereās some setting or command that makes it come up in a normal build. Anyways, if you want to check out the time printing to see how fast (or slow) it is doing different selections, grab this other diff and make a build.
DIFF 2.93.0 Select Through Kio Timings
As far as what else is different from Kioās original work for compatability, thereās a couple variable name changes and the BKE_mesh_wrapper_ensure_mdata
workaround:
view3d_select.c
Change mcords
to mcoords
Change moves
to mcoords_len
view3d_iterators.c
Add up in the include section
#include "BKE_mesh_wrapper.h"
After Mesh *mesh = editbmesh_get_eval_cage_from_orig( vc->depsgraph, vc->scene, vc->obedit, &CD_MASK_BAREMESH);
Add
BKE_mesh_wrapper_ensure_mdata(mesh);
Change modifiers_getCageIndex
to BKE_modifiers_get_cage_index
Change vc->ar
to vc->region
For now BKE_mesh_wrapper_ensure_mdata
is the main sticking point, because itās slower to do things this way. If youāre curious about any progress in this area, you might want to keep an eye on the affected area of the scripts over here.
https://developer.blender.org/D7169
No promises, and the math or whatever else to get these operations done is probably totally different from select through, but they do need the same thing to work. So if one of them is re-written to be better, everything else might be close behind. Iām pretty sure I saw that one of them has been rewritten to not use BKE_mesh_wrapper_ensure_mdata
but I havenāt looked in a week or two, and again, no promises for how relevant those changes are to my limited ability to essentially copy-paste my way to a faster select through.
Iāve added some more stuff to Kioās work that Iāll upload later, as well as a full build of whatever versions I decide are different enough to bother. Havenāt done a full build on this new install, but I should have all the Optix and Cuda stuff. If thereās a noticable delay thatās probalby why. Either that or this ~100 KB/s upload, good thing Blender is small.
Just saw a warning about needing an older version of Cuda to be sure thereās no errors, and it keeps not finding optix directory, probably going to do the builds tomorrow.
Ok finally got the first build done, add Optix to your PATH or youāll waste like 3 hours futzing around to no avail
I still canāt manage to build it, even after having optix in my PATH.
How did you do it?
Well if what you mean is that it builds but thereās no Optix, I had to add this to Path C:\ProgramData\NVIDIA Corporation\OptiX SDK 7.1.0
because no amount of manually entering it to CMakeCache.txt was working for me. One idea I had was that I was always changing the slashes because that is how everything else in CMakeCache.txt is, who knows maybe it wants it to be different.
If what you mean is that it wonāt build at all, you have to tell me more probably. In any case hereās how I do it, going off the top of my head anyways:
-
Follow along here for Windows: https://wiki.blender.org/wiki/Building_Blender/Windows
-
Use only the highest version listed for Cuda and Optix here: https://wiki.blender.org/wiki/Building_Blender/CUDA
-
Yesterday the 2.93 branch was still showing ā2.93.1 Release Candidateā in the splash screen, so I specifically checkout out the 2.93.0 tagged version, not sure where itās at today havenāt looked. Hereās how to do that, shouldnāt matter though:
git checkout tags/<tag> -b <branch>
you can find tags here: https://developer.blender.org/diffusion/B/tags/master/ But like I said in the earlier post, thereās really no change from even way back with Kioās original work for ~2.80. So if the DIFF will apply, it should build, it just wouldnāt have Cuda and/or Optix showing in your Cycles Render Devices in System -
Apply the DIFF
git apply
and then just drag the file into your command line window it will fill in the rest. If you have something going on with changes in it already, make a DIFF of your own or stash it somewhere and then do agit reset --hard
to get things back to default -
Assuming thereās no error messages, I do a
make release nobuild
This is where itāll tell you whether it can see Cuda and Optix -
Open the output folder for your nobuild, open the Blender.sln file in Visual Studio, change configuration from Debug to Release, show the Solution Explorer if it isnāt there, expand CMakePredefinedTargets, right-click INSTALL and say Build. Then wait for a long time because Iām compiling not just Cuda 7.5 for myself, but all of the different versions that it can. You can change this by editing CMakeCache.txt and looking for
CYCLES_CUDA_BINARIES_ARCH:STRING
and filtering out any versions you donāt need, what versions you need depends on GPU: https://en.wikipedia.org/wiki/CUDA#GPUs_supported -
After itās done, go into that nobuild location, itās all inside of the bin folder
Yes, I made the usual mistake. Accidentally installed Optix 7.3 instead of 7.1
Itās been a year since I stop using Blender for this very reason, Today I downloaded blender 2.93 thinking in a very naive mode oh well it should be fixed by now, what a shock!
I will be using the kio build, thank you guys.
Karmakun, what is the kio build?
Hereās a cool thing.
This is user response to the select though patch(https://developer.blender.org/D6322):
Result: Ignored now for over 2 and a half years.
This is user response to some semi-random changes to the default keymap (https://developer.blender.org/T88071):
Result: They are going forward with it regardless.
Itās hard to keep the hope up. Anyway, hereās 2.93.1 with the Kioās patch:
https://drive.google.com/file/d/1SmSa0CAdZNbPX_khaJqMp0WBLFuwxsgk/view?usp=sharing
[BUILD]2931 Select Through Extra
[DIFF] 2931 Select Through Extra
Hereās a new one. Itās all the different ideas I thought about for select through in one build. Itās not too ridiculous, and might be useful to figure out what it is you prefer. Your workflow might change depending on context or project, so you might want the ability to change these options around anyways.
How useful these options are? I donāt know, but thereās somebody or something that might make use of them. What would stay in a polished, official build? Anybodyās guess. Even now it still doesnāt have all the features Iād like, namely select near by facedot. Plus thereās the inefficiency as noted before.
Itās slightly different so hereās a pic with some text afterward
- Header button for select through, use this to assign keyboard shortcut
- If you want separate controls for facedots in xray and solid
- What it looks like with two controls
- If you donāt want to see the header button
- If you want to control select through independently for each selection tool
- If you want to see facedots, but not have to select by them
- If you want to see in xray, but not select through
Why a header button instead of a checkbox in tool settings? It allows for one shortcut for both independent select through and the usual one checkbox for all three tools. Itās just a custom python operator that toggles unexposed tool settings based on what tool your using or whether independent control is on.
The header button lights up in blue when select through is on. This is tricky, because as far as I can tell, the only way to get it to behave correctly is to alter the draw code. Normally the header wonāt update itself when you change tools or tool settings unless you click in viewport or move the mouse cursor in/out of the viewport or the header itself. This results in the button actually showing you the opposite of what reality is, in regards to select through being on/off. If you want to see this oddness in action, just use the tool setting to hide/show the button. It basically looks like a dead checkbox, but it works. It just wonāt show/hide the header button until you move the mouse back into the viewport again.
To at least get the button to light up correctly, I changed wm_draw a bit so that the viewport header will redraw itself while the mouse cursor is in the 3d viewport, but only when the select through button is on. If you donāt want to see the button, just right click it and assign a shortcut, then hide it with the tool setting, no extra redraws will happen. Doesnāt seem to have much of a performance hit, Iāll test out the timers later to see for sure. But really, its just that tiny strip of buttons at the top of viewport, shouldnāt be a big deal to redraw them and the viewport simultaneously.
Why two facedot controls? If you only want to toggle them in either xray or solid, or you always want them on in one and off in the other, now you donāt need to do any extra shortcut pressing.
Why independent select through control? If you want to change between selection tools and have them in different select through states, or you never/always want one or more of the tools in select through, you wonāt need to do any extra shortcut pressing.
Why an option for āNo facedot selectā? If you need to see facedots but donāt want to select all the way into their center.
Why select near xray? I donāt know, honestly. It was a happy accident that I made a long time ago when I was trying to figure out Kioās work, and I figured why not.
Couldnāt dynamically change the label for the viewport overlays so that it would say āFacedotsā over the dual facedot textboxes when appropriate, so I had to cheat it a little by making the label blank and adding a line of text. Tried to remove the label entirely but it would error. This means thereās an extra blank line between Motion Tracking and Mesh Edit Mode inside the Viewport Overlays dropdown.
This build works great and I didnāt notice any significant slowdown when using select-through, even on a heavy object. Definitely works much faster than X-Ray selection addon.
I like that with No facedot select you can still pick individual faces by clicking on a facedot, because it allows to accurately select one of the overlapping faces. Although when facedots are disabled, faces are still selected by facedots (for a single-click action), which are now invisible. So that should probably be fixed.
Right now probably the biggest issue is with the UI. All the new options in the tool settings are also shown in the header and they take up way too much space. Maybe itās possible to hide them in the header? Also when using transform tools, those options are not visible at all, even though they still apply. Maybe they should be moved to the options section?
Gimme 2 weeks and Iāll come back to this to clean it up a bit.
Single click should be unaffected because itās in a different area. Let me know what is different about it compared to vanilla Blender 2931. Other than being able to hide facedots in xray, I donāt know what is different.
I do know that single click has a large radius and will just select the nearest center when in face mode, sometimes cycling between multiple faces on a subsequent click. When I say nearest center, I mean in 2d projection based on the cameraās perspective. For example, you could have a face that is waaaaaay far away in depth from the camera, that is on the far side of another face relatively close in depth to the camera, but a single-click will select the super far away face when itās center (in x,y screen coordinates) is closer to the mouse cursor, even though in 3d space it is miles away compared to the other face. And depending how you position the camera, it wouldnāt even cycle between the two faces like it sometimes does. Very interesting behaviour, hadnāt really thought about it before.
UI, I donāt even like having the toolbar header visible. Iād like to keep most of that stuff related to select through in the tool options so that it is available for asigning a shortcut. I wanted to put select through in a collapsable section the way Options and Workspace are. But those things act a little different, theyāre all pre-configured and assigned to a group of similar tools rather than on a tool by tool basis. At least thatās what I gathered when I tried to do it real quick just before uploading this. Iād have to figure out how to create one of those, and then make it assigned to the applicable tools, while also duplicating what collapsable dropodown things are supposed to be in there.
Failing that, I can hopefully put a checkbox to show/hide them from the toolbar header, and then throw them in the transform tool area as well so theyre accessible for people who want to use them that way instead of just turning the gizmos on/off for GRS in the select tools. I use a different thing for doing that where you can toggle the different transform gizmos while also having modal transform accessed from the selecton tools, rather than the transform tools set to drag select actions.
This still out of master?
In a way the Devs are right on their concerns which is probably holding it up, and on the other hand Blender does suffer from inconsistency since in object mode you can also select through objects.
Maybe a better solution is to make it as a preset shading type but without the face dots in edit mode and make it available in other modes/object types. So itās X-Ray but not X-Ray since the two serve different purposes.
I personally would love to see it in the extra shading piemenu for quick switching between whatās visible and whatās not .
Thereās nothing different about single-click per se. But if facedots are disabled for xray mode, it becomes quite difficult to select a single face, because Blender still expects you to click on a dot. So in this mode it should be possible to select a face by clicking anywhere on it (like in solid shading).
If facedots are enabled then everything is fine.
Iām not sure what you mean. If you mean that select through functionality should be hidden behind a shading mode, then itās already like that. If you want to select mesh elements that are unseen, you have to make them visible by going into xray.
But the whole idea of select through is to get the selection functionality of xray without having to change shading modes. Iām only dealing with xray and facedots because they are some of the baggage that has to be addressed when implementing select through. In the latest build I made, Iāve tried to offer a reasonable amount of modularity so that different types of people and situations are covered.
Or, if what you mean is that you want an xray without facedots, and also the possibility of solid shading seleciton behaviour (where it wonāt always select through) you can try out the build I posted. What youād do is turn on Near Xray in tool settings and turn off facedots. It will show xray without facedots, and only select through when you drag select while select through is enabled.
If you basically want some shading mode presets that are accessible through the pie menu it might not even be needed. It becomes an issue of whether youād rather go into a pie menu and switch between different xray shading modes, or just have the ability to turn off facedots in xray. A conventient way of getting all that with one click/shortcut is making yourself a python operator that toggles some combination of facedots, xray, and the Near Xray tool setting.
Iād be interested in what you need to do to add things into the pie menu, I donāt know because I personally donāt use them much. If you do a bit of looking around how to do that, and then also how to make a redundant xray shading mode, thatād be cool.
Thatās just how it works though, unfortunately. Iāve merely allowed you to (at least temporarily) remove the facedot training wheels. As much ire as facedots can get, they are still essential, but I enjoy having the ability to turn them off in xray rather than being handcuffed to them. This comes with some compromise with single click, but itās prefferable to either not being able to single-click farside faces in xray, or constantly toggling select through for single click select when itās really only useful for drag select tools. That degree of what is intended to be consitent, is crossing a line where itās really just adding more confusion.
Why is that the way it is? When youāre in xray doing a single click on a face is different than drag-select. With a drag select in xray using either box, lasso, or circle, it will do a select operation (new, add, subtract, etc) on anything it touches. No issues whether you want to go by either facedot or face area.
But with a single click in xray, a decision has to be made, āWhich singular element (or none if youāre too far away in empty space) do I perform a select operation on for the user?ā The answer is the nearest one, regardless of xray or not, but again we are in xray so it gets tricky. Like I said in the other post, for xray itās essentially flattening that 3rd dimension of depth and selecting the nearest element in x,y screen coordinates. For verts this is easy, the nearest vert. Edges behave kinda weird with single click distance thresholds, but thereās nothing like facedots for edges so who cares.
With a face, especially when single-clicking in xray mode to select it, you have to ask yourself a question, āWhat is a face, and where is it located?ā Well, itās a collection of verts, but you canāt choose a singular face based on the nearest vert or edge, because those will be shared by at least one other face most of the time. You have to average the x,y,z coords of the verts for each face. That is itās center. Thatās āwhere it isā more or less, and flattening those centers for xray select means that drawing a facedot there certainly helps for selection. But as long as you are somewhat close to one center more than another, youāll be ok depending how comlex the mesh is.
Considering all of that, I donāt know of another way, let alone a better way, to represent a face than a facedot. And, for the purposes of xray, you kinda have to use them for single clicking, otherwise youād only ever select the nearside faces of a mesh. Not selecting through in xray, for single-click actions, seems like a bad idea to me. But my ears are open as always, so let me know.