Home Technical Talk

3dsMax Normal Projection Trick?

Thunder
polycounter lvl 8
Offline / Send Message
Thunder polycounter lvl 8
Ok, so there has been some disagreement between myself and a friend of mine *cough* oniram *cough* as to a technique I used to create a normal map. The technique I used is to add floating pieces. I had seen this be extremely effective on other normal maps so I figured, "why wouldn't it work with bigger objects?" because in the end it's all going on a plane anyway.

Here is the piece of the floor texture I'm making. It's a scifi floor btw.
graterenderpublic.jpg

Here is the image from a side perspective view where you can see that details are floating. everything except the main grate body(the box around and the x shape in the middle) are floating.

graterenderside.jpg

With the exception of one issue around the corners of the grate at the bottom(easily photoshopped out), I had no problems rendering it.

gratenormalpublic.jpg

I'm trying to find out if there is truly a drawback to this when using it for floors. It's a quick and easy way to stack detail without having to worry about topology that much. Oh and excuse the screen grabs :)

Replies

  • kdm3d
    the only drawback is a few extra steps when rendering your AO maps... but that a technique we use a lot here. It can be a lot cleaner, faster, and nondestructable workflow.
  • Thunder
    Offline / Send Message
    Thunder polycounter lvl 8
    actually, oniram showed me a cooltrick by using scanline with light tracer(default settings). under the render setup you set filter to catmul-rom and enable global supersampling with hammersley at 1.0 quality. then set you apply a white material to the high poly and boom, eliminates the wierd AO errors with floating objects.
  • MoP
    Offline / Send Message
    MoP polycounter lvl 18
    Yes, this technique has been in practise for as long as normal-mapping has been around in games.

    If you looked at some of the source highpolys for Doom3's textures (made in Lightwave), they were stacked up a good 10-20 units out from each other and rendered as a flat normalmap using "renderbumpFlat" in Doom3.
  • kdm3d
    Thunder wrote: »
    actually, oniram showed me a cooltrick by using scanline with light tracer(default settings). under the render setup you set filter to catmul-rom and enable global supersampling with hammersley at 1.0 quality. then set you apply a white material to the high poly and boom, eliminates the wierd AO errors with floating objects.


    I'll have to try that out.. nice!
  • thomasmahler
    Offline / Send Message
    thomasmahler polycounter lvl 14
    Super useful for highPoly inorganics and it's being used a lot for game models - same way Crazybump is being used for other stuff to enhance details or simulate detail that isn't really there.
  • Eric Chadwick
  • Oniram
    Offline / Send Message
    Oniram polycounter lvl 17
    well my main dispute was not with the floating geometry, being that was what i had advised you to do originally.. my major dispute was with the floating planes you used to clean up your modeling errors.
  • kdm3d
    oh... well, sloppy as that is, its the final result that matters. In a time crunch, sometimes its better to hack something than spend hours trying to fix the problem. That being said... clean geo from the beginning is always the better way to go.
  • Ghostscape
    Offline / Send Message
    Ghostscape polycounter lvl 13
    Oniram wrote: »
    well my main dispute was not with the floating geometry, being that was what i had advised you to do originally.. my major dispute was with the floating planes you used to clean up your modeling errors.

    If I have gross-as-fuck messy shading/meshflow in the interior of an inset area I will frequently put a plane or whatever in the bottom of it to hide that. I've been doing that in a production environment for 3 years and it has been nothing but useful, hope this helps :)

    Seriously, end result is what matters, not workflow. If you sacrifice a goat to get your normal maps working and it does it consistently and efficiently, then sacrifice goats or use floaters or whatever. The only time a method isn't correct is when it doesn't give the desired output.
  • Eric Chadwick
    Thunder wrote: »
    actually, oniram showed me a cooltrick by using scanline with light tracer(default settings). under the render setup you set filter to catmul-rom and enable global supersampling with hammersley at 1.0 quality. then set you apply a white material to the high poly and boom, eliminates the wierd AO errors with floating objects.

    Hmm, I don't get it, what errors does this solve? Supersampling gives antialiasing around the edges of floaters, but it doesn't fix the problem where floaters don't cast good AO because they're too far away.

    I thought EQ had a nice workaround for this.
  • Ruz
    Offline / Send Message
    Ruz polycount lvl 666
    I found turning off padding ie setting it to '0' got rid of any floater artefacts.
    you probably knew that already:)
  • Oniram
    Offline / Send Message
    Oniram polycounter lvl 17
    Hmm, I don't get it, what errors does this solve? Supersampling gives antialiasing around the edges of floaters, but it doesn't fix the problem where floaters don't cast good AO because they're too far away.

    I thought EQ had a nice workaround for this.

    here's what he was trying to say.

    using mental ray naturally captures better line detail than scanline without supersampling. the preset Ambient Occlusion (MR) option for render to texture will leave shadows in areas that you absolutely do not want them. Light tracer filters that out pretty much when you render as a complete map with scanline. the supersampling is required (sometimes) just to account for the sharply filtered pixels.

    mrexample.jpg

    mrexample2.jpg
  • Thunder
    Offline / Send Message
    Thunder polycounter lvl 8
    Thank you for the much clearer explanation. I just kind of said "do it and it will work" but you explained why.

    On a more awesome note, you need to post a tutorial on the cage-import/export-ma-thingy so i can see and render out the AO for the foot locker (which i finished)
  • r_fletch_r
    Offline / Send Message
    r_fletch_r polycounter lvl 9
    just set the max distance in the mentalray AO shader. its set to 0 by default which means occlusion rays will be cast an infinite distance. if you set it to a value lower than the distance between your floaters and the surface the problem is fixed.

    This way you get to keep the falloff and Spread settings. giving you nice cavity shading that the light tracer cant do
  • SHEPEIRO
    Offline / Send Message
    SHEPEIRO polycounter lvl 17
    these tricks are never necessarily good or bad in themselves, if you only ever bake that asset once and use whatever quick fixes are available that can be a huge time saver, when your not sure of that it can be worth (often in hindsight) to build the asset properly, this is something i know yet frequently get wrong...most of the time i feel an urge to make the asset proppery just in case when it never needs to be, seams to fullfill a need...sorry for not adding anything to the topic particularly
  • Oniram
    Offline / Send Message
    Oniram polycounter lvl 17
    r_fletch_r wrote: »
    just set the max distance in the mentalray AO shader. its set to 0 by default which means occlusion rays will be cast an infinite distance. if you set it to a value lower than the distance between your floaters and the surface the problem is fixed.

    This way you get to keep the falloff and Spread settings. giving you nice cavity shading that the light tracer cant do


    so what happens to the rest of the objects that are meant to make AO that is further than the max distance you set?
  • r_fletch_r
    Offline / Send Message
    r_fletch_r polycounter lvl 9
    Oniram wrote: »
    so what happens to the rest of the objects that are meant to make AO that is further than the max distance you set?

    Why would you float geometry that is supposed to be providing you with cavity/intersection shading. that makes no sense. If its supposed to be providing an indent then float it. if not just mate it with the surface.
  • SHEPEIRO
    Offline / Send Message
    SHEPEIRO polycounter lvl 17
    if its quick two bakes...then blend in PS
  • Oniram
    Offline / Send Message
    Oniram polycounter lvl 17
    r_fletch_r wrote: »
    Why would you float geometry that is supposed to be providing you with cavity/intersection shading. that makes no sense. If its supposed to be providing an indent then float it. if not just mate it with the surface.

    not necessarily floating geometry. heres an example. you have geometry floating 1 unit above your mesh. if you set the max distance to 1, will the AO cut off at 1 for the entire mesh? even if you have other pieces of the mesh (not necessarily floating) that create AO with a distance further than 1.
  • r_fletch_r
    Offline / Send Message
    r_fletch_r polycounter lvl 9
    Oniram wrote: »
    not necessarily floating geometry. heres an example. you have geometry floating 1 unit above your mesh. if you set the max distance to 1, will the AO cut off at 1 for the entire mesh? even if you have other pieces of the mesh (not necessarily floating) that create AO with a distance further than 1.

    I'm not sure i get how you are conceptualizing this. so ill just explain it as i understand it :)

    for every pixel rendered a cone of rays is shot from its world space position. these rays wont return hits for faces more than the max distance. so faces further than the max distance from the pixel will not cause occlusion shading. The end result is corners and contact areas will get shadowed but the floaters wont.


    mat_edit.png
    setup.png
    ao_test_normalsmap.png

    ao_test_ambientocclusion_mr_.png
  • Oniram
    Offline / Send Message
    Oniram polycounter lvl 17
    ok. so i tried it out.. and i figured that unless i am doing something wrong, this does not come out as it should.. what is happening here is exactly what i was saying in my previous posts. not only does the AO still show up, but it does not get as much AO because everything past whatever the max distance setting is will be cut off.

    mrexample3.jpg
  • Eric Chadwick
    So just push your floaters up higher. They could be 100 units up, doesn't matter for the normal map bake.
  • r_fletch_r
    Offline / Send Message
    r_fletch_r polycounter lvl 9
    Im coming from more of a rendering background than games. I'm intrigued as to why you want the AO to fill out your map so much. In my mind AO is to accentuate cavities and intersections. not light the entire object. when rendering scenes id always try and avoid broad AO regions as they look dirty and fake. Id usually rely on cast shadows for those sort of broad shadow details.
    Im not saying your wrong im just interested in why its done this way
  • Oniram
    Offline / Send Message
    Oniram polycounter lvl 17
    r_fletch_r wrote: »
    Im coming from more of a rendering background than games. I'm intrigued as to why you want the AO to fill out your map so much. In my mind AO is to accentuate cavities and intersections. not light the entire object. when rendering scenes id always try and avoid broad AO regions as they look dirty and fake. Id usually rely on cast shadows for those sort of broad shadow details.
    Im not saying your wrong im just interested in why its done this way

    fake is exactly why. because of a limit of polygons in games, its impossible to capture all the detail from a high poly mesh. baking the AO as an "extreme" is just a way to fake the shape of something so that it looks a lot more detailed than it really is. this way also it helps (speaking for myself here dunno is many other people think this way) for a base of what to do with a texture.
Sign In or Register to comment.