REQ:SubSurf Creases as Smoothing groups +sexy new example :)

The interface, modeling, 3d editing tools, import/export, feature requests, etc

Moderators: jesterKing, stiv

dmao
Posts: 5
Joined: Wed Apr 07, 2004 3:12 am
Location: New Orleans, LA

REQ:SubSurf Creases as Smoothing groups +sexy new example :)

Post by dmao »

For years people have been working around the lack of Smoothing Groups by physically splitting meshes into seperate groups. Now that Blender has a real edge structure due to SubSurf creases, it makes sense to apply that to normal meshes as well for smoothing. An example-

Image

When a mesh has SubSurf turned OFF, the creases would define smoothing. This would give a better preview of the SubSurf'd mesh, but more importantly, it'd greatly simplify the tedious process of splitting and joining meshes to get good results. It would be a great boon for game modeling also since smoothing groups are very critical there and much fewer vertices would have to be processed.

Image

This is #4 from the above picture but with the split surfaces moved apart. There are 41 vertices in that object versus just 25 for the others.

Thanks for listening!
Last edited by dmao on Thu Jul 29, 2004 4:30 am, edited 2 times in total.

dmao
Posts: 5
Joined: Wed Apr 07, 2004 3:12 am
Location: New Orleans, LA

Post by dmao »

65 views, 0 replies... just curious onlookers? ;) Here's a more vivid example then:

Image

This is my Bomex Civic. To get the smoothing right, I had to meticulously split the model into countless little groups, go into faceselect mode to select adjoining groups' vertices, and merge vertices one group at a time. Then to mirror it to make a complete model, I had to do the same thing for the seam in the middle.

This is just to see how my modelling looks. To make any significant changes to the geometry, I'll have to do it again for that area, and once I'm ready to UV map it with LSCM, I'll have no choice but to redo the whole process since the "smoothing" groups I have are actually discontinuous geometry.

If all that's not bad enough, because of these faked smoothing groups, the model went from 2024 vertices to a whopping 3415 vertices :shock:.
And just how does it look without the faked smoothing groups?

Image

:? The results ain't pretty. Using SubSurf Creases to define smoothing groups would make all of this so much more efficient.

Now, will someone please reply? :)

oin
Posts: 0
Joined: Fri Apr 02, 2004 6:34 pm

Post by oin »

hehe, I share your feelings.

Smooth groups is a very usual feature in realtime. In games, I mean.

It's sweet weapon to have. (Still, for characters, I usually use only auto smooth, in other packages than blender, where I don't use it.)

I'd also vote for it. I don't comment nothing on your explanation -haven't read it more than first paragraph, as being a Max user I know well what they are. :)

wavk
Posts: 126
Joined: Wed Oct 16, 2002 9:58 am
Location: The Netherlands
Contact:

Post by wavk »

That's insane, splitting up the mesh just for smoothing! Why don't you use the "auto smooth" button? It works perfectly. Never had a problem with it. I agree that it would be nice to see the effect of the auto smooth in the 3d window. And I guess it's not a bad idea to use subsurf creases for it, too.

Or do you mean for the game engine? Doesn't autosmooth work for that? Hm... if not, that might be good to have.

ideasman
Posts: 0
Joined: Tue Feb 25, 2003 2:37 pm

Post by ideasman »

well I totaly agree with your idea, Im not sure this is the BEST way to impliment it,
Ill crosspost this link on the funboard.

oin
Posts: 0
Joined: Fri Apr 02, 2004 6:34 pm

Post by oin »

His idea is not breaking the mesh...I don't actually know if Max smooth groups do actually break the mesh adding vertex count...

I find autosmooth maximum smmoth value yet a bit too hard compared to other softwares I have supporting smoothing value.

steve_t
Posts: 30
Joined: Tue Nov 05, 2002 7:10 am

Post by steve_t »

I think that this is a GREAT IDEA

the workflow seems perfect

You can not only use it to preview subsurf hard edges while not in subsirf mode but you can use it to effectively set smoothing groups.

By your examples it is easy to see how much of a difference this can make in a low poly mesh.

I just hope that someone can implement this feature

z3r0_d
Posts: 289
Joined: Wed Oct 16, 2002 2:38 am
Contact:

Post by z3r0_d »

dmao wrote::? The results ain't pretty. Using SubSurf Creases to define smoothing groups would make all of this so much more efficient.

Now, will someone please reply? :)
it sounds great

except, as creases allow variable seams there is somewhat of a problem

however, what you ask for is kind of like the "hard edges" in wings 3d

time for me to check if there is python access to the creases (I doubt it), it would be a real nice way to get that effect.

I have a script [two actually] which does the splitting you did, but using the same general calculation as autosmooth [and it uses the autosmooth value]

you can see the code for that at :
http://home.earthlink.net/~nwinters99/t ... h_code.zip
and a .blend with a bunch of objects (bigger download):
http://home.earthlink.net/~nwinters99/t ... _final.zip

looks like creases aren't part of nmesh. pity

_______________
edit:

interesting... the crease behavior only modifies the mesh, the result of that is what creates the crease. so, ... yeah

I WANT AN EASY WAY TO MAKE HARD EDGES FOR GAMES
[the vertex increase to the artist shouldn't be noticeable, but the renderer will have to use more verticies to render an object with more seams]

____________ edit 2____________
what is so great about smoothing groups? wouldn't you rather have control over which exact edges are hard or not like you can do in wings3d?
[bah]

dmao
Posts: 5
Joined: Wed Apr 07, 2004 3:12 am
Location: New Orleans, LA

Post by dmao »

Thanks for the replies everyone!

wavk: It is insane to split the mesh, but Autosmooth doesn't work in the GameEngine, so that's the only way right now. Beyond that, Autosmooth really doesn't give enough control anyway.

ideasman: Thanks for the crosslink. Just curious, what would you suggest for implementation? I think this implementation is sound- like steve_t said, when subsurf is off, it'd use the creases (which would normally go to waste) to give a preview of the subsurf'd result and allow smoothing groups as well.

The one possible caveat I can think of is if the user wants a subsurf object with smoothing groups. There'd be a conflict in that case, but I can't imagine that'd be much of a problem as we have creases anyway.

z3r0_d: The variable seams aren't really a problem- Creases above 50% would become sharp edges, and below, smooth. Another, actually preferrable option, is variable smoothing (just to be clear, a blend between sharp and smooth, not more geometry). It's definitely possible as the normals are per-vertex.

About smoothing groups, I only really mentioned it because it's a widely understood term. The smoothing I'm talking about would be based on creases, so you'd have all the edge control of Subsurf creases

KDR_11k
Posts: 2
Joined: Tue Feb 10, 2004 8:06 pm

Post by KDR_11k »

The way meshes are handled in OpenGL doesn't allow for vertices with multiple normals (or UV coordinates), to get those you have to split up the vertex anyway. However, hard edges would still be superior to splitting the mesh since they wouldn't disappear if you weld them and wouldn't obstruct select linked or LSCM. Also, you wouldn't have to worry about selecting all of the vertices that occupy one position.

Monkeyboi
Posts: 251
Joined: Tue Nov 26, 2002 1:24 pm
Location: Copenhagen, Denmark
Contact:

Post by Monkeyboi »

I don't think it should be added like you suggest. Blender already has SetSmooth and SetSolid buttons, so all that needs to be done is to get these to work per edge, not per face. Make it logical, let's not add some odd illogical workflow for this.

We agree it's a huge problem, it's judt a question of how it gets implemented.

dmao
Posts: 5
Joined: Wed Apr 07, 2004 3:12 am
Location: New Orleans, LA

Post by dmao »

Monkeyboi wrote:Blender already has SetSmooth and SetSolid buttons, so all that needs to be done is to get these to work per edge, not per face.
Isn't that what setting the creases already does- sets the smoothness per edge (albeit on SubSurfs)? And please explain why you say my method is illogical. Thanks.

ideasman
Posts: 0
Joined: Tue Feb 25, 2003 2:37 pm

Post by ideasman »

I have requested and offerent 2k euro to anybody who can add manual normal editing.

I think this is the mose powerfull way of adding manual control over smoothing. the normals would be stored in a similar way to vertex colours and could be edited per vertex (rather then per face) but probably still in face/uv mode since this is a face property.

Tools would need to be added to do things like smooth all selected, unsmooth, autosmooth. but the user could still have control over each normal of each face. This is a bit advantage with blender for game modeling.

z3r0_d
Posts: 289
Joined: Wed Oct 16, 2002 2:38 am
Contact:

Post by z3r0_d »

ideasman wrote:I think this is the mose powerfull way of adding manual control over smoothing. the normals would be stored in a similar way to vertex colours and could be edited per vertex (rather then per face) but probably still in face/uv mode since this is a face property.
huh?

python has access to the normals, but they are at the vertex object level, not at the face level [as in a normal for each vertex in the face, which would be required for seams]

and python can export the mesh back into blender asking that the normals not be modified.

however, edit mode messes this stuff up

honestly, a long term solution is simply to be able to use normal maps

ideasman
Posts: 0
Joined: Tue Feb 25, 2003 2:37 pm

Post by ideasman »

z3r0_d wrote:
ideasman wrote:I think this is the mose powerfull way of adding manual control over smoothing. the normals would be stored in a similar way to vertex colours and could be edited per vertex (rather then per face) but probably still in face/uv mode since this is a face property.
huh?

python has access to the normals, but they are at the vertex object level, not at the face level [as in a normal for each vertex in the face, which would be required for seams]

and python can export the mesh back into blender asking that the normals not be modified.

however, edit mode messes this stuff up

honestly, a long term solution is simply to be able to use normal maps

I disagree about normal maps. OpenGL and DX both support manual normals (like in the obj format) - I use blender to export to a format that supports normals but not normal maps.
- Cam

Post Reply