Home Technical Talk

3Point Custom Bake plugin (3dsmax experiment)

polycounter lvl 18
Offline / Send Message
CrazyButcher polycounter lvl 18
hi folks,
this is for tech people, an experimental plugin I did a couple years back to output different tangent space normal map's from 3dsmax baker. The idea was that the quality normals modifier implements "known" tangent spaces from games such as Crytek, and therefore allows easy and synced authoring for an engine (3point shader for display, 3point baker for baking).

plugin binaries should work up till 3dsmax 2011, also comes with source code in case anyone wants compile for a newer version.
http://www.luxinia.de/download/3pointbake_experimental.zip

It is not a product as such, and just a modified version of the default 3dsmax bake plugin. Please consult the readme for more details.

This is not meant for regular "artists", but technical folks to check if they can improve bake quality for something like UE3. Due to time constraints there will be no support whatsoever from me on this.

The plugin makes it possible that you enable/disable per-pixel normalization of tanget space (DONE by default it max, but afaik not done in various games, such as UE3). And furthermore it allows to feed an entire "own" tangent space, overriding max's as UVW-channels (same trick the 3point shader/quality normals combo uses). You could even script this by generating the uvw data according to tangent-space and especially per-vertex TS merging rules for a specific engine.

I'd be very happy for feedback, especially if someone is able to "convince" their tools/tech people to sync tangent space to their engines with this. Should save lots of dollars in the end :)

I've also pushed the topic on a blog once more http://pixeljetstream.blogspot.de/2012/06/tangent-space-can-cost-extra-money.html

Replies

  • Ace-Angel
    Offline / Send Message
    Ace-Angel polycounter lvl 12
    Exciting! Can't wait to see what more Tech Savyy folks can create now!
  • Eric Chadwick
    Excellent share Christoph!
  • cptSwing
    Offline / Send Message
    cptSwing polycounter lvl 11
    fingers crossed! :)
  • EarthQuake
    This is awesome Chris!

    C'mon guys, show this stuff to your TAs.
  • mLichy
    I'll show this to our shader dude at work (Bungie). Although he comes on this forum, so he might see this before then.
  • Farfarer
    Very cool dude. Very cool indeed :D

    Thanks for sharing!
  • JasonLavoie
    Offline / Send Message
    JasonLavoie polycounter lvl 18
    Will forward this on to our guys as well... thanks for sharing!
  • Funky Bunnies
    Offline / Send Message
    Funky Bunnies polycounter lvl 17
    whoa, awesome!

    thanks for sharing crazybutcher! :)
  • Pedro Amorim
    how does this work?
  • Computron
    Offline / Send Message
    Computron polycounter lvl 7
    mLichy wrote: »
    I'll show this to our shader dude at work (Bungie). Although he comes on this forum, so he might see this before then.

    Bungie's own engine doesn't sync tangent basis to MAX, their most popular tool?
  • mLichy
    naw, it should be. Pretty posative.

    But if this can help us like 3Points Modifier does, where we can have a box and get nice normals, without having to smooth group break things, or add chamfers, that would be nice.
  • EarthQuake
    Computron wrote: »
    Bungie's own engine doesn't sync tangent basis to MAX, their most popular tool?

    Really common with most engines actually(not being synced). Its not really been an issue that a lot of people were aware of until recently. Most people just assume nasty smoothing errors are "how normal maps work".
    mLichy wrote: »
    naw, it should be. Pretty posative.

    But if this can help us like 3Points Modifier does, where we can have a box and get nice normals, without having to smooth group break things, or add chamfers, that would be nice.

    Well, if you can't get accurate shading like with 3pshader, then it isn't synced. =P

    Synced doesnt mean "the game won't crash when you load a normal map from max", it means its synced to the exact tangent data and you get the same results from baker all the way to in-game. When you have a synced workflow, smoothing errors will disappear in about 99% of cases(the other 1% being really specific situations where the NM can't account for the extreme shading).

    When you have a synced workflow, the only things you need to worry about are compression and resolution based artifacts.

    Theres is a broad industry wide misconception on "compatible" normal maps with regards to various bakers and engines. When you read "X engine is compatable with Z baker" 99% of the time all that is referring to is the "swizzle" or "handedness" of the bakes. Every baker can generate normal maps that will "work" in every engine(not including world/object space).

    The greater problem here is that artists/TAs/programmers think that because they're using the right handedness or some other way to deterime compatability that they've done everything correctly and no improvements can be made. But the sad reality is that virtually every game engine is not synced, and artists waste a massive amount of time and resources(verts, tris etc) tweaking and correcting for broken tangent spaces, when in most cases simply fixing the exporters/rendering code/etc to synchronize the tangent bias will save so much time and so many headaches.

    There are some engines like UDK that do weird optimizations that make it very hard/impossible to do properly synced tangents, but most other engines should be perfectly capable.
Sign In or Register to comment.