← All ideas
  • Published 21 Aug 2018

Improved Shading and Normal Editing Workflow

The more I work on game assets, the more I find Blender's way of defining smooth and sharp edges needlessly complicated.

A few things to be aware of for this proposal to make sense:

  • Smooth and flat shading is not truly a property of the object, but a property of the object's edge data.
  • Setting flat shading gives exactly the same result as setting smooth shading and then marking all edges as sharp, but is less flexible.
  • Marking an edge as smooth (also called clear sharp) has no effect unless the object is set to smooth shading.
  • Marking edges as sharp, once smooth shading is on, has no effect if auto-smooth is not on. In other words you need to enable something automatic in order to do it manually .
  • Marking a sharp edge will always result in that edge being sharp, while clearing a sharp edge will not always result in a smooth edge, since it doesn't effect Auto Smooth. This result is that in order to do things manually, you need to turn on something that can, by default, automatically override what you are about to do.

Therefore, in order to actually modify an object's normals with total freedom, one needs to:

  1. Set shading to smooth
  2. Turn on Auto Smooth
  3. Turn the Auto Smooth angle up as high as it goes
  4. Mark sharp edges (as defined by select -> sharp edges) as Sharp instead of using the Auto Smooth angle
  5. Smooth or Mark Sharp any edge

Doing this every time I create a game asset gets very tedious. It would be much faster and more intuitive for everyone if every command does what it says it does from the get-go.

My proposal:

  1. Have all objects be smooth shaded, always (since it can account for both smooth and "flat")
  2. Have all objects use Auto Smooth, always
  3. Remove Auto Smooth as an option, but keep the Smoothing Angle available to edit
  4. Set the default Smoothing Angle to either 0 or 85 degrees, so it works well with the majority of objects
  5. Make the "Shade Flat" command set the Smoothing Angle to 0
  6. Make the "Shade Smooth" command set the Smoothing Angle to 180
  7. Allow "Mark Sharp" and "Clear Sharp" to override the automated Smoothing Angle

That way we have the exact same functionality, but with a much more simplified and intuitive system. The current five step process just becomes:

  1. Smooth or Mark Sharp any edge

2018-08-21 12_26_37-Blender_ [C__Users_Jonathan_Dropbox (CG Cookie Studio)_Education_Flows_multi_fps.png

100%

Development Status: Done

Upvote 52 Downvote 0
jlampel
21 Aug 2018

8 Comments

billyjonsmith

Sounds good, one thing I would add is that the default Smoothing Angle should be exposed in the User Preferences so anyone can set what suits them once and forget about it.

1
Luis.Burdallo

@billyjonsmith: The only problem is if you ever need to have different angles for several objects. Preference is a global setting.

kromar

@luisburdallo: i think he was referring to the default value as preference, so the per object angle doesn't go away it would just give the user the option to define a default angle.

2
billyjonsmith

@grauer.d: Exactly

Luis.Burdallo

@grauer.d: That sounds about right, Thanks for clarifying that.

1
kromar

I agree with this proposal, i also end up with the auto smoothing and smoothing angle and then work with sharp edges and do this on every object i create, so it would be great to simplify this workflow.

Edit: i wonder if there are scenarios where this would not be the desired behaviour. If so it m8ght be possible to handle those cases differently.

1
MickHanks

In the meantime may I suggest the addon Pie Menu Editor. Among many features, it allows you to make macros. I've built many timesaving functions with PME and can't live without it. en.blender.org/index.php/User:Raa/Addons/Pie_Menu_Editor

1
Luis.Burdallo

@othoap: For me too its a life saver.

1