Blender with Better Selection and More

Luke’s Blender Build 4.1.0 for Windows (gumroad.com)

Luke’s Blender Build 4.0.2 for Linux (gumroad.com)

Luke’s Blender Build 4.0.2 for Apple Silicon (gumroad.com)

Luke’s Blender Build 4.0.2 for Intel Mac (dropbox.com)

4.1 Source Code
4.0 Source Code
3.6 Source Code
3.5 Source Code

Donate :money_mouth_face:

I’ve made a custom build for Blender. It’s free, and I’d like to hear what you think of it. The idea is to keep things the way they are, while giving you more options for:

Box, Circle, and Lasso Select
X-Ray
Drag Direction
Facedots
Selection Radius
Mouse Cursor
Header Highlights
Header Buttons
Camera Zoom
Frame Selected
Repeat Last

Some of these features are close enough that I’ll be submitting them for inclusion to Blender.
Design Doc for discussing potential selection additions.

Drag Select Edges and Faces
Preferences->Keymap->3d View->Mesh->(Box / Circle / Lasso) Select

There’s a dropdown for Edge Select with up to 3 options:

  • Default will do what Blender does, and Circle doesn’t have this option since it does Touch by default

  • Touch will select anything the selection area touches

  • Enclose will select edges that have both ends inside the selection area

Edge options for Box, Circle, and Lasso



All these tools have 4 options for selecting Faces:

  • Default does what Blender does

  • Touch will select anything the selection area touches

  • Enclose will select a face if all their verts are inside

  • Center will select a face if you touch their center

Face options for Box, Circle, and Lasso



Facedots
Blender doesn’t let you hide Facedots in X-Ray shading, but with my build you can. Found in the Overlay Popover is an operator that toggles Facedots for either solid or X-Ray

Facedots on and off in X-Ray


X-Ray
Blender doesn’t select unseen mesh. You select what you can see. If you want to select something on the other side of your mesh, you’d either turn on X-Ray or move the camera until it’s visible. With objects you always select through, and can’t turn it off. Not anymore. In the Header you’ll find a popover next to the X-Ray button. I moved the X-Ray settings here from the Shading Popover. They have new names so it’s more clear that wireframe and solid have separate X-Ray properties.

X-Ray on and off in solid and wireframe




If you want to select unseen mesh without X-Ray, try Select Through. You can decide which tools and modes will use it. If you don’t want to change how X-Ray affects selection, try Automatic X-Ray. When you start to drag select with Box, Circle, or Lasso it will turn X-Ray on, and when you’re done it will turn it off. The settings work the same as Select Through.

I included some operators. You can show any combination of them in the Header. If you have everything necessary for the tool and mode you’re in, the button will be lit up. It’s modular, so there are many ways to setup your shortcuts. The icons for auto X-Ray and Select Through were made by Alexey Adamitsky.

X-Ray, Select Through, and Automatic X-Ray buttons in the header



Viewport Facing Select
Blender does select unseen Mesh, and not in a good way like Select Through. If you can see some verts of an edge or face, they’re potentially selectable regardless of their visibility. If it isn’t truly random which unseen edges and faces this applies to, it may as well be. The 3 drag selection tools select the same wrong things, but if you move or rotate the viewport, this will usually mean that different unseen edges and faces are now selectable.

You can use Viewport-Facing Select to deal with this. It’s in Toolsettings, at the bottom of Options. It works in near select, X-Ray, or both. When you drag select, it compares mesh normals to the viewport. If they aren’t facing each other within the threshold, they won’t be selected. Greater or equal to 0 means the mesh normal is pointed in the direction you have it set to. The higher you set the threshold, the more your mesh needs to be facing in that direction. A value of 1 should mean the viewport and mesh are aligned, but was only working from the front perspective (numpad 1) and from nowhere else regardless of ortho. Max threshold is 0.999999, it is functionally the same as having it at 1 except it works from any angle. Negative values can select unseen mesh.

I use the All Verts setting. It’s saves performance without compromise, because Blender doesn’t select unseen verts. They’re dimensionless, and since there’s only one position for them to be drawn in, they shouldn’t be in the selection bitmap unless they’re visible.

Front Verts will select verts based on their normals,. If you try this, you’ll probably notice how some of the verts at the edge of your mesh are excluded. Verts of Front Face will fix that, it selects verts if they’re part of a face with a viewport facing normal. There’s also rear facing counterparts to these, they do the opposite where they’ll select stuff pointed away from you. Not sure if they’re useful but it’s easy to include.

The settings for edges work the same as verts. Using edge normals will exclude things you probably want to select, and Edges of Front Face will correct that. Same goes for face settings, except Front Faces are what you want for accurate selection. Faces of Front Vert will select faces that have at least one vert with a viewport facing normal. This means it can select unseen faces, which is what I’m trying to avoid, but maybe it’s useful for something.

Sometimes you can see a face even though it has a rear-facing normal, and VFS won’t select it. Usually this is because you’re dealing with two triangles that have no business sharing the same quad, but that’s going to happen from time to time, and you’ll need a way to select them. Besides turning this feature off temporarily, triangulating or otherwise fixing your mesh, single-clicking, or rotating your camera, you can drop your threshold into the negative. How negative you go depends on what you’re willing to live with, and it gets worse the lower you go. I keep it at zero, because at least you have a chance of noticing things you didn’t select. Hard to keep track of random selections that you can’t see. It’s not perfect, but it’s predicable, and should work with most geometry.

VFS off and on when selecting edges and faces (undesired faces can be seen in ortho)




Object Origin
This feature is incomplete, but functional. Circle is forced to select objects by their origin, while Box cannot do this. There’s a checkbox called Select Object Origin in the Keymap. It’s a little off, an object’s origin can be still be selected when it is behind something else if some other part of that object is inside the selection area. Also, the selection area for Circle is larger than it appears when origin is off. One more thing: I couldn’t get Lasso working right, so I left it out. If you need more options for object select, there’s an addon called X-Ray Selection Tools that should work pretty good. Automatic X-Ray is inspired by a feature from that addon, it was added to my build at the request of Hologram.

Object origin in the keymap for Box and Circle

Mesh Select Issues
Intersect doesn’t work with Touch or Enclose face in X-Ray and Select Through. It will do a Center select instead. I figured it’s better to do something close to what you’d expect rather than nothing.

Enclose face works in near select, but it’s hard to use if you can’t see all the verts of a face. If you have a visible face, but some of it’s verts that would otherwise be on screen are behind something else, the selection bitmap thinks they don’t exist. This means that it also thinks that part of these faces are outside the selection area, even though they aren’t, and they get excluded from selection. One thing you could try is avoiding the selection bitmap entirely. Turn on Select Through, and set Viewport Facing Select to work in X-Ray, Verts of Front Face, Edges of Front Face, and Front Faces. Threshold at zero is best in my opinion. Now you get a decent result, but you have to deal with the baggage that comes with Select Through and VFS. You don’t always get everything you can see, at least when you have some weird faces that have triangles pointing in very different directions. Also, you’re going to select like X-Ray so if you have something that is facing the viewport, but don’t have line of sight, you’re going to select it without actually seeing it.

Drag Direction
Blender let’s you assign a direction to click-drag in the Keymap. There are 8 of them, which is nice, but it’s confusing and inaccurate if all you need are 2.

Preferences->Input, at the top of Mouse. Keymap Drag Direction has 3 options. Eight, which is what Blender does, Left Right, and Up Down. The tradeoff for mine is that they’re exclusive. If you use Left Right, the only Keymap items Blender will match with are Any, Left, and Right. Unless something has been manually set to a direction, there shouldn’t be anything besides View Axis, the ones where you hold ALT and Middlemouse while dragging in the direction that corresponds to the view you want.

With Blender’s way, try to set Box select to Extend when dragging left aka West, and Subtract when dragging right aka East. If you don’t initiate the mouse drag within 45 degrees of left or right, you get a Tweak Event instead of what you expected. There’s a way to make this work better. You set Extend to Any, and Subtract to East, Northeast, and Southeast. The Keymap item set to Any needs to be after the other 3 or they’ll be undetectable. Not intuitive, didn’t figure out this was possible until after making this feature.

With my way there’s 3 operators that will set your direction. If your Keymap is undetectable, it will warn you about it. Nothing bad will happen, it’s just telling you that this Keymap item won’t do anything because Blender can’t see it anymore.

Drag detection has some perpindicular bias. In short: whatever is perpindicular to the direction you have things set for, move in that direction before the expected one and there’s decent chance you don’t get what you wanted. The Left Right and Up Down options are very unlikely to experience this issue, and you can work around this by increasing your drag threshold in Userprefs. In detail: if you’re using Left Right, and you drag up or down far enough before moving to the right, you’re going to get the Left Keymap item instead of the Right Keymap item that you intended. If you’re on Up Down, and you move horizontally before going up, you would get the Down Keymap. With Blender’s Eight way, assuming you set it like I described, the dominant Keymap item is the one you set to the Any direction. The Left Right and Up down options are a lot more precise so it’s hard for this to happen. The Eight way calculation rounds to the nearest int, so it treats every mouse drag within 45 degrees of a cardinal direction like it went straight vertical or horizontal.

Drag Direction options

Left Right in the keymap

Selection Radius

Preferences->Editing->Miscellaneous-> Adjustable Click Select.
Single-click an edge, vertex, or facedot and there’s a pretty big area you can grab it from. Faces in near select have zero radius, so you have to be right on top of them. I made this adjustable and consistent. Faces act the same, and you can change the size of the selection radius. Blender gives unselected mesh a slight bias, this can be turned off.

Adjustable Click Select radius will be at 0 instead of 75 like it should be if you already have a startup file for the same version of Blender


Mouse Cursor
I don’t like the Edit Mode crosshair, so I made a replacement. Then I decided to just make this available to most of the cursors and have a few options to choose from.

Preferences->Editing at the bottom of Miscellaneous. You’ll need to move your cursor in and out of whatever area they’re from to see the change take effect. If you are on Mac or Linux, most of the cursor options don’t work, but System and Cross should show up correctly if you’d like them as an alternative for any cursor. I’ll expand on this feature if there’s interest.

Mouse cursors that can be changed

Alternate cursor types are basically limited to System and Cross if you are using Mac and Linux

Header Highlights
The top of the active window gets brighter. If you want to change that, go to Preferences->Interface->Editors->Header Highlight.

Header Highlight will be at 0 instead of 5 like it should be if you already have a startup file for the same version of Blender


Header Buttons
I don’t need buttons for X-Ray or Shading, so I combined them into one thing to save space. Top of the Shading Popover, there’s a checkbox called Shrink Header. The X-Ray button replacess the Shading buttons, and it changes icon to reflect what Shading Mode you’re in.

Shrink Header off

Shrink Header on

Probably want to replace a redundant X-Ray button with Select Through or Auto X-Ray


Camera Zoom
You can make camera move faster or slower for view3d.zoom. If you want multiple zoom mappings you need to manually set the speed for the existing zoom keymap or the speed of the new one you make will be used for both.

Zoom default, fast, and slow. Can get out of hand if you go to the extremes



Frame Selected
You can set a camera offset for view3d.view_selected. Like camera zoom, if you want more than one mapping for different distances, you need to manually set the existing one or it won’t work right.

Frame Selected default, and a small offset. Can go way out there to the edge of default clipping if needed


Invoke Last
A new operator called screen.invoke_last that works the same as Repeat Last, except instead of executing everything the same, it just invokes the last operation. You’ll need to add a new Keymap entry for screen.invoke_last. Undo makes it lose memory the same as Repeat Last.

Invoke Last in the keymap

Defaults
Everything has defaults that will preserve what Blender does, but if you already have a startup file for the same Blender version as this build, it won’t know what these new defaults are. Fortunately it doesn’t matter for most of the new features. The only ones I’ve seen affected are Adjustable Click Select (which is opt-in so if you don’t use it makes no difference, and if you do just set the radius to something higher than 0.0) and Header Hightlight (minor cosmetic change that you might not even realize was different)

Thankyou
This build is only possible because of the knowledge and experience shared by the community. I want mention some people that helped me figure things out like Chris Blackbourne, LazyDodo, Brecht, Thomas, Harley, and Campbell. Everyone on devtalk and in the chat, thank you. Most of all, I want to thank kio. Select Through, Facedot visibility, and Touch select faces in X-Ray are from the work he did. Some of it is basically untouched, and I learned a lot by updating it and changing how it works.

24 Likes

This thread on Blenderartists flew under my radar, I am really suprised it hasn’t gotten more responses :smiling_face_with_tear:, the build is great! And these features were very much requested for 2.8, so please folks, have a look!

1 Like

Incredible work. I’ve been searching for such a behaviour in Blender hoping it was already implemented but hidden behind the giant that the keymap system.

I am an architecture student, thus I’m usued to 2D/3D software having the “full enclosed” or “touched” behaviour implemented since it allows for a much better experience in selection. Thank you for your contribution to Blender!

1 Like

You’re welcome, glad you like it

Spread the word to all your fellow students, I’m sure they’ll like it too. :wink:

1 Like

Ooh, how did I miss this. This is fantastic.

1 Like

Will update to 4.0 soon, just announcing an announcement.

Website doesn’t want to rebase, just sits there and stays on 3.6 after telling it to change to 4.0. Updating in this way is a lot more work because you have to manually remove incompatibilities (a lot of it is just C to C++ missing files) before manually fixing them. At least that’s the only way I know how to do it.

So I’m just going to do it the easy way that I had in the past: checkout 4.0.x tag version, apply diff, manually fix conflicts, done. I might make a new branch on the website and ask for a build. Worth the attempt so it’s a more official looking download. If I can’t get a buildbot request granted I’ll just do like before and make a Windows build with link to the source / diff. Going to be a few weeks probably because it’s that time of year and I haven’t looked at the C to C++ conflicts yet. Usually not a big deal, but I haven’t looked at Blender source in a few months either.

1 Like

Is there any chance when you finalize V4.0X that you put a link that is more obvious. Have been unable to find the V3.6 ???
Cheers & Happy Holidays
MR HOLLYWOOD

Thanks for the heads up, didn’t know that my patch build isn’t there anymore. I guess those are a temporary thing when they make a build for you, so I won’t bother asking for a buildbot going forward. The only OS I can’t do myself is Intel Mac, and it looks like AMD finally has a Windows sdk so that should work for HIP. There will be a dropbox link for Windows and Apple Silicon in a few days hopefully.

If I don’t get any help from chat by tomorrow I will temporarily leave out the new icons for select through and auto-xray. Getting an error when I do a ‘make icons’. I also see that the links in the description of my youtube video are clipped off now, meaning they are unclickable, what a joke.

Lcas … thanks so much for your reply … What a bummer you having these problems. Your build sounded very interesting. All the best and happy holiday. Hope you can work things out.
Cheers
MR HOLLYWOOD

1 Like

If possible, please try to continue this, me and my friends shall contribute but we lack exp!

1 Like

Here’s a link for 4.0.2 (free / name a price on gumroad)
Luke’s Blender Build for Windows (gumroad.com)

I’ll put the source up on the website soon, and then add a build for Apple Silicon. I won’t bother with linux because most people using it would probably just compile it themselves. Top post link updated, will add new screens where necessary later. Everything is the same as 3.6 but some of the youtube video and 3.6 screenshots aren’t quite right with the changes to Blender’s 4.0 header etc.

I had 3.5 on gumroad, then a buildbot for 3.6, now gumroad again going forward with dropbox as necessary. When I did 3.5, it didn’t let me upload because free gumroad stuff had a filesize limit that was something like 200-250MB which is right at the edge of this build. With max compression it was able to fit the linux build back then, and for now at least the Windows build is small enough. That’s why each OS has a different page. If anybody needs Intel Mac or Linux let me know and I’ll ask for a buildbot, but from what happened to the 3.6 buildbot links, I’m guessing they are temporary.

I tested a lite build to make sure the features were there, and the release build for cycles with Cuda, Optix, and non-RT HIP. No intel or AMD gpu to test, but they should be there. IGP on 7900 CPU can at least see the render using cycles, but no RT stuff to test, and barbershop was saying a 2 hour render estimate. Let me know if cycles is working if you have intel or amd gpu.

@Ujumaki_Naruto
Sounds great, let me know if you need something. My exp isn’t much but it get’s the job done with help from chat and forums.

Some general help:
https://wiki.blender.org/wiki/Building_Blender

https://wiki.blender.org/wiki/Tools/Pull_Requests

https://wiki.blender.org/wiki/Communication/Contact/Chat

https://docs.blender.org/api/current/info_overview.html

Best thing for me figuring things out myself is using grep tools. On Windows I use dnGrep. Basically, once you have an idea where/what you want to change, you can track it down with this. Much preferred to guessing and scrolling, and scrolling, and scrolling like I did a few years ago when I got started :wink:

4 Likes

Lcas … WOW is your middle name :zap: FLASH :zap:. That was supper quick. :bangbang:
Cheers
:canada:
MR H

1 Like

You may want to rename your project- while you can legally sell/distribute Blender source code under the GPL license, you cannot do so using the name Blender, as that is a trademark of the Blender Foundation and they’re legally obligated to defend it

Alright I’ll ask about that in chat, thanks. I don’t know at what point I’d be allowed to mention “Blender 3D” in the description of it.

Well… in fact is called “Luke’s Custom Build for Windows” ??

…too bad… so only for W…

But also BforArtists.com uses…

The Power Of Blender Energized By Artists

Bforartists is a fork of the popular open source 3D software Blender.

Reimagined by 3D enthusiasts to make Blender intutaive and more productive

Bforartists is fully compatible with Blender files and addons.

Even if the offical site clearly says:

Blender is a registered trademark (®) of the Blender Foundation in EU and USA. The Blender logo itself is property of the Blender Foundation. The logo and the brand name “Blender” are not part of the GNU GPL , and can only be used commercially by the Blender Foundation on products, websites, and publications.

…so it’s somekind of minefield… better ask for permission for referencing the project but use a distinct different name…

because: you collect money → commercial usage of registed TM !!!

1 Like

Don’t worry, not windows only. It’s just the main platform I use and the one I develop on. Will try to send up the source today and maybe the Apple Silicon build. If you use Linux and don’t want to compile, or you are on Intel Mac, I’ll ask for a buildbot once the source is up. Been busy with holiday’s type of stuff like playing Yahtzee and Monopoly.

The usage of “Blender” in the title of my stuff wasn’t an issue from what I was told in chat. It’s pretty clear that I’ve never tried to confuse anybody about what I’m doing. I wouldn’t worry too much about the name “Blender” in the title of what other people are doing, not in a legal sense. When a mod comes in here and uses words like, “Legally obligated to defend it” it gives off a different vibe than what I’ve experienced while working on this. But still those are some powerful, if not goofy as hell considering the context, words. So I had to go ask to be sure I wasn’t transported into the Twilight Zone™ (I have no affiliation with the Twilight Zone™, it’s publishers, creators, broadcasters, or advetisers :stuck_out_tongue_closed_eyes:)

If a mod is warning me about it here, then basically anybody could start getting a little confused, I guess? The only thing I can think of is that it could lead to a situation where somebody who actually is being shady would start saying things like “Hey, ‘Luke’s Blender Build’ gets a pass to use the name, why not my stuff?”

But I think if that were to ever happen, the issue would be the shady business, not using Blender’s name. Either way, I don’t care. Having “Blender” in the title was mostly a means of describing what my build is it is to anybody who didn’t know, and somehow stumbled upon my gumroad page. Come to think of it, I wouldn’t want anybody to think I’m some sort of food processor technician, now would I? I wouldn’t want to receive any ill-gotten money by stealing donations that were intended for a freelance kitchen appliance repairman :grin:

So I changed the name on my paypal button and the gumroad from “Luke’s Blender Build” to “Luke’s Custom Build”. Subtext of the paypal currently reads “Creation & compilation of custom builds for that app you like. Not endorsed by or affiliated with anybody. Just doing my part.” and the subtext of my gumroad is “A custom build of Blender3D for Windows with many features related to selection and the viewport camera. Consider any price above $0 as a donation to me, a person who is not endorsed by or affiliated with anyone.”

I’ll update my Mac and Linux gumroad pages to reflect the same once I have a build for them. Probably won’t be updating the Linux build from 3.5, but I’ll try to remember to at least change some of the text.

Seems to be a “wise step” … :wink:

There was this example where someone made an LoD-fan roman… but… he sold it… → commercial basis → copyright infringement … :person_shrugging: …( https://entertainment.slashdot.org/story/23/12/21/2342211/tolkien-estate-wins-court-order-to-destroy-fans-lord-of-the-rings-sequel )

That’s pretty hilarious. Some guy writes a fanfic, then sues Amazon for making that LOTR tv show. Not just frivolous, but fraudulent. So he get’s countersued by Tolkien Estate for being such a cool guy. That’s what I got from skimming that thread anyway, seems about right.

A actually didn’t read the NYtimes article :sweat_smile: (and also i can’t without registering…)

…so in general he tried to sell “his” book… so now he even can;t give it for free (as the usual fan -fictions do and so do to infringe any copyright )…

…but you are smarter :stuck_out_tongue_winking_eye: