Hard/Soft edges for smoothing

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

Moderators: jesterKing, stiv

-efbie-
Posts: 0
Joined: Wed Oct 27, 2004 9:47 pm

Post by -efbie- » Sat Jun 18, 2005 11:56 pm

the problem with tangeant space is that it gives you only one axis as reference, and to define a direction in 3D space, you need two axis. you could use a global axis to be the second, but it may lead to problems, like when the tangeant axis is aligned with that global axis.

theeth
Posts: 500
Joined: Wed Oct 16, 2002 5:47 am
Location: Montreal
Contact:

Post by theeth » Sun Jun 19, 2005 3:31 am

Pierre-Luc_Auclair wrote:
theeth wrote:When you split off vert 10 from vert 6, how do you know which face uses which?
It's not important because it is "virtually" the same vertex. When editing they both act as one. The most important thing with hard edges is to keep editability. (is it what you meant?)
When editing, they are one, but you must split them at render time (or even when displaying), since every vertex can only have one normal. In that case, you'd really need to know which faces get which vert.

Martin
Life is what happens to you when you're busy making other plans.
- John Lennon

joeri
Posts: 96
Joined: Fri Jan 10, 2003 6:41 pm
Contact:

Post by joeri » Mon Jun 20, 2005 10:23 am

I don't get the problem here.

Some people seem to think blender is a cheap 3d studio made to model game models (NaN's fault for going to all the game shows), thus claiming model tools are more important than the animation tools.

Isn't the easy solution to hard/soft edges to separate the faces without telling the user?

User perspective:
Select an edge, press ctrl-H -> edge is hard.
Select an edge, press alt-H -> edge is soft.

Blenders perspective:
user selected an edge and wants this to be hard, copy verteces and mark them as twin vertex, create another edge and mark this as twin edge.
calculate vertex normal according the connected faces.

User selected a twin edge and wants it soft. Merge the twin verteces and the twin edge.

User moves a twin vertex so move the other twin as well.

Special interest to remove doubles-> this could result in twin verteces and keep hard edges or result in normal verteces with soft edges.

Or am I missing something? Please forgive me if I do.

-efbie-
Posts: 0
Joined: Wed Oct 27, 2004 9:47 pm

Post by -efbie- » Mon Jun 20, 2005 12:03 pm

joeri wrote:I don't get the problem here.

Some people seem to think blender is a cheap 3d studio made to model game models (NaN's fault for going to all the game shows), thus claiming model tools are more important than the animation tools.
there is way more people working in gamedesign than in animation, and blender is really close to be a serious gamedesign tool that would have the features to compete with other big players in that domain. Those features would also benefit to people working in animation.

For gamedesign blender currently lacks :
- Hard / soft edges
- manual vertex normal editing
- multi UV
- baking render to UV
And to be better than competition
- bump, normal map, specular map, preview in viewport.

that feature list is quite short compared to what blender lacks in the animation / still render side where it needs 264+ complete refactors
Isn't the easy solution to hard/soft edges to separate the faces without telling the user?

User perspective:
Select an edge, press ctrl-H -> edge is hard.
Select an edge, press alt-H -> edge is soft.

Blenders perspective:
user selected an edge and wants this to be hard, copy verteces and mark them as twin vertex, create another edge and mark this as twin edge.
calculate vertex normal according the connected faces.

User selected a twin edge and wants it soft. Merge the twin verteces and the twin edge.

User moves a twin vertex so move the other twin as well.

Special interest to remove doubles-> this could result in twin verteces and keep hard edges or result in normal verteces with soft edges.

Or am I missing something? Please forgive me if I do.
yes that would be the easy solution and it would perfectly work. But implementing hard/soft edges without manual vertex editing would be like implementing edge select but not face select, those tools are used in the same domain and for a serious use of the first, you need the second.

joeri
Posts: 96
Joined: Fri Jan 10, 2003 6:41 pm
Contact:

Post by joeri » Mon Jun 20, 2005 1:27 pm

...there is way more people working in gamedesign than in animation...

Did you look at the blender gallery lately?
Anyway,
I have no clue what you mean by: ...without manual vertex editing...
Could you explain that a bit more (to me).
Is it that you want a normal rotation widget on the vertex to rotate the normal in any direction you can come up with? (serious question).

-efbie-
Posts: 0
Joined: Wed Oct 27, 2004 9:47 pm

Post by -efbie- » Mon Jun 20, 2005 6:54 pm

joeri wrote:...there is way more people working in gamedesign than in animation...

Did you look at the blender gallery lately?
there are more people in the world that are that work on gamedesign than to do animations. So why isn't there any game models in the gallery ? maybe there is a reason ? And a reason is that the lack of hard edges is a showstopper. (other reason is that they sell their models, so they aren't allowed to send them to galleries) Gamedesign without hard edges, it's like making stills without raytracing or animation without armatures.
I have no clue what you mean by: ...without manual vertex editing...
Could you explain that a bit more (to me).
Is it that you want a normal rotation widget on the vertex to rotate the normal in any direction you can come up with? (serious question).
The smooth shading algorithm depends on the orientation of the vertex normals. The vertex normals are currently automatically computed by an algorithm. So we have no control on the smoothing result. Manual vertex normal editing allow to change the direction of a specific vertex normal.

This is really gamedesign specific because in 99% of cases, you can't turn off smoothing.

Example : you have a wall corner and a floor. You want that the floor and the wall look flat. Because of smoothing you can't make them in one piece. so you add an hard edge between them (A) but often, hard edge are not computing efficient for different reasons, so you connect them with faces (B) but in blender, normals are computed with an average method that gives awfull results for this case. So you must tune the vertex normals so that the bevelling is round, and the floor/wall is flat. (C)

Image

Pierre-Luc_Auclair
Posts: 0
Joined: Tue Nov 23, 2004 1:57 am
Location: Quebec City, Canada
Contact:

Post by Pierre-Luc_Auclair » Mon Jun 20, 2005 8:39 pm

Thank you Efbie for taking time to write the current lacks in gamedesign.

These are really the only things that would keep anybody from doing gamedesign in Blender as a total solution.

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

Post by oin » Mon Jun 20, 2005 9:25 pm

Absolutely agree with Efbie.

I do game art(of all types, that also involves highend) for a living, and I know he's quite right.

I also know many "foreigners" to Blender world have tried to get in by the game art door,(and no one can know what they'd end doing, maybe not even game art) with the intention of using it as level editor or character animation software, and have found they can't for those lacks. Of course, some could as actually if you avoid most of the game art requirements(but even the more basic ones), you can allways make a.. game...

Also, probably some of the most tallented Blender users I have had the honor to know (well, I don't know many) , people who made extremely good tutorials and lots of good stuff, were involved in making secretly huge projects using Blender as the art tool to provide all content together with Gimp, for games made with engines done by themselves. The fact is they agree with me those features are no good lacks, and some in animation.

Indeed, is not that I have a personal interest (have many purchased softwares) but it'd be so nice that slowly game artists, indy game makers, would be replacing their warezed tools(main reason why Max is today a game art making standard, inmho) by Blender.

That besides I have seen what I consider master pieces in game art; as I have maybe a more global concept of it.Indeed, these days highend gfx and game art are in many cases...the same. (game intros are as highend as they could be, and lately, normal maps, parallax mapping, or even pure displacement, require very highend kind of work, at the end. The small companies are sinking as they need similar man power than for to make film movies, in many cases)

Anyway, I'm excited to see if finally certain animation features get added for next Blender version. But the fact is..I know many game artists, neither even game animators, would worry to think on using Blender without the mentioned features (specially quick hard edges) .

I know: Probably all Blender makers really don't aim to that field... Then, nothing I said above(or what was said by others) would be taken in consideration, and of course that'd be ok.

Edit: Specially true that which he also mentions: Probably the things that Blender needs to get to be a very good game art tool, are really much fewer than all what is needed in rendering /film ...
Basically is what he listed (and imho and quicker way to plant the bones)
Also believe many of those would seriously benefit the other field.

joeri
Posts: 96
Joined: Fri Jan 10, 2003 6:41 pm
Contact:

Post by joeri » Tue Jun 21, 2005 10:33 am

Personaly I don't need hard edges.
I have no problems with having multiple objects creating a single life object.
As a matter of fact I prefer multiple objects. I rather have a grouping that "joins" multiple objects (nurbs, curves, emptys and meshes alike) and treat them as one with transformation tools.
This makes me think that smooth/hard edges is a games thing. Where certain game engines have a certain approach.

Surely blender can have features that fit perfectly to those approaches, but I don't see how they bennefit animators, and blender is an animation package.

efbie wrote:
...that work on gamedesign than to do animations...
Sure, there are more people that do text editing than animations and gamedesign together... So? Blender is an full suite targeting animations, not a milkshape with F12...
But thank you for explaining the vertex normals. I did see that picture before, but this made it more clear.
I still think my twin vertex is a good solution, it ties the right normal to the right face... And it keeps the vertex as one with the transform tools.

-efbie-
Posts: 0
Joined: Wed Oct 27, 2004 9:47 pm

Post by -efbie- » Tue Jun 21, 2005 1:11 pm

joeri wrote:Personaly I don't need hard edges.
I have no problems with having multiple objects creating a single life object.
you can't do that in games because it will mean more calculations for the zbuffer and shadow buffer. Mesh must be in one piece.
This makes me think that smooth/hard edges is a games thing. Where certain game engines have a certain approach.
it is a lowpoly thing. if you are doing lowpoly you will benefit from hardedges and vertex normal editing.
...that work on gamedesign than to do animations...
Sure, there are more people that do text editing than animations and gamedesign together... So? Blender is an full suite targeting animations, not a milkshape with F12...

So what ? should gamedesigners make a fork of blender and call it gameblender just because it has two features not usefull to animators ?

I still think my twin vertex is a good solution, it ties the right normal to the right face... And it keeps the vertex as one with the transform tools.
Your twin vertex is not only a good solution, it is THE solution. People are only waiting for that.

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

Post by oin » Tue Jun 21, 2005 6:08 pm

" As a matter of fact I prefer multiple objects. I rather have a grouping that "joins" multiple objects (nurbs, curves, emptys and meshes alike) and treat them as one with transformation tools.
This makes me think that smooth/hard edges is a games thing. Where certain game engines have a certain approach.

Surely blender can have features that fit perfectly to those approaches, but I don't see how they bennefit animators, and blender is an animation package."


My english is not very good, and often I don't understand paragraphs as I would in my own language. But I deduce you believe then that game meshes must be single object only...Well, while is true for some engines, and is true that the zbuffer fighting occur in certain situations, I have done in past jobs many several-meshes models...Nope, that's not the key. You can use several or single piece objects (unless you're tied to certain limited engine) ...the smooth shading, (that is, I mean: the freedom to produce a hard edge or a continuous smoothing there where one needs it) is a precious helper fo rachieve realism in games and..in any realtime graphic's stuff. We must consider also this applies just the same to real time 3d interactive worlds, to machinima films (dunno if u know what's that all about: real time graphics, even done with game engines, to actually produce films, to tell a story without the need of rendering or expensive rendering packages. Some times very good stuff is produced. After all, I think the value of being able to tell a story imho is something to consider... )

The fact is, whenever you need a hard crease, yep, you can do it with somewhat quicker operation, and be able to check it real time in viewport..Why? because is so constantly needed in rt and game graphics...And u need to achieve a very accurate compromise between the nº of polies you only have, the realistic effect you're after, the shading (low pol meshes in most engines, with no hard edges, do produce often darkening in certain areas, also...)

Say you need an axe to have sharp borders in certain lines, still be smooth , round wooden made in others...this is very much needed, for the nature of real time 3d, how it ouput stuff visually. (dunno really how vrml worlds deal with this, btw)

So, no matter if it's one mesh, or several, you'll keep needing hard edges: You just can't afford extra polies like in subdiv modelling to actually produce a crease, and to break the mesh to produce a hard edge, is often a problem for most realtime engines(you can do that often, but sometimes not, depends on the situation or even on the engine)... Then there's the other disadvantage...you need it be as quick as possible, as you're gonna be tweaking that all the time... Well, this feature is not only in Milkshape...indeed, imho is only comfortably done in Maya and specially, Wings3d.

No, please, I don't mean now go grab every feature from X package. But grab what is minimally needed for game artist go use Blender as their main tool. Any game artist using LW, Max, Maya, XSI (I do have this one, and also have this(I haven't installed the linux version they give me, though, yet)) (and surely every tool out there) would expect hard edges, muliples uvs, baking to texture specially (the lights (lightmap) )

And in the part is not seen where would benefit animation...Well, what you can produce with lower meshes, and with help of good smooth shading+smooth shading creases, will benefit your render times, usability of the whole scene, etc...I have friends working at a 3d series company, an small one, but for TV, and well, they cut CPU times in the scene there where they can : They go as lower as they can while it does not get noticed...render times are a pain even in huge machines...

Sorry, too long post. I hope some part was of some use, for someone ;)

BTW, I am not doingat this moment free 3d projects(if I would, would be using other tools, btw), my today's work is pixel art, and don't even have time to dedicate much to 3d at home, besides have my own 3d tools, so I have zero interest on all this...other than I would like that game artists would beguin to use Blender with required capabilities for games...And that I do think is a very good stuff for Blender.

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

Post by oin » Tue Jun 21, 2005 6:16 pm

..Indeed, I personally would prefer a workflow-quick pin joint feature (animation) , and *.x import fully done (perhaps Ben is already at this last one) ...But also several indy game authors which I pointed to use Blender as their level creator for their engine, or the team's engine, got back to me saying me it had no smothing groups or hard edges...I knew that beforehand, but ... Seems even very little initiated game artists want this.

And ...lightmaps is a must for games. Even if we go to ye good old Quakes, they had that...(baking illumination into an UV tga, so it's loaded over in realtime, and not do GI calculations in real time ;) ) Indeed :XSI...I have read some parts in its large doc and manuals...well, seems in highend, is also the economy of cpu something to worry about...often the baking is used for not do recalculations, etc...Well, this have been discussed already. And I suppose most high end artists (other than some than use this methods) wont see the advantage, but Efbie's point was certain...Is little stuff to get a huge bunch of artists (game artists) get into Blender's world, compared to all what is needed in highend tools.

I do love Blender is highend tool, too, btw. Of course...

joeri
Posts: 96
Joined: Fri Jan 10, 2003 6:41 pm
Contact:

Post by joeri » Wed Jun 22, 2005 10:24 am

Look, I know perfectly well what hard edges are.
I'm aware of machima.

But let's not pretent you cannot make hard edges in blender.
It's perfectly possible, it's called split and splits faces from each other resulting in 4 verteces per face. You don't need to make different objects out of them, you can leave them in a single object.
The 'problem' with this is that if you want to move an hard edge you need to select two edges that are at the same place.
The other 'problem' is it has more verteces, but I get the idea that's the only solution anyway.
What blender lacks is an 'easy' way to split edges, currently it only splits faces. And a way to manualy rotate the vertex normals (and the face normals as well, but there is no need for that right?)

As to "should gamedesigners make a fork of blender"
No, what I'm saying is that (animation) programmers should stick to programming animation features.
Anyone that wants to implement anything in blender is okay with me...
As far as I know everything is possible at least in tupuhuu.
Just when it comes to a choice between making blender a better tool for game designers or making blender a better tool for animators then blender should stick to it's roots (animation). If both is possible; sure.
You are not thinking I'm holding this thing back (as if I could) because I don't like normal tweeking or something, right?
Most questions I ask are only because I don't understand what's so wrong with face splitting for making hard edges.

As I understand now it's a gui thing, not a data storage thing.

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

Post by oin » Wed Jun 22, 2005 9:41 pm

I see.

Well, I knew that possibility of splitting. The people like me that have used many years other tools before getting to Blender, call that "breaking the mesh". Yep, I see it's surely no problem in animation (in high poly projects) ..But adding vertex count every time you want a hard edge (probably is more often in games than most people think) is a nono for optimizing, plus in some cases, no good for other reasons for x or y engine... Is something modders, indy game artists, or just the ones like me that earn a living with it (more or less, I'm afraid) try to avoid as means problems.

Well, then let's hope is a feature that at some point is doable without affecting the animation development. Indeed, as I said, I prefer certain specific character animation improves.

Anyway, capabilities apart, doing it as split is clearly slower than as I have done hard edges in packages like Wings or Maya.

BTW, the ones coding Blender are the ones who I think tend to know best what is better to add at each moment. Just that I thought efbie's points were so certain I'd have to say it. ;)

-efbie-
Posts: 0
Joined: Wed Oct 27, 2004 9:47 pm

Post by -efbie- » Wed Jun 22, 2005 11:15 pm

Hard edges are in fact more than just a UI problem; if you use only split, it is really difficult to know where are your hardedges on export. And the export format may need that data for various purposes. (like it uses built in optimisation for hard edges, etc...)
joeri wrote: But let's not pretent you cannot make hard edges in blender.
It's perfectly possible, it's called split and splits faces from each other resulting in 4 verteces per face.
Then an animator doesn't need armatures, there is another feature called "vertex keys" that can fit the job pretty well...
This was an exagerated example, but i hope you get the point. In every software there must be a good compromise between "feature flexibility" and "speed of workflow" Say to a gamedesigner "just use the split function, it's the same" then he will say, "for the time i save using hardedges over that split function, i can afford that 500$ XSI in one month, or for non pros "i can crack 3DS in a few seconds"

To be honest, i don't care about hardedges for myself. I'm not a gameartist, i'm doing civil engineer studies, 3d is a hobby for me, but i have friends who lives from making game models. I just find stupid that they spend all that money in programs like 3DS, just to have the features listed above. Could they use blender ? No, because they need to be sure that they can meet the deadlines and client requirements, and those features are needed in that aspect.

I'm not asking "stop animation refactor" but "Hey you the developper without an idea, here are features more important than rainbow wireframe colors in viewport"

Post Reply