GSOC 2012 - Precision Modelling Tools

GSOC 2012 - Precision Modelling Tools
Hi blender-artists!
My name is Luke Frisken, and I’m the student working on the precision modelling tools project for this year’s GSOC.

A basic summary of what I’m aiming to do for you guys:

  • Add several new snapping modes (midpoint, faces, face midpoint, parallel, planar etc…)
  • Try and unify snapping implementation between tools that can make good use of it. (knife?). This mean you’ll get the same snapping options and functionality in the tools that have snapping.
  • Implement the ability to snap to several entities at once ( and combine different snapping modes at once). An example of this is below. I’ve found that many situations in (precision) modelling are hard without this.

You can check out the proposal in more detail here if you’re interested:
http://wiki.blender.org/index.php/User:Kellpossible


Things are going to go a little slow at first. I have exams early-mid June unfortunately. Also, A sensible (re-?)design needs to be worked out. This will take some time.

Workflow for snapping to several things at once is something I haven’t quite worked out. But something I’d be quite happy to take suggestions for, as it’s definitely a workflow thing. I’d try to keep it a fairly un-obtrusive feature that doesn’t affect people trying to model just as they always have done.

At the moment I’m thinking very roughly:

  • user starts transformation or tool
  • user initiates multiple snapping selection
  • user sets snapping mode (line midpoint, face, parallel…)
  • user clicks on geometry, which will highlight?
  • repeat previous 2 steps to choose a second snapping point. Is order important? (I think it should be.) If a plane/face first and a line second, the snapping point should remain on the face. And vice verse.
  • user clicks to finish whatever they were doing.

As someone who spends half his day in AutoCAD seeing such snapping options in Blender will bring tears of joy in my eyes.

Cool news!

I’d like to know how this works… is it s replacement for the current snap, an augmentation or is it an additional toolset?

I ask because the current tools are great and fast for a lot of use cases though sadly misunderstood often.

On the other hand the precision you are offering will be a big enhancement but sounds like it could become more complicated.

The current snap is great when using active element and using the ctrl key for a temporary override (inverting the current on/offness of snap state whilst held down.)

You can probably see that I prefer simple enhancements to the current tool and more advanced snaps separated somehow.

As someone who spends half his day in Rhino seeing such snapping options in Blender will bring tears of joy in my eyes. :slight_smile:

First calliper is getting an upgrade (if they get funded that is), and now some more snapping options in the works?
Gotta say I’m very curious.
Good luck with the project and good luck with your exams.

i REALLLLLLYYYYYY want this to make it trunk! this would be an awesome addition to blender! Thank you for your efforts, and this undertaking!

This brings tears to a lot of peoples’ eyes! You’re making us sad…:slight_smile: NOT! I love the project you’re working on, wish you all the best with those exams (watch out for the best ideas popping up on this subject in the MIDDLE of studying for exams…for me it happened several times, but that’s just Murphy working…)

hi, i’m wondering if possible to add a snap on grid… the actual one is an incremental snap(by unit), i think it’s more specific then the actual one

Here is a link you should visit:
http://www.cad4arch.com/cadtools/

In fact there are a few add-ons with CAD capabilities out there, but a native support is always welcomed.

However It’ll be very difficult to add functions without making the UI even more cluttered (in regards to modelling tools i mean). I’d say that a deep re-think of the tools panel in 3D view is needed first.

I love you. That is all.

  • user starts transformation or tool
  • user initiates multiple snapping selection
  • user sets snapping mode (line midpoint, face, parallel…)
  • user clicks on geometry, which will highlight?
  • repeat previous 2 steps to choose a second snapping point. Is order important? (I think it should be.) If a plane/face first and a line second, the snapping point should remain on the face. And vice verse.
  • user clicks to finish whatever they were doing.

In my opinion, the snapping options should be set before any transforms.
Workflow:

SNAPING HOTSPOT TO POINTS:

If you press the snapping menu on the 3D view header, the items would have checkboxes next to them that you can toggle instead of letting you select only one.
You could turn on snapping (by what you’ve selected in the menu) by either Ctrl (for temporary snapping) or by pressing the magnet (just like it does now).
The Cursor should also obey the rules of snapping. Add click and drag for cursor instead of click-place so it would be visible where it snaps.
When you select multiple vertexes, blender has no way to know what the snapping hotspot is for the selection (Currently it snaps the closest vertex, which is wrong), so there should be a way to specific a coordinate in space to be the hotspot manualy. Next to the snapping menu, there could be an action button to specific a snapping hotspot (specification of the hotspot with the mouse should obey the snapping rules as well), or the hotspot could simply be the cursor, or either one or the other according to what the user wants. Also, setting the object origin as the hotspot is a good idea.
When rotating an object, you could press a hotkey to turn of “Target point”, and set a point in space (that obeys snapping rules) to rotate the object to.

DIRECTION CONSTRAINTS/SNAPPING.

Apart from snapping to specificated points, there should also direction snapping:
Right to the hotspot set button, there could be a button to toggle this on/off. And next to that - a number box. Next to that a way to select a plane on which this would work.
For example, if you specific the number “30” in the number box, and the plane to be World XY, you could only move the object, extrude, etc, at directions 0,30,60,90,120,150,180,210,240,270,300,330,360 from the original location (no height, just on that plane).
This could also work for rotating the object. So you could rotate only by the segments of the number.

DISTANCE SNAP:

Next to the rotation constraint thingy, there could be a button to toggle distance snapping:
Next to that there could be a number box to specific the distance segments.
So, for example, if you turn this on and type “5” for distance segments.
The distance from starting position of the moved object or extruded point would snap to make the distance 0,5,10,15,20,25(…) blender units.

NOTE: “Hotspot to point” snapping should override the direction and Distance snaps.

MANUAL DISTANCE:

Currently when you move an object or extrude a point, you can type in the distance you want it to go with the keyboard. But it always snaps to X axis. Instead of going on X, it should go in the direction of the line Start position to Movement point. Should obey the rules of direction snapping.
Maybe there could also be a way to manualy write in a specific direction the movement should go?
So perhaps there could be two inputs instead of one, and you could write one after another or something like that.

Cheers.

Guys,

Does it really make sense to re-discover America??
Eg. Autocad (firstly issued as digital drafting board >20 years ago) is good and proven example w/efficient snap and while-in-command operators. Does not matter if i like it or not but its snap (and CTRL/Shift/Alt+L,M,P Mouse) is very efficient.
Why not just implement the ideas first? It always be a time to develope it for specific need.

PS. If Acad unavailable(commercial) then DraftSight by Dassault (available free for commercial use) has
very similar look&style and operation modes - simply based on Autocad.

support ~~~~~~~~

Like Michael W, I really appreciate actual selection of multiple targets by pressing A.

OK!

At the moment I’m thinking very roughly:
user starts transformation or tool
user initiates multiple snapping selection
user sets snapping mode (line midpoint, face, parallel…)
user clicks on geometry, which will highlight?
repeat previous 2 steps to choose a second snapping point. Is order important? (I think it should be.) If a plane/face first and a line second, the snapping point should remain on the face. And vice verse.
user clicks to finish whatever they were doing.

It looks like very close to actual snapping but with ability to change target.
I really will appreciate if it is not necessary to repeat setting of snapping mode if it is the same as previous target’s one.
Actually, we just have to increase targets to acomplish your principal work.
I am more interested by your optional extras.
Snap to intersection
Snap to angle

I suggest to you another one : Snap to 3D Cursor.
Actually, in edit mode, we have to copy 3D location coordinates to selection coordinates.

I don’t see any interest of your pen tool. Its purpose seems to be satisfied by extrusion of a vertex.

I would like to have reference guides in blender

I really miss this kind of snapping.

it is possible to implement a tool like chromology ruler whit all those snapping opction and that the ruler work on 3d and 2d whould be amazing!!!

for pressision modeling

You could not find better sources of inspiration than AutoCAD and SketchUp.

Ok, I wasn’t aware it was possible to snap to multiple targets, can’t believe I missed that in the code! I don’t tend to use magnet-always-on snapping so that might explain why.

Good point about not setting the snapping mode if it’s the same as the previous one.

Although I wasn’t really supposed to mention it in my proposal, the Pen tool is inspired by sketchup, which I also love using like many of you guys (and girls). I have also used draftsight in my engineering course, but wasn’t sure if its implementation of snapping was something you guys would be happy with. I’ll check it out again I guess.

I’d like to know how this works… is it s replacement for the current snap, an augmentation or is it an additional toolset?

To calm general fears about complicating existing workflow, I only really want to make the extra snapping functionality an addition rather than a replacement. But I when I start doing it, I will definitely need some feedback from you guys here. It needs to be intuitive, but my opinion alone isn’t enough to judge that. I think there will probably be some experimentation with how this works for sure.

Freemind, appreciate the long post, and I’ll make a reply when I get the time!
bluecd, checking it out!
Gwenouille, nice link.

Comments are coming too fast for me to reply! I’m reading them all though :wink:

Hello, my little wishlist:
-snapping to multiple things at once could be switched on - verts, edges…not just one of these
-snapping to curves
-snapping to midpoints of faces, edges.

thanks for this work… seems like very usefull project :wink: