View Full Version : [Technical Talk] - The ultimate be-all end-all normal mapping thread
Shiskebab
04-09-2008, 07:10 AM
I use xnormal for normal mapping. How can i bake multiple object getting overlapping errors. I have a guy with a cap on his head, both the low poly and the high poly are seperate pieces ( a low poly head and low poly cap, a high poly head and a high poly cap). I can bake the pieces seperatly but the model is 20 different pieces so i rather do all at tjhe same time.
JordanW
04-09-2008, 07:23 AM
Just move them apart from each other.
Shiskebab
04-09-2008, 07:31 AM
Both the high and low poly models right? Because the highpoly models are made in zbrush and are way too big for my computer to import in my main 3d application.
Btw, would rendering a displacement map in zbrush and converting it to a normal map with xnormal be a good idea? Or would that give bad a result :)
JordanW
04-09-2008, 09:52 AM
1. Yes move both high and low poly models, how would the program know what to cast rays to if you didn't :)
You could always import High and low poly models into Zbrush to move them instead of in your 3d app.
OR just do a separate bake for your hat and your character.
2. You could always try it out on a small section of the model but I don't think it would yield as good of results.
artstream
04-16-2008, 01:39 AM
hey guys, i was reading through this buffet of information, and it's so much goodness here. I had a question though that I couldn't find in the thread.
I'm currently working on a UV layout for a school project and I'm going to add normal maps to the character, but something I've had problems with in the past is overlapping UVs with normal maps. In the past, I usually just overlayed the pieces that would be the same and weld the vertices together so that they are one piece, it worked a little bit, but I was wondering if there were more efficient ways than that. I'd be taking the low poly into ZBrush, sculpting, and using ZMapper to create the normals. For those of you who use XNormals, have you seen any advantages to using XNormals over ZMapper?
So, I found an answer to HOW to mirror UVs, thanks to Rick's wiki (awesome resource by the way). Only issue I see with it comes with using ZBrush, since if your UVs are offset, when generating the normal map, ZBrush will require you to render out the sections seperately (it recognizes the mesh as being divided into subgroups due to the offset UVs). Is this where using XNormals would come in handy? I could just export my low and high, and use XNormals as a workaround?
Vredesbyrd
04-20-2008, 02:51 AM
just wondering what collada has to do with normal mapping?
it was featured in the poll
McBradd
04-20-2008, 04:55 AM
Normally I would have started a new thread, but since this sticky is here I'm going to post my question here.
First of all I need to know if my process here is correct. I took step by step screen shots so you can tell me where I'm going wrong.
I first saw this technique here: http://www.iddevnet.com/quake4/ArtReference_CreatingModels and wanted to replicate it in Maya using the 'transfer maps' dialog.
1) So here is my low poly mesh and unwrap, all normals set to soft.
http://www.braddmcbrearty.com/random/normalmap/1.jpg
2)And here is the high poly mesh. The Objective will be to make the low poly look like the floating 'cup' shapes are actually indented into the surface.
http://www.braddmcbrearty.com/random/normalmap/2.jpg
3)Here's the transfer maps dialog. I pulled the verts on the front of the envelop out to encompass the 'cups' on the high poly model
http://www.braddmcbrearty.com/random/normalmap/3.jpg
4)Here are the settings I used, just to make sure I have them correct.
http://www.braddmcbrearty.com/random/normalmap/4.jpg
5)Here are my common output, and advanced settings, once again let me know if I have them right
http://www.braddmcbrearty.com/random/normalmap/5.jpg
6)Here are the Low and High poly models side by side with hardware texturing, default lighting, and high quality rendering. At this point, the surface of the low poly looks like what I was going for
http://www.braddmcbrearty.com/random/normalmap/6.jpg
7)However, when rendered out with a simple 3-point lighting rig and Maya's default renderer, All sorts of problems are apparent in the normal map, and the entire effect is lost! What am I doing wrong here?
http://www.braddmcbrearty.com/random/normalmap/7.jpg
8)And here is the normal map, which doesn't look like I was expecting. I was expecting almost all of the map to be the basic purplish color, and just the inset bits to be colored like a normal map. So their are obvious mistakes, I'm just to new to understand them.
Thanks in advance for helping me understand how to do this correctly.
http://www.braddmcbrearty.com/random/normalmap/8.jpg
No McBradd, that normalmap is correct, because your lowpoly mesh's normals are smoothed, and the highpoly object is flat on the top/bottom/sides so it has to draw the normalmap like that so that the lowpoly object will look "flat" once the normalmap is applied (you can see in your un-textured lowpoly model, the top appears slightly curved due to the shading).
And it looks like Maya is just using the normalmap as a standard bumpmap (heightmap) instead of a tangent-space map when it's rendering. I imagine there's something you have to set up in the material to make the renderer treat the image as a tangent-space normalmap instead of just a bumpmap, but I don't know much about Maya rendering so maybe someone else can help there. Or look in the Maya help files, it might mention it there.
katzeimsack
04-20-2008, 05:36 AM
maya sotware render doesn't support normalmaps. Render with mental ray or get a plugin wich adds the support.
McBradd
04-20-2008, 10:51 PM
Thank you katzeimsack, you were exactly correct:
http://braddmcbrearty.com/random/normalmap/9.jpg
I'm hoping to use this technique to speed up the high-poly modeling process by floating insets like screw holes, inset panels etc rather than modeling them into the surface.
Are there any flaws in my process?
Eric Chadwick
04-21-2008, 06:42 AM
just wondering what collada has to do with normal mapping?
it was featured in the poll
The poll is asking which 3d format people use to transfer meshes from one app to another, because frequently you model in one app but bake the normal map (etc.) in another.
Collada is a newer format, based on XML, sponsored by Sony and others. It's is being adopted more and more as an intermediary format.
Eric Chadwick
04-21-2008, 06:47 AM
Are there any flaws in my process?
You'll want more space between your UV shells, at least 8 pixels for a 1024x map, to avoid mipping artifacts when the mesh gets smaller on screen.
Also, floating geom doesn't work above curved surfaces quite as well as above flat surfaces. Doesn't mean you shouldn't do it, just buyer beware. Or something.
t4paN
04-26-2008, 01:22 PM
Guys, sorry if this has been already answered, but tbh I didn't go through the thread page by page..
I want to render some normal mapped objects in motion, like the classic turnaround thing. Now, I can either do this by rendering the model or by capturing this from the viewport or something.. Obviously, I'd rather render it... But I don't know how to do this in 3ds max 9.. I played around with shell materials (from what my primitive mind understands shell materials might have something to do with being able to render directx shader'd objects).
Specifically, I used the pick material from object tool, went to shell material parameteres, and lowered both dots to the "baked" selection. I then pressed render and hoped for a miracle...
Yeah, no dice. So I figured I had to change stuff in the render options. I tried using mental ray (cause I read that's what yuo have to do with Maya) and it rendered nothing because "mental ray's translator doesn't support dx mats" or something.
Anyway, any help would be appreciated!
Eric Chadwick
04-26-2008, 05:41 PM
Try using the Make Preview tool, in the Animation menu IIRC, it renders whatever is in the viewport out to an AVI. Might work for you. Other option is to recreate your FX materials from scratch as scanline-compatible materials.
What FX material are you using, or more accurately, what maps/effects are you using in your FX material?
t4paN
04-26-2008, 05:56 PM
I'm using Ben Cloward's HLSLnormal_map_specular_world.fx I've got a diffuse, spec in the alpha channel and normal map.
/edit dude, I tried the make preview, and althuogh it's kinda basic as a worst case scenario I could definitely use that! Thanks!
Eric Chadwick
04-26-2008, 07:21 PM
For scanline it's pretty easy too, grab a Standard material, put diffuse in diffuse channel, in the bump channel add a Normal Bump map and load your normalmap in there. Be sure to change the Bump channel spinner from 30 to 100. Copy the diffuse bitmap to the specular level channel, and change RGB Channel Output to Alpha As Gray (or it might be the other one, Mono Channel Output). Might need to flip X or Y or both in the Normal Bump settings. Good luck.
t4paN
04-27-2008, 04:08 AM
Thanks man, I'll try that as well :)
mikezoo
05-05-2008, 01:25 PM
Hey guys. Iam new here, and this looks like the thread to post questions about normal issues here. Hopefully. heh.
Anyways Ive been browseing aorund and viewing threads relating to xNormal. A cool program but I just havent gotten it to work for me yet.
I got myself a simple prop that I made in maya, unwrapped in uvlayout and did some quicky little high-poly tests in zbrush so i could load it up in xNormal.
Because this is a hard surface object, I am using the default setting in Xnormal of the Howard Days spaceship.
But, I have been tweaking options. like smooth normals and stuff, but it really doesn't seem to make a difference. I always get a pretty good normal map expect these darn strechings on the sides!
http://i48.photobucket.com/albums/f242/berskyz0r/gear06_nrm.jpg
If anybody could stear me in the right direction; I would be so stoked because it would be so cool of yeah. Or even tell me if this is the wrong thread to post this on. lol.
Thnxs!
Eric Chadwick
05-05-2008, 06:07 PM
This is from the pixel padding. Those smears shouldn't matter when you put the map on your model. The padding is necessary to avoid seams, go here to see why...
http://boards.polycount.net/showthread.php?t=53289
mikezoo
05-06-2008, 06:57 PM
ahhh, just learned a thing or two about mipmapping. Very cool Thanks Eric. I will keep playing with xnormal settings. see what i can mix up with this new info. thanks alot!
Eric Chadwick
05-07-2008, 06:37 AM
Cool, glad it helped. If you're still getting unsightly smears, you could turn off the pixel pad entirely, and use this Photoshop Action instead.
http://www.ericchadwick.com/examples/files/uv_edge_filter.zip
mikezoo
05-15-2008, 03:10 PM
wow! thats pretty niffy! I think i might use it down the road! thnx alot!
breakneck
05-17-2008, 06:58 PM
hey all, i've got something i'm trying to wrap around my head here.
I was looking through my buddies d'artiste book on character models from Gears of Wars - very cool.
in the book it shows how they took the low poly character model in max and moved all the parts away from eachother ( like explosion) to do the hi to low render to texture. This makes it possible to avoid artifacts that show up from overlapping cage parts (i'm assuming).
-- my question is this --
is it really as simple as exploding the mesh in such a manner? Im rather fond of Maya (i know i know) - is there a way of doing this same process in maya?
i have hard time typing my explination in words so if anyone needs anymore info i will try to better explain myself. thanks
rooster
05-18-2008, 03:28 AM
the easiest way to check that kind of stuff is do some tests with simple geometry if you're in doubt, but yeah its simple in maya. I save a file with everything in correct position, then another where I do all the normal mapping. once im done i apply the maps back to the original file. Or, you could freeze transforms of stuff in the correct place, move them for baking, and move everything back to 000 when you're done. Or, you could key the objects in both positions. lots of options :)
Ghostscape
05-29-2008, 01:34 PM
When I explode an object, I just use the absolute mode translate toggle in Max, so I can move each piece exact numbers away from each other (usually I set it up in a row, with the main piece at 0, next at 1, 2, etc. It's really easy and I can re-assemble instantly.
Also, when exploding like this, you can keep duplicates or low-poly duplicates that are ignored in the projection modifier to maintain good AO bakes that aren't missing information.
Saidin311
06-02-2008, 08:17 PM
More head wrapping.
Can someone with more knowledge than me explain whats going on in this thread?
http://boards.polycount.net/showthread.php?t=53729
Specifically, with a symmetrical object with symmetrical normal detail. Overlapping normals while baking is a no-no. At least that was what I was under the impression of. So whenever I have an object that is symmetrical, and I want to save diffuse texture space I can't because I have to break it all apart so that the normals can bake properly.
MightyPea says this:
Just make sure the normals aren't overlapping while baking the normalmap. Move the overlapping uv-islands by 1, bake, move them back by -1, and you should be set.
I'm obviously not looking enough to know how to accurately move a portion of an unwrap. But I'm not sure how he means to move them, bake and then move them back. Are we talking about moving them in the 3d app, or in photoshop?
Cheers for any help with an explanation!
EarthQuake
06-02-2008, 08:31 PM
What you want to do when you bake is move the mirrored section of the uvs out of the 0-1 uv space, i usually just move it over 1 unit exactly. That will fix any problems when baking.
MightyPea
06-03-2008, 03:55 AM
Exactly, what eq said. All you need to do is make sure the overlapping uvs are outside of the 0-1 range during the baking, but ofcourse it makes sense to do it by something that's easy to undo --like 1-- instead of arbitrarily dragging it somewhere, so you can just do that in reverse to put the uvs back after the baking. The problem only arises during the baking, so afterward you'll need to put those bits back so they actually get textured
Eric Chadwick
06-03-2008, 06:26 AM
Don't need to move them back inside the 0-1 area, they'll still be textured perfectly when you leave them outside. As long as they're moved exactly 1 unit over (or any whole number, but higher offset #s don't offer any benefit really).
If you're using 3ds Max, there's a selection tool in the Unwrap window's menu that selects all inverted faces... helps me find all faces I need to offset.
MightyPea
06-03-2008, 08:42 AM
I wondered about that, Eric. I've noticed that it works that way, but I always figured it might not work in all engines, or be a worse performance hit. Speaking of which, what about overlapping (mirrored) uv-islands, does it help performance any to weld the verts?
Eric Chadwick
06-03-2008, 08:49 AM
No performance hit that I'm aware of. Same as tiling UVs, those go way outside the 0-1 square, no issues there, well unless you tile a gazillion times down a one-polygon wall. But that causes the long-thin-triangle problem anyhow.
Welding UVs does nothing for most exporters AFAIK. I think I heard of someone's exporter with a special setup that detects mirror seams by examining which verts are welded. Seems like overkill to me. Depends on the export coder though, how they decide to create/export their tangent space.
Rob Galanakis
06-03-2008, 10:24 AM
Just a note, because someone has to say it: Some cases/shaders may need your UV's all between 0 and 1, generally only if the texture address modes are set to 'clamp' or 'border'. We had to do this on my last project due to how we were doing decals and I can imagine a couple other scenarios as well. I think it is still perfectly safe to keep your UV's outside of 0 and 1 because this is rare- just thought I'd bring it up.
Eric Chadwick
06-03-2008, 11:27 AM
Oh man, now I'm gonna have to... kick... your... ass! :) I agree though, that's a good point. Always good to keep an open dialog with your coder buddies too. I think the only time recently I've had to clamp a texture was for a light beam, so it would stay black on the edges.
Chung Wong
06-11-2008, 06:46 PM
Wow, this thread looks interesting. I've recentlr become aware of something called object space normal mapping. I've been told by EQ that this is the way he would normal map a gun. Something inorganic lets say. How do I do this and can I do it in max? I have made a gun before and normal mapped it via the cage set up. Would I be right in saying that this is tangent mapping? I found it caused lots of problems and ended up having to paint over most of it in photopop.
Eric Chadwick
06-12-2008, 06:47 AM
Cribbed from the wiki (http://wiki.polycount.net/Normal_Map)...
Object-space normal map
Rainbow colors.
Faster performance than a tangent-space map (only a little faster).
Object can rotate, but shouldn't be deformed (unless engine converts it to tangentspace internally). Good for rotating game elements (weapons, doors, vehicles, etc.).
Unique map required for each mesh shape (can't tile or reuse much)
Easier to generate from a high-poly mesh because it doesn't have to conform to the low-poly vertex normals.
Harder to overlay painted details because the base colors vary across the surface of the mesh (EQ said they have a tool for this).Tangent-space normal map
Predominantly-blue colors.
Slower performance than an object-space map, but not by much.
Object can rotate and deform. Good for deforming meshes (characters, animals, flags, etc.)
Map can be reused by different mesh shapes, can be tiled and mirrored.
Easier to overlay painted details.Oh, and how to do it in Max is you open the Projection options from Render To Texture, and change Normal Map Space from Tangent to Local XYZ.
Chung Wong
06-12-2008, 09:18 AM
Oh my God, I think I'm about to have an orgsasm. I have been trying to find this out everywhere. You're forever a stud in my eyes Eric Chadwick.
Eric Chadwick
06-12-2008, 10:49 AM
Ewww. Hehehe, glad it helps.
JasonLavoie
06-12-2008, 12:35 PM
Hey all :)
I was just wondering if environment artists stick to Object-space normal maps or if they just use tangent, cause it seems like they both have there pros and cons.
Also (I'm looking right now as well) is there a noticeable difference in quality?
We used tangent-space maps for all our ETQW world/static stuff, since we usually ended up re-using parts of some textures on different geometry, and object-space maps won't work if you do that.
If you're making a bunch of unique props, then object-space might look a bit better, and possibly be a tiny bit (not noticeable) better performance, but some engines don't support them, I think.
Rob Galanakis
06-12-2008, 05:50 PM
If you're making a bunch of unique props, then object-space might look a bit better, and possibly be a tiny bit (not noticeable) better performance, but some engines don't support them, I think.
The performance issue is pretty irrelevant nowadays, and to support OS maps it just takes a pretty minor change to a shader. The pipeline issue is more significant- I wouldn't doubt many studios say no to OS maps simply because they don't want to deal with having to revise/fix/redo them, and educate artists on how to use them correctly, benefits, etc (though I wish studios took more time to explain, and explain this and other texture stuff correctly). OS maps will look better because they are explicit rather than the offset from a normal, in theory I should say this shouldn't matter, but it does in results. But not having worked with OS normal maps in my own art, can't say much on that point.
Stick to TS maps to be safe, but I would suggest you try out OS stuff as well.
EarthQuake
06-12-2008, 06:09 PM
One important thing to note, the performance issue really isnt important at all, the different between rendering OS/tangent, it just really dosent matter. Tho you can get away with less vertexes on an object space mesh, which is important when it comes to rigging i guess.
The real thing is this, you can't mirror stuff, so you might be talking the difference between a 2048x1024, and a 2048x2048 with close to the same amount of detail, and thats where the big difference is, so thats really what you have to consider. When i get a little less lazy i'll try to come up with a sample of some mirrored OS geo, so some of the more technical people here can try and write a shader to overcome this =)
Rob Galanakis
06-12-2008, 06:14 PM
One important thing to note, the performance issue really isnt important at all, the different between rendering OS/tangent, it just really dosent matter. Tho you can get away with less vertexes on an object space mesh, which is important when it comes to rigging i guess.
Though as said in this or another thread a while ago, though you can deform meshes with OS maps, it is a pain and not commonly done.
When i get a little less lazy i'll try to come up with a sample of some mirrored OS geo, so some of the more technical people here can try and write a shader to overcome this =)
As long as the mirroring is down an axis (X, Y, Z), all a shader would need to do is invert the X, Y, or Z component of the mirrored geo, which you could probably flag by moving it into another UV square (it, outside of 0-1). This could actually get pretty robust, actually, by mirroring X, Y, or Z, depending on if the U, V, or W was stored outside of 0-1 (or all of them).
Joao Sapiro
06-13-2008, 01:11 AM
that would be sweet...beeing able to mirror object space!!!
Eric Chadwick
06-13-2008, 04:53 AM
Though as said in this or another thread a while ago, though you can deform meshes with OS maps, it is a pain and not commonly done.
So does this mean basically creating the tangent-space in the shader?
CrazyButcher
06-13-2008, 05:26 AM
nope, but you need to send a rotation matrix (similar to tangent space matrix) which is result of animation blending to pixelshader. And then you rotate the object-space normalmap for each pixel into the space your light is in (typically world), or you pass lights rotated into object-space. Always think about the fact that in a regular skinned model (no normalmapping) the per-vertex normals are deformed by skinning as well, and vertex normals are in object-space, too. So it is possible with object-space normalmaps as well, just need to rotate in pixelshader.
no, you cannot trivially recreate tangent-space in shaders (which isnt needed anyway).
As long as spaces match, lighting will work. Which means you can convert world-space lightposition into object-space in vertexshader and then directly use os-normalmap in pixelshader. Or you transform os-normalmap into world-space and use world-space lightpositions in pixel shader. Same goes for tangent-space stuff.
a) you either pass lightpositions (in same space as normalmap) from vertex-shader to pixel-shader.
b) or you rotate the normals in your normalmap to same space as lights in pixel-shader.
both have their issues, but of course having normals in worldspace in pixel-shader allows say running in a loop over multiple lights easily. On the other hand the CPU could also easily transform the light sources to object space before... as you see it all depends on how the engine feeds the pipeline with the information.
Saying one "is always better/faster" than the other isnt so easy.
---
I have arbitrary mirroring of object-space normals working (upgraded the luxinia exporter) I will show some screenies later the weekend. Although the method Prof suggests ie say UV.x > 1 means mirrored at object space X axis and such is easily doable as well, however not atlas texture friendly.
Eric Chadwick
06-13-2008, 09:13 AM
Thanks man, good stuff.
IronHawk
06-13-2008, 09:08 PM
it came up in eq's gun thread how you should fix any smoothing problems on the low poly for tangent space prior to baking. how important is this? For some reason I thought the normal map corrected the messed up shading so it shades based on the high poly and badly shaded tris don't matter.
Is it best to add edge loops/smooth groups and clean up the shading before baking?
Eric Chadwick
06-14-2008, 06:25 AM
I think this might help, specifically the Q&A part.
http://wiki.polycount.net/Normal_Map#SmoothingGroupsAndHardEdges
If not, let me know, I'd like to improve it if I can. Someday I'd like to get some pictures in there.
IronHawk
06-14-2008, 07:51 AM
cool i knew i was on the right track. started second guessing myself. Funny thing is the part of the answer was a quote by me.
Eric Chadwick
06-14-2008, 05:17 PM
Hehe, I think I grabbed it from this earlier in this thread.
CrazyButcher
06-16-2008, 05:20 AM
link to "local normalmaps can be mirrored"
http://boards.polycount.net/showthread.php?t=53986
butt_sahib
06-19-2008, 06:17 AM
Excellent link cb! thanks alot :D
was having problems with normal map generation and spent the whole day figuring out. A friend had to help out in the end.
After projection, this is what i kept getting. (its a rim btw)
I tried so many different things that i cant count them all.
http://pinoshare.de/bild.php/1880,gsdS1N2F.jpg
The problem actually arised due to the fact that it shared the same UV co-ordinates as some other part of the model. It was actually an accident in the way that i detached it and had to unwrap it again so i made a large planar map which fit the ehowl uv window.
In my case, even though it was detached, the detached rim and the other part of the wheel shared the SAME material. And that was the material in which i had already applied a normal map. So i had to apply a default mat to get it to work.
Long story short; if youre getting this problem; its youre material/overlapping.
Chung Wong
06-25-2008, 10:49 AM
Hi Eric, I was just wondering. I alway bake my normal maps via 3dsmax (9) usually the projection method. The the results are fine if not a bit noisy. (As in bumpy and inpure) What are the best methods?
I have heard good things about something called Xnormals and crazybump etc.
All refering to organic modelling
Eric Chadwick
06-25-2008, 12:10 PM
http://wiki.polycount.net/Normal_Map
I'm slowly adding all the issues from this thread (and others). I don't have much on projection yet, but maybe the Working With Cages section will help.
Xnormal and Crazy Bump are both excellent tools, highly recommended.
butt_sahib
06-25-2008, 09:46 PM
chung wong;
You need to increase the number of samples to get rid of that jittery issue.
Always use mental ray for your projection and use a minimum of 4 smaples and max of 16 (what i have been told my an expert)
great job eric!
Chung Wong
06-25-2008, 10:07 PM
Sweet. Thanks butt_sahib and of course Eric. I'll give it a shot.
Eric Chadwick
06-26-2008, 05:21 AM
Cool tip butt_sahib.
I wonder if anyone has done comparisons between mental ray with that amount of sampling vs. scanline with global supersampling?
Chung Wong, can you post a closeup of the texture, and the shaded result? I have a suspicion that it might be a different issue than the renderer.
Chung Wong
06-26-2008, 08:43 AM
Thanks for the interest Eric. I'm not sure what you mean by shaded result. Do you mean put a light in the scene or something? Sorry, not familiar with the terms. Self taught, so anything goes really. Anyway here are some pics so you know what I mean. Sorry if they are a bit big.
http://i253.photobucket.com/albums/hh61/oivanwong/flashnormal.jpg
Ignore the red bits. They are not mapped on this example. I delete all the files I'm afraid, I have cleaned up the rest. It was a pain in the arse and just felt unnatural, as in I am doing something wrong.
http://i253.photobucket.com/albums/hh61/oivanwong/crappynormalmaps.jpg
results with this map applied. Crap isn't it?
http://i253.photobucket.com/albums/hh61/oivanwong/menus.jpg
Settings I use. I bake my maps via max 9 and using the projection method.
http://i253.photobucket.com/albums/hh61/oivanwong/winningpose-1.jpg
Final result. It's ok but not perfect. And I have to spend loads of time cleaning up. Sometimes, I even get black spots all over the maps I bake out. Whats going on there? I think it's because my model is too small or something. Have not got a clue
Oh, and cheers, I did a quick test of what you told me to do, I think I need to play about with it some more, I'll try it on my next model as this one was already complete. But, I think it may be slightly better. I'm I right in saying, that the higher the pases, the better the result? Should be a know brainer but I'm a retard so I could do with having it spelt out to me.:)
Eric Chadwick
06-26-2008, 02:04 PM
Are you not using a Normal Bump map type in your material? Could be why you're getting the bumpiness in your second shot there.
Black spots usually means there are overlapping UVs within the 0-1 UV square.
Chung Wong
06-26-2008, 04:45 PM
Well, after I bake it out, I place the map into the bump map spot. Basically I follow the infamous poopinmymouth normal map tut. I think I had better try Xnormals or something. Is it free? wishful thinking I know.
Thanks for the advice. Now I know why those stupid black spots appear.
butt_sahib
06-26-2008, 09:54 PM
Just making sure, THIS is where you put the normals"-
bump>normal bump>main bump ?
I guess you COULD might aswell try mental ray :D
hehe as far as self taught goes, we guys justhave to work shit out till it comes out ok ;)
btw, eric, i used to use scanline along time ago before i realised how much it sucked lol.
Ill post a picture if i can find one :D
MightyPea
06-27-2008, 05:29 AM
What's infamous about that tutorial?
Unless you meant famous, ofcourse.
Quasar
06-27-2008, 01:16 PM
Looks to me like your green channel is inverted, Chung
Chung Wong
06-27-2008, 05:01 PM
Mighty Pea, yeah, I mean famous. Sorry for my shit use of Englrish.
Butt-sahib. Yeah, I use scanline. I will experiment on the mr thing.
Chung Wong
06-27-2008, 05:06 PM
Quasar. Now thats a very interesting comment. I have too realised that something must be inverted as parts of my normal come out inverted, while others don't. At first, I thought it must be my uvs, but no. How do I correct this in max9? Any ideas?
butt_sahib
06-28-2008, 04:41 AM
before doing anything,i think you should read all the material you can on normal mapping esp. links by eric and threads on polycount. Great read :)
As far as i know, you cant invert your channel in max, but you can in photoshop. Go into channels, selectthe channel you want to invert, then go into edit>adjustments>invert.
LEViATHAN
06-28-2008, 04:59 AM
http://i32.tinypic.com/2vx2cds.jpg
Although this will only influence the interpolation and not the actual map. :)
Brice Vandemoortele
06-28-2008, 06:10 AM
I might be wrong on this point but I think I had this issue before
If specific uv shells (groups of uvs) are inverted in your baking but others do appear correctly then you might need to check if you got no flipped vertex normals in your mesh. If the normals are inverted then the raycasting during the baking is done in the wrong direction. Some renderers might also produce the same kind of error with flipped uv shells but I'm not so sure. Anyone could confirm this?
MightyPea
06-28-2008, 09:34 AM
I was just curious, Chung. Since the word gets used instead of famous so often, I did think that was the case here as well, but I thought I might have missed some internet-drama. Come to think of it, missing internet-drama sounds pretty good, what was I worried about in the first place?
Chung Wong
06-28-2008, 05:41 PM
Sweet. Thanks for all the help guys. I thought I had grasped normal mapping, but clearly there is so much more to learn. Pants. Looks like poops tut only scratches the surface. Still, it's a good tut.
MightyPea, nah, you haven't missed anything special, so nothing to worry about.
Brice, sorry, I can't confirm any of that, sounds all too technical. But very interested.
Cryocat
07-07-2008, 11:51 AM
This may just be complete ignorance on my part but shouldn't my normal map distort the silhouette of my model unlike a normal bump map? If so then I obviously have some simple setting wrong but I can't figure out what it is....
sooooo....
what is it? this isn't actually the models I'm using but it seemed the easiest way to illustrate my question. I thougt this would be an easy answer to find but I'm posting here after a day of searching the forum and the interwebs. Why is my damn normal map acting like a bump?
Thank you sirs, and I apologize if this question is something incredible simple or a result of a misunderstanding on my part.
http://i168.photobucket.com/albums/u178/fallennyght/NormalMapError.jpg
http://i168.photobucket.com/albums/u178/fallennyght/normalmaperror2.jpg
Eric Chadwick
07-07-2008, 06:44 PM
A normal map is just another bump technique, so there's no silhouette change. The silhouette can be changed with an expensive shader technique (not cheap enough for games use yet), or with actual polygonal displacement (which requires a lot of triangles, generally too many for games).
Cryocat
07-08-2008, 11:32 AM
ah thank you eric, I've been using them for some time now so I feel kind of silly for having to ask, I thought I remembered them altering the render in a more dramatic fashion. Guess it was a... trick of the light. Thank you for your clarification :)
McBradd
07-15-2008, 09:10 PM
I have a work flow question-
Right now I'm working on some steel supports for an underground level. They're basically I-Beams riveted together. I made a rivet and copied it all over for a high poly model then rendered it down. Now I'm working on the texture, which is basically painted dull grey, but worn so bits of metal show though, and little patches of rust. What's the best way to combine the normal map from the texture, for the rust and scratches, with the rendered out normal map from the Hi-poly?
I've played with rendering it through xNormal with ok results, and I've tried just overlaying them in photoshop, with less success.
Eric Chadwick
07-16-2008, 06:27 AM
Several tutorials here about how to mix normal map layers together:
http://wiki.polycount.net/Normal_Map#Painting
Also Stefan-Morrell's tutorial Hard Surface Texture Painting might help.
http://forums.cgsociety.org/showthread.php?f=46&t=373024
(similar tuts on the wiki here (http://wiki.polycount.net/CategoryEnvironment))
Murdoc
07-29-2008, 01:43 PM
Ok so trying to bake normals for the first time in max, my settings are identical to what Chung posted, but it keeps rendering out in this greyscale shaded mode rather then a normal map,
whats the deal with that?
Also off topic, weld vertices in my uv editor doesn't work, yet weld target does, weird, huh?
Eric Chadwick
07-29-2008, 01:47 PM
The rendering window doesn't show the normal map, it shows what the regular renderer "sees". The saved normal map is what you want to look at.
Select all the UV verts and enter 0 for the W coordinate, then try welding again.
Murdoc
07-29-2008, 02:17 PM
Hilarious... thanks Eric.
Yeah my welding is totally screwed on any object, must be a max error I think.
breakneck
08-27-2008, 02:38 PM
hey all, i don't think this was brought up yet. . .
-to normal map an object with multiple elements cleanly i understand that the best
way to do so, is to explode the low + high poly models and bake out your normal map
that way.
question: does anyone have a clear explanation on how to do this in maya or max?
-thanks
Eric Chadwick
08-27-2008, 03:00 PM
Just move the pieces apart from each other, very simple. Helps to do it in predictable amounts like 50 units or whatever.
Yes, this was covered, just a couple pages back.
http://boards.polycount.net/showthread.php?p=802209#post802209
breakneck
08-29-2008, 03:16 PM
Eric: thanks. yea thats what i've been doing, just wasn't sure if there was a better way.
Eric Chadwick
08-31-2008, 11:56 AM
There are a couple other ways, but that's probably the easiest.
If you don't want to move the pieces, another fast option is to match by material IDs. You assign the same unique material ID to a low-poly chunk and to its corresponding high-poly chunk. Then in Max you set the option to "match by material ID" in Render To Texture.
I guess you could pair this with an AO bake, so for the normalmap you match by ID, but for the AO you don't. Haven't tried this, but I think you would get a great AO because the meshes are staying in contact with each other.
silversteez
09-26-2008, 10:49 AM
hey all,
ok...at work we have some characters that we need to change up the uv's on for various reasons. we knew that there might be issues when it came time to bake the normal maps across uv channels, but upon reading some posts in this thread (back around page 6-7 i think) it seemed as though there was a solution--bake the normal map using max's render-to-texture as a normal map (as opposed to putting it in the diffuse slot and rendering it as diffuse) and max should adjust the tangents to compensate for the uv chunks being rotated to different angles.
well...it doesn't seem to be working. the results are different when we bake the normal map across using the RTT normal map versus diffuse map options, but there are still seams and things aren't lighting correctly with the resulting maps.
has anyone had success using this technique? if so, please help :)
re-baking the maps from the hi-polys is not really an option as we would like to use this technique on about 20-25 characters and the normal maps have been heavily edited/tweaked/combined in photoshop, etc...
thanks!!
Eric Chadwick
09-30-2008, 09:43 AM
Maybe too late for you, but this works for me in a quick test.
1) Bake Highpoly1 into Lowpoly1 using UV1. 2) Create UV2 for Lowpoly1. 3) Clone Lowpoly1 to create Lowpoly2, add normal map to Standard material's Bump slot using Normal Bump, set Bump to 100, assign. 4) Invoke RTT for Lowpoly1, choose UV 2, pick Lowpoly2 for the projection, enable Global Supersampler, render.
I found the Channel Direction checkboxes in Normal Bump all have to be off, or it doesn't work. Also get some noise in the render, might fix this by tweaking the supersampler.
Pedro Amorim
09-30-2008, 02:07 PM
ok, so i just wanted to post this cause i think its interesting.
One of the quirks of local space normal maps is that i cant overlay nvdia filter normal maps ontopof the local space normal map because of the diferent coloring. anywho, i was doing some testing today and i found a way of doing just that: overlaying phtoshop created nmaps on top of local space normalmaps. here is pic.
http://edgesize.com/pics/OMG.jpg
So, im using shaderFX, and basicaly what i did was. used the tiling shader and set the regular normal map to local space and the detail normal map to the one created in photoshop.
The downside is that you have to use 2 diferent textures to the normals. Maybe there is a way to bake down all that to one texture. will do some tests.
silversteez
09-30-2008, 03:08 PM
Maybe too late for you, but this works for me in a quick test.
1) Bake Highpoly1 into Lowpoly1 using UV1. 2) Create UV2 for Lowpoly1. 3) Clone Lowpoly1 to create Lowpoly2, add normal map to Standard material's Bump slot using Normal Bump, set Bump to 100, assign. 4) Invoke RTT for Lowpoly1, choose UV 2, pick Lowpoly2 for the projection, enable Global Supersampler, render.
I found the Channel Direction checkboxes in Normal Bump all have to be off, or it doesn't work. Also get some noise in the render, might fix this by tweaking the supersampler.
eric! wow, thanks so much for taking the time to do that test! i followed the steps and got a decent map. this is a workable solution to our problem, i suppose, but i just wish we didn't have to clone the mesh and project from one to another...the resulting map has some noise (not a huge issue) and some projection errors (will require manual clean-up...not ideal). i don't understand why we can't just bake the map from channel 1 to channel 2 and get correct results...but this is definitely a step in the right direction.
let me know if you have any other ideas.
thanks again!
Eric Chadwick
09-30-2008, 03:36 PM
RTT bakes a normalmap as the differences between two meshes, so if it's applied to the original mesh only, you get no differences.
onionhead_o
10-09-2008, 02:25 PM
i had a problem with the normal map bake where there are lot of black dots on normal map. I already tried to use global super sampler and it still dosen't solve the problem. And when I try to bake it in xnormal, the normal map gets all messed up. does anyone no how to fix it
Eric Chadwick
10-10-2008, 06:16 AM
Show a pic? Could be a few things... do you have any overlapping UVs? Does the high-poly mesh have a bump map on it? Does the high-poly mesh have doubled-up faces? (use STL Check modifier to find them) Are you including the low-poly mesh by accident? (Projection Options > Include Working Model should be off)
Having a problem with normal map seams.
I have a sofa, modelled and unwrapped in max, tested an o/a bake in max after sorting uv's and this worked well with no distortion or seams...
http://i93.photobucket.com/albums/l64/GC3D/seams.jpg
Exported the low poly to zbrush and made my detailled high poly, no matter the settings (afaik) there are still seams.
For instance the front seat cushions are mapped in 2 parts and the seam shows up there. So my question is does each component of a mesh have to be unwrapped as a whole part with no splits to be flawless?
Please help!
Eric Chadwick
10-19-2008, 01:13 PM
Cool sofa. Looks like you're mirroring the UVs, and whatever renderer you're using doesn't actually use the model's tangent basis (http://wiki.polycount.net/Normal_Map#TangentBasis) properly. What renderer is this?
Hi Eric, yep I did mirror the uv's for the base to try to save space for wanting to fit all this into one map of 1024 squared. The renderer is scanline. Wondering and realising those 2 hours spent on unwrapping were pointless when I should have pelt-mapped the lot for continuity feels bad!
Redoing mapping as typing this, looks like will have to restart my high poly in zbrush aswell, I could kick myself!
Just wondering before I finalise any mapping and export ready for zbrush, is it a bad idea to have overlapping uv's? Was wanting to overlap everything apart from the back and the base as the rest will be sharing uv space, textures etc. Will this cause artifacts or problems in a normal map?
Thanks
Eric Chadwick
10-19-2008, 02:24 PM
Hmmm, it should render seamlessly in Max's scanline. It might be that you have one of the color channels flipped, try changing the checkboxes in the Normal Bump map, see if that fixes it.
Overlapping UVs is fine, and is generally a good idea. Not sure if ZBrush hates overlaps or not, though I have heard it does use UV offsets for selecting sets of faces (when you offset a set of UV chunks in whole units outside the 0-1 box, ZBrush "understands" that set as a selectable whole).
Edit... Zbrush may also use a different tangent basis than Max, which would cause the seams you're seeing. Baker and Renderer have to use the same tangent basis calculator, or else you see lighting problems.
Ok I understand what you are saying but haven't ever seen any tangent settings in max for either renderer? Just going by past results - 2 pelt mapped zbrush heads I did were seamless but other ojects where the uv's of an element of the mesh were split ended up having seams like this.
It just seems strange that you can't draw a line say across a split/adjacent uv region and have the normal map show the line without a nasty distortion at the covergence point. Is it true that normal maps work properly only on contiguous uv's?
*Remapped this obj. http://i93.photobucket.com/albums/l64/GC3D/UVtemplatesofa.jpg
all pelted apart from base. Tried some test textures and with checker, distribution appears even, no stretching, so there should be no reason for failure now, well I hope.
Eric Chadwick
10-19-2008, 05:53 PM
Each program creates their tangent basis in their own way, one app might use the same way as your other app or it might not (most likely not). The tangent basis method is not exposed to the end user, you can only get to it via the SDK, if at all.
Try baking and rendering in Max. Or try baking in Xnormal, it lets you export the tangent basis it creates, so you can render in another app, like in Max. EarthQuake was talking about how 8monkey used Xnormal's SDK to export it to their own engine (or maybe jogshy did it for them, can't recall).
ok, so i just wanted to post this cause i think its interesting.
One of the quirks of local space normal maps is that i cant overlay nvdia filter normal maps ontopof the local space normal map because of the diferent coloring. anywho, i was doing some testing today and i found a way of doing just that: overlaying phtoshop created nmaps on top of local space normalmaps. here is pic.
OMG.jpg
So, im using shaderFX, and basicaly what i did was. used the tiling shader and set the regular normal map to local space and the detail normal map to the one created in photoshop.
The downside is that you have to use 2 diferent textures to the normals. Maybe there is a way to bake down all that to one texture. will do some tests.
can you manipulate the uvs in shaderfx? i guees it's possible, so why not use like a 256 tilable map in one corner of your 1024 map then use that part for the tiling, so you scale your uvs to 0.25x0.25 and pan the scaled uvs into the right position, read about that in UDN once, so it should work
Thanks Eric, got it sorted, just flipped the green channel and all normals showed up, thanks for the advice :) Just to add I don't know whether this will happen everytime but when rendering in zbrush 3.1 with zmapper using the 3dsmax8modifiedE.zmp (http://www.ericblondin.com/archives/3dsmax8modifiedE.zmp), flipping that one channel in max should work.
GCMP: There is a setting in Max's "Normal Bump" map type (if that's what you're using) to automatically flip the Y axis (green channel).
If you're using a custom shader, it might have a similar option. If not, you could edit the shader by hand to invert the green channel, it's pretty easy if you know where to look.
EarthQuake
10-20-2008, 12:26 PM
EarthQuake was talking about how 8monkey used Xnormal's SDK to export it to their own engine (or maybe jogshy did it for them, can't recall).
Both. =P We had one of our programmers here use the SDK to port our format over to xnormal. Santiago was nice enough to officially support it, as we were having to rebuild it every time there was an update to xnormal.
Hi again, thanks for more info ErickChadwick, MoP :)
For this project I'm porting to the TS2 engine which texturally is basic, mostly only using diffuse with the majority of objects so it would help in making quality, single channel textures where all the lighting etc. is all baked into one map.
I know I have asked this here before but no one has answered - can non contiguous uv's (split uv mesh elements) support seamless normal maps?
Eric Chadwick
10-21-2008, 05:06 PM
can non contiguous uv's (split uv mesh elements) support seamless normal maps?
Yes, as long as the mesh data is imported correctly, and the shader is written properly.
I'm not talking about engine rendering but pre-engine rendering = elements of a mesh that are split are not rendering normals correctly, seams all over the place etc. Unless pelt mapping or manual attachement of vertices is invoked so that mesh elements are a continous uv layout, it seems like I am still in a deep hole of misunderstanding, if that makes sense. Hoping I am missing somthing stupid here, so do you guys have this problem?
*Edit - Spoke to someone in irc and it seems I'm using the wrong shader, it should be fx, not standard blinn, thanks ALPHAwolf!
Eric Chadwick
10-22-2008, 05:32 AM
That'll be it. And, not just any FX shader either. Things might have changed in newer releases of Max, but in Max 9 this was the case...
http://wiki.polycount.net/Normal_Map#ShadersAndSeams
Excellent, thankyou once again, your wiki and this thread rocks!
Downloaded all of Ben Clowards normal shaders but having a problem. Thought all was well at first as the shader with my diffuse and normal was showing in the viewport but when rendered just the standard material got displayed. Tried open gl and software rendering, nothing seems to be working. Checked the wiki, Ben's instructions, max refs and googled stuff too. Am I doing something wrong?
Sorry for double post.
Eric Chadwick
11-01-2008, 05:09 AM
DirectX shaders are for the viewport only. Don't use the renderer to show off game assets. Employers want screenshots, they're generally closer to the in-game look.
You can use Printscreen, or a script (http://scriptspot.com/3ds-max/viewport-grabber-0), or in 3dsmax for an animation you can open the Animation menu and use Make Preview.
(http://scriptspot.com/3ds-max/viewport-grabber-0)
Bad news then, was hoping you weren't going to say that, although it was suspected after so many dead ends. Ok, the objects could be split up and screenshots taken if this is the most widely accepted method for assets. It feels a shame doing that but it answers the question I was afraid to ask - why you guys took screenshots instead of rendering!
Thanks for your advice.
Eric Chadwick
11-02-2008, 09:55 AM
Well, you can also render, it's not impossible, just not preferred. You need to setup your ingredients all over again. Inside the DirectX material there's a slot for Software Render Style... put a Standard (or whatever) in there and add your maps. A normal map needs to be in the Bump channel using a Normal Bump map type, and don't forget to change the channel from the default 30 to the better 100.
Been experimenting. Now you mention it have actually been using the sofware renderstyle, set up my material then change it to directx and keep old map as sub map. Ok so render style contains anything to be displayed at render time in the orignal shaders render style. No wonder my screen was blank!
Just thinking, this still leaves an inability to see quickly what an engine would be displaying in the viewport, I hear people run engines via script in max viewports to do that, is this a common thing? Reason for asking is because turning off edged faces looks pretty ugly and the active shade is extremely tempremental to say the least. Plus, with the above, I was presuming that software renderstyle didn't use the new normal map calculations of the direct x shader.
Eric Chadwick
11-10-2008, 11:24 AM
We use one of a set of custom-written fx shaders inside a DirectX material, display that in the viewport, and disregard the software renderer completely. I imagine most companies do that same.
Hmm, might need different shaders for my setup since only some of the textures were showing properly. Also will check the dfference with the new x64 system, I'm hoping that is the problem. Advice taken :) Will forfit the renderstyle for a standard material when rendering and try to get some plugs for activeshade or an in-viewport engine.
Eric Chadwick
11-11-2008, 05:11 AM
If you want to understand how (and work like) developers usually work on their in-game assets, don't use software rendering, don't use activeshade, only use the viewport and the DirectX material. Either learn to write your own shaders (Shader FX makes this easy) or use others' shaders.
If you're doing cinematics or other non-realtime 3D, then look into non-viewport rendering.
Harryscary276
11-16-2008, 11:10 AM
OK guess I should get my Noob question is as well
I use Maya 2008 (or 8.5, what ever they are calling it)
I am trying to learn Normal Mapping but i don't have access to a Normal Mapping program, does can you suggest one that is accessible to a collage student
When it comes to method I plan to make a low poly, unwrap it, then use it to make the high poly followed by the normal, does that sound like a good method or am I looking at the process wrong?
breakneck
11-18-2008, 11:00 PM
so i made a normal map for this crane thing. and the parts that i mirror over to the -1 space have the normal map inverted. Help!!!
screen grab with normals on the good side:
http://i83.photobucket.com/albums/j298/breakneck_rust/normal_test_01.jpg
renders of the bad parts:
http://i83.photobucket.com/albums/j298/breakneck_rust/normal_test_02.jpg
CrazyButcher
11-19-2008, 02:20 AM
and are you sure you use tangentspace normalmaps? mirroring localspace maps will need some dedicated shader/preprocess support.
Render in Mental Ray if you're not already. Maya's software renderer is rubbish at normal map rendering.
Also if you're using mental ray, make sure you enable "use maya derivatives":
from Paul Tosca's "Making of Varga" tutorial - http://www.paultosca.com/makingofvarga/011.jpg
MightyPea
11-19-2008, 05:13 AM
It seems fine in the viewport, so isn't it just a problem with the way you render it? Use Mental Ray, as MoP says, or even better: just get a screengrab of a viewport or in-engine thingy.
The screengrab up there looks much, much better than the renders, and that has nothing to do with the flipped normals.
Eric Chadwick
11-19-2008, 05:46 AM
...don't have access to a Normal Mapping program, does can you suggest one that is accessible to a collage student
Xnormal is free, and also happens to be one of the best.
http://wiki.polycount.net/Normal_Map#3DTools
I plan to make a low poly, unwrap it, then use it to make the high poly followed by the normal, does that sound like a good method or am I looking at the process wrong?
Many approaches, find what works best for you.
http://wiki.polycount.net/Normal_Map#ModelingTheHighPolyMesh
Harryscary276
11-19-2008, 07:19 AM
Xnormal is free, and also happens to be one of the best.
http://wiki.polycount.net/Normal_Map#3DTools
Many approaches, find what works best for you.
http://wiki.polycount.net/Normal_Map#ModelingTheHighPolyMesh
Thanks man
*Edit*
Ok i got Xnormal but its giving me hell, ive tried to export my models as FBX but I keep getting errors saying to Triangulate or Quadulate (sorry for spelling) even though I do either or before I exported
Eric Chadwick
11-19-2008, 10:53 AM
I'm not a Maya user, sorry. But you might try OBJ instead.
breakneck
11-19-2008, 12:12 PM
Render in Mental Ray if you're not already. Maya's software renderer is rubbish at normal map rendering.
Also if you're using mental ray, make sure you enable "use maya derivatives":
from Paul Tosca's "Making of Varga" tutorial - http://www.paultosca.com/makingofvarga/011.jpg
was using mental ray, was following the Varga tutorial (excellent by the way!) but i did miss that one tiny Maya Derivatives check box.
worked like a charm!!!
THANKS!
Szark
11-20-2008, 09:30 PM
I'm quite new to normal mapping, so I'm wondering if anyone knows why I'm getting this weird glitch at the top of my uvs:
http://img230.imageshack.us/img230/2746/uvsnz3.jpg
I've tried playing with uvs & smoothing groups but nothing seems to work...
I'm using xNormal to generate the normal map
Heres an image of my low & high poly meshes, clicky (http://img363.imageshack.us/img363/1097/meshesdz4.jpg)
Thanks
Eric Chadwick
11-21-2008, 10:28 AM
why I'm getting this weird glitch at the top of my uvs
http://www.svartberg.com/tutorials/article_normalmaps/normalmaps.html
Also more info here:
http://wiki.polycount.net/Normal_Map#SmoothingGroupsAndHardEdges
Szark
11-23-2008, 08:46 PM
Thanks Eric, I'll have a read through those and see if I can fix the glitch.
bugworld
12-05-2008, 05:56 PM
hi, I rendered the normal map of a face in XNormal and its all good in xnormal's 3Dviewport, the surface is completely following the highres model, but in Maya(both mental ray and high quality viewport) the face just shows some crack and lines of the lowpoly. Not a lot of them but certainly ruined the whole thing. Since I need to render in maya that's a big problem and I don't know how to get rid of them. [img=http://img529.imageshack.us/img529/2240/problemie3.th.jpg] (http://img529.imageshack.us/my.php?image=problemie3.jpg)
SkyGround
12-20-2008, 04:18 AM
bugworld try to flip green channel in normalmap when use it in maya
Harryscary276
12-27-2008, 12:19 PM
well I'm Having a bit of a problem myself,
http://boards.polycount.net/%5BIMG%5Dhttp://img.photobucket.com/albums/v168/harryscary276/Messupcopy.jpg%5B/IMG%5Dhttp://img.photobucket.com/albums/v168/harryscary276/Messupcopy.jpg
the box to the right is the high poly and the box to the left is suppose to be the low poly with the normal map but I get this
I'm using the normal map baker in Maya 2008
and I guess I should ask what Maya 2008 plugin would allow for the best export format for Xnormal
Talbot
01-04-2009, 08:44 AM
So yesterday I got to the point in a model where I needed to apply the normal map. I did so but then realized that I forgot how to align it. Can someone send me a link to a step by step tutorial on how to align maps in 3ds max?
Thanks.
:poly127: ok i dont get it.
http://s2b.directupload.net/images/090127/2iputap6.jpg (http://www.directupload.net)
im sure its really stupid what i had done...please tell me how to make a normal map... is it nessacary to have the uvs correct?
i use maya for modeling and uvw and xnormal...sure for the normal...
Joshua Stubbles
01-27-2009, 01:08 PM
The high poly doesn't need UV's on it. Your low poly object is EXCEEDINGLY too low poly to generate good normals from a higher res mesh. With something that low poly, you're better off making the normal map from a grey scale image using the Photoshop filter or (preferably) CrazyBump.
ArtsyFartsy
01-27-2009, 01:25 PM
Maks,
There's a lot of stuff you need to learn about normal maps. It would be pointless to tell you what you're doing wrong in this instance cause you're lacking many of the fundamentals.
I would go through some of the beginner tutorials on these sites:
http://www.3dtotal.com/
http://www.free3dtutorials.com/
Then learn about normal maps:
http://wiki.polycount.net/Normal_Map
http://www.poopinmymouth.com/tutorial/normal_workflow.htm
Also you should go through most of this thread. You won't understand everything people are talking about, but here and there peppered are some very good tips.
Just to get you in the right direction,
You don't need to unwrap your highpoly.
Check your cage through the xnormal preview, and adjust if necessary to fully encompass your models.
I'm guessing you've moved your model for demonstration in the screenshot, but the highpoly should be fit as closely as possible to the low poly (occupying the same space).
Normal maps aren't magic. You won't be able to project a circle onto a triangle. Add more faces to your round low poly shapes to better match the highpoly.
thanks a lot... i will present later some results...hope they will be better...
Is there any way to get rid of this mirror seam? I've tried warby's painting trick but it only makes it worse. It's baked and viewed in xNormal btw.
normalseam.jpg
achmedthesnake
01-28-2009, 07:15 PM
hmmmm.... i got a similar question to okno's regarding seams :
i finallllllllyyyy upgraded my software from 3ds max 7 to max 2008 - and using exactly the same setup and .fx shaders (ben clowards one) i can now see the seams of my normals in the viewport...
any one know what's going on?
Is there any way to get rid of this mirror seam? I've tried warby's painting trick but it only makes it worse. It's baked and viewed in xNormal btw.
http://i77.photobucket.com/albums/j62/drain-body-confirmed/normalseam.jpg
you bake with the overlapped faces moved 1 unit in the uv space, and then back to your modeling app and weld the verts in your uvs that join in the middle of the symetry. these shouldnt be separate because you are just "folding" the uvs
please ignore my example messy mesh.
here what i say.
http://www.paginasprodigy.com/4422120280/MirrorSeams.jpg
When I moved the flipped side back into the uv space and re-welded, this is what I get:
normalseam2.jpg
Some parts look okay, but there are some glitchy-looking bits. I'm exporting OBJ from blender by the way.
EarthQuake
01-30-2009, 03:09 PM
you dont actually need to move the uvs back, really there shouldn't be a problem doing that tho, try using the same mesh you bake with
That doesn't work either. Here is a close-up with the tangent visible. Does it look like it should?
normalseam3.jpg
Here's what it looks like overall. The seam isn't so visible when viewed far away, you can only notice it on the chin, philtrum and the end of the nose. Is this normal or should there really be absolutely no seam whatsoever?
normalseam4.jpg
Eric Chadwick
02-01-2009, 08:58 AM
That amount of seam is totally acceptable. When you put your diffuse map on there, and you actually use it in-game from a regular viewing distance, your audience will never see it. Never.
Game graphics are not about perfection.
Okay, thanks Eric. I need to stop being so overly cautious when it comes to normal maps. :icon15:
Talbot
02-01-2009, 01:59 PM
Can anyone tell me why my normal map is becoming so choppy?
http://i458.photobucket.com/albums/qq304/IamTalbot/g.png
This is only a section of the normal map... but it is a good example of what the problem is. Neither the lowpoly or the highpoly have that geometry so I don't understand why my normal map is showing up like that.
Thanks.
EDIT: actually I just realized that that part of the normal map wasn't the greatest to take a shot of. I would say to ignore the center area of the largest square... that is supposed to be a little grainy.
Eric Chadwick
02-01-2009, 06:26 PM
Is this 3ds Max? Turn off edge padding, do it in Photoshop instead. If you save out a 32bit TGA, in Photoshop you can use the alpha along with Jogshy's excellent padding filter.
Talbot
02-01-2009, 07:26 PM
Yes it is in 3ds max. Sorry I should have said that.
I fixed it a different way...
I changed the samples per pixels up in the render settings.
Minimum= 1/4 -> 4
Maximum= 4 -> 64
I will fool around with edge padding tomorrow to get an idea of what that does.
Thanks Eric.
achmedthesnake
02-02-2009, 04:20 PM
hmmmm.. figured out my problem - seems any render to texture (normals) in the lesser software would show seams, and when i re-did the bake in 2008, there goes the seams woo!
ArtsyFartsy
02-03-2009, 11:09 AM
hmmmm.. figured out my problem - seems any render to texture (normals) in the lesser software would show seams, and when i re-did the bake in 2008, there goes the seams woo!
Inconsistencies like these are the worst. Different hardware, directx, software configurations and other seemingly unrelated things can cause projections to produce wildly varying results.
My advice is that if you don't get what you want the first time try again with a slightly different setup. I always try to get normal bakes from as many different sources as possible (max, xnormal, mudbox etc.) and then for the final I combine the best sections of each.
Also the final polycount of the hghply can make a difference. My experience has been that higher polycounts will generally produce more artifacts, so you should keep the minimum number necessary for the level of detail you want.
It's a tough business we're in.
EarthQuake
02-03-2009, 12:22 PM
Also the final polycount of the hghply can make a difference. My experience has been that higher polycounts will generally produce more artifacts, so you should keep the minimum number necessary for the level of detail you want.
Wait what? No.
ArtsyFartsy
02-03-2009, 12:36 PM
Wait what? No.
It doesn't always happen, and i don't have an example handy, but i've seen more warping problems. Usually when I cross the 1 million poly threshold.
Theoretically it shouldn't make a difference, so maybe there's just something weird going on with my stuff.
ok i read alot of tutorials and your links ArtsyFartsy, but i got absolutly no result...
i think i understood alot, for sure not all, but nothing had changed... i will show you some examples
http://s7b.directupload.net/images/090204/lvsztjec.jpg (http://www.directupload.net)
do you have an idea?
please explain me my mistake...
i despair, cause i wanted to learn it in this holidays after 2 years of trying and dissapoints :poly127:
coldkodiak
02-03-2009, 05:33 PM
It doesn't always happen, and i don't have an example handy, but i've seen more warping problems. Usually when I cross the 1 million poly threshold.
Theoretically it shouldn't make a difference, so maybe there's just something weird going on with my stuff.
You lowpoly isn't holding up to its job if it can't bake down normals from its source without major distortions. How well you can make your cage is about 50% of the job.
ArtsyFartsy
02-03-2009, 11:25 PM
maks,
The faceted cylinder is probably because your objects are missing smoothing groups. Select your low poly and assign smooth group 1 to the whole thing. Assign a smooth group to your high poly as well. 1 group, to the whole object.
I'm not sure what's going on with the other object, but there's probably a mismatch of cage, low poly, and high poly. The projection rays are probably missing your reference geometry.
I'm no expert by any means, but here's my explanation of how normal mapping works.
Normal mapping is the projection of an object onto a normal map, which is then used to simulate the lighting of said object onto a different surface. Effectively making it appear as if the object (or deformation) is actually present, while in fact it is merely an illusion of light and shadow.
Note: Projection is actually the mathematically correct term of expressing a higher order variable with lower order equations, i.e, 3d object onto a 2D map. Everyone uses the word bake, as in baking the high poly information onto the low poly, but then bake is also used to mean when geometry information is included in the diffuse texture. It's wrong!...grub grub grub.
Projection is done by shooting a bunch of rays, from the center of the object, or from the cage vertices, towards the vertices and faces of the source object (low poly). If these rays hit any other surfaces on their way to the low poly, then the information from that new surface is PROJECTED (there's the word), onto the surface of the low poly. I guess you can also shoot rays from the surface of the low poly, outwards or inwards, and specify a travel distance.
Anyway, projection through a cage usually yields the best results and is more versatile.
So for our system to work we need 3 things. A source object (low poly), a cage whose topology (vertex count and numbering) is identical to the low poly, and reference geometry (high poly).
Every software does things a little differently, so I can't give you a step by step, but basically you select the low poly, assign the high poly or other geometry as the projection reference, and then tweak the cage so that the rays will hit all the parts of the high poly on their way to the low poly.
Let's say we want to project a 6 sided lug nut, onto a flat surface.
http://www.wallsandstalls.com/images/projection_test.jpg
The projection is done on the green plane, using the bolt as reference geometry. The cage (blue plane) was tweaked so that the rays will hit the bolt on their way towards the green plane. The bolt doesn't even need to be touching the green plane because the rays stop on the first surface hit, and the top surface of the bolt is hit first, so that will be recorded on the map. Back surface is irrelevant.
Here is the result.
http://www.wallsandstalls.com/images/projection_bolt.jpg
In theory all this should work great. In practice all software is different and there's a million things that can go wrong. Hence the 20 pages in this thread, and countless pages in other threads.
But keep the basics in mind. Normal mapping is not magic, think logically, can this object be projected onto the surface of this other object? What will happen to the rays as they travel? Is my projection assigned the correct geometry?
Ok, I think any more and I will stop making sense alltogether.
Funny thing is, everyone does tests with cylinders because the cylinder is such a basic and universal object. Cylinders are actually one of the most difficult things to map, because the cage requires very very fine tweaking to be able to avoid warping.
airbrush
02-05-2009, 06:42 AM
Is this 3ds Max? Turn off edge padding, do it in Photoshop instead. If you save out a 32bit TGA, in Photoshop you can use the alpha along with Jogshy's excellent padding filter.
Do you have a link to the padding filter you are referring to?...did a search but couldn't find it.
thx
Eric Chadwick
02-05-2009, 05:37 PM
It comes with Xnormal
http://www.xnormal.net/
You have to invoke it on a layer that isn't the bkg, and you have to pre-scale the layer inwards a bit. Then the filter lets you choose the # of pixels to extend outwards.
oh my god...
i cant believe it... look at that!
http://s5b.directupload.net/images/090207/temp/qjr5ntwt.jpg (http://s5b.directupload.net/file/d/1698/qjr5ntwt_jpg.htm)
i tried it for such along time... :D!
Thank you ArtsyFartsy the cage was the problem...
alexl
02-07-2009, 04:55 PM
Looking for some help on some problems here, been reading through this thread and a bunch of other stuff via google and what not so I think I know what the problem is but am not entirely sure, I think it might be a smoothing group error but I'm not sure how to fix it.
Most of the low poly mesh is on one smoothing group with the exception of some of the underside and that curvey thing at the back of the gun.
http://alexluong.co.uk/misc/normalmaperrors.jpg
and the normal map generated via RTT in 3d studio max
http://alexluong.co.uk/misc/normalmap.jpg
EarthQuake
02-08-2009, 12:27 AM
Take a run through this thread here:
http://boards.polycount.net/showthread.php?t=60694
Showster
02-11-2009, 04:17 AM
Hi Folks,
Im trying to muck about with 3ds max mental ray atm to create Normal maps. For some reason (I don't know much about mental ray) I cannot get the background colour of the normal map but be blue.
Heres a basic example, mines black atm.
http://i269.photobucket.com/albums/jj41/UKShowster/chuff.jpg
I can achieve the correct result with scanline by setting the colour in the render to texture dialog. Ive tried tinkering with mental ray and background environment and effects colours to no success.
Is there a simple fix? thanks for any help and suggestions
Greg
Dr Stench
02-11-2009, 05:24 AM
So I got this normal map problem. I am rly a nub at it. I know why the following error with the black sides occurs, but I do not know how to solve it efficiently.
It is often said to create a sub div version of the low poly and bake on that one. The only problem when converting to subdivs is that I will have to need to bevel the hard edges. But when I bevel, the UV map gets screwed up.
Any tips?
http://i42.tinypic.com/2n9ayiu.jpg
I'd say either use a cage (http://www.poopinmymouth.com/tutorial/normal_workflow_2.htm) to change the ray direction to where it's going to be viewed the most, add more edges... or, if it's only a small detail, just let it be as it is.
ArtsyFartsy
02-11-2009, 10:34 AM
Showster,
I get the black background with it too. It's no big deal since it is not used by the mapping. If it really bothers you, you should save your projected map as a 32bit TGA and max will automatically generate an alpha map (in the alpha channel) with your shapes in it. You can use this to mask out and edit the empty areas.
The true solution though is to simply not use Mental Ray. Mental Ray is not a better renderer than scanline, it simply performs its calculations differently and thus produces different results. More practically, mental ray allows for certain special effects like Ambiend Occlusion, and caustics (water effects). For projecting normal maps however the scanline renderer works beautifully, and is also much faster.
Dr Stench,
The outline of your low poly is too coarse to accomodate a good projection. If you look closely, the black areas are not errors, they are spaces where no high poly geometry existed, so nothing was projected. The best solution to your problem would be to increase the polygon resolution of your low poly, so that it matches the high poly better.
After that you can tweak the cage to get a better projection. The cage on the flat sides of the shape should be almost touching the object. The curved sides can have it sit further away.
Dr Stench
02-11-2009, 03:53 PM
How do I manually edit the cage in maya? All I know is that I can edit the size of the envelope...
I got to keep my stuff very low poly (it's going to be for a web based 3D game). So increasing the number of edges in all similar occasions wouldn't be much of an option, I think.
edit: Oh lolz nub, I can just edit the envelope like a mesh :P
edit2: I have just read the thread that EarthQuake stated a few posts ago. Until today I always thought that a normal map was meant as the replacement for the vertex normals. It sucks ass that this was too good to be true. It's like this whole system is made up to make people spend more time at bullshit than they would actually have to. Yesterday and today, I have spend like 10 hours in total (no joke) at a weapon to make a convincing normal map without errors. Still hasn't worked out though. I just don't know what to do if both objects with hard edges as objects with soft edges show those dumb smoothing errors. Anyone who comes up with a better normal mapping system will NOT be violently executed by me (or by my sinister-clown-gangbangers).
00Zero
02-15-2009, 08:52 PM
very interesting thread here. i have a nub question. when wrapping your lowpoly mesh around your high, would you do it so that the verts touch the high mesh ...or would you position the verts so the edges touch the high mesh?
http://i357.photobucket.com/albums/oo20/ZEROZEROZERO_2008/caging01.jpg
http://i357.photobucket.com/albums/oo20/ZEROZEROZERO_2008/caging02.jpg
EarthQuake
02-15-2009, 09:12 PM
Really this isnt that important, but i try to have a bit of a mix, so that the middle of the edge is the area that is flush. But really, this will make pretty little difference if any.
00Zero
02-15-2009, 10:16 PM
on an unrelated note. is there the ability nowadays to have the normal map affect the warping of the diffuse? like, if you have an angular piece and the normal map is making it look round. if you apply a checker map to the diffuse, you can clearly see its angular. you think there will ever be a way to have the normal map affect that diffuse so that its slightly warped and rounded?
it would get kinda weird near the silhouette since it will be polygonal. but meh.
oh my god...
i cant believe it... look at that!
http://s5b.directupload.net/images/090207/temp/qjr5ntwt.jpg (http://s5b.directupload.net/file/d/1698/qjr5ntwt_jpg.htm)
i tried it for such along time... :D!
Thank you ArtsyFartsy the cage was the problem...
Ok everybody, I see that Maks has some black edge problems around
[smoothing groups] I guess? Anyways, everytime I read about a similar problem, especially regarding hard surface models it always says use unique uvs...
But what does that mean, I am a little bit stuck :(
//Edit: Solved. I think I can not recommend blender for baking normal maps, switched to xnormal now
Illusions
03-06-2009, 09:15 AM
Okay, a few normal mapping questions for Maya:
1) Is there anyway to save the changes you make to the cage/envelope? It annoys the hell out of me that everytime I bake a normalmap, that when its done, the cage/envelope goes back to the default shape.
2) I also understand that Maya (according to the Polycount wiki) doesn't take into account the direction of the ray being cast from the cage/envelope, only the distance. This makes trying to fix wavy lines on a cylindrical object a bit annoying, as making the cage an undeformed cylinder doesn't fix it much at all. Is there anyway to fix this inside of Maya, or should I just have a go at using xNormal for rendering my normal maps in this instance?
A combination of 00Zero's question and Dr Stench:
Wouldn't the first option in Zero's post always be preferrable, since the second option would lead to black blotches in all theses areas?
http://lgilbride.com/images/forum/projecting.jpg
EarthQuake
03-08-2009, 09:43 AM
No. It wouldn't. Only reason that you would get gaps is if you have your cage set up poorly(hard edges there, split edges in your cage).
whipSwitch
03-08-2009, 10:59 AM
Illusions - in the Advanced rollout of the Transfer Maps dialog, there is a checkbox labeled "Delete Envelopes on Bake". Uncheck it and they will stay intact. And then, so you are aware if you aren't already, is each object parented to its envelope(cage). Downside to this is sometimes, things get fudged up and when you add the objects to the target mesh queue, you get two cages, and have to go through and manually delete the initial ones.
About the distortion, the way i understand it is that the closer you can get the cage to the surface without the surface intersecting, the more accurate it is, and this has seemed to worked fairly well for me, though it might just be placebo, because I'm not 100% sure if that's the case. I just learned to do it that way.
Illusions
03-08-2009, 04:21 PM
Illusions - in the Advanced rollout of the Transfer Maps dialog, there is a checkbox labeled "Delete Envelopes on Bake". Uncheck it and they will stay intact. And then, so you are aware if you aren't already, is each object parented to its envelope(cage). Downside to this is sometimes, things get fudged up and when you add the objects to the target mesh queue, you get two cages, and have to go through and manually delete the initial ones.
Excellent, I figured there'd be someway, and I've always seen that option, it just never clicked to use it.
About the distortion, the way i understand it is that the closer you can get the cage to the surface without the surface intersecting, the more accurate it is, and this has seemed to worked fairly well for me, though it might just be placebo, because I'm not 100% sure if that's the case. I just learned to do it that way.
Hmm, this may still be problematic if there is no way to change the ray direction, as I'm thinking how I'd fix this is that I'd make a second object with the same/similar UVs, and just add more geo to it to make it more cylindrical (like say 32 sides instead of 16), then bake to that. Its not a problem now, as I'm just working on a single object the size and shape of a soda can, but I could forsee it being so if I had something more complicated. I think I'm going to do a comparisson with xNormal, and see how that does with an edited cage. Will see. Thanks for the assistance though, and thats pretty damn awesome that I got help from someone in the same state...
Renzatic
03-10-2009, 07:30 PM
Alright, it's time I make a fool of myself here for the sake of getting my learn on. For some odd reason, I can't quite seem to get my head around rendering normalmaps. I've been through about 7 pages of this particular thread, and after the initial slackjawed moments of confusion, it eventually kinda started to make sense to me. Or so I thought. Cuz even now, after thinking I figured it out, the cages, the invisible magic rays, all that good stuff, I still have yet to produce a decent normalmap with not-at-all-crap edges.
This is my current project (http://users.chartertn.net/greymatt/door_example1.jpg) (alternate pretty closeup on the door here (http://users.chartertn.net/greymatt/door_final2.jpg)). Rendering details to flat surfaces is fine and peachy keen. They come out perfectly. But no matter how I smooth or set up my cage (which admittedly, I'm probably not doing right), I always get edge errors exported from the low poly.
For example: http://users.chartertn.net/greymatt/normal_issue.jpg
The only way I managed to do the door was by culling the offending edges out of the normal in Photoshop, bumping up the smoothing angle a bit, and making a few cuts to keep things nice and clean. The closest I've come to ridding myself of the sharp edges is by bumping my smoothing angle up to obscene extremes and not making any cuts to constrain the resulting smoothing errors. The curves turned out nice, but as you can imagine, the rest was unusable. Alternately, I figured I could cut extra geometry and try to match the high poly as close as possible. That kinda defeats the purpose of having a low poly object, though.
I've tried quite a few things here. So far, none have worked. As of writing, I've been stumped for about 3 days, and I think it's time I start begging for help. What I'm hoping here is that maybe by seeing some work done on a model I'm familiar with, it'll help me wrap my head around it all so I can move on with my modeling life.
Advice plz. :(
Edit: I did it (http://users.chartertn.net/greymatt/doorandframe.jpg). Turned out I had a few problems to fix. My UV sucked for one thing. I redid it so I'd have more resolution to play with when I rendered out the normalmap. I also added geometry to the low poly so the curves more closely matched the high. It's got more tris than I'd like now, I'm guessing the finished product will end up being about 2300 or so once I get the doorknob in, but at least it finally looks decent.
carlo_c
04-09-2009, 04:42 PM
Hey guys, ok so I upgraded my xnormal release and saw a bunch of new map options which I'm pretty clueless about. I found nothing relevant with the forum search and what I found on google, to be honest, I didn't get my head around as it was pretty technical. I haven't gone through the past 17 pages of this thread though so sorry if its been asked.
Can anybody explain to me the uses for a bent normal map and a radiosity normal map? I read RNM's were used on HL2, but as for a simple explanation of what it does I can't find lol. I'm asking because if their being used on current tech and I'm not using them in my work, should I be?
Hopefully someone sees this question!
Eric Chadwick
04-10-2009, 05:23 AM
A bent normal map is usually used to determine which part of a diffusely convolved cube map (http://wiki.polycount.net/Diffusely_Convolved_Cube_Map) will be applied as lighting to the mesh. Basically it means that in places where the model should be darker, like in the armpits, the normals are bent towards the ground, and the cubemap is made with a darker ground and a brighter sky, so then those parts of the model will get less light from the cubemap. Usually just the vertex normals are bent, the normal map pixels aren't themselves changed, they look the same as regular maps. The vertex normals are bent to influence the direction the mapped normals point.
Radiosity normal mapping is best described in Valve's 2006 paper about Half Life 2 (http://www2.ati.com/developer/gdc/D3DTutorial10_Half-Life2_Shading.pdf). It's a way of baking radiosity into something like little cubemaps all over a scene, which are then combined with the regular-style normal maps tiled across the geometry. You get a nice lighting effect with it. Great pics in that paper.
carlo_c
04-10-2009, 11:15 AM
Awesome info, thanks for that Eric!
Eric Chadwick
04-11-2009, 07:27 AM
Heh, I forgot. The little-cubemap trick is for lighting the characters that move around in the level. Cool in itself, but probably not what Xnormal is doing.
Valve's level geometry is lit differently... they bake three lightmaps for the level, but instead of baking just the lighting intensity, they bake the direction the light is coming from. Each pixel in the lightmap stores how much light it got, coming from one of the three directions (X, Y, and Z). Then the level geometry's normal maps are used to decide how much of each lightmap to display, for each pixel of the normal map.
Resistance: Fall of Man did a similar approach to this, but instead of using three lightmaps, they broke it down into just one lightmap plus some vertex color. They stored the lighting directions in a single lightmap, using the red, green, and blue channels to store each of the three lighting directions X, Y, and Z. They realized a normal map is perfect for this. Problem is, you don't get any lighting color this way, just the lighting direction. Their cool trick was to store the lighting color, which actually only requires fairly low detail, in the vertex color of the level geometry. Very inexpensive this way, uses a lot less RAM. Some cool images about the technique here (http://www.cybergooch.com/tutorials/pages/lighting_rfom1.htm).
oXYnary
04-15-2009, 03:56 PM
re 1: Smoothing groups cause baking problems. See the Joao Costa link above.
Avoid smoothing groups at all costs, use bevels instead. Some people like smoothing groups, I prefer a bevel because I can make the edge as soft or hard as I like. Whereas a smoothing change is always a sharp edge.
re 2: don't change the mesh after baking, will cause shading seams. A bevel made of two edge-loops is the same cost in-game as a smoothing group edge, which is the same cost as breaking the edge apart.
An old article that might help you.
http://www.ericchadwick.com/examples/provost/byf2.html
Alright Alight. TMI at once. I went through some of your links and others.
Avoid smoothing groups on the high and your saying bevel instead?
With low, does the bevel help with the baking?
I did some tests at one point with rods, and making it one smoothing group. It elongated the perpendicular strips from the high rez on each of the low ply faces on the texture. So the strips would wave/curve along each face versus being perpendicular. The only way I could get this to work was making the cap of each of the rods a separate smoothing group on the low poly. So are you saying to ever so slightly bevel them instead?
Beyond cylinders lets talk about hollow cylinders so now you have a inside and outside and lips. You mentioned there is no magic 12 number. Well.. I mean is there something I can use? 8 never seems to be enough, but if I go beyond that the polycount starts to raise incrementally for my tastes with every bevel or curve I must create (again this is hollow, so not just an outside face). When baking, I have to send soo much time trying to clean up the edges. If its really not important. I just saw f-it and leave the wacky edges as the viewer will never get that close.
BTW If I have the low poly in separate smoothing groups for the baking. Does Max in effect break the cage at those points? Im trying to go through these 17 pages finding the bit on breaking cage edges.
MightyPea
04-15-2009, 11:59 PM
Oxy: quick answer - if you uncheck 'use cage' in your baking settings, it does break it along the edges of smoothing groups.
Eric Chadwick
04-16-2009, 04:31 AM
Yeah, and check out Ariel Chai's article for some tips.
http://www.svartberg.com/tutorials/article_normalmaps/normalmaps.html
oXYnary
04-16-2009, 03:15 PM
Thats a good article, Im reading through it now. I do have a question that bear with me on it as Im sure it was answered earlier.
To make a hard edge in games, instead of using smoothing groups which separate the edge depending on the exporter (mine does). To do a 00 chamfer as it has the same effect.
Why would you do a chamfer instead if it adds more triangles that are basically squashed into one another and never seen? Or using something like multires, it would collapse those right away. Making an apparent shift in the models shading to the viewer going from 100% to the next step down in the lod. Either way you still have twice the vertices on that edge than you would have otherwise if it was one smoothing group.
Per the article
In the article with separate or no smoothing groups with a hard edge versus a chamfered edge on the high rez, it states to separate each face on the uv layout. Isnt this a no no though? I thought you wanted as little seams as possible on your uv layout to save processing times or something. Or this limitation has no effect if each of these have no smoothing group at all?
Can you for the baking make separate smoothing groups, and after baking make 1 smoothing group again? The article seems to imply this if each of the uve groups is a separate smoothing group. "This is mainly needed for the baking, post baking you can use the next method. "
EarthQuake
04-16-2009, 06:56 PM
Thats a good article, Im reading through it now. I do have a question that bear with me on it as Im sure it was answered earlier.
To make a hard edge in games, instead of using smoothing groups which separate the edge depending on the exporter (mine does). To do a 00 chamfer as it has the same effect.
Why would you do a chamfer instead if it adds more triangles that are basically squashed into one another and never seen? Or using something like multires, it would collapse those right away. Making an apparent shift in the models shading to the viewer going from 100% to the next step down in the lod. Either way you still have twice the vertices on that edge than you would have otherwise if it was one smoothing group.
Some times this is the best way, but you're right, it can be very inefficient rendering lots of small, thin triganles that are too small to even register on screen. There really isnt any clean-cut rule here, sometimes its better to use smoothing groups, sometimes it better to add some extra edges, best to experiment a bit yourself.
I've seen people say that beveling the edge will produce the same performance hit as using a hard edge. This is at best about half accurate, beveling your edge will in fact create same vert count in most cases, but thats ignoring the fact that adding extra polygons is definately not free, and if you have a complex mesh you could be talking about 1/3rd of the model's geometry being added doing this. Not to mention that rendering long-thin triangles is a bit of a bottleneck. So no, it is not the same performance hit, but for some simple props it may not be enough to actually make a difference.
Per the article
In the article with separate or no smoothing groups with a hard edge versus a chamfered edge on the high rez, it states to separate each face on the uv layout. Isnt this a no no though? I thought you wanted as little seams as possible on your uv layout to save processing times or something. Or this limitation has no effect if each of these have no smoothing group at all?
This is a necessary evil. If you do not do this, you will get bad artifacts around the shared uv edge. The good news is that if you're going to create a hard edge, spliting the uvs doesnt hurt anything, its the same vert count regardless. Creating a hard edge creates split verts, in both the mesh and the UVs either way. The biggest problem is it can be a little more of a pain to texture, but not really an issue to me personally.
Can you for the baking make separate smoothing groups, and after baking make 1 smoothing group again? The article seems to imply this if each of the uve groups is a separate smoothing group. "This is mainly needed for the baking, post baking you can use the next method. "Nope, absolutely not. As soon as you start chaning normals/smoothing groups your normal map will need to be generated. No way around this using tangent space maps.
Object space maps will solve most of these issues, but are not properly supported in most engines, and have some other disadvantages as well.
Joe March
04-23-2009, 11:13 AM
I have a question about "exploding" or separating elements of your mesh for Normal map texture bakes:
+ Is there a proper way or technique in what you should look for when doing this? Are there things to specifically avoid?
+ Do you use a specific Map-type when using this technique of separation?
Reasons for question:
I had several issues when baking out a mesh for textures, where the texture seemed to warp heavily when the cage pushed too far, or at times it would clip into another element and interfere with that map.
hollaAtMe
05-03-2009, 04:20 PM
I'm sure that this has been addressed before, but I guess I just am having a difficult time wrapping it around my head.
I work in Maya and generally will take my models into the Unreal Engine. What I am wondering is, does the type of smoothing you have on your model matter all that much when importing the model into Unreal? Does it specifically HAVE to be smoothed or can you bring in a unsmoothed model with next to no lighting problems?
I've been told before that gradients on flat surface for the normals was a bad thing to have. Mostly because of how it would look with in game lighting. The only way I know how to not get that gradient is have unsmoothed normals. But then I get the crunchy normal edges, but I succeed in having a nicer flat surface.
I've read a bit in this forum and am a little lost when I see people say that having a hard, unsmoothed edge is the equivalent of adding more verts to your model. I'm not sure what that means exactly. I understand that in order to get rid of those crunchy edges I'd have to separate the UV edges before I transfer the high to the low poly. But in doing this I make the game engine have to look at more verts thus making my model larger in size.
I've been told many times that before I transfer my model that I should make my model completely smoothed on the low poly. Or soften all the edges before I transfer. Just lately I've been reading all this about not doing that and keeping the edges hardened and I guess I've been a bit confused. It seems like keeping the edges hard and separating the UVs will get you a nicer looking normal map, but it'll hurt you more on the back end. And having smoothed edges will give you not so nice a looking normal map and will look decent in game.
I was reading http://www.svartberg.com/tutorials/article_normalmaps/normalmaps.html and was curious about this line:
"As you can see, this UV both sacrifices precious texture real-estate, and also impractical to texture first hand. However it can still be used with projection technology (which is available for most high-end packages) - for example this can be textured on a proper UV second hand and then projected to this model with the unique UV's. "
Can someone tell me how you would accomplish this projection in Maya? I tried just transfering the normal map as a Diffuse so that it would match the UVs that I wanted, but I still get crunchy edges.
I think where my main confusion comes is how to model the low poly for a hard surface object. I've seen people not bevel edges and still get nice results. I can model high poly just fine. It's just getting it to a level of detail that is playable is my problem.
Any help would be appreciated.
EarthQuake
05-03-2009, 04:26 PM
I'll repost something i wrote up for another thread, might help:
Alright, since there has been much discussion on "Which is better, 1 smoothing group or hard edges" i'de like to write a little something on the topic.
First off, its important to understand why these issues are being caused in the first place. The recurring theme here is that none of this stuff is standardized, pretty much every baker,engine,file format, etc tends to do things slightly different. By that i mean calculating tangents/normals/binormals. Now there have actually been a few apps/engines to get this right. Doom3 for the most part, if you rendered your maps inside of doom3 was great in this regard. And if you're rendering and viewing inside of maya, your results will be nearly perfect without having to do much extra work.
Ok, so now that we know the issue is slight deviation from app to app, we can explain why the two accepted methods tend to help.
So, the greater the change you have in your normals, the more apparent any deviation is going to appear. So the smoother/flater your normals tend to be, the less likely you're going to have visible errors.
When you're adding geometry, beveling edges etc what you're reallying doing is softening the normals, making the transitions less harsh. This is going to help with smoothing errors, and its also going to help to bake more accurately(less skewing etc) because the normals are more accurate to the surface. This is of course going to be the ideal solution, but far from the only thing that should be considered.
When you add in hard edges, what you're doing is breaking the normals, and this will gives you pretty much the same result as adding in more geometry, in that it makes a more "suitable" surface to display a normal map that is essentially created incorrectly(mathimatically). The main problems here are: 1. you need to split your uvs along the same edges that you make hard, this isnt really a huge deal if its something you're aware of when going into it. And 2. the less geometry you have in your cage(assuming your cage is averaged, and not using the split edges, which will give you even more problems) the less accurate your bake is going to be. So if you've got small details, they very well may end up be projected skewed etc.
Now the really important thing here, is that you need to take into account various factors. What sort of budget are you dealing with in the engine, how important is the object, etc. Its silly to say always add in more edges, because that simply is not always an option. Its also silly to say always add hard edges whenever you have problems, you need to understand how this stuff works and make these sort of decisions on a case by case basis.
hollaAtMe
05-04-2009, 07:33 AM
Thanks EarthQuake!
That cleared it up very well for me! :)
{scumworks}
05-20-2009, 09:01 AM
http://www.scumworks.com/otr/dmp/needhelp.jpg
I can understand why, but im not sure how to fix it without breaking up the highres.
Im aligning the cage right (I think), but how can I avoid the silhouette?
Im sorry if this is common knowledge, but I've been searching around in vain.
ArtsyFartsy
05-20-2009, 09:58 AM
I think your choices are:
1. Break apart the high res. Best choice in my opinion.
2. Chamfer that edge in your low poly so you get a smoother transition and a better cage.
3. Take the normal map into a paint app, and paint away the anomaly.
As a side note, I think you should add more segments your low poly. Silhouette is kinda rough right now.
Mark Dygert
05-20-2009, 10:12 AM
I'd go with #2 of what Artsy suggests as well as add more segments to your low poly.
If you go with #1 you're just forcing your high poly normals to conform to your low poly cage 90 degree angle. If you're trying to get a smooth edge its going to create a seam. If you create a beveled edge its a much smoother transition.
You'll probably need to clean up the normal map a tiny bit in whatever paint app which ever way you go. Baking is often the first step in creating a good normal map, not the last =)
Joao Sapiro
05-20-2009, 10:34 AM
or you could add more sides to that cilinder lowpoly, it would be the same as chanfering vertex wise or less :)
{scumworks}
05-20-2009, 12:08 PM
Thanks for the replys.
Im really at a loss with normalmapping x'), but im getting that adding some more geo + some chamfers would help smoothing it up. Guess its gonna require some PS'ing to remove the silhouette on the side tho, unless I break it apart.
How about using a smooth proxy to bake with? (just read it on the polyWiki ^^).
The piece is for a gun I've created.
http://www.scumworks.com/otr/dmp/needhelp2.jpg
Im still shakey when it comes to making a lowpoly that really holds the shape right and still let the normal map do its magic.
mmm... pprrractice.
Mark Dygert
05-20-2009, 12:39 PM
I think EQ pointed out some issue with using a different piece of geometry to bake then what the actual low poly will be, something about the normal map not displaying correctly? I forget the exact reason and it might have been specific to the case in the other thread. It's worth a shot, if it works great!
Jonathan
05-20-2009, 02:45 PM
Not sure if it has been mentioned yet, but there is a bug in Max 2008 and perhaps 2009 that if you're using Mental Ray, having setup your high and low poly objects, if the LP is intersecting the HP mesh, it will create errors in the rendered maps (ambient occlusion, normal, diffuse, etc.). Using just the scanline renderer with a skylight used for baking ambient occlusion, normal maps, etc. you do not have this problem. :)
scourgewarper
05-21-2009, 03:17 AM
That's a problem in max 2009 too hope they've fixed it in 2010, hiding your geometry in the projection modifier doesn't seem to help either, thought this was a general bug across the renderers glad to hear you can use the scanline renderer (which I should have tried come to think of it) and you don't have this problem :)
slave_one
05-22-2009, 04:27 PM
Hey all, .. my first post .. its about time i'd say!
I was wondering, on the subject of using smoothing grps (or hard edges). If you use these on your model and therefore have to separate the UVs in very inconvenient places, so texturing does become a serious pain, would it be an option to use a separate UV channel for the normal map and a separate channel for the diffuse?
For example Unreal supports multiple UV channels, so it could be done in there. Does any of you have experience with this, or know if this is common (or not so common, but a valid) practice?
Cool thread, has helped a lot already, thanks all!
Eric Chadwick
05-22-2009, 06:40 PM
Smoothing groups do not have to correspond to your UV splits, unless you want to squeeze out every last drop of performance that you can.
Multiple UV channels will increase the vertex count of your model in-game, which is something to avoid if you can do the texturing in one channel instead.
A nice intro about vertices, smoothing, and UVs, and how they affect performance...
http://www.ericchadwick.com/examples/provost/byf1.html
slave_one
05-23-2009, 06:46 AM
Thanks for the reply Eric. Will definately read that.
Still, I am a bit confused ..
short:
If I use multiple smoothing groups on the model and dont split the UVs where there are different smoothing groups I get results that is described in "Unsmoothed Tangents - Edges Errors Problem and Walkaround" (http://www.svartberg.com/tutorials/article_normalmaps/normalmaps.html). So I guess this is the main reason that I get confused when you say that I do not have to have my smoothing groups correspond to my UV splits.
longer:
I am trying to normal map a mesh that is quite simple in shape, but has a lot of 90 degree angles with small rounded corners. It is a hard surface model. Unfortunately I am not able to post attachments, so its hard to elaborate to describe the thing (not sure why, had a quick look at the FAQ pages, but cannot find it that quickly. Maybe i need to be "bigger" then "null"?).
After doing quite a few tests, My current conclusion would be that the model would be normal mapped best using smoothing groups and separated UV islands where a smoothing group is. Now the problem with this would be that this UV layout will be far from optimal for texturing. That is why I was wondering what the common practices or usual solutions to this are (I think I read Earthquake posting somewhere that he just deals with it :) In relation to this I thought it might be a solution to use a different UV channel for the normal map and the texture. I was not really taking performance into account since my head is too much wrapped around coming up with a solution to make the thing look good.
The other thing is that if I normal map the model using just one smoothing group, I get results that I find less appealing then the multiple smoothing group method. Since this method would favour the UV's connected as much as possible and I think this particular model is not very suited to have large patches of UVs connected and also hardly has any opportunity to hide seams somewhere.
Really sorry if I am missing some point somewhere. I did so many test and tried different things, my head is on backwards .. from time to time.
RickFX
05-23-2009, 03:01 PM
eric you are awesome, i found this today and its a great read.
- rick.
Eric Chadwick
05-23-2009, 05:09 PM
Well, I stopped doing normal maps about a year ago. You should probably read Earthquake's recent posts in this thread if you want good advice about your situation.
It all basically boils down though to lots of experimentation, and reading what others have done, and more experimentation. There's no silver bullet.
Once you learn something, write it down, like maybe in this thread. I put some of my knowledge, and that of many others', into the polycount wiki. Some of it might help you.
http://wiki.polycount.net/Normal_Map
Rick, glad it helped out. :)
How do you guys do your object space bakes? I don't any any option for it on 3dsmax render to texture, neither in xnormal.
Btw, sorry for the OT, but what's with the poll on this thread about file formats?! Aint this a normal map thread?
slave_one
05-24-2009, 05:11 AM
There is an Options button in the Projection Mapping part of the Render To Texture menu. Click that, then look for Normal Map Space, set that to LocalXYZ.
Renaud Galand
05-27-2009, 05:04 AM
Not sure if this has been already mentionned or not, but I tried a "new" technic to get rid of some nasty normal map seams I was getting sometimes wathever the package I was using to bake. This occurs most of the time when I try to bake a normal map on a pretty lowpoly cage (so the difference between the both meshes is really important).
This is an alternative to the classic (and not so great) "default blue painting".
The trick is simple and working good so far :
Take your lowpoly, duplicate it, smooth it 2-3 times to get a new "help temp highpoly" and just bake a simple normal map from it. Now you have a temp normal map (without seams) you can blend with your "real" normal map. It will give you a way better alternative than just painting default blue on seams you just can't get rid of. Default blue tends to give a "lowpoly" feel to the area. With this technic, you're definitly loosing some volume information but still keep some "roundness".
hope it helps.
There is an Options button in the Projection Mapping part of the Render To Texture menu. Click that, then look for Normal Map Space, set that to LocalXYZ.
Thanks mate. And in xnormal?
slave_one
05-28-2009, 01:56 AM
I don't have that much experience with xNormal.
I think I read somewhere (!! so please do not take this as truth, it very well might be total BS) that xNormal always uses (or outputs) tangent space normal maps.
However, in the tools section of xNormal is an "Object / Tangent space converter" I guess that can at least help you out.
xNormal: Go to baking options, normal map, click the ... in green, then unclick tangent space.
Jefferoo
05-31-2009, 07:36 PM
I'm trying to learn the render to texture feature in Max to bake normals, (super-newb here) and I keep getting some weird issue.
http://img195.imageshack.us/img195/9032/ihatemylife01.jpg
There's my RTT settings and scene setup.
Eric Chadwick
06-01-2009, 09:02 AM
Jefferoo, first of all, the rendering window does not show the actual normalmap output. Instead it shows a regular lit render (the thinking is this... how can you show all the possible layers that someone is baking out? So they just show the regular scanline-style render instead). Look in the folder where you specified the TGA would go.
Secondly, the highpoly model won't make a good normalmap unless it has bevels/details that aren't parallel to the low-poly model. Joćo "Masakari" Costa (http://www.acetylenegames.com/artbymasa/) used to have a good example of this, but his site's gone. :(
Some more info here.
http://wiki.polycount.net/Normal_Map#SmoothingGroupsAndHardEdges
Joćo "Masakari" Costa (http://www.acetylenegames.com/artbymasa/) used to have a good example of this, but his site's gone. :(
Here's a mirror:
http://i43.tinypic.com/a2f5ut.jpg
Can anyone update the link on the wiki?
Eric Chadwick
06-01-2009, 07:08 PM
Thanks! Too low rez but I found a backup of the original and uploaded it. There's a link here...
http://wiki.polycount.net/Normal_Map#Tutorials
Thanks! Too low rez but I found a backup of the original and uploaded it. There's a link here...
http://wiki.polycount.net/Normal_Map#Tutorials
oh, yeah I'm sorry, I didn't noticed tynipic resized the pic I uploaded...! :\
Binxx
06-17-2009, 01:42 PM
question: (Now I'm a total newbie) However i was wondering if these advice work with maya also, since that's the only program I got. I have gotten the normal maps working pretty well on my low poly models , however there are some dark games or black squares (Orange and green in normal maps) that cause my overlaying texture to not be displayed in those area. I've been reading the other stuff also.. and i'm still clueless about xnormals?
sorry if this repeats whats been said, however most of what i'm reading sounds like rocket sience.
Thanks in advance!
Canden Picard
06-19-2009, 04:16 AM
Im just learning normal mapping. My question/problem is; when I RTT a normal map SHould I set it as bump, half the time I dont get any physical bump from the render.
My question really is what should the settings be as far as the normal map etc?
Mark Dygert
06-19-2009, 01:52 PM
If you're using 3dsmax, put "Normal Bump" in the Bump slot, then in the normal slot put your normal map. Don't forget to set your bump slot to 100, I think it defaults to 30.
Also depending on what verison of 3dsmax you're using there are different steps to get it to show up in the viewport. In 2008+ You change "Show Standard Map In Viewport"(blue/white checkered box) to "Show Hardware Map In Viewport" (pink/white checkered box).
Canden Picard
06-19-2009, 01:55 PM
Well, Im rendering to texture so its baked and not necessarily in the "slots"
When I try to take the unwrap from the bake and replace it it doesnt match, it lays flat.
slave_one
06-20-2009, 03:40 AM
There are options in the RTT menu, which you can use. One is "output into normal bump" the other is "output into source". When both these are checked, your assigned material should be updated with the last RTT automatically. However in my experience (using max 2009), this sometimes messes up, specially when you have multiple meshes in the scene that you are rendering to texture to. Usually just hit the render button again and it should be updated.
Mark Dygert
06-20-2009, 08:33 AM
I run into the same problem. It doesn't handle updating multi-sub object materials that well. You can create multi-subs and not even know it if you merge two objects with separate materials.
I check on "Render to Files Only" then manually set up my material in the material editor like I outlined above. As long as you don't change the name/output path it will overwrite and refresh after its baked.
McBradd
06-22-2009, 02:06 AM
I'm trying to improve my work flow when normal-mapping hard surface objects. I was told that the best practice is to separate your UV's along hard edges that are at extreme angles. I'm concerned about this leading to unwraps with lots of little floating bits, potentially wasteful. I put together some test renders here to illustrate what I'm talking about: Normal Mapping Experinemts (http://braddmcbrearty.blogspot.com/2009/06/normal-mapping-experiments.html).
Canden Picard
06-22-2009, 05:17 AM
Is there a way when rendering to texture to render the result into a material slot? So far The results just save into a folder
butt_sahib
06-22-2009, 05:37 AM
Caden:
yes actually there is :) as far as max ,there should me something like "apply in slot"/"apply as mat in slot" in the render to texture tab
wasker
06-24-2009, 07:41 AM
here's a normal i baked from xnormal, the highres is roughly 70k and the lowpoly is 560tri. is there anyway i can get a smoother transition of values like the highpoly to the left?
http://img8.imageshack.us/img8/7618/normalz.jpg (http://img8.imageshack.us/i/normalz.jpg/)
Joao Sapiro
06-24-2009, 08:43 AM
show the lowpoly mesh :)
EarthQuake
06-24-2009, 12:25 PM
Your triangulation is probabbly different in max than it is in XN, triangulate before export in max to make sure it is correct.
Other than that, from max to XN you'll always see some differences, hell from max to max you will always see differences too(scanline vrs realtime)
slave_one
06-26-2009, 07:23 PM
Someone knows what is up with this? Normal maps baked in max. When I use the cage I get real nice results on the edges and when I don't use the cage, the edges are not really nice. The back and side part are seperate UV islands and have a different smoothing group. The generated normal maps look really similar exept that the one generated without a cage looks more 'intense' Now, I would really prefer to render without a cage. Is there a setting I am missing or somehting?
EDIT: found a good discussion / information on this here: http://boards.polycount.net/showthread.php?t=41776&page=58 I think that answers my initial question. It will be double bakes I guess.
http://files.getdropbox.com/u/1368067/polycount/mag_nm_edges_01.jpg
While I am at it, not sure if this is the right place to post this but ... I tried some different methods on this and I am not quite happy with the results. Its the ammo casing of the revolver. left hole has some geometry in for the bullet, right hole is just a flat surface. What would be a good way to tacke this?
http://files.getdropbox.com/u/1368067/polycount/mag_ammo_01.jpg
Eric Chadwick
06-27-2009, 12:07 PM
Always keep in mind how the player will see the model.
They will never get this close in a game, and you also have diffuse and specular maps which will hide a ton of (perceived) sins.
Whether you model the bullets or not doesn't really matter in the end, vertices are cheap these days. The extra time you spend on the model for unseen details is not so cheap, from an employer's perspective.
FWIW I prefer the depth in the non-modeled bullets, but when you darken the spec and diffuse properly, it'll barely be seen anyhow. :)
JohnnySix
06-28-2009, 10:50 AM
Just a quick one, I've been trying to get normal maps to render using mental ray in 3dsmax , but when I add a bump map using Normal Bump - the whole mesh simply renders as fullbright. Is there a different way of setting up the normal in Mental ray?
I used the Mental ray material, and set a diffuse and the bump using normal bump.
wasker
06-29-2009, 04:59 AM
EQ, thanks for the help. I tried triangulating it and it solved all the funny stuff going on.:poly106:
NoisyMonk
06-29-2009, 09:49 AM
Greetings all,
Long time lurker-first/second time poster (seems to be alot of us these days!)
[irrelevant intro]
I've been modeling for several years now, origianlly as a hobby back with milkshape, gmax, and even a little Max R3 in the Times of Ol'. Recently I graduated from a 3 year Game Development program, and have been working for a professor of mine as a 3d architect for his home business for the last year.
I've always wanted to get into games (hence why I took Game Development) but I'm notoriously lazy, unmotivated and a perfectionist. This is an absolutely terrible combination.:poly127:
I blame the government! But thats a different can of worms... :poly142:
However, work has been getting a little stale lately and I'm really starting to realise that I need to get my act in gear if I'm to enter the realms of a true 3d game artist. So I've starting work on a portfolio, but its going slow. I'm a little hesitent on high poly/normal mapping, as I've had little to no experience with either due to my low poly roots, but I know that they are only going to become more and more prominent in the industry, so here I am.
[/irrelevant intro]
On topic..
I've been following this tut (http://cg.tutsplus.com/tutorials/autodesk-3ds-max/how-to-create-a-video-game-dumpster-the-complete-current-gen-workflow) and it seems to be pretty good (minus the A/V snyc problem). I've modeled the low and high poly version of the dumpster with a few modifications of my own, and its come time to UV map it. I'm fairly capable of UVing such a simple object (when normals aren't involved), but after reading several different threads around here, and regardless of his final product, I'm hesitant to proceed for fear of improper UVing and an inadequate low poly mesh.
link cause its large (http://www.modsrus.com/shaun/Dumpster_01.jpg)
As you can see, I've got lots of hard edges, which are apparently problematic when trying to work with normals. The high poly is deadly simple, with just some chamfering and a turbosmooth.
Now I know there is no substitute for hard work and practice, but I'm hoping that maybe someone could just give me a few pointers to help speed up the learning curve. Should I be chamfering some of those hard edges, and be trying to use as few smoothing groups as possible? Or will double baking just save the polys and look just as good? Or is there some other way to go about this?
Thanks in advance,
Noisymonk.
ps. sorry for the long post :\
Eric Chadwick
06-30-2009, 06:12 AM
Read through this a few of the more recent pages of this thread. There are few solid rules though, results differ from program to program. You'll have to experiment.
EarthQuake had some solid advice here (http://boards.polycount.net/showpost.php?p=932437&postcount=430).
Sastrei
07-01-2009, 05:27 PM
Hi all,
Using Blender, and I'm having lots of problems baking the normals to the lo poly. My hipoly subdivides smoothly, and I'm basically using the same mesh with chamfers instead of the extra edge loops for the lopoly, but the normal map gets all screwed up with massive smoothing errors originating from the lo-poly (single smoothing group).
Do I need to use lots of edge loops in addition to chamfers to control the smoothing on the lopoly?
-Stefan-
slave_one
07-04-2009, 04:56 AM
Hey, a bit hard to tell from the info. I also don't use blender, but I guess that is not relevant.
But probably that yes. Or use smoothing groups and seperate your UV islands where a different smoothing group is used. Could also be the triangulation of the mesh, there is an example of that on the previous page of this thread.
not sure if it has already been posted, but i just figured out a way to get rid of 1 or 2 pixel large errors in normal map bakes without painting them out. make a copy of each channel and create new layers from these, naming them accordingly. delete the channel copies once you have the layers. apply a noise -> median with a radius of 1 or 2 pixels, whatever is necessary to get rid of the errors. you might also have to make copies of the layers and mask it so areas with small details don't get destroyed. hide them and select your normal map layers. go to the channels tab, pick whatever layer you wanna start with and go to image -> apply image. source will be your psd, layer will be your "fixed" version, channel rgb, blending normal and opacity 100%. that way you can copy your fixed layer into the according channel and get rid of distortions.
sounds more complicated than it really is and it's pretty fast. faster than painting them out at least.
hope this helps someone
cheers
NoisyMonk
07-06-2009, 04:53 PM
Alright, so I've put the dumpster on hold until I can really figure out some proper normal mapping techniques. So I'm going to do a bunch of tests on some; weird shapes, hard edges, double baking, split/unsplit uv islands, etc..
So my first test is rather simple, but I'm still not getting the results that I'd expect. Click here for my first test (http://modsrus.com/shaun/Strange01.jpg). It should be pretty self explanatory as to what I was trying to achieve. Default shader with the normal map applied to the bump slot at 100. Spot light coming from roughly the same angle as the render view. Used a projection cage, just reset it and pushed it out past the highpoly. I know the edges are supposed to be messed up like that (because each face is a seperate uv island, right?), but the 'extruded' part doesn't look the way I thought it would.. it just looks flat with some bad shadows.
Anyone have any pointers? Am I clearly forgetting something? Thanks for your help!
Noisymonk.
EarthQuake
07-06-2009, 04:56 PM
you need to load it as "normal bump" into the bump slot, not as a standard texture
NoisyMonk
07-06-2009, 09:18 PM
Hats off to you, good sir. :thumbup:
I'm sure I'll have some more questions tomorrow. Thanks for your help so far!
EDIT: And without fail, here is my next question! (Decided to edit this post instead of adding another.)
So, I'm on to my next test. I decided to set up several cubes (same one as my last test) but with several differnt UV maps. Again, the pic is pretty easy to follow (http://www.modsrus.com/shaun/Strange03.jpg).
The top 4 cubes are rendered with Marmoset (sunlight skybox with light coming from roughly behind the camera), the smaller 4 underneigh are rendered with Max (deafult scanline render, no lights). The lables explain the different UV mapping used on each cube. Each Normal Maps is 2048x2048.
My questions..
-The extrusion detail on the top of the cube... In the Max render, they appear to be extruding outwards, as they should be. In Marmoset, they appear to be extruding inwards?
-2 & 4 look the best (not sure why they have reflections, must be a setting in the materials that I missed, and I'm also not sure why 1 & 3 seem to be cut in half), but they both use 1 smoothing group on 90degree angles. I thought ( 1 smoothing group + 90degree angles = bad )? Among other things, such as 1 smoothing group on split UV islands.
I know such questions are frustrating to answer over and over again, but I really can't understand/explain these results and would appreciate any help. Hopefully I'm missing something simple again. :poly124:
frostymoose
07-09-2009, 08:17 PM
Please correct me if I am wrong - Q about mirrored normal maps
The app that the normal map is generated in does not matter - only that the program/shader/engine/whathaveyou you are using to view the model supports mirrored maps???
I prefer zmapper for my normal mapping needs
(and modo doesnt support mirrored normal maps, does it?)
NoisyMonk
07-10-2009, 06:41 AM
As far as I know, that is correct. As long as your engine supports them, it doesn't matter which program you used to create them.
Unfortunately I've never used Modo, so I can't be sure, but I'm fairly sure that Modo is a very capable 3D App, and that you can probably mirror UV layouts.
EarthQuake
07-10-2009, 06:44 AM
Hats off to you, good sir. :thumbup:
I'm sure I'll have some more questions tomorrow. Thanks for your help so far!
EDIT: And without fail, here is my next question! (Decided to edit this post instead of adding another.)
So, I'm on to my next test. I decided to set up several cubes (same one as my last test) but with several differnt UV maps. Again, the pic is pretty easy to follow (http://www.modsrus.com/shaun/Strange03.jpg).
The top 4 cubes are rendered with Marmoset (sunlight skybox with light coming from roughly behind the camera), the smaller 4 underneigh are rendered with Max (deafult scanline render, no lights). The lables explain the different UV mapping used on each cube. Each Normal Maps is 2048x2048.
My questions..
-The extrusion detail on the top of the cube... In the Max render, they appear to be extruding outwards, as they should be. In Marmoset, they appear to be extruding inwards?
-2 & 4 look the best (not sure why they have reflections, must be a setting in the materials that I missed, and I'm also not sure why 1 & 3 seem to be cut in half), but they both use 1 smoothing group on 90degree angles. I thought ( 1 smoothing group + 90degree angles = bad )? Among other things, such as 1 smoothing group on split UV islands.
I know such questions are frustrating to answer over and over again, but I really can't understand/explain these results and would appreciate any help. Hopefully I'm missing something simple again. :poly124:
A couple basic things that you need to do when going from max to marmo:
1. Invert the green channel on your normal map
2. Make sure your obj export options are set up correct, normals on, uvs on, etc
Now, comparing to max scanline render isnt the best idea, because max renders normals specifically for the scanline renderer, which means that even in max's realtime viewport shaders you're going to get a lot of errors, with maps generated.... in max.
And yeah, generally 1 smoothing group on hard angles like this is not a good idea, but it seems like you have some sort of extra additional problem on the unsmoothed meshes
NoisyMonk
07-10-2009, 07:17 AM
Thanks again EQ!
Flipping in green fixed the inward/outward problem. Also, I left my export on default settings, seen here (http://modsrus.com/shaun/OBJExport.jpg), does that look right?
Yeah, I'm not sure whats going on with my unsmoothed meshes, I'll try some more tests to see if the problem persists and post any findings.
EarthQuake
07-10-2009, 07:43 AM
Export settings look good i think, in the max version that i have its a different exporter GW:OBJ i think you can get that somewhere too, people say its a lot better than the default max exporter.
Oh also, you need to have a diffuse texture loaded(can be just a simple grey texture or whatever) or else the engine will pull some random file and apply it. Diff + normal is min for the shader to work. So try that and see if it helps anything.
Otherwise upload your obj+textures and i'll look at it.
NoisyMonk
07-10-2009, 07:54 AM
Yeah, using exactly that, a flat grey texture for the diffuse. Also using a 'PhongEnvironment channel model' aswell, as thats what the tutorial.txt recommended.
Here is a zip of the assets (http://boards.polycount.net/modsrus.com/shaun/MultiCubeTest.zip). Max 2008 file, OBJ file exported with max exporter, and normal maps WITH Green already flipped, and a flat grey diffuse.
Do you want my Marmo .mat files aswell? If you do, let me know and I'll upload them aswell.
Thanks for you time! I really appreciate it.
Edit: found the exporter, gonna try it out now - http://www.guruware.at/main/objio/index.html#exp
NoisyMonk
07-10-2009, 08:47 AM
Omg! That new exporter did the trick (it even has a customizable preset)! Everything is working as it should now.
Refer to this old pic (http://modsrus.com/shaun/Strange03.jpg), used the same setup.
The cubes with 1 smoothing group have smoothing errors (http://modsrus.com/shaun/SmoothingErrors.jpg) now (as they should). The cube with no smoothing, and multiple islands, look perfectly fine (http://modsrus.com/shaun/NoSmoothingErrors.jpg). And the cube with no smoothing, and 1 island, has a messed up edge seam (http://modsrus.com/shaun/EdgeErrors.jpg), as it should. The edge seam is hard to see, probably because of the tight edge on the high poly, and a 2048 map. Also, no more reflections or anything on the cubes (not sure how the max exporter managed to affect that, but it did).
Thanks EQ, hopefully you haven't wasted to much time with those files! :P
Taylor Hood
07-10-2009, 10:47 AM
I've a question ..or ..or 4 :
So my basic work flow that I'm trying to adapt is :
Low poly base - high poly - retopo - unwrap retop'd version
EDIT : : : IMPORTANT : I can't even get my head across this : Alright, so, low poly, sculpt, retop, import to max and unwrap. How do you even go about getting the unwrapped version of the new topology that fits the sculpt you did a while back in zbrush and in the same tool? Okay, I'm really confused.. I was going to say append it but thats not the same tool. Normall it's all just one tool I work with and then I can take it back to sub div 1 (this was when I didn't use that workflow) HELP
The thing is, everyone at the start of this thread is talking about cages. I know how to use them but I don't actually need to for now. For example, lets say I done my work flow on a model and then normal mapped in zmapper thats pretty much what I'm doing now? When do you need a cage?
Second : You know how you get a low poly gun and then add loops to tighten? How do I go about adding mechincal like details (as far as I know thats kind of hard in Zbrush unless somone can tell me - infact - I done that earlier http://i27.tinypic.com/2r7wk1s.jpg )
Is this fine or in max if you wanted to do even more mechanical details would you have to clone the model and add parts. Which brings me to another question (Lets say if a gun has a screw or bolt or whatever and you need to boolean it how do you avoid the lines you get from the edges. I tried that once and I got the visible lines due to the crappy edges boolean makes.
EarthQuake
07-10-2009, 01:50 PM
Omg! That new exporter did the trick (it even has a customizable preset)! Everything is working as it should now.
Refer to this old pic (http://modsrus.com/shaun/Strange03.jpg), used the same setup.
The cubes with 1 smoothing group have smoothing errors (http://modsrus.com/shaun/SmoothingErrors.jpg) now (as they should). The cube with no smoothing, and multiple islands, look perfectly fine (http://modsrus.com/shaun/NoSmoothingErrors.jpg). And the cube with no smoothing, and 1 island, has a messed up edge seam (http://modsrus.com/shaun/EdgeErrors.jpg), as it should. The edge seam is hard to see, probably because of the tight edge on the high poly, and a 2048 map. Also, no more reflections or anything on the cubes (not sure how the max exporter managed to affect that, but it did).
Thanks EQ, hopefully you haven't wasted to much time with those files! :P
Its cool i didnt even see it until now.
As far as the reflections, the way marmoset's lighting works is this: it uses and HDR cube map to create the lighting, so basically even without turning on specular you are getting "reflection" from the cube map. For the diffuse lighting it is a very blurry cube map, but "reflection" in a sense none the less. It looked odd to you because of the smoothing errors, having those sort of random normal directions shooting of and hitting various parts of the cube map. If you turn on specular you will have another layer of reflection as well, and control the blurryness of the specular reflection with the "sharpness" setting.
Taylor Hood
07-10-2009, 02:02 PM
Lights a candle and draws a polygon with salt on the ground
"Oh, great and wise EarthQuake. May you shed some light on my queries?"
EarthQuake
07-10-2009, 02:12 PM
I've a question ..or ..or 4 :
So my basic work flow that I'm trying to adapt is :
Low poly base - high poly - retopo - unwrap retop'd version
EDIT : : : IMPORTANT : I can't even get my head across this : Alright, so, low poly, sculpt, retop, import to max and unwrap. How do you even go about getting the unwrapped version of the new topology that fits the sculpt you did a while back in zbrush and in the same tool? Okay, I'm really confused.. I was going to say append it but thats not the same tool. Normall it's all just one tool I work with and then I can take it back to sub div 1 (this was when I didn't use that workflow) HELP
The thing is, everyone at the start of this thread is talking about cages. I know how to use them but I don't actually need to for now. For example, lets say I done my work flow on a model and then normal mapped in zmapper thats pretty much what I'm doing now? When do you need a cage?
Second : You know how you get a low poly gun and then add loops to tighten? How do I go about adding mechincal like details (as far as I know thats kind of hard in Zbrush unless somone can tell me - infact - I done that earlier http://i27.tinypic.com/2r7wk1s.jpg )
Is this fine or in max if you wanted to do even more mechanical details would you have to clone the model and add parts. Which brings me to another question (Lets say if a gun has a screw or bolt or whatever and you need to boolean it how do you avoid the lines you get from the edges. I tried that once and I got the visible lines due to the crappy edges boolean makes.
Well, generally i don't think many people use zbrush to bake normals, and i think there are a variety of reasons for this. No cage control, no other advanced controls, no ambocc baking etc(i've not actually used zbrush's baker, but that is the jist i've read from others, correct me if i'm wrong).
So, the process goes like this:
1. Create cage mesh, this mesh should be optimized for sculpting. What that means is you want evenly sized quads with good mesh flow.
2. Import and sculpt.
3. Retopo, now you can do this in zbrush, or you can do it in an app like max. You could even export your lowest level sub-d and start from there, with a high-ish(doesnt have to be highest level) mesh in the background in max etc. I mostly do mechanical type sub-d modeling, so i will either re-create peices from scratch with the high poly in the background, or start from my sub-d cage mesh and optimize until i have the desired detail(i will do either or both depending on complexity).
4. Uv
5. Testbake. This is a very important step, this is where you figure out what is wrong, where you need to edit the lowpoly to better match the high(and produce a better bake) where you need to add hard edges or edit your uvs, etc. In zbrush you dont really have any control over setting up hard edges and such(you could edit in max, import, bake, etc but even then im not sure it would read your hard edges, but that is just a very poor workflow). I generally use Xnormal to bake when i can, but have also used max and maya and both have good tools for baking.
6. Once you have everything set and all the errors worked out, do your final normals and AO bake.
Now as far as screws and stuff in a gun, i generally wouldn't boolean them in, if its for rendering normals and its a small detail, you can simply float the screws on top of the mesh. Check out the workshop threads in the workshop for(workshop #1) to see a bunch of examples on this.
If you absolutely need them modeled in and not floating, there are various clean ways to go about doing this, again check the workshop threads for some examples on inset details.
Also hey, please stop with the colored text.
Taylor Hood
07-10-2009, 02:35 PM
Well, generally i don't think many people use zbrush to bake normals, and i think there are a variety of reasons for this. No cage control, no other advanced controls, no ambocc baking etc(i've not actually used zbrush's baker, but that is the jist i've read from others, correct me if i'm wrong).
So, the process goes like this:
1. Create cage mesh, this mesh should be optimized for sculpting. What that means is you want evenly sized quads with good mesh flow.
2. Import and sculpt.
3. Retopo, now you can do this in zbrush, or you can do it in an app like max. You could even export your lowest level sub-d and start from there, with a high-ish(doesnt have to be highest level) mesh in the background in max etc. I mostly do mechanical type sub-d modeling, so i will either re-create peices from scratch with the high poly in the background, or start from my sub-d cage mesh and optimize until i have the desired detail(i will do either or both depending on complexity).
4. Uv
5. Testbake. This is a very important step, this is where you figure out what is wrong, where you need to edit the lowpoly to better match the high(and produce a better bake) where you need to add hard edges or edit your uvs, etc. In zbrush you dont really have any control over setting up hard edges and such(you could edit in max, import, bake, etc but even then im not sure it would read your hard edges, but that is just a very poor workflow). I generally use Xnormal to bake when i can, but have also used max and maya and both have good tools for baking.
6. Once you have everything set and all the errors worked out, do your final normals and AO bake.
Now as far as screws and stuff in a gun, i generally wouldn't boolean them in, if its for rendering normals and its a small detail, you can simply float the screws on top of the mesh. Check out the workshop threads in the workshop for(workshop #1) to see a bunch of examples on this.
If you absolutely need them modeled in and not floating, there are various clean ways to go about doing this, again check the workshop threads for some examples on inset details.
1- cage mesh as in the low poly base?
2- Yep
3- So you mean you can either use the retopo or use the lowest sub division level (When you put a semi-high detailed mesh in the background do you make the low poly fit inside the high poly mesh or outside?)
4- yerp
5- Kind of weird because I've known how to do normals for quite a bit now but I seem to have forgot everything since I tried out zmapper. Like, I really have -.-
Have the two meshes > render to texture > generate cage (does the mesh have to be inside the high poly?)
in X normal it's just loading the two into the app and changing some settings, yeah? I take it you do the test bake in max to see if it works.. wait then why would you need to do Xnormal then?
MY BRAIN HAS COMPLETLEY STOPPED WORKING. :/
EarthQuake
07-10-2009, 02:57 PM
1- cage mesh as in the low poly base?
2- Yep
3- So you mean you can either use the retopo or use the lowest sub division level (When you put a semi-high detailed mesh in the background do you make the low poly fit inside the high poly mesh or outside?)
4- yerp
5- Kind of weird because I've known how to do normals for quite a bit now but I seem to have forgot everything since I tried out zmapper. Like, I really have -.-
Have the two meshes > render to texture > generate cage (does the mesh have to be inside the high poly?)
in X normal it's just loading the two into the app and changing some settings, yeah? I take it you do the test bake in max to see if it works.. wait then why would you need to do Xnormal then?
MY BRAIN HAS COMPLETLEY STOPPED WORKING. :/
First off i think you're getting confused with what a cage is.
A cage when refering to sub-d modeling is the base mesh that you sub-divide, and sculpting is a form of sub-division model in a sense(to increase levels you sub-divide more etc). So the cage mesh is your "base" mesh in that sense.
A cage when refering to baking, is generally optional(you can choose to use it in either max, maya, xnormal, etc) what it is a a "copy" of the mesh that gets enlarged to encompass your highpoly mesh, to be used as the basis for baking. In most apps you can manually edit the cage, but you dont always need to. There are also other methods in max(click on "use offset") and in xnormal(clicking off "use cage") that will let you use a pre-defined distance from the lowpoly. There should be much more information on cages etc if you read more of the thread here.
Since your cage, or your offset distance need to be set as larger than your highpoly mesh(your cage needs to encompass the highpoly) it doesnt actually matter if your lowpoly is larger or bigger than the high, infact it can be both! Really it is ideal for the lowpoly to match the high as close as possible, and this of course will mean smaller in some parts and bigger in others. What matters is again, that the highpoly fits insite the cage/offset distance(the rays cast IN). Manually setting up a cage can be a good way of visually seeing this, as setting an offset distance can be sort of trial-and-error.
Doing test bakes is more about finding problems with your geometry, smoothing errors, where you need to add hard edges or add geometry, where you need to edit the mesh to match up better with the highpoly etc. This isnt something you could do in xnormal, you do it in max/modo/whatever you model in. You should do your test bakes in the app that you will do your final bakes in, of course.
Taylor Hood
07-10-2009, 03:06 PM
Right, somewhere along the line I forgot the basics. I've been doing max for around 2 years but clearly I've forgetten and gotten muddled up with stuff. Thank's for your time and the posts.
NoisyMonk
07-17-2009, 05:26 PM
Sigh.. back again. >_<
Hopefully this one is actually a quick fix..
http://www.modsrus.com/shaun/Problem01.jpg
What do you think is causing this? This is just 1 part of the normal map, but basically everything looks like this. No fine details and also what looks like object-space colours, even though 'tangent' is selected in the options of the RTT. Tried with/without a cage and got the same result. Low poly and High poly both done in max, and texture captured in max. Gonna try XNormal, but even if that somehow fixes it, I'd still like to know what the problem is.. thx!
edit: So I tried it in XNormal, and it is clearly working, other than a few ray misses and normals grabbed from other close objects.. just cause I just wanted to test it quickly...
http://www.modsrus.com/shaun/Problem02.jpg
almighty_gir
07-18-2009, 07:43 AM
ok, my question is on seams, specifically organic models.
http://img237.imageshack.us/img237/9813/pridizzle.jpg
ignore the hammer, i haven't really done much work on it so far. on the surface, this would appear "okay", the seams aren't too bad. BUT. if i get closer, you can see this:
http://img139.imageshack.us/img139/9813/pridizzle.jpg
after looking over it, it's something to do with the tangent calculations with the mesh. if i bake it down to object space, it looks quite literally perfect. but that can't be used for a game! whether i bake down to tangent, or bake to object space and convert, i still get these seam errors. i've tried to repaint some areas in photoshop, but that causes the shadows to look weird in some areas.
any help?
NoisyMonk
07-18-2009, 08:15 AM
I'm still quite new to normal maps, and haven't had to deal with seams like this yet, but from the wiki..
When the renderer (or game engine) renders your game model, the shader (http://wiki.polycount.net/Normal_Map#ShadersAndSeams) must use the same tangent basis as the normal map baker, otherwise you'll get incorrect lighting. In fact you'll get seams all over the place without it.
So how do you fix this..? I'm not sure how to do it, but you'd need to find out how Marmoset calculates the 'tangent basis' and then somehow get those settings into whatever you used to bake; max, xnormal, etc..
almighty_gir
07-18-2009, 08:36 AM
i get the same looking results in unrealed too.
vBulletin® v3.8.4, Copyright ©2000-2013, Jelsoft Enterprises Ltd.