[RELEASED] ProBuilder 2.0 : Seamless, Intuitive Level Design in Unity. Finally LIVE!

This was fixed in the 2.2 release (ProBuilder r1536 and up).

I have r1536, downloaded from CGCookie, and it still does not work.

To review - the discussion was regarding the use of smoothing groups and how they affect normal generation.

This is an unmodified pipe shape. The faces on the outer ring of this object should blend together, creating smooth lighting across the surface. As it is currently, the normals are generated relative to the face they belong to, resulting in hard edges. We will use smoothing groups to tell the normal generation function that shared edges between these faces should average the normals, resulting in a smooth edge.

Note that I’ve only selected the faces on the outside, not the top faces. This is because the edges between the top faces and side faces should remain a hard edge.

Optionally, you may place the top faces in a ‘Hard’ group, ensuring that those face’s vertices will always generate normals that are not averaged.

For more information, you can check out the documentation on Hammer’s smoothing groups, which should directly translate to how PB handles normal generation.

https://developer.valvesoftware.com/wiki/Smoothing_groups

Love the smoothing feature! Still learning it, as if not done right, does funny things with shadows.

Oh, maybe I’m thinking of a different bug then. I did fix an issue where navigating the sceneview with WASD and Right Mouse would lock the W key in forward movement. What specifically isn’t working for you?

I do remember that problem, and it was fixed. Thank you.

If I have a probuilder object, like a cube selected, I am unable to change from Move to Rotate or Resize. I can do with with a Unity created cube.
I am able to duplicate this easily with a new project, and only Probuilder installed.
Create a new Probuilder Cube
Select it
Try and use the W, E or R keys.
If I’m in Geometry mode, and have a face selected, I can change to Move, Rotate and resize for that face without a problem. But going back to Top mode and it breaks.

Also, is it possible to extract from a face to add extra triangles, without creating five new sides?
I may not be describing that very well.

Your usage of the word “should” confuses me a little, as your delivery implies that it is the “correct” way to handle this object. But really, it’s subjective. What if I need the entire object to use soft edges? This is what I was trying to accomplish with my wall example, and what prompted me to request elaboration.

The photos attached to my post in the Google Group illustrated that I was trying to make the entire object use soft edges, but that in doing so caused lighting artifacts in the form of some edges appearing to behave as hard edges, thus not respecting the Smoothing Group set.

For reference:

1480841--81986--$01.PNG.jpg

Here we have the wall made out of 10 ProBuilder brushes, each brush mitered for optimization (like you would in a 3D package). As the goal was to have the entire object use soft edges, all faces were set to the same Smoothing Group. But as you can see, things didn’t work out.

Then I just exported those PB those brushes to a single .OBJ and averaged the normals in Maya. This yielded the intended result when I exported it back to Unity as an .FBX:

1480841--81988--$004.jpg

As a quick test while writing this post, I made a simple ProBuilder cube and tagged all of its faces as a single Smoothing Group. This is immediately what I see in Maya on import:

1480841--81989--$cube.PNG

Desired result, and the same way I set up the initial wall example. This is specifically why my only theory was the mitering PB brushes somehow messes with the normals, which directly affects the ability to create proper smoothing.

Edit: Actually, I just did a few more tests and believe that (currently anyway) your smoothing groups can’t do what I’m looking for at the moment, and would have to export out to Maya anyway. So don’t mind this issue for now, especially since I appear to be the only one expressing this desired workflow.

Ah, I see what you mean. I think the issue may be that smoothing groups only work per-object - they currently cannot work with mitered edges of multiple objects.

Thank you. That is what I figured anyway, but good to get confirmation so I don’t keep chasing it. Any plans to change this down the road?

Actually, just to clarify- are you wanting to smooth between multiple, separate meshes? ie, they are not the same PBO?

No, the encapsulated and truncated version of this particular issue in this thread (Google thread has deeper info) probably does give the impression that I’m attempting this on separate meshes, but it’s in fact a single, merged PBO.

Also attached a Unity test level in the Google thread, so please check it out if you’d like to see it first-hand.

I think this info is useful for all, so here is a quick re-creation of that wall-scene, with all faces set to 1 smoothing group:

Technically speaking, this is proper and correct. Naturally, the smoothing looks “crazy”, but that’s because this is technically an impossible situation- this is telling Unity that these 90-degree separations should be smooth, when in fact that is impossible in real life, so the shading goes wonky, as expected.

The best way to “smooth” an object like this, would be to separate the smoothing groups based on angle, ie 90 degrees, which gives you this, proper looking, result:

Additional: To get nice, smoothed surfaces, more geometry is needed, so that there is smaller angle between the faces. For example, I’ve smoothed out the inner windows a bit here:

Please, no offense. But… we should probably discontinue this discussion for now :wink:

No idea what was going on in your first reply, and you’re suggesting an expensive, optional workflow in the second.

Everything’s cool. No issues working with my old tools, just want to clarify what your tool was currently capable of.

Smoothing groups are important, so I think it’s good for everyone to see how they work. Happy to discuss it here, from many years of professional 3D experience.

I think you are mis-understanding how smoothing works, and what it’s limits are. I’ve taken a deeper look at your post in the Google Groups page, and it appears you are trying to smooth between faces are too far separated by angle to work as one group. Unfortunately, with a BSP-style approach, this will not lead to a realistic or good looking in-game model.

Now, if built a low-poly object 3DS Max/Maya, then manually UWW unwrapped it, then used Zbrush/other method to create a high-poly version, then projected that onto the low-poly to create a specialized normal map, then you could have the effect you are looking for. For example, these (very nicely done by a friend) meshes:

Simply applying one smoothing group will not result in good normals/smoothing unless you:

A: Add extra geometry to complete the “fake”.
or
B: Use projection mapping to create a custom normal map

At that point, it becomes a question of what your target is- mobile? Then you should actually use the extra geometry, and more smoothing groups, since they won’t add drawcalls. If you are building for devices with more powerful CPUs (specifically CPU, not GPU), then drawcalls are no much of an issue, and you can use either method.

@yahodahan

Perhaps we should agree to delete our posts concerning this discussion in the interest of keeping sales up. Sales are good for you, the potential feedback great for me and karl_ (and whoever else may be involved). If I get into anything deeper than the norm, please consult with karl_ for clarification before… well, whatever that was.

@lod3, just looking to help. If I’m wrong about something, just let me know, and we can figure it out :slight_smile:

I continue the discussion here, because it is important for me to make sure prospective users know that the “Smoothing Groups” feature is currently working correctly, as far as I can tell.

Lots of people looking forward to this- here’s a quick-n-dirty demonstration of the nearly-ready “Subdivide” and “UV Groups” features, we’ll have more on this soon:

Subdivide:

1481127--82016--$Subdivide_Preview.gif

Group UVs:

1481127--82017--$UVGroup_Preview.gif

Makes complex editing even simpler! :slight_smile:

Could you explain what the issues is with this? Smoothing groups on one one object, should not affect other objects. That would cause lots of counter-intuitive visual issues. For example, if I put a table next to a wall, I don’t want them attempting to smooth into each other. If I misunderstand, let me me know.

About the mitered corners issue, I think Karl mistook your post- the issue with your smoothing groups appears to be that the vertices are not fully welded, hence they don’t smooth between faces. This is also expected behavior- faces that are not connected should not smooth into one another. In fact, game engines actually auto-split vertices that are not in the same smoothing group (link to more info: here). Actually, I believe there is a separate issue here that is our fault, though not smoothing related- the “Weld” function doesn’t complete properly in some cases, leaving the verts exactly on but not actually “one”. That might have caused the confusion?

Mitered corners should work fine, or at least they did in my testing- the example I posted earlier with all faces on one smoothing group, was built using properly mitered corners, I was careful to build it very close to the same as yours. This is what leads me to assume your corners were not welded fully (ProBuilder’s fault), hence causing the perceived smoothing issues. If you could zoom in (you’ll have to go REALLY close) and double-check that, I’d appreciate it.

I don’t see anything wrong here, lots of good info for folks, especially regarding how to best use smoothing groups, in both ProBuilder and external tools like 3DS max/etc. If you (or anyone) think I’ve posted any incorrect info, please do correct me- I’m not infallible, and I know it! :slight_smile:

In light of this discussion, I’ll be making a nice, detailed, and fairly in-depth tutorial regarding Smoothing Groups for ProBuilder, and will touch on their use in other tools as well. Seems a useful video to have, and we haven’t really given enough hype/credit to this powerful new feature yet :slight_smile: