Viewport Project: Wireframes for Blender 2.8
Open, NormalPublic

Description

Wireframes for Blender 2.8

  1. Requirements:
    1. solve the issue T44505
    2. minimize passes: desirable 1
    3. several types of edge highlighting (with styles and colors); also, it should be possible to make no edge.
    4. support polygons with number of vertices > 3

Useful links:

nVidia implementation:
http://developer.download.nvidia.com/SDK/10/direct3d/Source/SolidWireframe/Doc/SolidWireframe.pdf

From the technique's original authors:
http://www2.imm.dtu.dk/pubdb/views/edoc_download.php/4884/pdf/imm4884.pdf
http://www.imm.dtu.dk/~janba/Wireframe/Siggraph06.pdf

Easy wireframe display with barycentric coordinates
http://codeflow.org/entries/2012/aug/02/easy-wireframe-display-with-barycentric-coordinates/

Open questions:

  1. How can we highlight the edge (specify edge style, including no style)? We should somehow map vertex attributes to the edge. To solve this issue we should refuse the use of indexed geometry?
  2. Should we have a different approach to draw quads? Or just triangle case is sufficient?
  3. What changes for the mesh types are required?
  4. There are two points from the original authors of method.
    • The method does not support indexed geometry
    • Primitive/geometry shaders alleviate this!

Geometry shaders alleviate this only if we make simple wireframe with a one single style and with tessellated polygons. For general case it is still needs attributes per triangle (not indexed geometry on CPU side).

Details

Type
Design

To clarify the scope of this design task:

Wireframes overlaid / combined with surface rendering. Whether that surface is a solid color or full material shader. Rendering wireframes by themselves is much easier and does not suffer from issue #1.

I have an idea for applying this technique to n-gons (not just triangle meshes). From the GPU's perspective we're always rendering triangles but they're prepared and sent by the application to make the result look like a bordered arbitrary polygon. Will post once this has a working prototype -- or report that it didn't actually work :)

Totally forgot we had a task open for this! I implemented a solution and presented early results at the 2016 Blender Conference:
discussion of problem and demo of solution

My implementation solves requirements A, B and D. All face edges are treated the same, so C is not done.

Blender's internal Mesh types are unchanged. We generate a GPU Batch from the Mesh the first time an object is drawn, and cache that for later drawing.

@Clément Foucault (fclem) extended this work for the new Clay and Eevee viewport.

I think an acceptable solution to C is to generate a separate draw batch of a subset/list of edges. One pass per line style so we could:

  1. draw object surface
  2. draw object edges
  3. draw "special" edges (UV seams, sharp edges, etc.) in another color & thickness

The new technique uses the exact same depth values per pass, so the final color depends only on the order we draw.

Any more thoughts @Alexander Romanov (a.romanov)?

@Mike Erwin (merwin) special edges are already supported in the same pass. We have a flag attrib that is used to store some infos for these colors. Look at the relevant shader in the draw module.

@Mike Erwin (merwin): I have nothing to add. I think that new wireframes are awesome ))

{F1064379}On the attached image we see the distance on wireframe just like the link on the youtube presentation. I think it works. How would this method of wireframe would be called? (distance wireframe?).

Ok, maybe stupid question as I didn't have time to follow 2.8 development discussion, but where are the see-through wireframes? I work with that viewport in almost all apps I use (Blender, Max, C4D).

Ok, maybe stupid question as I didn't have time to follow 2.8 development discussion, but where are the see-through wireframes? I work with that viewport in almost all apps I use (Blender, Max, C4D).

I'm wondering this myself.
Global object-mode wireframe renderind mode of a scene is a standard on all 3d applications ever made, and are very useful for positioning objects inside or behind other objects, specially on a busy viewport, quickly without having to do a multi-object edit (or merging and positioning on edit mode etc). This also asks for the option for the 3d Cursor to ignore surfaces, as we have on 2.79 and prior, to allow for interior object positioning using the cursor.
The wireframe view is also useful for viewing particle systems inside objects on object mode, or dealing with very demanding scenes (on one case I had to exclusively work on wireframe mode on a multi-million polygon object because with solid view my blender would work at less than 1fps)
I know that we have individual rendering options for objects, but on a scene with thousands of objects using different rendering modes, nothing is better than to quicky pressing Z and seeing through everything, with the option to press Z again and have everything looking the way it was before, instead of having to change all individual objects to wireframe and with no easy way to change each one back to it's original mode.

I'd like to 3rd Alma and Evandro's comments. 110% agree. I'm thoroughly addicted to that 'z' wireframe switch, to the point that I've worn off the letter z on my keyboard. For all the above reasons and more, while the 'old fashioned' wireframe mode of Blender 2.79 and back may not exactly be much in the way of eye candy, but you'd be amazed just how truly useful it is for so many different purposes. Here's hoping we get a mode like that in Blender 2.8 soon, I'd love to try some modelling in 2.8 but really until that mode is added it's like trying to use Blender with 1 hand tied behind my back.

I have to add to Alma, Evandro and Mindinsomnia. Z key is the ultimate key in Blender for me too. I haven't worn the key itself completely yet as there is a little bit of white ink left on the top left but I'm very close to having it completely black.

Having the "hidden wire" in Edit Mode only is useful but definitely not enough. Rapidly switching between complete solid to wireframe feeds data into the brain rapidly. Also that is something not possible in other softwares this well as there is always a very noticeable lag when doing it while there is next to no lag in Blender.

I suppose though that there will be another viewport shading called "Wireframe" ? Hopefully? With it's own set of settings like "Fresnel highlight, distance based wireframe, wireframe random colors, thick outlines etc etc"

Just what makes me nervous is that Ton doesn't like wireframes, probably because he used to model with bounding boxes only and then hit enter and watch how it draws line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line, line

To honest it would be nice so have some infos related the 'classic' wireframe view from developers. I work with it like 80% in my time when modeling, 99% when putting scene together. Simple there is no faster way to put a dense scene together.

So I really hope that we just misunderstood something and this will not be removed, because that is definitely a no go in real-life workflows.

Another thing: will Eevee and Cycles use the same shader setup or a 'multi-uber shader support setting up Cycles and Eevee in the same nodetree' what lets users to change between viewport without changing the engine? Because like 5 years ago I suggested that to be able to compete with Lumion/game engines for real-time visualizations. Keeping engines separate goes against future, doubling effort to achive results (that is why unified workflow/pipeline was a great step forward in my mind 5 years ago).

Thanks, guys. I hope we could get some clarification both on wireframes and shader/engine integration.

There is a wireframe display option now. If it doesn't work well for some cases it's best to give some specific feedback or screenshots to show why it needs to work different or why extra options are needed.
https://www.youtube.com/watch?v=pcOk-SYxllg

Eevee and Cycles use the same shader nodes.

Thanks, Brecht. I downloaded latest build, it is so buggy even Tab does not work for Edit mode, also forgets wireframe settings.

I tried to test it, I still do not get how it is similar to former 'classic' wireframe viewport (yep, I saw the video, too).
Because I had no chance to take a deeper look (maybe with next build), I have to ask: will 2.8 have the same wireframe viewport output in object mode 2.79 had?

Other, related Eevee/Cycles. Great to hear that. Does it mean Eevee will disappear as a 'Render Engine' from selections and will get a button?

Thanks

The edit mode shortcut key was changed: https://developer.blender.org/T55162

I don't know what the plan is for a dedicated wireframe draw mode vs. an overlay option, it will depend on user feedback.

Eevee will remain as a render engine option, for those who want to do their final renders with Eevee. They are still different engines.

I just tried out the latest build. I have to say, so far I'd still greatly prefer 2.79's wireframes. Could we get options for turning off the rendering of surfaces entirely? So we can have *just* wireframes? And an option to remember that setting?

Just a suggestion, you have a few buttons for choosing display mode, what about just adding one more button to that on the left for 'wireframe only' with no transparent shading of surfaces? A completely 'wireframe only' mode? I've added an image to show what I mean.

Thanks, Brecht.

Where to put the feedback on wireframes to be efficient?
Still cannot get how it works, outline disappears all the time when I touch the screen in Object mode.

Related to keymap changes: I'm not really happy, I have the feeling after just a quick overview that it has been missed somehow that people use different keyboards with different layouts (but I have to dig deeper), also still not mapped some stuff by the times we use it in a project.

Another thing: as I see Multi Object Edit/Multi UV Edit finally arrived. Thanks for that, friends!

Completely agree with Mindinsomnia. Also a dedicated key for wireframe mode would be great. I don't wanna see surfaces.
Also colored wireframes are very useful (per object, per layer, per group, per collections, etc.), but I know Ton hates them, I just never was able understand why. I used them like 25 years ago and use them today when I'm not on Blender; pretty easy way of visually managing stuff.

@Alma Talp (AlmaTalp) I wouldn't really call the latest build buggy. I would call it in development. The fact that Blender is changed so well (and so deep) every once in a couple of years really makes Blender stand the test of time and might even make Blender the go-to software for 3D creation in the future.

TL;DR: Wireframe toggle on Z key is really important to me and environment artists / architects+interior designers / hard-surface artists / people who design cars .... and I also like Blender very much.

First of all let me state that I love Blender, very truly.. I've been using it since I was 12 and therefore it's ingrained in me. I also really like anyone having anything to do with it:) There are things that I don't like about Blender when compared to other software but so much of that is changing now and I always know of a way or different workflow to use in case.. It'll be like this every time. with any software.

Brecht specifically you with Cycles have changed my life for the better in many ways. I can now use Blender to compete against the likes of V-Ray and Corona in the architectural visualization business.

Cycles Rocks! OR maybe should I say Cycles Rolls.

...and then the nodal materials... don't even get me started. Well I got myself started so here goes:

There is stuff you can do with nodes in Unreal Engine.. that's like 98%, ... you really can do wonderstuff but it gets extremely hard

then there's stuff you can do in Blender, that's like 88% (actually Blender has those 2 % that Unreal doesn't have) ... I really like not just the way the system works internally (wow that's fast) but also the way it is used from GUI, with noodles and custom colors and nodegroups and muting and Ctrl+Shift+LMB to preview and ... list goes on and on...

...and then there's stuff you can do in 3ds Max's Slate Material Editor.. and that's like 48% and 18% of that is thanks to Corona and it's CoronaAO, CoronaDistance and CoronaRoundEdges nodes. The only big advantage 3ds Max has is preview of date evaluated from some nodes (previews of 2D data basically..)

Even though I would probably melt if Ambient Occlusion that can be used to mix textures on the surface came to Blender I dont really need it as there's good ways to do it differently... I also know I read about you implementing something very or exactly the same as RoundEdges. Although from what I read about the issue all of these features are closely linked behind the curtain by operations that can be done very well on the CPU (with OSL) but are rather hard or even not plausible (too slow renders) to implement for GPUs.

However there are core axiomatic qualities of Blender that feel so natural, and intuitive that it's very easy to forget about them unless we start using different software.
Z and A for example might be the first shortcuts I learnt when I started Blender 2.36 back in 2004. Pressing Z switches between wireframe shading and solid shading (two very related modes - both of them very fast and responsive and both of them very NPR.

In retrospect I think that Z stands for Z-depth here because the wireframe mode allows you to see through Z depth.. Which means it allows you to see like Moody from Harry Potter and that is useful:)

Even in more complex scenes, wireframe shading mode / solid shading mode turns on so fast that if you hold Z key you see blend between the too images as your brain can't process so fast.

To better showcase my point I made a short gif with one of my scenes. It's a 7 floor building in Los Angeles that was put into Unreal and runs on HTC Vive so that you can teleport and walk around the building in VR. Navigating in this scene without global wireframe switch would be a proper nightmare.

Quite honestly if Global Wireframe doesn't make it into Blender 2.8, I might even consider modelling in 2.79 and then moving everything into 2.8 to use it as a render engine. I probably won't because 2.8 is so awesome I'm drolling uncontrollably when I see any news (I drolld a lot lately) but it will be a long and emotional evening of goodbyes with Mr. Wire Frame... I might even not map anything to the Z key as a tribute and a sort of homage to what an amazing key it was when it was alive. But to do that right I should buy a white spray and put R.I.P. ♰2.80 on it :D

...

I suppose the render engines could be done so this can be mapped to keys that are well chosen and taught to beginners on the entire blendranet already because it was like this for ages:

Z is switch to Clay Engine and also toggles between Wireframe / Solid modes. It's just like with clothes, see-thru or opaque. ^_^
Clay engine could have a global wireframe checkbox that can be key mapped
or there also could be seperate Wireframe Render Engine with all the cool settings approachable (Fresnel, Z-Depth, Random Colours, AntiAliasing ON/OFF).. I have actually set my custom colors so that Lights in the scene are yellow and Cameras are purple so that I can locate these special types of objects very fast (especially so in Wireframe)

Shift+Z to switch to Cycles
Alt+Z to switch to Eevee

I think the importance of this is that Blender is so well known and used already and some keys are so easy (and for good reason) to remember that even new users start to use them fast. It's just shortcuts like Ctrl+Shift+Alt+C that give people trouble.

I remapped most of Blender, but I actually kept Ctrl+Shift+Alt+C because I don't really find it that obstructive as I use it seldomly and if I use it, it's usually for more objects at once.

Thanks for reading this long yet hopefully well edited post (spent about 2 hours writing and preparing imagery for it) and hopefully my points are clear.

I like the wireframe over surface look introduced recently with 2.8. I would like to offer a suggestion for wireframes.

What I'm experiencing?
When mouse wheel zooming out, both the wireframe and the vertices become more dense making it more difficult to see the object definition clearly.

Some suggestions
Perhaps adjust the wireframe and vertex thickness based on zoom level or distance from camera so that object clarity is retained from a wide range of distances.

Zoomed In - Factory vertex size vs. Factory vertex size decreased by 1 (using theme adjustment). Don't know of any way to decrease wireframe thickness, though. Not a huge difference but it does help a bit.

Zoomed Out - Same as above but clarity becomes more difficult to see as all the wireframe and vertices are packed closer. Decreasing vertex size by 1 from Factory size helps a great deal.

Edit: Wrong interpretation of information on my part.

Recently Blender Foundation created a dedicated space for suggestions and discussions, and they prefer if developer.blender.org is used only for bugs and code talk.
If you could post your suggestion there, it'd be appreciated.

Thanks. Will do and sorry for putting it into the wrong site. I saw other comments in here that seemed suggestive of having features or preferring different approaches/options which in all seems like suggestions to me. Again apologies.

Recently Blender Foundation created a dedicated space for suggestions and discussions, and they prefer if developer.blender.org is used only for bugs and code talk. If you could post your suggestion there, it'd be appreciated.

I'm not sure where this was said? As far as I know it's fine to comment on the developer.blender.org tasks as long as it's on topic.

Recently Blender Foundation created a dedicated space for suggestions and discussions, and they prefer if developer.blender.org is used only for bugs and code talk. If you could post your suggestion there, it'd be appreciated.

I'm not sure where this was said? As far as I know it's fine to comment on the developer.blender.org tasks as long as it's on topic.

Pablo said on his video on new Wireframes, where he shows the new website as well... He said "maybe we can leave dev.blender.org for actual code"... and since he is so close to the dev team, I assumed he was relaying a dev wish to the community.
Starting here: https://youtu.be/pcOk-SYxllg?t=280
Well, good to know that we can use this space for suggestions too...
Sorry for taking action here, I though it was a consensus.

Quoting Adam..

To better showcase my point I made a short gif with one of my scenes. It's a 7 floor building in Los Angeles that was put into Unreal and runs on HTC Vive so that you can teleport and walk around the building in VR. Navigating in this scene without global wireframe switch would be a proper nightmare.

Quite honestly if Global Wireframe doesn't make it into Blender 2.8, I might even consider modelling in 2.79 and then moving everything into 2.8 to use it as a render engine.

Exactly this.

If you're working on maybe a single object, then the transparent surfaces with wireframes on top might seem fine, but if you're working on something very large and complex, like a big environment, the transparent surfaces are going to become a real problem. I regularly use Blender at work to create full sized office environments for commercial renders, and regularly the only sane way to line up things exactly is to switch to orthographic mode, switch to wireframe, and just look 'through' the scene to line up the lines of objects. I can't express how much of a usability difference it makes being able to see only wireframes.

I'm not saying I want the devs to take out or revert any of the new features, but just an option for 'wireframes only' like in 2.79 would be really really appreciated.

"Quite honestly if Global Wireframe doesn't make it into Blender 2.8, I might even consider modelling in 2.79 and then moving everything into 2.8 to use it as a render engine."

That would make Blender useless for your tasks on long term as the compability will be broken sooner or later.

"I regularly use Blender at work to create full sized office environments for commercial renders, and regularly the only sane way to line up things exactly is to switch to orthographic mode, switch to wireframe, and just look 'through' the scene to line up the lines of objects."

I exactly do the same. With a complex scene the current 2.8 solution I should use collection management to switch everything on and off all the time (works against efficiency in a very bad way), also I will still need to see the whole scene together. Even for identifying an object I should have a visual way, classic wireframe is a way to do it. Colored wireframes are a very handy way to do this in Max, but I know that is something what Ton hates.

Another thing:

Maybe you remember the test I made formerly related deleting 50K objects (related to viewport/dependency graph).

Blender 2.79 required about 13 minutes, 2.8 needed 20 minutes.

Other results were:

Cinema4D (R19): 15 sec
3DS Max (2012): 30 sec
Clarisse: 1 min 16 sec
Maya (2018): 13 min 40 sec
MODO (11): 26-27 min
MODO (9): 40 min

Could it be faster?

I'm loving the "X-Ray" slider! That certainly helps, dragging that to 0 replicates the appearance of the 2.79 wireframe.

Here's my updated feedback on the latest build I just downloaded today:

  • Switching between for example "object mode with material shading" and "edit mode with wireframe with x-ray" involves many many clicks. In fact it looks like there's a few common switches between edit & shading modes someone might make that require multiple clicks now. Throwing this out there for consideration, should overlay and shading mode options be saved per each shading mode? Or per object mode? Or perhaps would it be easier to just have a dedicated wireframe mode? I don't know, just offering the feedback.
  • The grid floor appears to draw over the top of the wireframes of the objects, even the objects that are in front of the grid floor. Visually it doesn't quite look right. Shouldn't the grid intersect objects?
  • Are there any plans to offer a user preference for the size of the dots for vertices and lines for the wireframe? I found the option for vertex size in the themes but the option feels hidden among the others.

I hope my feedback doesn't make it sound like I'm whinging, I'm loving 2.8, you're doing amazing work, and we all really appreciate it!

Hy guys , in newest builds e.g. from 12.06.18

  • wireframes are not shown (correctly) on newly generated edges, e.g. when using extrude. extruded edges are only visible in object mode, not (or only partially) in edit mode
  • wireframes are not drawn in just sculpted areas, need to switch to object mode and back to make'm visible
  • visibilty in edit mode depends on orientation , even on symmetrical objects like the standard cube

In each case: xray slider = 0 , wireframe slider = 1

Is this still work in progress (I know many things are, but I didn't found an open task for that..) ?

hmm seems nobody else care‘s about....sad

It has been almost two months so I would like to at least hear back from someone, possibly @Brecht Van Lommel (brecht) who asked me to prove my point.

I respect a lot of decisions being made but this is one I need to protest against. This alone really does bring 2.8 to the edge of unusability for architectural visualization.

Please don't hate on proper wireframe display. It is a basis of any 3D modelling software and is especially important for scenes like the one shown in my previous comment.

I strongly suggest you review the matter and bring the possibility of exactly the same clean fast clear wireframe display as in 2.79. I like x-ray too, but it is not wireframe.

I am not sure why this happened as I recall seeing Mike Erwin's talk called "Viewport 2.8: Oh the Possibilities" and he was showing .... wireframes.

You might not like the look of wireframes but there is no denying that if you use them very often, you learn to read through them naturally.