From BlenderWiki

Jump to: navigation, search
Note: This is an archived version of the Blender Developer Wiki. The current and active wiki is available on wiki.blender.org.

GSOC 2012 - Precision Modelling Tools

Snapping is an important and central feature for 3d modelling. It allows the artist to place, move or change the geometry precisely, and quickly with a single click of the mouse. While blender does feature snapping, many artists resort to using awkward workarounds for workflows that could easily be catered for with more snapping modes. Precision modeling in many small situations is close to impossible or very hard to achieve using existing snapping tools in combination with custom transform orientations. New snapping modes, and the ability to use multiple types of snapping modes synchronously will open up new doors and make geometry problems when precision modeling much easier and more intuitive.


Benefits to Blender

The users:

  • New snapping modes will also reduces the amount of steps to achieve the same end, cutting out the need to move the 3d cursor around, or change transform orientations regularly.
  • Precision modelling (etc: architecture, engineering, … ) in tricky geometry situations will be vastly improved.

For development:

work towards a possible unification of snapping modes and constraints so transform, knife and other tools which use these features can share code.

Deliverables

Several new snapping modes when conducting operations such as move, extrude, scale, rotate, knife cut, edge slide/loopcut, and a new the new pen tool:

  • Snap to midpoint of lines or faces
  • Snap to parallel of lines or faces/plane
  • Snap to perpendicular of lines or faces
  • Some optional extras:
  • Snap to intersection
  • Snap to angle

Ability to select, and use several snapping modes synchronously, perhaps in a stack-like manner. Some example work-flows with this feature could be as follows:

  • snap to parallel of line + snap to face/plane
  • snap to intersection
Examples of functionality

Currently you can kind of do this in blender by snapping to an axis using x, y or z and then using an enabled snapping mode such as vertex. Unfortunately it's impossible to combine snap to face with snap to vertex.

Wiki Documentation:

Multi-Snap Design Ideas

  • Documentation for each of the new snapping modes as they get added, and how to use them.
  • Documentation for the changes made when the snapping/constraints are generalised.

If time allows (probably will), I'll be implementing several new mesh editing tools to make use of the new snapping/constraint modes:

Pen Tool

A tool that allows the user to create lines by clicking once on a start position, and a second time at the end position for a line. This tool will make extensive and intelligent use of the new snapping modes, to allow the user to quickly place lines exactly where they want them. It can also detect when a flat/planar loop has been created, which is suitable for a face, and automatically create a face in the middle.

Extrude By Rail

This tool would allow the user to interactively extrude a shape along a mesh rail/loop. As an additional, optional target, allow the user to extrude a shape over multiple rails (thus making this "extrude by rails"!).

Project Details

Initially I’ll start off by implementing the additional snapping modes:

  • Snap to midpoint of lines or faces
  • Snap to parallel of lines or faces/plane
  • Snap to perpendicular of lines or faces
  • Snap to intersection
  • Snap to angle

for the existing transform operators (translate, scale, rotate), using the existing snapping and constraint framework. While this is happening, I’ll be looking out for the best way to generalise the current snapping/constraint tools to allow them to be easily implemented with other operators such as knife, loop cut (possibly for all BMesh ops).

Work on generalising the existing functions, and the new ones to be used in conjunction with knife tool, loop cut, etc... and make the necessary changes to those tools to use this.

Design and implement a method which will allow snapping modes and constraints to be used synchronously and flexibly, with the focus being on retaining a fast, simple and intuitive workflow from the user perspective. I will explore how each of these modes should interact with each other, depending on the order they are applied in.

With the remaining time, create documentation for project thus far, and work on creating the new pen and extrude by rail tools. I'll also collaborate with current efforts to improve the knife tool, bevel, and inset.

Blender Artists Thread

Thread Link

Weekly Progress Reports

Progress Reports

Docs

User Docs

Dev Docs