Home Technical Talk

3dsmax 7 Normal Mapping Mini-tutorial!

MoP
polycounter lvl 16
Offline / Send Message
MoP polycounter lvl 16
I did a quick tutorial to show off the speed and efficiency of 3dsmax 7's Render to Texture features and the DirectX viewport shaders.

Take a look at it over on CGChat (I'm currently lacking webspace, so I had to use attachments).

http://www.cgchat.com/forum/showthread.php?s=&postid=196134

Enjoy!

MoP

Replies

  • Illusions
    Offline / Send Message
    Illusions polycounter lvl 12
    Lol...damn you Mop, you beat me to it...once I finished with my Smoke Elemental for the challenge I planned on writing one up...oh well, I can still do painting for normal maps, and radial aniosotropy (yes, thats right, I think I have an idea as to how to do radial aniostropy and possibly some other weird effects, like caustics, using normal maps...just need time to figure them out and try them)...

    Really nice tut though smile.gif...someone needs to still write a maxscript for this as some steps are reptitive...grrr...

    Btw, pointing out that DX texture previewing in viewports is unavailable on some materials (such as double-sided)...at least as far as I can tell...
  • ScoobyDoofus
    Offline / Send Message
    ScoobyDoofus polycounter lvl 17
    Nice tut Mop! I assumed this was how Normal Mapping would work in 7, but have yet to upgrade myself. Your final resulting model doesn't looks so hot though honestly...
    It just looks a bit blurry, although perhaps thats the new mip-mapping problems Im hearing about in Max 7...
  • MoP
    Offline / Send Message
    MoP polycounter lvl 16
    Scoob: Yeah, the model was just done in about 20 minutes to test out the features for myself. I think the blurriness is a combined result of the texture being non-square (I don't think Max likes 512x256 textures, it tends to chop them down a lot) and the fact that I scaled down the screenshot in Photoshop.
    Trust me, with a few coloured lights and a specular map thrown into the shader too, the results are much more impressive. I need to try it with something more detailed, like a character's face, soon...

    MoP
  • KMan
    Looks good mop. I'll have to try that out. Messing around with the ati normal mapper, just makes me feel dirty. tongue.gif
  • poopinmymouth
    Offline / Send Message
    poopinmymouth polycounter lvl 17
    nice tutorial mop, but one quick correction. the best low poly cages never poke through the high poly model. but at the same time be as close as possible to the high poly surface at all times. having the meshes intersect is the worst possible situation because the normals have to reverse direction, and that looks butt cause it is reliant on the resolution of the texture and can look really pixelated. Its one of the reasons silo's draw topology brush is so cool, because it keeps everything inside the high poly mesh, but keeps the verts sitting perfectly on the mesh surface.
  • poopinmymouth
    Offline / Send Message
    poopinmymouth polycounter lvl 17
    ive found, no matter whether im using the ati normal, the proprietary normal generator at TRI, Kaldera, or orb, that whenever the mesh intersects, it can create a hard line in the normal map, because of change in direction. It doesnt happen everytime, but I've yet to figure out what specific instances it is ok, so I have always kept mine on the inside.
  • skankerzero
    I'm not sure if it's an issue of wether the mesh goes under or over. It's knowing in which directions your normal mapping tool shoots it's rays and how far those rays reach.

    Our new TRI normal mapper shoots rays in both direction, and we can adjust the length. This works great because it doesn't matter if it's under or over.

    Though, poop brings a good point in that you should pick one and try to stick to it as best you can. Either try and stay on top or stay underneath.
  • MoP
    Offline / Send Message
    MoP polycounter lvl 16
    Per: Why not expand the Projection modifier to take the parts of the high-poly mesh "outside" the low-poly cage into account? Does this produce different normal-map results to having rays cast both towards and away from the low-poly mesh?
    In the tutorial I posted there, the "nuts" on the wheel hub stick through the low-poly mesh, but I edited the Projection cage to take that into account, and it seems to render down to the normal-map and produce the correct result.

    Poopinmymouth: No, I think it's ok in Max7's normal-renderer to have intersecting mesh edges. If you're getting hard lines in the normal map, you can turn on Supersampling and it will look right.

    I've never had any problems with pieces sticking through the low-poly mesh, as long as they don't go TOO far. And I reckon building a low-poly cage to entirely cover every part of a high-poly model would result in the low-poly mesh looking too "bulky", if you know what I mean. I reckon you should build the low-poly cage to stay as close to the average surface of the high-detail mesh as possible, regardless of whether this means the highpoly is sticking a short distance "through" the low-poly or not.

    I will experiment some more with an organic object like an arm, and see what the results are like.

    MoP
  • MoP
    Offline / Send Message
    MoP polycounter lvl 16
    http://www.cgchat.com/forum/showthread.php?s=&postid=196379

    Per128, Poopinmymouth, Skanker: Would you care to check that out and tell me your thoughts?

    The low-poly mesh is both inside and outside the high-detail model, and the resulting normal-map seems perfectly fine...

    Per: I cannot see why you say Max7's normal-mapper is "totally unusable"! From what I've tried, it gives equal or better quality, more consistent results than either ORB or Melody, without any raycasting problems regardless of whether the highpoly mesh is inside or outside the lowpoly mesh...

    Can you describe an instance (or even better, send me a file!) where Max7's normal mapper would not create a usable normal-map?

    Thanks,

    MoP
  • MoP
    Offline / Send Message
    MoP polycounter lvl 16
    Aha! Hooray.

    What is UV-projection? Are you referring to the normal-mapping option in the Render to Texture Projection Options screen? Is that the thingy which requires both the high-poly and low-poly objects to have the same UV-coordinates?
    Personally I can't see why I'd use that over the standard Projection modifier method. Therefore I haven't tried it, so I have no idea if it works!
    Unless you're talking about something else...

    Enlighten me! smile.gif
  • JDinges
    Offline / Send Message
    JDinges polycounter lvl 14
    Great info, thanks MoP grin.gif
  • MoP
    Offline / Send Message
    MoP polycounter lvl 16
    Cheers. I also just found out, Max7 now has a built-in .OBJ exporter!? Amazing!
  • skankerzero
    [ QUOTE ]
    Next are you gonna tell me that UV-projection works in the final version too??

    [/ QUOTE ]

    Why yes it does. I've been using it to pull textures off of our high poly Blur models. Works like a charm. Though, there are still some kinks to be worked out. Like being able to render to a 'non-square' map and such things like that.
  • Kevin Johnstone
    Offline / Send Message
    Kevin Johnstone polycounter lvl 16
    Mop: I'd avoid that native OBJ im/exporter unless its radically changed since the Beta.

    I was trying it out last month to import an OBJ from Zbrush and it took over 2hours still frozen. Using a plugin OBJ importer in Max6 took 5minutes to import the same model.
  • MoP
    Offline / Send Message
    MoP polycounter lvl 16
    Ror, well, I just imported that 110,000 poly mesh using Max7's native OBJ importer, and it took under 5 seconds.
    I guess a lot of stuff in the final version must be more stable than in the beta, then?

    Actually, now that I think about it, your might have just been a one-off bug, because I'm pretty sure the OBJ importer/exporter for Max7 is just an implementation of the freely-available HABware plugin for previous versions.
    I just tried adding it to the plugins list, and it gives a "Duplicate Class ID" warning when loading the ImportOBJ.dli and ExportOBJ.dle plugins, so I guess they're the same. The UI for the plugin options looks identical to the older HABware ones too.

    So I think you might have just been unlucky with the Beta version? Might have been a Max7 bug rather than a problem with the importer.

    MoP
  • Kevin Johnstone
    Offline / Send Message
    Kevin Johnstone polycounter lvl 16
    Mop: I'll give it another try once i get back onto my Zbrush pass again. I know that previously, it was not an isolated incident in the Beta, I had tried it with 4 models and it always took longer or just hung.

    Course, you never know with bugs, sounds like its time for anothe try anyway.
  • MoP
    Offline / Send Message
    MoP polycounter lvl 16
    Ha, 100k for just the arm with a no-detail hand though smile.gif
    And yeah, it was just a 512x256 normal-map. Is there any way of rendering non-square Render to Texture maps?

    Yeah, the edge/vert selection thing after doing Connects and Cuts and such in Max7 is very nice. It wasn't like that in Max6, and yeah it was annoying.

    Yar!
  • KMan
    Mop- When I was rendering to non square texture and normal maps, I'd just resize the image in photoshop afterwards, and turn of the filtering in it, that way it doesn't get blurred and distorted by their filtering.
  • _Shimmer
    Offline / Send Message
    _Shimmer polycounter lvl 14
    [ QUOTE ]
    Cheers. I also just found out, Max7 now has a built-in .OBJ exporter!? Amazing!

    [/ QUOTE ]

    oh yeah and it works sooooo good. I tried it out today on a model i have to do for contract. I just had to fix the size and some smoothing, nothing more.

    The portation from max to maya used to take nearly 3 hours per model, right now i need just 2 min. Oh goo! Im so happy...

    And MoP, very cool tut. the render to texture feature is just awesome in max. the coolest thing s, you can take a hipoly model with bump and spec and complete diffrent UVs and project it ona low poly model. Also the bump from the highpoly model can be baked in the normalmap itself. Its lake havin permanent orgasms while discovring the new max vetrsion laugh.gif
  • Zeldrik
    Offline / Send Message
    Zeldrik polycounter lvl 12
    Props for taking the time to do this, now I just need Max7.......I only just got 6..
  • Kevin Johnstone
    Offline / Send Message
    Kevin Johnstone polycounter lvl 16
    i just retested max7's native obj import/exporter. It's still ass compared to switching back to Max6 and the OBJtoMAX custom importer I use.

    Perhaps Discreet geared their own more toward supporting maya? Certainly it is useless when it comes to importing a 1-2million poly model back in from Zbrush..
Sign In or Register to comment.