Page MenuHome

Workbench UX design
Closed, ResolvedPublic

Description

The viewport in Blender will work as follows.

We split options into two categories, Shading and Overlays. Shading is all the stuff that relates to the shading itself, such as colours, lighting, surfaces and shadows. Overlays are the things we display on top, such as wireframes, relationship lines, normals etc.

Here's how we will lay it all out:


Shading

Below is a description of the settings we will put in the Shading popover:

Single Color

This option displays objects in the viewport as single color objects. We have three ways of picking the color:

  • Single Color
    • This sets the same color for the whole scene
  • Object Color
    • This option uses the Object's Color option
  • Material Color
    • This option uses the Material's Color option
  • Random Color
    • This option uses a random color algorithm

We also have several ways to control the lighting:

  • Flat Lighting
    • No lighting. Everything is completely flat
  • Studio Lighting
    • This option ignores all the lights in the scene, and allows users to set an HDRI-ball as their lighting input. A shadow direction is calculated from the HDRI.
  • Scene Lighting
    • This uses the lights in the scene to light the objects and cast shadows
Additional Options:
  • Cast Shadows on/off
    • This option turns on shadows from the sun, as defined by the lighting above. The Shadow direction is inherited by the Studio Light or Scene Lighting direction and is automatically inferred from the HDRI
  • Contact Shadows on/off
    • This option turns on ambient occlusion contact shadows. Useful for judging contacts in animation

Textured

In Textured Mode, you see the active Texture for each Material for each Object.
The active material is set in the nodes view. If a material has no active texture, or no textures at all, we just display a neutral color.

We also have several ways to control the lighting:

  • Flat Lighting
    • No lighting. Everything is completely flat
  • Studio Lighting
    • This option ignores all the lights in the scene, and allows users to set an HDRI-ball as their lighting input. A shadow direction is calculated from the HDRI.
  • Scene Lighting
    • This uses the lights in the scene to light the objects and cast shadows
Additional Options:
  • Cast Shadows on/off
    • This option turns on shadows from the sun, as defined by the lighting above. The Shadow direction is inherited by the Studio Light or Scene Lighting direction and is automatically inferred from the HDRI
  • Contact Shadows on/off
    • This option turns on ambient occlusion contact shadows. Useful for judging contacts in animation

Material

This option uses Eevee to preview the lighting and shading of your Cycles materials, but is also available for Eevee, as a method for previewing your materials with flat or studio lighting.

In the Material View, we support the same lighting modes as above:

  • Flat Lighting
      • No lighting. Everything is completely flat
    • Studio Lighting
      • This option ignores all the lights in the scene, and allows users to set an HDRI-ball as their lighting input. A shadow direction is calculated from the HDRI.
    • Scene Lighting
      • This uses the lights in the scene to light the objects and cast shadows
Additional Options:
  • Cast Shadows on/off
    • This option turns on shadows from the sun, as defined by the lighting above. The Shadow direction is inherited by the Studio Light or Scene Lighting direction and is automatically inferred from the HDRI
  • Contact Shadows on/off
    • This option turns on ambient occlusion contact shadows. Useful for judging contacts in animation

Matcap

Matcap is a combination of both a material and lighting. Users simply pick a Matcap from the list.
We also allow Cavity to be enabled.

Additional Options:
  • Cast Shadows on/off
    • This option turns on shadows from the sun, as defined by the lighting above. The Shadow direction is inherited by the Studio Light or Scene Lighting direction and is automatically inferred from the HDRI
  • Contact Shadows on/off
    • This option turns on ambient occlusion contact shadows. Useful for judging contacts in animation

Rendered

This simply represents the final output of the Renderer.


Overlays

Here's a list of the Overlays we will provide, which are common to all the modes:

  • Grid Floor (XYZ, Lines, Scale & Subdivisions)
  • Relationship Lines
  • Face Orientation
  • World background
  • Motion Paths
  • 3D Manipulators
Edit Mode Overlays

These options only apply to Edit Mode, and only show up if you are in that mode:

  • Object Isolation (Dims everything that is not the objects in the active mode. Used to make the edited objects stand out to make it clear which ones you are editing.)
  • Faces
  • Edges
  • Creases
  • Seams
  • Sharp
  • Bevel
  • Edge Marks
  • Face marks
  • Weights
  • Edge Length
  • Edge Angle
  • Face Area
  • Face Angle
  • Mesh Analysis
    • Overhang, Thickness, Intersect, Distortion, Sharp

Note: We will have one toggle called 'Overlays' that will toggle of all overlays in the viewport. This is equivalent to the old Only Render option.


User Interface & Visualizations

Shading popover:


Overlays popover:

Flat Lighting

Studio Lighting

MatCap

Random Colors Flat

Random Colors Shaded

Selection

When "Limit Selection to Visible" is enabled, we want to remove the face dots in face select mode, because it's very distracting, especially on dense meshes. Here's how we want to differentiate vertex, edge & face select mode in Blender 2.8:

The big difference is, that now make the element type corresponding to the current to the selection mode more prominent. Than means the when in vertex select mode, vertices should be more prominent. In edge select mode, edges are more prominent. Same thing for face select mode.

Active elements will become more prominent, rather than less so, as is the case today.

When you can see through the mesh, face dots are still needed because selection is based on the face center.

Examples where face-dots fall short:

As you can see, face dots never worked properly for N-gons. Here the face dots are actually outside the face:

For even very sparse meshes, the face dots make it very hard to see your model:

When your mesh is dense, the face dots destroy model visibility completely:

Compare this to displaying the faces without, and you can see how much clearer your mesh is:

Details

Type
Design

Event Timeline

William Reynish (billreynish) triaged this task as Normal priority.
William Reynish (billreynish) changed Type from Bug to Design.

Matcap is a trick to simulate a complex illumination by a texture, but the magic is lost in the fliped faces. I think the normals should always look at camera in this mode, and the Face Orientation Overlay support transparency adjustment.
I usually see students modeling with golden and normal inverted Matcaps XD

Could the material shading view be active with Eevee as the render engine as well? It seems useful to have the flat lighting and studio lighting options in hand, maybe with scene lighting greyed out or removed from the list, forcing you to switch to the rendered view

What about a retopo mode?

I guess X-ray mode will be "per object" setting, like in 2.79.

I like the first "User Interface & Visualizations" screenshot, it looks a bit like Unreal Engine's viewport which I really enjoy to use.

I guess that having those options & menus directly drawed in the 3D viewport could free a lot of space in other areas and make everything more clear :

How would that work when set in Quad view?

So far it's not possible to have the old wireframe viewmode: transparent faces+wireframe.
Now, assuming that an additional shading mode (transparent) can be added, we would then have to perform two (mouse movement+)clicks to achieve what now we achieve with one Zkey press.

Anyway, wouldn't presets for Shading+Overlays become useful once one knows how he/she wants to see scenes in the 3dview?

Yes, we have discussed having a presets system too, so that users can set up certain combos which may be useful for specific tasks, such as sculpting, modelling etc. We may do that.

How would that work when set in Quad view?

Just like today. Quad View works as if it was one viewport.

Also, it will be even cleaner than in your screenshot. The Overlays will be in the Overlays popover, and not in the N-key area.

In the current version of Blender there is no possibility (without add-ons) of toggling wireframe on all scene objects with a single click of a button, neither for the selected objects. I think that would be a much welcome option and would fit under the Overlays popover.

update: I just saw the wireframe front option, will that work globally?

Hey, great stuff,
Loving it. though it would be a shame not to ask for a pinning button for those popover windows:

You probably have thought of this but just in case:
Many times when you want to test what works best going back and fort to the menu each time and having to open it again after every option can be painful. But if you can pin it and move it to the side to test things out quickly would be perfect.
... and by the way, also would be a good time to fix the properties panel pinning right?

cheers guys amazing job!

Hey, great stuff,
Loving it. though it would be a shame not to ask for a pinning button for those popover windows:
You probably have thought of this but just in case:
Many times when you want to test what works best going back and fort to the menu each time and having to open it again after every option can be painful. But if you can pin it and move it to the side to test things out quickly would be perfect.
... and by the way, also would be a good time to fix the properties panel pinning right?
cheers guys amazing job!

Also detaching the popovers to place them around the viewport becoming pinned automatically.

Also detaching the popovers to place them around the viewport becoming pinned automatically.

Yes! nice! and when you close your detached popover (an X is needed), the next time it will be back in its original place under the header

Hi guys, lovely work!

Are you planning to make "Edit Mode Overlays" settings global?
In 2.79 they are saved per object. If you enable one of this settings (eg.: Normals) with one object and enter edit mode with another, they're not preserved. Maybe it makes more sense to be a global display setting.

@Leandro Cavalheiro (lcs_cavalheiro) yeah maybe there should be a base option in the settings that does it for your every scene, but then that can be overriden on a per object / file basis ?

The edit mode overlay settings are planned to be per 3D viewport, and no longer per object. There will be a few shading / overlay settings that are overridable per object, but probably none of the edit mode overlay settings.

-L0Lock- removed a subscriber: -L0Lock-.May 7 2018, 6:10 PM

Hi guys - I have commented this before to a very wrong task (sorry for that) This might be a more appropriate place.

My question (and hope) is if you plan to implement per pixel self shadows in WB engine? (all viewport shading is that in 2.8 as far as I know)


Drop shadows are pure beauty but self shadows on curved surfaces are not yet :)
(Also I have zero idea how hard it is to deal with the terminator problem but eliminating that too would be awesome)

Thanks in advance and wonderful work on the engine so far!

hey @William Reynish (billreynish)

You think we could make the "relationship lines" only show when the object is selected and have a gradient color from parent to child (maybe from the color of the selected bone fading to black) so one can actually know how the hierarchy is built?.
Also it could be nice to have a secondary color that tells you how bones or objects are related to other by parenting and by constraints with different colors for each?. for example y select abone, and all the direct childs get this secondary and the bones that have a constrain pointing to this bone will get an other color.

Would love to hear your thoughts.
Cheers!

Hey william

How do you think you can make up for all the advantages that facedot provide when it comes to selecting objects as opposed to selecting faces that are clearly inferior?

How can the user select with the same ease in the wireframe view? How will you avoid the typical problems of selecting when polygons overlap?

Several answers:

  • We don't have wireframe view
  • We will probably still show face dots if user has backface selection on, because in this case we are using the dots for selection.

Apart from that, you just select a face by selecting the face. We also don't have a en 'edge dot' in the center of every edge. We don't need it.

Getting rid of it makes it easier to see your model, without loads of tiny dots for every face. For dense meshes, this is a big problem that we want to fix.

I'm modeler and I don't agree with this assessment at all, first of all because it's about deciding for the user and taking away features that currently help him (like select faces that you barely sees, because you select the facedot instead of click in the face) for purely aesthetic reasons.

Will there be no wireframe view at the end of the codequest? You're not planning on having wireframe again?

Face dot is important but i can live without, but you have to give us something, may be an option in the user preferences to turn it on and off or the ability to highlight the face that cursor will select on a click? Sometimes it is difficult to know what face my cursor is close to, specially when you are in transparent mode ( limit selection visibility) or wireframe mode.

@Alberto Velázquez (dcvertice) Yes wireframe is coming just be patient. You are not the only one who is impatient about the subject ;)

I only see that problems like a feature, If I see the facedot like in that images is because I'm doing something wrong, so it warns when your ngon is not correct for some reason and normally I use facedots like references when I move meshes and I don't need a lot of precision "¿Oh, my cursor is in the same position that the facedot? then I put the cursor correctly". And this happens all days a lot of times. Like incorrect faces that for some reason are created between two faces and don't have any area and facedots tell "hey, you have here a face that you don't want"

You want to remove a really usefull feature only because you cannot do beauty screenshots (of course, making the facedot size like a rice grain putting the model really far in the corner). And sorry, but is not the normal situation to edit a model of 30-50k triangles in a corner of the screen.

@Erick Tukuniata (erickblender) I supposed that wireframe will go back in some moment of the future, but after the post I want to ask it directly. And of course, the facedot could be optional, for that reason I don't understand why to remove it.

As noted by @William Reynish (billreynish) limit-selection-to-visible requires face centers for selection so face dots cannot be removed in that case. Updated design document to reflect this.

@Erick Tukuniata (erickblender) had a very good point about zero area faces.
It is quite common to forget to merge snapped vertices and then extrude a face or to cancel just extrusion movement without cancelling the extrusion.

Wrong Normals are a poor indicator of that problem. It indicates that there is a problem. But in the case of an Ngon with overlapping vertices, it may not indicate clearly where is the problem.
Currently, the way to solve that is to be in face select mode with limit-to-visible option enabled to avoid noise of culled faces.

Face dots is helping to explain to newbies what went wrong in their model.

We need to know how many zero area faces are in the mesh. But also, where they are. Because there are cases, when an edge split is intentionnal or vertices of separated elements are overlapping just for basis shapekey and not for another shapekey.
So the way, they are selected by button of 3Dprint toolbox addon is correct for a 3D print model. It does not mean that works for a robot character of an animation.

So, we may need to solve some zero area faces by Remove Doubles and others by face deletion.

I also saw @venomgfx replying on a blender today livestream that because there is a Select Faces by Sides operator an overlay of faces by sides was not needed.
I disagree.
The same way, we may choose to solve issues caused by Ngon or triangles differently according to their location in mesh.
In that case, we are using Select Faces by Sides, solving the problem for an Ngon by a connect cut.
And then, recalling Select Faces by Sides, solving the problem for an Ngon by a knife cut.
And then, recalling Select Faces by Sides, solving the problem for an Ngon by a dissolve.
Etc...
IMO, an overlay by face sides is not redundant and would be useful.

Same remark is also pertinent for Select Non Manifold. But in that case, it would imply creation of not just one but multiple overlays.

There is an addon mimicking what is talked above : Mesh check. In my experience, it saved me a lot of time and is way more flexible and easy to use than the "Select Faces by Sides" operator: it's visual, displays and updates on the fly and it's easy to focus on one area in order to fix it. while the "Select Faces by Sides" operator needs to be managed by hand, can't detect both triangles and n-gones at the same time and once you've found them, if you start fixing one area you lose the other's selection.

The downside of the addon is that it's based on assigning colored materials to faces. → It's heavy, and it can screw up your materials stack.
IMO, such feature as overlay would be awesome.

There is an addon mimicking what is talked above : Mesh check.

The add-on is shipped with Blender as a part of the Mesh Edit Tools 2.

Another point to take into account on removing face dots feature, when implementing the new feature, please take into consideration that, when you are in face select mode after a loop cut, Blender switches to edge loop select without any warning and not seeing those face dots is the only information that we get from Blender that we are in a different mode. So some kind of clear visual info to make the difference between this 2 modes.

And to back @Alberto Velázquez (dcvertice) on his point, what Pablo and Will consider as a fall short for n-gons with face dots, it is actually a good tool to tell us that something is wrong. So you come with the question like "why this face is hiding there?" or "where is the face dot of this face?".

No pressure guys take your time, in you we trust ;)

Could Matcaps be consolidated inside the Studio Lighting menu? After all, they look similar, a menu of spheres, even if what they draw (lights vs images) and how they're mapped is different. Matcaps would only need a third folder in datafiles/studiolights and be processed differently, not as equirectangular 6 lights things.

Why not do this for the options of the workbench?
Right now we have to go to 2 different places to edit the settings.

Yes, the current viewport settings in the Scene Properties is not ideal. However, the reason it's like this, is because the settings in the Scene Properties are actually scene settings.

It may be counterintuitive, but there's no good way to make the shadow direction a per viewport setting, because of the way it works. The same goes for SSAO Distance, which depends on the size of your scene, and not the viewport.

We could still perhaps put those settings inside the Shading popover, but it needs to be clarified that they are per scene.

The other thing needed to make that happen is for sub-panels to work for popovers, which they currently don't, but we want to add that anyway, to solve other similar issues.

Archiving this task for now, most of the design here has been implemented and further improvements will be handled in other tasks.