GSoC 2018 - Bevel Improvements

I think this is a reasonable request that maybe Rohan or I can get to this summer.

5 Likes

That can be useful indeed.

10 Likes

What about, if that Mitering option could be selected by vertex like it is now with bevel weight for edges?

Also it would be cool if there could be a way to achieve quad corner instead of triangle (but that is resolved by differend mitering methods? How does they behave on corners?)

and BTW currently bevel have trouble with meting of different weights and creates weird distortion

4 Likes

Would it also be possible to have a look at the frame to frame behaviour of the modifier when used in animations?
I believe I spoke with Sybren about it briefly at BCON and he told me that currently the polygon indices change per frame.

This causes absolute havoc with Motion Blur, so could be nice if it got fixed.

Mantissa: I need more information to be able to address the frame-to-frame behavior. I assume you mean as you animate some bevel parameter. There is some non-determinism now because of an optimization procedure, but I’m not sure if that’s the problem (turn loop slide off to see if it fixes the problem). Probably best to file a bug report.

Others: yes, there have been many requests over the years to have more topology options for corners at Bevel. I don’t think we need any more examples or requests right now. It’s just a matter of finding time to implement them.

2 Likes

Hi Howard, I found the error, sadly I haven seen it later and I don’t have the previous mesh to share with you.

You can see here how bevel create only one sharp loop (instead of both loops) and in some point jump from one loop to another.

2 Likes

1 Like

Hi everyone!
Here’s the first build of my branch.

What it includes:

  • Current bevel-2018 branch contains my previous years branch as well (Although current 2.8 has some odd behaviour with normals)
  • Fixed edge data of beveled edges. Added an option to the modifier and tool. Press K to extend sharp edges and U to extend seams onto beveled edges.
  • Added profile support to in plane vertex bevel
  • Added option to harden normals in tool and modifier. Has similar functionality to the WN modifier yet is not an exact copy (given how wn mod is infinitely more complex). Instead of sorting according to face weights and using an inverse exponential weighting mechanic, I’ved used normal strength which determines final normal to achieve similar shading, still may have some differences so please let me know.
    Things to note: Respects sharp edges by default
    Normals of beveled edges in the tool aren’t influenced by adjacent unbeveled faces. (If edge of cube is beveled then normal of 3rd face not taking part in bevel is ignored)
    Haven’t really added a fixed method to have all normals of vertex in reconstructed face point to face normal but are computed right now. Can add this (as an option?). Don’t want to clutter bevel with options though.
  • Added functionality to select a face influence for the beveled faces to be used in the WN modifier, exposed in the UI. Sets the face influence to currently selected in normal tools > face strength.
  • Wrote methods to fix shading continuity. There are cases when beveling creates a ring mesh which appears to have aberrant shading with large number of segments. This method aggregates the edge normal data to create smooth shading.

Here is the link for windows build:
https://drive.google.com/file/d/1Z0I5Vbbj-fsqWas2G4eo0lXuWZ99NIpG/view?usp=sharing

Looking forward to some feedback!

7 Likes

I don’t understand this part.

One problem found

1 Like

am I correct that auto smooth needs to be enabled to have the normals adjustments working? its also a bit strange that you have the normal strength default to 0 - which turns it off completley?

Thank you Rohan and Howard!

Quick tests and observations:

  • As mentioned prior issue you’d have with Bevel based WN is that post Bevel modifiers (deformers) will corrupt normals: http://cgstrive.com/SS/2_742018_e03a.png As such the best solution is WN Modifier being last in stack. I hope there is no plan removing it.

  • This is 2.79 weighted normals script: http://cgstrive.com/SS/2_742018_e8ad.png - notice how gradients are absent. This is very important for game assets. On the other hand this is your shared build (Bevel mod with WN): http://cgstrive.com/SS/2_742018_5f6b.png - as you can see it’s significantly weaker and gradients are visible. Very interestingly by combining Bevel and WN modifier you get more or less expected result: http://cgstrive.com/SS/2_742018_5992.png Would be nice to have ** higher weight values** as such asset types are extremely common when working with game asset (wood planks, metal bars etc). If gradient is left in by WN then upon baking HP to LP a compensating gradient is introduced which is always undesired.

  • I am not sure how related this is to current Build. The Seam and Sharp parameter work well, however please notice what happens when SEAM and SHARP overlap: http://cgstrive.com/SS/2_742018_e508.png .Edge color is either Red or Blue, even though both have seam, sharp. There should be a unique color or BLEND of two on such occasions. Why is this important? All game assets have seams on sharp edges (read: where there is a SHARP edge, there is also marked steam ). It is very confusing to work without it. I patched my drawobject.c to enable it, but it’s a hack and needs to be done decently.

1 Like

Hello.

*Don’t know if this is helpful, here’s a scene that demonstrates a standard gamedev scenario where Bevel weighted normals strength appears to be insufficient (compared to script):


Easy way to debug is in Orthographic view with different Matcaps. There should be no gradients, or minimal as above. This applies to both Weighted Normals modifier and Bevel.

Scene file for debug: http://cgstrive.com/blend/bevel_issue.blend

*I can also see that Spiking is gone in new build! Have to test more, but that’s a big improvement:

*Can you also please reaffirm that WeightedNormals modifier is here to stay, not replaced by Bevel only solution (which will not cover all cases).

Thank you both for your hard work!

1 Like

Here’s another situation where UVs get distorted by Bevel (VertexGroup based):

In other software it’s very common and handy to be able to subdivide a selection/vertex group for localized detailing. Blender does not have that option with Subdivide modifier (I wish it would), but luckily Bevel can save the day! Unfortunately as you can see it introduces UV distortions that greatly limits its use.

In short, it would be nice if this can be addressed and/or SubD mod would have Vertex group option.

Thank you

1 Like

Here’s a small, but very useful feature.

Bevel modifier should be applicable to thickened Curves:


I have modified my 2.79 ( eModifierTypeFlag_AcceptsCVs ) to enable that. It’s extremely useful for creating quick profiles or controlling shading of curves.

Thank you!

4 Likes

You definitly need to put this to 2.8 ^^

I think it could be nice to keep the weight normal modifier you made last year.

Maybe it could fix this kind of issue.

Or we need a weld modifier or a weld option in the bevel modifier.

And why not a modifier who clean ngons.

4 Likes

If I remember the last build that I tried the last week this GSOC have weight normal modifier inside. It is a GSOC with the GSOC 2017 inside

It’s inside yes, I mean, keep if for 2.8, we need both, in the bevel modifier and the weighted normal modifier.

If I remember correctly they will merge this branch and obviusly both GSOC, because normal tools modifier is right now prepared to be merged in master.

Hello Rohan.

I apologize if this is slightly off topic, but custom normals can also be used to amplify otherwise flat surfaces:


This technique is very useful for game assets(but not only!), in particular holes that would otherwise have to be time consumingly modeled out (for highpoly). By having the surface flat and normal amplified, smaller bake cage can be used resulting in less artifacts (in standard HP>LP baking workflow). I have personally modified/hijacked MOD_normal_edit.c, however as it all seems to be related to custom normals perhaps it’s something one of your modifiers can do. Thank you!

3 Likes

just leave it here

https://i.imgur.com/vAm5DrT.gifv

1 Like