Home General Discussion

UDK: July 2012 Release - Synced Normals!

1
ngon master
Offline / Send Message
ZacD ngon master
http://www.unrealengine.com/news/epic_games_releases_july_2012_unreal_development_kit_beta/

http://udn.epicgames.com/Three/XNormalWorkflow.html

UDK finally has synced normals.
Normal Map Workflow Improvement

  • We have improved the workflow of baking and rendering normal maps
Workflow_maps-640x151.png
  • Notice it’s a far lower polycount than we could use before since there is no supporting chamfers or subdivisions
  • This workflow currently relies on using XNormal to bake normal maps but produces much higher quality shading than before
  • The Normal map workflow you’ve used in the past will still work, but if you want higher quality shading, this is currently the best workflow to use
  • It also allows you to use much less supporting geometry since you don’t have to fight incorrect shading
  • The first step is to make sure your model consists of 1 smoothing group
  • It also helps to triangulate your model using a modifier, that way you don’t have to worry about any application changing your triangles
  • When exporting your lowpoly model for xnormal, use these settings:
lowpoly_model_settings-368x266.png
  • The important points are the smoothing groups, and tangents & binormals
  • When loading your lowpoly model into Xnormal make sure “Use exported normals” is enabled
  • After baking your normal map, export your low poly models for Unreal using the SAME FBX settings as before
  • When importing your model into Unreal, enable “Import Tangents” and “Explicit Normals”

Nothing else too exciting, there is some bug fixes I'm sure some people will be happy about.

Replies

  • Bigjohn
    Options
    Offline / Send Message
    Bigjohn polycounter lvl 11
    So what does that mean for normals baked out of Max?
  • pior
    Options
    Offline / Send Message
    pior grand marshal polycounter
    This is actually all kinds of huge!
  • mbullister
    Options
    Offline / Send Message
    mbullister polycounter lvl 18
    Now that's a step in the right direction.

    I haven't been able to test it yet, but does this fix only work when importing static meshes? Skeletal Meshes can't import with explicit normals, so won't the problem persist with vehicles and guns?
  • Racer445
    Options
    Offline / Send Message
    Racer445 polycounter lvl 12
    can anyone confirm if skeletal meshes work with this?

    if so then asfuahfiouahfpiauhfpaofhu best game development news all year.
  • ZacD
    Options
    Offline / Send Message
    ZacD ngon master
    Bigjohn wrote: »
    So what does that mean for normals baked out of Max?

    They will still work.
    The Normal map workflow you’ve used in the past will still work, but if you want higher quality shading, this is currently the best workflow to use
  • meshiah
    Options
    Offline / Send Message
    meshiah polycounter lvl 17
    this is super huge., would this work with actor x exporter as well? i suppose we could at least do our statics like this with fbx. 3d boner!
  • EarthQuake
    Options
    Offline / Send Message
    ZacD wrote: »
    They will still work.

    Not what he was asking, there were methods to get explicit normals in UDK before, but they didn't work on rigged meshes. So it will be curious to see if that is fixed now.

    Also, heres to hoping this is actually "synced" and not just "better", from the example mesh there it looks like there are a *lot* of hard edges there already(otherwise the "old" example would look much worse than it does). So looking forward to seeing some 3rd party examples here.
  • Amsterdam Hilton Hotel
    Options
    Offline / Send Message
    Amsterdam Hilton Hotel insane polycounter
    odd that they didnt post the uvs on that example
  • ZacD
    Options
    Offline / Send Message
    ZacD ngon master
    It says to have one smoothing group, I'd assume it has no hard edges, but yeah, we can't really tell until people start throwing objects at it.
  • Oniram
    Options
    Offline / Send Message
    Oniram polycounter lvl 16
    i think i literally jumped for joy when i saw this.. also about perforce integration but thats slightly less exciting than synced normals.. regardless i think this is one of the best releases to date. :D
  • EarthQuake
    Options
    Offline / Send Message
    ZacD wrote: »
    It says to have one smoothing group, I'd assume it has no hard edges, but yeah, we can't really tell until people start throwing objects at it.

    Yeah exactly, count me as *cautiously excited* for this.
  • biofrost
    Options
    Offline / Send Message
    biofrost polycounter lvl 12
    Seems to work pretty good so far, I tryed this mesh out just a few days ago and was no happy with the results in UDK but all the shading errors I was having seem to be gone.
    AvS4m.jpg
  • mbullister
    Options
    Offline / Send Message
    mbullister polycounter lvl 18
    Okay, quick test.

    2veOb.jpg

    EDIT: updated image to no longer use point lights, which don't work correctly in UDK.

    FROM LEFT TO RIGHT: Skeletal mesh dynamically lit. Skeletal mesh with Light Environment. Static Mesh with 256 baked lightmap. Static Mesh unbaked with preview lighting.

    Rendering of Skeletal meshes does not appear to have improved at all.

    Rendering of Static meshes without lightmass looks pretty good, except for a few obvious errors. Lightmass brings some of the errors back in.

    At any rate, this at least answers the questions Racer and I had.
  • almighty_gir
    Options
    Offline / Send Message
    almighty_gir ngon master
    will they be adding this to their skeletal actor exporting tools?
  • ZacD
    Options
    Offline / Send Message
    ZacD ngon master
    mbullister I wouldn't judge the skeltal Mesh until we are sure the static mesh is done right.
  • EarthQuake
    Options
    Offline / Send Message
    mbullister wrote: »
    Okay, quick test.

    2kVDs.jpg

    Rendering of Skeletal meshes does not appear to have improved at all.

    Rendering of Static meshes without lightmass looks pretty good, except for a few obvious errors.

    Rendering of Static meshes with lightmass looks abyssmal, to the point where I think there's either something very wrong with my scene's settings or with lightmass itself.
    It's a normal 3 point light setup and I have standard settings for the lights and lightmass, so I'm not sure what the cause is.

    At any rate, this at least answers the questions Racer and I had.

    Is there any way you can do a similar comparison, but with the old version as well? The far right looks very very good, but I'm curious to see if the skeletal meshes have improved at all.
  • EarthQuake
    Options
    Offline / Send Message
    ZacD wrote: »
    It says to have one smoothing group

    I just want to touch on this quickly. In general terms this is bad advice. Even with a perfectly synced workflow, you still want to split your edges/SGs at your UV borders. Because:
    1. Its free, there is no extra vertex cost.
    2. Your normal maps will have less artifacts, even with 100% synced workflow
    3. Your normal maps will generally compress better(less crazy gradients etc)
    4. Reuse may be easier in some instances.
    5. A script can do this for you in 1 second in Max/Maya.

    And there are literally no cons. The only possible con is if you've got a weird baking workflow where your cage is not averaged(ie: offset method in max, not using a proper cage in Xnormal) than your projection mesh gives you a gap at your hard edges, but nobody should be baking like this.

    TL;DR: "Using one smoothing group" isn't the point of a synced workflow, it is easier to do with a synced workflow, but it isn't the end goal.
  • Bigjohn
    Options
    Offline / Send Message
    Bigjohn polycounter lvl 11
    EarthQuake wrote: »
    I just want to touch on this quickly. In general terms this is bad advice. Even with a perfectly synced workflow, you still want to split your edges/SGs at your UV borders. Because:
    1. Its free, there is no extra vertex cost.
    I thought that if you add smoothing groups it always adds a vertex cost. Is that not so? Or does it do that anyway for UV islands, so you might as well use it for SGs?

    EarthQuake wrote: »
    The only possible con is if you've got a weird baking workflow where your cage is not averaged(ie: offset method in max, not using a proper cage in Xnormal) than your projection mesh gives you a gap at your hard edges, but nobody should be baking like this.
    What's a better way to bake?

    I've always just reset the cage in max, then globally pushed it out until it looks about right. Is there some better way of doing that?
  • Quack!
    Options
    Offline / Send Message
    Quack! polycounter lvl 17
    YES! After Quakecon the team and I will be switching over. Can't wait!
    I've always just reset the cage in max, then globally pushed it out until it looks about right. Is there some better way of doing that?

    That is one of the proper ways. He is just saying "don't use offset when a cage is needed".
  • EarthQuake
    Options
    Offline / Send Message
    Bigjohn wrote: »
    I thought that if you add smoothing groups it always adds a vertex cost. Is that not so? Or does it do that anyway for UV islands, so you might as well use it for SGs?

    Correct, if your UV seams share the same borders as your smoothing groups/hard edges, there is no additional vert cost, and that is what performance in games comes down to the *actual* vert cost(uvs, hard edges, material breaks, etc) not the listed verts or triangles in your 3d app. There are some cool scripts to calculate this.
    What's a better way to bake?

    I've always just reset the cage in max, then globally pushed it out until it looks about right. Is there some better way of doing that?
    Sorry, I wanted to make a quick point so I wasn't super specific. In max you can go into "bake options" and click on "use offset" this ignores the standard max cage and uses an entirely different projection method with a simple ray distance. You really have to go in and "break it" to work like this in max, but it used to be pretty common. This is also the default way that Xnormal works if you just enter a ray distance, which I would highly suggest not doing, its much better to export a cage from max/maya or set up a cage in xnormal's 3d viewer. See the "waviness" thread in tech talk for more on this.


    Now, there could be some entirely unknown but perfectly valid reason to use 1 SG for this method in UDK, I can't say for sure, maybe the exporter takes a crap if you have more than 1 SG or something.

    But in very general terms "Use 1 SG" is at worst terrible advice(with an un-synced workflow), bad advice to possibly harmless(with a synced workflow) or not nearly specific enough to actually be helpful(if you're baking with a simple ray distance instead of an averaged projection mesh - then there are a whole different set of rules).
  • eld
    Options
    Offline / Send Message
    eld polycounter lvl 18
    Bigjohn wrote: »
    I thought that if you add smoothing groups it always adds a vertex cost. Is that not so? Or does it do that anyway for UV islands, so you might as well use it for SGs?

    There's a set of normals and tangents per vertex, and a UV-split will always mean that new vertices have been created.

    So what he is saying is that what you're doing is just modifying these already created vertices normals without actually adding anything.
  • ZacD
    Options
    Offline / Send Message
    ZacD ngon master
    *Redundant post*
  • Computron
    Options
    Offline / Send Message
    Computron polycounter lvl 7
    In another July UDK Beta thread on Polycount, JordanW said:
    JordanW wrote: »
    This should work for skeletal meshes as well, have you tried?
  • mbullister
    Options
    Offline / Send Message
    mbullister polycounter lvl 18
    Okay, got part of it sorted! Point lights don't work the way I would have expected in UDK-- possibly they never have. I swapped them out for directionals and lightmass is playing with them just fine. Here's the updated example:

    2veOb.jpg

    As you can see, static meshes look mostly okay, and skeletal meshes still artifact badly (and look horrible with light environments when there's no environment to get bounces).

    "Is there any way you can do a similar comparison, but with the old version as well? The far right looks very very good, but I'm curious to see if the skeletal meshes have improved at all."

    Here's from the May build. Just for fun, I exported a set with qualified normals just to compare.

    CV60o.jpg


    I apologize for the blown-out look of these images -they look fine inside UDK and Photoshop, but for some reason something is interfering with photoshop's color profile when they are saved.
  • Ace-Angel
    Options
    Offline / Send Message
    Ace-Angel polycounter lvl 12
    Yep, I can confirm that Skeletal Mesh doesn't look improved to me (it's still has that awkward seam on naked characters, and I know my damn naked character too well), UV split or not.

    Or do I need to set it up via FBX? In which case, I haven't seen any Documentation on how to set up a Skeletal Mesh via FBX.
  • JordanW
    Options
    Offline / Send Message
    JordanW polycounter lvl 19
    mbullister wrote: »
    Okay, quick test.

    2veOb.jpg

    Thanks for the comparison!


    Earthquake, I understand your skeptical but you should totally give this a try and see what kind of results you get.
  • [Deleted User]
    Options
    Offline / Send Message
    [Deleted User] polycounter lvl 9
    sooooo what are the export settings for maya users
  • Axios
    Options
    Offline / Send Message
    Axios polycounter lvl 10
    I had a bunch of stuff that I had baked in xNormal that looked decent/acceptable but after installing this and reimporting, it looks perfect. This is so great.
  • aajohnny
    Options
    Offline / Send Message
    aajohnny polycounter lvl 13
    - "Fixed post process effects on scene captures"

    Is that the command "Tiledshot"

    Because it doesn't seem to capture Bloom or anything else really when I do that now. I'm not sure if I'm misunderstanding.
  • Amsterdam Hilton Hotel
    Options
    Offline / Send Message
    Amsterdam Hilton Hotel insane polycounter
    mbullister wrote: »
    2veOb.jpg


    CV60o.jpg

    in these shots the current results for a static mesh look about the same as the old results using a qualified export.

    that's good, but it's not the same as a fundamental fix to the problem until we have a solution for all asset types including skeletal meshes.
  • Axios
    Options
    Offline / Send Message
    Axios polycounter lvl 10
    udk_box.jpg

    For what it's worth, this is what I got once I imported with the new build. Old on left, new on right. This was triangulated and exported in Maya, baked in xNormal, and imported with tangents and explicit normals.
  • biofrost
    Options
    Offline / Send Message
    biofrost polycounter lvl 12
    Seems most others are having the same results, shading looks much better Axios.

    @aajohnny I think it means for the screen capture actors used for reflections.
  • dpaynter26
    Options
    Offline / Send Message
    dpaynter26 polycounter lvl 11
    This is awesome!
  • ZacD
    Options
    Offline / Send Message
    ZacD ngon master
    I'd like to see these before and after with just lighting and normals, no diffuse.
  • mbullister
    Options
    Offline / Send Message
    mbullister polycounter lvl 18
    in these shots the current results for a static mesh look about the same as the old results using a qualified export.

    that's good, but it's not the same as a fundamental fix to the problem until we have a solution for all asset types including skeletal meshes.

    Assuming that both this update and qualified normals mode work as advertised, they should be identical. Any differences in quality here could be from the position of the lights, or the fact that I just reused the xnormal map for the qualified example instead of baking out a new one in Max.


    I kind of figured that the inconsistency in UDK's tangent basis was obvious enough and discussed enough (especially here at Polycount) that the only reason it never gets fixed is that it can't be-- that the calculations are happening somewhere deep in the code where altering it would break other things. For that reason, I wouldn't expect to see the problem truly fixed until UE4.

    I'd love to be wrong, though.
  • Froyok
    Options
    Offline / Send Message
    Froyok greentooth
    sooooo what are the export settings for maya users

    I would like to know too.
    Qualified normals doesn't exist in Maya.
  • Neox
    Options
    Offline / Send Message
    Neox godlike master sticky
    but there should be said settings (smoothinggroups and tandents) in the fbx exporter?

    also about skeletal meshes, as the question popped up, did you use fbx or the old skeletal mesh format?
  • Dazz3r
    Options
    Offline / Send Message
    Dazz3r polycounter lvl 12
    will download July's tonight when i get in from work tonight...this and Zbrush 4r4 and a free weekend XD = bliss
  • chrisradsby
    Options
    Offline / Send Message
    chrisradsby polycounter lvl 14
    Sweet, time to switch the project over again then. ^^ Here we go xD
  • passerby
    Options
    Offline / Send Message
    passerby polycounter lvl 12
    has anyone confirmed of hard edges, on texture borders, mess this up or not, since if i can do that i would like to since with hard edges on seams, i can produce normal maps that compress better.
  • toxic_h2o
    Options
    Offline / Send Message
    toxic_h2o polycounter lvl 8
    This is pretty sweet.
  • tntcheats
    Options
    Offline / Send Message
    tntcheats polycounter lvl 7
    Mobile
    Added support for background (iPod) music (bUsingBackgroundMusic)
    About time!
  • Froyok
    Options
    Offline / Send Message
    Froyok greentooth
    Neox wrote: »
    but there should be said settings (smoothinggroups and tandents) in the fbx exporter?
    Okay, I was wondering if something more was needed.
    also about skeletal meshes, as the question popped up, did you use fbx or the old skeletal mesh format?

    Well, not for me at least : http://www.polycount.com/forum/showpost.php?p=1636140&postcount=22
  • Mask_Salesman
    Options
    Offline / Send Message
    Mask_Salesman polycounter lvl 13
    Bout time! Best update ever :D
  • ZacD
    Options
    Offline / Send Message
    ZacD ngon master
    I've been doing some tests on a beveled cube, hard edges on UV seams work until you bake the lighting, no hard edges is a bit better after baking but not perfect, unless I'm doing something wrong, both look perfect before baking, so it's a bit disappointing.
  • Froyok
    Options
    Offline / Send Message
    Froyok greentooth
    ZacD wrote: »
    I've been doing some tests on a beveled cube, hard edges on UV seams work until you bake the lighting, no hard edges is a bit better after baking but not perfect, unless I'm doing something wrong, both look perfect before baking, so it's a bit disappointing.

    There is an option inside the Lightmass setting which affect the normals of the static mesh. Maybe you can try to disable it just for test ?
  • Mio
    Options
    Offline / Send Message
    Mio polycounter lvl 13
    EarthQuake wrote: »
    I just want to touch on this quickly. In general terms this is bad advice. Even with a perfectly synced workflow, you still want to split your edges/SGs at your UV borders. Because:
    1. Its free, there is no extra vertex cost.
    2. Your normal maps will have less artifacts, even with 100% synced workflow
    3. Your normal maps will generally compress better(less crazy gradients etc)
    4. Reuse may be easier in some instances.
    5. A script can do this for you in 1 second in Max/Maya.

    And there are literally no cons. The only possible con is if you've got a weird baking workflow where your cage is not averaged(ie: offset method in max, not using a proper cage in Xnormal) than your projection mesh gives you a gap at your hard edges, but nobody should be baking like this.

    TL;DR: "Using one smoothing group" isn't the point of a synced workflow, it is easier to do with a synced workflow, but it isn't the end goal.



    totally agree!


    even we got synced workflow ,but when it comes to production, still need to use this wisely, especially to the hard surface /environment stuff.
  • ZacD
    Options
    Offline / Send Message
    ZacD ngon master
    Froyok wrote: »
    There is an option inside the Lightmass setting which affect the normals of the static mesh. Maybe you can try to disable it just for test ?

    Indirect normal influence boost? Turning it to zero doesn't help.
  • tristamus
    Options
    Offline / Send Message
    tristamus polycounter lvl 9
    Axios wrote: »
    udk_box.jpg

    For what it's worth, this is what I got once I imported with the new build. Old on left, new on right. This was triangulated and exported in Maya, baked in xNormal, and imported with tangents and explicit normals.

    Wow, quite a boost in quality!
  • swepower
    Options
    Offline / Send Message
    I've always been able to keep my models in 1 smoothing(no extra geometry) group inside the blender Game Engine. Without any shading artifacts.(see basic example below)

    With this update, can i finally import these models in udk without having to rebake my normalmaps using hard edges/edge splits?


    Without normalmap:
    i7NaH.jpg


    With normalmap:heACe.jpg
1
Sign In or Register to comment.