View Full Version : Normal Mapping for Games
dominicqwek 03-15-2004, 12:32 PM I'll start posting any relavant links to threads or articles on normal mapping (more on general info and not software based, you can find those in the respective application forums) Hope this will aid those who are totally new to normal mapping like myself :)
Omita's thread-some info/images on tangent vs world space normal maps (http://www.cgtalk.com/showthread.php?s=&threadid=138110)
I'd thought I'd start a new thread on this instead of hijacking dur23's thread :) Well, since normal mapping will be the coming of things for the next generation of games, it'd would be good if everyone could share their thoughts, questions, theories, workflows, etc on this topic.
To start things rolling, i've got a few questions(well quite a few actually). What is the normal workflow like for the generation of game model that will require normal mapping? Do I start with a hipoly model and cut down to a lopoly one, or vice versa?
UV mapping would probably come in once the hipoly model is done? and won't cutting down the model to a low res one affect the uvs? How can we make sure the uv's turn out right on the low res model since we are doing so much poly editing on the model?
Hope someone has the answer(im sure there is). Either way, if anyone has any questions/topics to raise on this subject, feel free to do so
|
|
Staffan Norling
03-15-2004, 12:51 PM
Welll...first of all, normal mapping does'nt mean that you have to create a highpoly model. You could create a bumpmap and convert it to a normal map.
There are three different coordinate systems that can be used for normal maps: World space, object space and tangent space. Tangent space is what you would like to use for anything that deforms. Object space works fine for non-deformable objects, such as vehicles. World space works only for static objects...
Wich of theese you should use, i dont know...that is up to the programmers of the game to decide. I'd guess that tangent space is the usual choice though...
I dunno about the workflow..i've only done one normal mapped model (a vehicle), and when i did it i decided to create the lowpoly model first and the detail and bevel it to create the highpoly model. If i where to do a character, i'd probably start with a highpoly model.
Modelling the highpoly model might be prett difficult too...you do not want overlapping geometry, since it may cause problems with the normal map generator. When modelling characters, i don't believe this is a big problem since organic models can easily be done without overlapping geometry, but if you're creating a vehicle, you may have to boolean/model all the details onto the main model. You'd also have to think about only creating details that are possible to be normal mapped...
You'll only have to uv-map the lopoly model. When you do, then avoid overlapping uv's since they will probably cause you a lot of trouble.
Dargon
03-15-2004, 01:55 PM
I'm in the middle of trying my first normal mapped character, and I've figured out a few things, but not all, yet...
From what I can tell, it makes no difference whether you model hi first or low. What matters is you end up with both.
Myself, I like to blck out my characters first, and then slowly add in the detail, so it works well for me to model the low-res first. I think this is one of the better ways to work, as it will be the final model, when it comes down to it, and you should really get this right.
But I could see in a production style environment, how it would be likely to see seperate artists working on the low and hi res models, in which case it seems easier to create the high, and then retro-fit the low.
On thing I think is really cool about normal maps, is it really opens up the possibilities for skinning and modding. Because essentially you're making a texture out of the whole process, you could theoretically have one low res mesh, with many different hi-res meshes adding geometrical data. So with simple texture swaps, you could have vastly different-looking characters in your game.
I will continue this with a question, though. Does anyone know anything about the best way to paint the diffuse map when dealing with normal maps? How much does the pushing around of the normals affect the placement of diffuse pixels? For example, I'm going to have some circular indentations in the armour of my character, and I need them to be black in the holes, and also have scratches along the edge. Whith what do I line these up?
Also, can anybody tell me which colour is Y, which is X and which is Z, or if it's closer to N, U and V?
dominicqwek
03-15-2004, 02:18 PM
Staffan - the 3 coordinate spaces u mentioned, are they options that u decide on when u export your normal map out of the 3d software? when u started addin details to your vehicle, u had your uvs already mapped out i assume, and when u were increasnig the lod, did u make sure not to touch the verts of the lowpoly model? cos when u do, the uvs get messed(imagine chamfering a vert once uvs are mapped)
what i'm concerned about is how to handle your verts when cutting down from a hi poly model, ensuring that u dont end up screwing your uvw maps which were done on the high poly model.
Dargon- cool. do u have a wip thread goin on in here? if u do, pls post a link, i'd love to see your progress.
hmm, it doesnt matter which i do first? be it hi or lo poly? but it matters when uvw mapping comes into consideration.. no?
as for addin of detail, unless u have zbrush, you would have to add the details in your 3d s/w..and then again my concern once more on uvw mapping, cos all those addin of detail would probably screw up your maps, u wouldnt have that much freedom with your poly editing.
wish i could help you out with your questions, but im pretty to this normal mapping thing. hope someone answers them.
Hi maybe this thread may of help to you.
http://www.cgtalk.com/showthread.php?s=&threadid=87991&highlight=normal+mapping
Dargon
03-15-2004, 02:48 PM
Hi maybe this thread may of help to you.
http://www.cgtalk.com/showthread.ph...=normal+mapping
Good thread, I've used that one a lot, unfortunately, 3DSMax heavy - good to keep this one going for general practice and general tools, methinks! ;)
hmm, it doesnt matter which i do first? be it hi or lo poly? but it matters when uvw mapping comes into consideration.. no?
You only have to UVW map your low-res model. You can UVW the high-res, and add bump maps, to ahve them be applied to the normal map, but if you don't want those, you don't have to do them. Either way, the UVW maps don't have to match. (it would be nigh-impossible to do in many cases, anyway...)
dominicqwek
03-15-2004, 03:17 PM
MC- tks for the thread dude. been there before too, like dargon said, opening up a thread here would probably receive a wider audience.that way we can probably consolidate more info here. :)
dargon- tks m8! you probably solved one of the biggest question marks for me when it comes to normal mapping. LOL! phew, im glad i got that out of the way. the bump maps come in seperately or added on to the normal map? or is that an engine-specific question?
Hopefully i get my hands dirty with some normal mapping soon. can't wait to test things out.
After seeing dur23's model, i realised that his diff map did not have much shading, rather it was flat so that the normal map could do the work. Would there be a difference if i had subtle lighting in the diff map? just like in FPS models like ut2k4.
Staffan Norling
03-15-2004, 04:53 PM
You don't have to uvmap the highpoly model even if you want to add bump mapping. Since a normal map and a bump map is basicly the same thing, if you have the right tool you can bake the bump map into the normal map after it has been generated.
About lighting: the lighting that will be provided in the game will be aimple and probably without self-shadowing. It would sometimes be a good idea too bake/paint a flat skydome style lighting on the model, making indented areas darker and dirtying up details...(if you look at dur23's model, you can see that it would probably look better with subtle shadows where the skin meets the armour, etc.)
commy
03-15-2004, 05:01 PM
the problem with convering bump to normal is u cant paint the bump accurate enough for curved surfaces, imagine u have a lo-res sphere and u want to normal map it so its smooth (dumb scenario i know but just read it) if u wnat to conver bump.normal ud then have to by hand/eye paint the lo-lights and highlites perfectly to get a flowing shape near impossible, however if u could subdivide the mesh*2 and generate a normal map of that smooth mesh u could then paint on details like veins, ribbing, muscles etc since u have the correct base, but theres no way u could effectivly hand paint a smooth base to turn a hex-cylinder into a smooth round shape, it would be so time consuming to do because ud have to sit there and do it a tiny bit at a time. but yah if uve a correct smooth base theres no reason u cant u paint ontop of that its just the intial smoothing, id be very worried if it required hi poly models of everything tho! nightmare
dominicqwek
03-16-2004, 09:40 AM
staffan- tks for the tip. baking the normals for the hipoly model would be rather messy wouldnt it? i mean, what if we wanted to do some changes directly on to the normal maps?
commy- would you be able to bake some lighting on the bump/normal map in the 3d s/w? wouldnt that ease the workflow?
Hmm, not much of a response just as i thought. :) maybe this thread IS in the wrong place afterall.
Dargon
03-16-2004, 11:54 AM
The main reason I see to put the bump on the hires version, to bake to the normal map is precision. It could also be for ease.
Because the UV sets don't have to match, you could Auto Map all the areas you don't need precise bump on, and squash that down to an unused corner of your texture sheet. Then, you just UV the areas that need bump.
I'm thinking along the lines of engraving, maybe seam lines, anything that you wouldn't want to model, but you'd want in the final map. In a lot of cases, you wouldn't need to bump map the whole object, or all the fiddly details. Anything less specific, like scales, or rough metal, woodgrain, could be put on in a seperate pass, because it's less dependant on precision.
Staffan Norling
03-16-2004, 12:40 PM
Still seams like a great waste of time to uv-map the highres model...and on a neatly uv-mapped lopoly model, you'll have precision enough. :)
EricChadwick
03-16-2004, 02:52 PM
I do think this is the best section for a software-agnostic normal-mapping thread.
How much does the pushing around of the normals affect the placement of diffuse pixels? It doesn't, I find the pixels should be lined up for the best results... unless I'm using Parallax bump mapping (http://www.cgchat.com/forum/showthread.php?s=&threadid=17514) (normal map combined with a heightmap, pixels offset using parallax). But even there, the match is still pretty close, I just get some smearing sometimes. Oh well, it's a trade-off. Play with the EXE, it really can be stunning.
which colour is Y, which is X and which is Z, or if it's closer to N, U and V? Tangent space uses the red channel to slope the normal to the right, green channel depends on the hardware (ATI expects pixels in the green channel to slope the normal upwards, while NVIDIA expects them to slope downwards), and blue channel points outwards (not much info with a tangent-space map). Object/World space is, well, in world space... so red is Down, green is At, and blue is Left (well, at least on my ATI card... anyone know if this is different with the Nvidia chipset?).
About UV-ing the high-res model, one benefit to doing so is being able to texture to your heart's content, using layered shaders, displacement mapping, multiple UVs, etc. Then just bake it down to the low-res model, into your various real-time shader passes... color maps, specular maps, normal maps, reflection masks, etc. I like it since it gives me more control over what I'm going to get, but for some projects it may be more time-consuming than just deriving the normal map, and hand-painting the rest.
I like that there are many ways to approach it, none is the "right" way, unless it works well for you or your project.
Oh, and don't dismiss painting normal maps... Nvidia's plugin for Photoshop does a great job converting grayscale bumps into normals. It is a really easy way to add fine detail, like Dargon described.
Cool thread dom, thanks for starting it.
bcloward
03-19-2004, 02:26 PM
Hey guys. Great thread! I've written a tutorial on my web site that explains what normal maps are, gives step by step instructions on how to create them using Photoshop and/or 3DS Max, and also describes how to use per-pixel lighting to view them applied to your model. A lot of the information in the tutorial has already been covered in this thread, but you may find something new. Here's the URL:
http://www.bencloward.com/tutorials_normal_maps1.shtml
At the end of the tutorial I've included a list of links to all kinds normal mapping information that I've found all over theweb.
Give it a read and tell me what you think.
EricChadwick
03-19-2004, 08:00 PM
Wow, Ben this is great. What a good resource!
Like others said about my thread, yours seems to be somewhat 3ds max-centric. Although you have a lot of software-agnostic info too. Maybe include some info about setting up normal map shaders in Maya, Lightwave, XSI, etc.? I don't know how far you want to go with it though, but your tutorial/repository is really great so far.
Thanks again!
bcloward
03-19-2004, 08:13 PM
Yeah, your right. Max is the only software package I have so it's the only one I can give detailed step-by-step instructions for. Pages 1 though 4 of my tutorial are useful to everyone as is page 8. Only page 5 and page 6 focus on step by step instructions in Max - although you can do all of the same things in Maya. I just don't have the software so I can't get as specific. That's the main reason I posted all of those links at the end. You can find info there on creating normal maps in every major package available.
Thanks for the feedback. Maybe I can find someone with Maya to help me update pages 5 and 6 to include Maya details.
bcloward
03-20-2004, 07:26 PM
Ok, thanks for the advice. I added some bits to page 5 so that you can now follow the tutorial steps using any software that supports OBJ format (thanks go to Michael Bunnell!!)
Page 6 (covering viewing your model with the normal map applied) is still very Max-centric, but I added a note which directs people using other software to my link list at the end. You can find links there for using normal maps in Maya, Softimage, Polybump, and others.
I haven't made page 7 yet, but I'm planning to give tips for modeling high and low res versions, and applying UVs to get the best normal map results. I'm planning to include some tips on generating normal maps including descriptions of some of the additional features of NormalMapper. I also want to give some guidelines for editing normal maps in a paint program.
Anybody want to suggest some tips and tricks I should include?
dominicqwek
03-25-2004, 04:41 AM
Dargon, Steffan- yeah i agree unwrappin the hipoly model would take helluva long time. It really depends on how much time u can afford.
The question is whether it will be worth it to add another pass for finer details like Dargon mentioned. Wouldnt it be more economical if we had the finer bump details converted into normals and composite it over the normal maps? What about renormalizing in pshop? any idea?
Eric- yeah its nice that there are several workflows available. my question once more is renormalizing in pshop so that we can retain an accurate normal map.
Ben- GREAT tut, yours is by far the most concise i've seen. a billion thanks. would be nice if we could get any info on painting on a normal map :P I'll look ard the web but chances are there wouldnt be much info on that.
I've got a tip: wait for the next update for melody, the current one is crash friendly. LOL.
Im currently havin a friendly discussion with a programmer. he claims that it is appropriate to generate a normal map from a greyscale image. I do know that since for characters, your uvs are layed out everywhere that it is best for a 3rd party program like kaldera or normalmapper to get the normal maps from a 3d model. That way, the normals read correctly no matter how u rotate ur uvs. Am i right on this one?
Tks for all the sharing guys. Sticky for this thread anyone?
My workflow goes like this:
1. Model Object in 3D Studio Max (Low Poly)[list=a] Upon completion of the mesh, subdivide the thing. I prefer doing this in Max, althought it's possible to do this in step 2. Export mesh to OBJ. Although you can go insanely high, for something like a human head I keep it around 150,000 polys.[/list=a]
2. Import low poly object into ZBrush.[list=a] Working on only one side of the head, sculpt major details into the mesh first Sculpt minor details last (hairline wrinkles, crow's feet) Export to new OBJ file.[/list=a]
3. Import back into 3D Studio Max.[list=a] Cut the thing in half. Slicing the face down the middle will ensure that you only have the half you worked on. Work all the verts to the same relative point on the given axis, so when mirrored, it will join easier.[/list=a]
4. Mirror horizontally, align it with the other half of the head, and export the new half of head to yet another OBJ[list=a] Bring that into ZBrush again. Add different details. Not too much, but this is a good time to give him a deep scar that is unique to that side of his face, or a screwed up eye, or whatever you want. Export back to OBJ, import into max[/list=a]
5. Join the two, and weld whatever you need to weld.[list=a] Duplicate the newly joined mesh, and move it over so you can see both copies at once.[/list=a]
Here is where it gets fun.
6. Using your favorite method of poly reduction, bring the new mesh down to a suitable size for your game world. Sometimes you can get it down to within a small percentage more (or even less, if you're sloppy) of the original low poly mesh. This produces a result that is more like the detailed mesh than the original low poly version, so applying the normal map to this will look better and more convincing than applying it to the original low poly mesh.
7. Using your favorite method of creating a normal map from your first high poly head, apply it to the intended mesh. Fix any problems that there might be with seams, etc.
Gyzer
03-25-2004, 08:18 AM
Ok so your saying to build the low in max and subdivide it then bring it into zbrush, then do details, then bring it back into max again, cut it in half and mirror it then being it back to zbrush, do minor details, then bring it back into max but start cutting the pollies down for the subdivided mesh to make it low polly all over again, but use a copy of the high polly for the normal map, but use it on the now more "detailed" low polly mesh?
Sorry I just want to see that I've got this all right
dominicqwek
03-25-2004, 08:45 AM
matt- why do you work on only half the model? is it to speed up viewport refresh rates or due to the symmetry issue? there's an option to turn off symmetry mirroring in zbrush if im not wrong.. might as well bring in the subdivided mesh from the 3ds/w into zbrush, finish all the high poly details (even assymmetrical details) and export your normals?
@Gyzer: Bingo
@dom: The reasoning for working on only half of the mesh (if it is to be mirrored) is just for that reason. Organic life is typically symmetric in some way.
Say I had a 300 poly head, subdivided that way up to 50x the poly so I have enough polys for detail work in ZBrush... Then when I'm working on the head in ZBrush, since it's just subdivided, while I'm working on one side, I can compare it to the original. Since I'll be exporting the 'new' low poly from the high poly work done in ZBrush, you could say it doesn't matter too much but it's a great reference.
If you were to work in ZBrush on both sides of the head, for example, you would be doing twice the amount of work that you would really need to be doing, and it'd be faster than the ZBrush symmetry sculpting mode... Twice as fast for that, actually. Anyway, look at your face in the mirror... It's nearly the same on both sides, except for a few details, like perhaps your right eye is a few mm higher than the left, or your hairline begins at a different point... When you do the '1/2 the face, then mirror it in max, then edit that' thing, you get the completed work for the RIGHT side, and then you can fiddle with the LEFT side and do all your adjustments like make the eye lower, add a scar or an eyepatch, who knows. Get it?
jum'bok
03-25-2004, 02:34 PM
hey good thread.
matt- i remember when normal mapping first became popular someone showed me an error they got when they mirrored their model. the normal map thought light was coming from two different directions at once, and each half was being shaded differently. has that happened to you?
EricChadwick
03-25-2004, 02:46 PM
renormalizing in pshopLast link in the table on this page... this filter will renormalize for you.
http://developer.nvidia.com/object/nv_texture_tools.html
Or you can use the DDS plugin (3rd from bottom) to re-normalize during the save (but then you're committed to using DDS format).
finer bump details converted into normals In my experience, some engines use two sets of bump maps... normal map for large details, grayscale bump map for fine details. Doom III appears to be an example of this. Or you can bake fine detail along with your geometric-derived form into the normal map... ATI's tool allows this, can do it in Photoshop too via convert-to-normalmap, use layers, then renormalize the result.
generate a normal map from a greyscale image Very appropriate. That's what we're doing here, since height maps are much more versatile than normal maps. Looks great too.
Trouble is, they're a bit more difficult to create right now, not many solid tools yet. But same methods as baking a normal map from a high-res mesh... ray-casting from the low-poly UVs. Kaldera is the best at height maps in my experience so far, although Mike Bunnell's ATI mod can do it too.
Height maps are easier to edit in a paint proggie. Easy to convert to normal maps. Can't go the other way... normal map into height map. Height maps also give you variable strength to the perturbation of the normals... you can re-convert to normals at different powers, whereas a normal map is basically fixed at one strength. Also height maps can be used for more advanced effects, like parallax bump mapping (http://www.opengl.org/discussion_boards/ubb/Forum3/HTML/011292.html), displacement (http://www.extremetech.com/article2/0,1558,1162274,00.asp), etc.
normals read correctly no matter how u rotate ur uvs It's no different for height-map generation, if that's what you're asking. You need to avoid overlapping UVs, need to keep all UVs within the 0-1 range, etc. In fact it's a little easier with height maps since they're not UV-rotation-specific like tangent normal maps... with dot3 you can get very different colors across UV seams, but with height maps it's all absolute, no seams.
faster than the ZBrush symmetry sculpting mode I thought ZBrush was super-fast even with really high-count models. Seems like auto-mirror sculpting would be faster than export-to-max-to-mirror-then-reimport-to-zbrush.
Can we get this thread to be sticky? Seems like a pertinent thread.
EricChadwick
03-25-2004, 02:51 PM
each half was being shaded differently
Depends on your engine/viewer. There is a simple bit of code that fixes this. Available on the Nvidia site, if I recall correctly.
jum'bok
03-25-2004, 02:54 PM
thanks eric =)
StrangeFate
03-25-2004, 03:27 PM
We tried out painting part of the normalmaps but the results simply cant compare to a baked one from a hipoly model. We've been trough that and thankfully ditched it.
Also, converting grayscales into normalmaps gives you a standard xyz output, but any subtile angles and most geometry on complicated objects would go lost. Generating from hipoly models gives you a wider range of angles and directions that get translated into the normalmap, whereas the grayscale approach is more of a guessing that a surface is poing left or right.
If your normalmaps mostly only contain bumped information for the details in the skin then going from a grayscale is sure the way to go, we do that for most textures. However, all objects/characters are modelled in hipoly.
Personally, i find it best to do the hipoly models first and then build the low poly model as a cage around it.
I find that building a hipoly model out of the lowpoly, or using the lowpoly as cage to build the hipoly, limits me in the design and shapes i can use in the hipoly.
Lowpoly model first gives me better control of the polycount, while doing the hipoly first gives me more crontrol over shapes and design.
Edit: we use Lightwave for modelling and generating the normalmaps with a plugin called Microwave.
EricChadwick
03-25-2004, 04:05 PM
Generating from hipoly models gives you a wider range of angles and directions that get translated into the normalmap, whereas the grayscale approach is more of a guessing that a surface is poing left or right. Not sure if this was clear or not in my post, but we generate the heightmaps from high-res geometry. You're right about painting directional detail being very difficult (well, next to impossible). For us in our particular system, height maps are just so much more versatile. But yeah it totally depends on your system.
dominicqwek
03-25-2004, 05:13 PM
Firstly, kudos to bentllama for making this thread a sticky ;)
Matt-LOL. The only reason i see is that it speedens the refresh rate in zbrush. i mean i could jolly well do the details like raising and eyebrow or a higher hair line on one side of a face in zbrush...if i mirror that hires model in a 3d s/w, and start editing on it, im pretty sure it'll conk out on me faster than zbrush?
Eric- i was kinda on StrangFate's stand on greyscale height maps . What i do hope to clarify here is how the engine inteprets a greyscale image? With a normal map, with have rgb values to indicate where the normals are sloping towards, be it what ever direction. But with a greyscale height map, how does the engine calculate the data? unless u're telling me it works like a displacement map and the lighting is recalculated in the engine?(sorry im not exactly great with technical terms)
or do u have to convert your height map to a normal map at the end of the day? what about characters with a UV layout that has certain pieces rotated? if u were to derive a normal map from a model, the rgb values would be locked onto the coordinates so that they would look correct in real time. but with a height map u cant do that. OR am i wrong? LOL. this sure is confusing.
EricChadwick
03-25-2004, 05:28 PM
(thanks bentllama)
LOL. this sure is confusing. Yeah, tell me about it! Well, what these threads are all about, learning/sharing/refuting.
I guess I shouldn't hype the whole grayscale thing, since it isn't widely used tech (yet!). Our system is hardware-agnostic (info (http://www.cgtalk.com/showthread.php?s=&threadid=125091)), so depending on what graphics capabilities are present, the heightmap can be used for old-school offset bump mapping (cellphone), or it can be auto-converted to a normal map (current-gen PC cards), or it can be used for displacement if the card supports that (Parhelia, etc.). It's just more versatile all-around (in our situation) than a vanilla normal map. Plus, did I mention it mips better than a normal map?
About the UVs, the engine "understands" UV orientation, so if it is using a normal map, the orientation/mirroring is taken into account when converting the normals from raw pixels into final lighting.
I don't want to look like I'm starting an engine war or anything. Just trying to share some things I've learned, won't be applicable to everyone.
Originally posted by jum'bok
hey good thread.
matt- i remember when normal mapping first became popular someone showed me an error they got when they mirrored their model. the normal map thought light was coming from two different directions at once, and each half was being shaded differently. has that happened to you?
The normal mapping doesn't get done until the high poly version is joined completely.
Originally posted by dom
[B]The only reason i see is that it speedens the refresh rate in zbrush. i mean i could jolly well do the details like raising and eyebrow or a higher hair line on one side of a face in zbrush...
Sure, but I also find that working on one side gives me opportunities to try things out on the other side first. If I want to go for some wild multi-step effect that I'm afraid of not being able to undo, or whatever. Also, I like seeing the direct comparison between the low poly side (it still appears low poly, although each original poly is subdivided hundreds of times) and the sculpted side. The final result will be a low poly generated from the joined high poly sculpted version, but it still has to be close to the original.
EricChadwick
03-26-2004, 02:30 PM
Nvidia just released their combined LOD-maker and normal map generator...
http://developer.nvidia.com/object/melody_home.html
"NVIDIA Melody creates high quality normal maps that make a low-poly model look like a high-poly model. Simply load your low poly working model, then load your high-poly reference model, click the "Generate Normal Map" button and watch Melody go to town.
You can also can use Melody to generate LODs for you with the "Generate Progressive Mesh" feature. You can rotate your models and see the normal map in action. A command line version is provided to help you integrate Melody in your content creation pipeline. Read more about how you can get the most out of Melody in the accompanying User Guide."
Looks pretty good, haven't played with it yet though.
Great! Trying it out now. I've been waiting for this for a little while now. They must have read the thread.
BORK! Melody requires a graphics card that supports Pixel Shader 2.0
:(
EricChadwick
03-26-2004, 10:49 PM
Naw, I kind of doubt it, although that would be nice. They've been working on it for awhile.
They do love to get feedback though. I asked for heightmaps, they were very helpful, sounds like it'll be in the next release.
EricChadwick
03-26-2004, 10:52 PM
That's a bummer. What kind of card do you have? Is that an error when you try to run it?
bcloward
03-28-2004, 02:03 AM
It's true. You have to have some type of GeForceFX card to run Melody. I jsut have a GeForce 4 at work and it popped up with an error that said, "Requires Pixel Shader 2.0." I guess they're hoping to sell a bunch of cards with it. :0)
The GeForceFX 5200 cards are really cheap now. Around $80 I think, but it's still kinda silly to have to go plunk down $80 to use "free" software.
Phasmatis
03-28-2004, 10:41 AM
Thanks for posting a link to melody, it's so much faster than Ati's normal mapper, it seems better all round actually.
I hope this hasn't been asked already but are there any programmes that display a model with both a normal map and texture map?
bcloward
03-28-2004, 12:54 PM
Nvidia's Cg plugin for Max and Maya will allow you to use Cg shaders in the real-time viewport including shaders that use both diffuse maps and normal maps together. It works a lot like the material/shader system already in Max and Maya, only in real-time.
My tutorial shows how to set up the plug-in, choose a shader, and apply it to your model and includes step-by-step instructions. I even wrote a simple shader that uses both a diffuse and normal map. Just take a look at page 6.
There may be other programs out there, but this plugin is the best one for me since it fits right into max.
atenyotkin
03-29-2004, 12:58 AM
Hey guys, glad to hear more and more people are interested in taking advantage of normal maps. I saw one of the questions here was if there was a way to do it in other software packages... Maya, XSI, etc. Any software is capable--just need to create an exporter, but I'm sure it's all ready been done. I know XSI for a fact is capable of this. Valve Software developers actually demonstrated how they achieved great results in HL2 by using normal maps. There is actually a movie you could download (one of the HL fan sites most likely has it,) that illustrates how they baked the normal map information onto a lower-poly replica. I, personally, have not used Maya enough to really look into exporting normal map data into the game-engine, but XSI, and 3D Studio Max works well.
You can download max scripts, mel scripts, etc. that are made by professional developers if you have no time messing around with it. Crytek made one called POLYBUMP, ATI has one that's free too. I know there is quite a few more... just search for it on google or something. :-)
Prs-Phil
03-29-2004, 09:28 AM
well, cryteks polybumper is not free and ati´s is long not as good as Melody.
I just tryed Melody and it rocks ... really good tool
GET IT NOW :)
R3Koil
03-30-2004, 01:03 PM
Just thought that I'd add my method in here for variety.
1. Model highpoly model, paying attention to form, muscle structure etc. No details (wrinkles etc...)
2. Use highpoly model as a stencil for the lowpoly model. I basically build the lowpoly model around the highpoly one, Like tracing in 3D. I like this because it allows me to shape the lowpoly in a way that it stays true as possible to the structure of the original hipoly mesh. Then generate a normal map.
3. Create a bump map for the details etc...
4. Texture and specular maps to finish.
Correct me if I'm wrong, but I beileve this is how it's done for Doom 3 (the engine mixes the normal and bump maps together).
Dargon
03-30-2004, 01:58 PM
Decent method. :)
I think the whole low first or high first is fairly moot, because we need to have both at the end of the day.
I'm working with this method:
1. Model low poly version
2. Split and smooth low to make high
3. Add UV coordinates where needed on High poly to add bump maps that need to be precise, like beveled grooves on a hole in the armour.
4. Create 2nd bump map traditionally, convert to normal and combine with normal map for bumps that can be less precise, like leather patterns.
5. Apply Normal, paint diffuse and spec maps.
I prefer to create the low poly version first for a couple of reasons:
1. I always create the whole character as a low mesh 1st, to block out proportions, which is a really great method, and if you're doing that anyway, might as well keep it.
2. I get a better idea of what shapes will be there in the final model, what's going to be fully modeled, what's going to have an alpha channel, etc. Essentially, the low poly IS what you get in the game, normal mapping is just a glorified bump map, and it only does high pass detail well, not low pass. It's important to have a really well done, dynamic low-res model, and I think it may work a bit better retrofitting the high-res to help the actual game model, than the other way around.
R3Koil
03-30-2004, 10:04 PM
The method implements some common sense. I will have to agree that it is important to have a well-made lowpoly model. I will also admit that even though with my method the low model baked the information tremendously well, it was not the most clean, smooth flowing and optimized mesh.
I think a lot of people will benefit from this forum, I’m seeing ways of mixing together certain peoples techniques and ideas already.
Gyzer
04-04-2004, 10:26 AM
I've been reading more up on normal maping, but I've heard that in max 6 there should be a way built in to view normal maps within the viewports, but I haven't been able to find out how. I personally haven't tried to do a normal map yet, I'm just trying to get all my info together first.
Thanks
dominicqwek
04-04-2004, 07:07 PM
Ok guys im gonna sidetrack a lil. you can view your normal maps using a dx9 shader in max6. you also have to enable directdraw beforehand. hope this helps.
Gyzer
04-04-2004, 08:06 PM
Where do you enable those in max 6?
bcloward
04-05-2004, 02:38 AM
This is a bit off topic and probably belongs in the Max specific forum, but here goes anyway:
I don't have Max 6 but I think I can help. Like dom said, the first thing you need to do is make sure that your video driver is set to Direct3D and DX9. You can do that in the Customize/Preferences panel under the Viewports Tab. Just click the "Choose Driver" button and then choose Direct3D as your driver. You have to restart Max in order for the change to take affect.
Now open your materials editor. There should be a new roll-out down at the bottom called "Viewport Manager." This roll-out allows you to use custom real-time shaders on your models. Choose the one you want from the drop down box and click the "enable" check box. Now assign the material to your model. I can't give any more details than that since I don't have Max 6, like I said.
If you need a better description of the steps above, you can find it here:
http://www.monitorstudios.com/bcloward/tutorials_normal_maps6.html
Gyzer
04-05-2004, 11:06 AM
To bcloward:
I've been to ur site and ur normal mapping tutorial is great, but there are some very confusing parts. First off where can I get a NMF exporter for Max 6 seeing as it doesn't read the old Max 5 exporter plug-in. Also one of the links on the last page of ur site for the extended version of ATi's NormalMapper program has no directions of any kind on his site, nor does the zip have any directions for how to install it. I know that isn't ur job, but knowing how to use this one with the ability to use obj will get around the entire NMF problem for max 6 at this point.
Just generally please be a bit more specific when it comes to what is needed to be downloaded from ATi's site, cause I didn't know, this might have just been me, that you needed to download all 3 normal mapping zips on there.
I'm not trying to bitch or anything, cause ur tutorial is probably the most comprehensive of all I've seen, but the few bits of vaugness really are frustrating.
Hope to get a response soon so I can start testing out the coolness of normal mapping!
bcloward
04-06-2004, 04:13 AM
First of all, did you get your "viewing normal maps in Max" issue solved? I like to work on one issue at a time. :0)
So - the other issues you bring up have some pretty easy answers.
1. No NMF exporter for Max 6.
You're right. Right now there is no NMF exporter for Max 6. I think it would be a good idea to email ATi and request one. They're probably working on it. It's been my impression that the NormalMapper software is updated at least once a month so you may get the Max 6 version sooner than you think.
2. The "Michael Bunnell OBJ version" of NormalMapper has no instructions and I don't know how to install it.
You don't need to install this software. Just unzip it to the folder of your choice. I put mine in C:/Program Files/NormalMapper because that made sense to me. This is the exact same program as the ATi version except it reads OBJ format so the same instructioons you got with the ATi version apply with this one as well. Just substitute the names of the OBJ files you export for the NMF ones.
3. I'll edit my link to ATi's site to make it more clear exactly what is needed.
Thanks a lot for the feedback!
As a side note, since I wrote the tutorial, Nvidia has released their "MeLODy" program that also creates Normal Maps. It has a much more user friendly interface and uses the 3DS format instead of NMF. That might be easier for you. Check it out here:
http://developer.nvidia.com/object/melody_home.html
Some day I want to add a "Part 2" to the tutorial that has some instructions for using Melody as well, but as it is now, the 12 hour days at work leave me little extra time for web site addtions.
Good luck!
Gyzer
04-07-2004, 08:02 AM
I would so love to use Melody, but I'm one of those retards stuck with a GeForce 4 Ti 4200. I'm thinking of getting a new FX based card, but I really don't want to if I don't have to.
I've gotten the altered ati normal mapper with obj support, but it wont generate a normal map, its just either a back or grey flat area on the tga. I do know how to get them to view in max 6, but I still can't seem to get the obj one to work properly. I think I will contact ATI to see what they can do.
Actually I just found how to get it to render in max 6. In the direcx shader drop down, hit the check mark for synch standard material and it'll render in 6.
Thanks
EricChadwick
04-07-2004, 02:24 PM
Here's a mirror of Mike Bunnell's tool... shows the history, which gives you some of the new cmd-line syntax...
http://www.seanomlor.com/mikeb/
dominicqwek
04-09-2004, 06:04 AM
Hey guys, got a minute to spare? My normal maps appear to have seams when i apply it to the model. The seams run along the perimeter of uvw coordinates. Im using max6 for previewing purposes and kaldera to export my normals. Any idea what could be causing these seams?
Gyzer
04-09-2004, 11:23 AM
From what i've seen and heard, u'll just have to take it into photoshop and and clone stamp the seames, thats probably the best way to do it.
I just got a FX based card and I've been messing with melody, I think I've got it working but it's been doing some strange maps, but I've just been normal mapping boxes ;-)
EricChadwick
04-09-2004, 02:30 PM
The seams are from an inferior implementation of the viewport display method for normal maps. There is some code on the Nvidia site that helps solve the problem, on the rendering side, not by having to paint out seams.
Here's a PDF file with some info.
http://developer.nvidia.com/attach/3534
Fixing Texture Mirroring
To fix this type of problem, you need to duplicate
triangle edges ( ie two vertices ) before smoothing
the texture gradients
...
All of these problems are solved by our free library,
the NVMeshMender (http://developer.nvidia.com/object/NVMeshMender.html)
...
If our tool doesn’t do what you need, let us know
We have a dedicated tools group whose job it is to
assist you with this!
We can write plugins, batch tools, etc. to speed your
development process
They are indeed very helpful. Unfortunately NVMeshMender is a post-processing tool, it needs to spit out new mesh.
Maybe try writing a Cg shader to address the previewing problem...?
dominicqwek
04-09-2004, 09:04 PM
Tks Gyzer/Eric.
Eric, are you saying that the seams i get from previewing in 3d s/w only appears in the s/w itself. So when i use my normal map in a game engine, should there be any seams?
Or are you saying that since kaldera takes the current viewport data and bakes the normal map, the error of the normals displayed in the viewport is translated to the baked normal map?
The seams that occur aren't like black lines, but rather they look as though the normals on both sides of the seam do not blend correctly...they match in terms of detail placement, but the normals don't. and that's what's causing them seams.
EricChadwick
04-09-2004, 09:19 PM
the seams i get from previewing in 3d s/w only appears in the s/w itself. So when i use my normal map in a game engine, should there be any seams? Should be no seams in-game, as long as the game engine is written correctly.
since kaldera takes the current viewport data and bakes the normal map, the error of the normals displayed in the viewport is translated to the baked normal map? Incorrect. Kaldera uses 3D data to generate the normal map, not the viewport. The normal map is just fine.
dominicqwek
04-09-2004, 09:26 PM
Tks Eric. I sure hope what you've just said is correct. I'll go try ORB and see if the normal maps work. Once again, thanks man.
dominicqwek
04-12-2004, 10:35 AM
Eric, I've tried previewing the model in orb. Doesn't seem to work, the seams are still there. I've attached a pic to illustrate my problem. Or does orb have problems interpreting normal maps from kaldera accurately?
A side note, my UVs are not mirrored. All the UVs are layed out.
http://www.dominicqwek.com/temp/normalmapproblem.jpg
EricChadwick
04-12-2004, 02:28 PM
Not Kaldera's fault... likely Orb doesn't recreate the normals' vectors properly, like most previewers. For a test you could try generating a normal map in Orb, and compare against Kaldera.
Even if you don't mirror, you're still dealing with UV edges that are in different rotations from each other.
You need a tool/engine that massages the normals of the vertices on your low-poly mesh, along each of the UV seams in your model. These normals are used by a 3d engine to transform the per-pixel normals from your normal map into world space... the orientation that's needed so the lighting will be seamless across the model.
This is all necessary because most models need tangent-space normal maps (the ones that look predominantly light blue). If you were to use world-space normal maps, then you could mirror/rotate UVs to your hearts content, without needing to create new vertex normals. Problem is, world-space doesn't work with any object that deforms or rotates.
Not sure if that helps or hinders...
dominicqwek
04-13-2004, 08:32 AM
Thanks for sharing all this knowledge m8. It helps a lot just by knowing these things. ;)
EricChadwick
04-13-2004, 09:24 PM
You're welcome. Took me awhile to learn it, might as well share.
EricChadwick
04-13-2004, 09:24 PM
[edit... oops double post]
Willem
04-21-2004, 12:55 PM
Hi there!
First of all great post!
Ive been playing around with these treads
but It seems to me that the CG plugin doesn't work for max 6?
Ive got everything working except for the cgplugin.
can someone please help me out?
Willem
04-21-2004, 02:39 PM
I've gotten the altered ati normal mapper with obj support, but it wont generate a normal map, its just either a back or grey flat area on the tga. I do know how to get them to view in max 6, but I still can't seem to get the obj one to work properly. I think I will contact ATI to see what they can do.
Gyzer How did you get 3dsmax 6 preview the normal maps?
can you please explain?
Willem
Gyzer
04-21-2004, 07:26 PM
Ok, first off u have to be running in direct 3D mode, otherwise the options wont be avalible.
First off open up the material editor and go down to direcx Manager. Go down to metalbump9 and hit the enabled box right next to it. Then scroll down to the Bump section and place the normal map in the bump map, not the Normal map. At least for me, the normal map doesn't show the normal map as it should. You can play with the bump intensity. Also at the bottom of the MetalBump 9 section theres a checkbox fofr Sync Standard Material, hit that, and then it should render. Sometimes the Sync Standard Material is a bit funky, but just play with it and it should work.
Also you can do it this way:
Hit the standard material button and pick DirectX9 Shader. I personally don't use this method so I don't know how to get it to work in here, but it works just fine using the other method.
I hope this helps.
Omita
04-21-2004, 11:21 PM
So I thought I would put this info in here.
(There are not laws just problems I have come up wiht.)
#1. Don't Mirror UV's
#2. Don't have very accute polygons with super sharp angles in your low poly model. (see pictures below).
http://boards.omita.com/NormalDemo2.jpg
Feel free to move this to the first thread if you think they are correct. :)
-Omita
Omita
04-21-2004, 11:28 PM
Some other tid bits. I remembered something the ATI people said about Maya and Normal Mapping. Maya is held back because it uses OpenGL. OpenGL 2.0 still has does not support HLSL. The new versions of OpenGL coming out address the shader issue. So Maya has to have plug-in created by the graphic card manufactures while Max can just use DirectX.
IMO I like SoftImage's Normal mapping capabilities the best. But maybe Maya has something in Maya 6.
I personally am a Maya artist... so I am not trying to knock Maya. I just wanted to pass on what I have heard from various industry folks.
-Omita
Gyzer
04-22-2004, 07:10 AM
Whats the prob about mirroring uvs for areas you want to be the same?
I haven't done it yet, but I'm just curious as to why u shouldn't
Willem
04-22-2004, 08:27 AM
Whoaa!
thanks Gyzer.
that helped me alot..
Will post some stuff when its worth it!!
thanks..
Willem
EricChadwick
04-22-2004, 02:07 PM
As far as I see, mirroring UVs is OK, with a couple caveats...
1. Before deriving your normal maps, you need to get rid of any overlapping UVs on your low-poly model. One easy way to do this, while preserving the mirroring, is to select the UVs for the half of the model that is mirrored, then move the UVs 1.0 along U (or V) so those faces are outside the 0-1 UV box. They'll still be mirrored, but they should be ignored by the normal map tool, since it only calculates normals for the UVs in the main UV 0-1 box.
2. If you're using mirrored UVs, make sure your game engine supports mirrored UVs for normal maps. Otherwise you'll end up with incorrect lighting in-game.
Omita
04-22-2004, 10:30 PM
Originally posted by Gyzer
Whats the prob about mirroring uvs for areas you want to be the same?
I haven't done it yet, but I'm just curious as to why u shouldn't
Ths simplest problem is that a lot of Baking tools flip out when presented with overlapping or Mirrored UV's. So first off you would have to do some photoshop work.
The second problem has to do with if you are using World space, tangent mapping stuff like that. What can happen is the light on half of the body will look correct and on the mirrored half the Normals will light backwards. Note: Some others have mentioned that programmers can fix this in game engines. But it's worth mentioning that a lot of games engines don't support mirrored normals.
Again this all depends what the specifics of the game engine.
EricChadwick
04-23-2004, 12:04 AM
you would have to do some photoshop work. Don't have to if you arrange your UVs properly (see my last post).
JeePee
04-28-2004, 10:30 AM
Originally posted by Omita
The second problem has to do with if you are using World space, tangent mapping stuff like that. What can happen is the light on half of the body will look correct and on the mirrored half the Normals will light backwards. Note: Some others have mentioned that programmers can fix this in game engines. But it's worth mentioning that a lot of games engines don't support mirrored normals.
Again this all depends what the specifics of the game engine.
I have had this problem, EricChadwick are you saying that when you move the mirorred uv's that overlap the original outside the 0-1 area this won't happen?, and i asume you can then later move it back to place once the normal map is calculated?
Originally posted by EricChadwick
You need a tool/engine that massages the normals of the vertices on your low-poly mesh, along each of the UV seams in your model. These normals are used by a 3d engine to transform the per-pixel normals from your normal map into world space... the orientation that's needed so the lighting will be seamless across the model.
Does this mean the seams apearing in the 3d s/w's viewports are the result of the s/w's inability of doing this? If so is there a program out there that does have that ability and shows normal maps without the seams?
Here the workflow i have been using
1. Model the low poly
2. Make a copy of the low poly and Seprate the different body parts
3. Convert a part to Sub-D
4. Crease the edges that need to be
5. Covert the Sub-D back to polygons using between 3-5 divisions per face (using Maya)
6. Import the part into Zbrush and start adding details
7. Same for all other parts
8. Done
EricChadwick
04-28-2004, 02:26 PM
move the mirorred uv's that overlap the original outside the 0-1 area In my opinion, this is only needed when you bake the normal map, to stop the baker from attempting to superimpose two solutions on top of each other. Many normal map bakers have trouble with overlapping faces, exactly the problem that mirrored UVs present.
In my experience, the overlapped UV chunks can be moved off to the side and then left that way permanently. They still get mapped appropriately after the normal map has been made, it's just that over there they're ignored by most normal map bakers.
Does this mean the seams apearing in the 3d s/w's viewports are the result of the s/w's inability of doing this? If so is there a program out there that does have that ability and shows normal maps without the seams? Yes and yes. AFAIK you need to run the model through an exporter that will massage the normals properly, then view the results in the game engine. The viewports in 3d content-creation software (Maya, Max, etc.) don't do this properly AFAIK. Our engine does it. As far as free or publicly available engines, I'm not sure. Perhaps AMP?
http://www.4drulers.com/amp.html
Nahaz
04-30-2004, 01:28 AM
Nvidia's Melody factors in UV seams when rendering normal mapping.
AndreKling
05-21-2004, 08:57 PM
Hi guys, im using max 6. Does the Melody works for it? There is any way to make normal displacemnt in max6? Im planning to use G-normal to render the results, any one has a better idea? My interest is not only in the real tme, but in cg scenes aswell, so if anyone has a good idea please let me know.
Thanks
Andre
EricChadwick
05-21-2004, 10:02 PM
Are you talking about displacement, or normal mapping? They are two separate techniques... normal mapping has no silhouette, and no self-shadowing (well at least in most cases, see uberbump (http://www.delphi3d.net/listfiles.php?category=8) for some real-time tricks).
Melody is a separate app, and apparently loads .3ds files, so yes it probably works with max6. I'm still in max5 here, and haven't actually tried the tool (yet!).
I think Gnormal and Kaldera are the only two renderable map types available for use with the max scanline, though I may be wrong, haven't been keeping up on it.
Glad to hear Nahaz about the seams in Melody, that will be helpful to many I think.
AndreKling
05-22-2004, 03:33 AM
Yes, i know is a different techinque, the thing is i hvnt heard anything about it for max, only the maya one at drone. Exist anyway to simulate that?
Andre
EricChadwick
05-24-2004, 02:27 PM
Normal mapping, or displacement mapping? Both are possible. If you mean displacement, I haven't done any displacement for offline rendering, but I have extracted height maps from geometry for use with displacement rendering in real-time 3d. So I can share what I know about the extraction part.
Kaldera is the main tool we use. Works well. Can do normal maps and height maps at the same time. Lets you post-process the range-clamping for the height, so you can save a full grayscale range.
http://www.mankua.com/kaldera.cfm
Mike Bunnell's ATI tool modification also puts out height maps. Haven't tried it.
http://www.seanomlor.com/mikeb/
Melody originally put out height maps, but they removed the feature before release, thinking no one would need it. I asked them to add it back in, haven't pursued it though, so I don't know if it's been updated.
http://developer.nvidia.com/object/melody_home.html
Here's some rendering technology from finalRender. Again, I don't render in max, but I know there are third-party rendering solutions like this that people say are more accurate than the default scanline.
http://www.finalrender.com/products/feature.asp?UD=10-7888-35-788&PID=36&FID=381
csven
05-25-2004, 05:30 PM
kinda jumping in w/out reading whole thread, but are we talking regular displacement (geometry style) or virtual displacement (parallax style)? i'm aware that Unreal Engine v.3 uses virtual displacement, but have heard vidcard hardware will soon support regular geometry displacement.
these two techniques seem to be confusing lots of discussions.
EricChadwick
05-25-2004, 07:02 PM
Hmmm, not sure if you're asking what the differences are, or are just making an observation.
I think most the thread has been about dotproduct3 mapping, commonly called normal mapping. I think AndreKling was asking about displacement mapping, but I'm not sure.
I see three main techniques commonly discussed for games...
Normal Mapping, Offset Bump Mapping, Displacement Mapping.
Here's my understanding of each. Please correct me if I'm wrong (one of the reasons these forums are so great IMO).
Normal Mapping = RGB channels of a bitmap are used to define the angle of the surface vector (normal) for each pixel. The normals are used to shade the surface according to the light it receives. Also called Dotproduct3 Mapping.
James Hastings-Trew has a nice definition of normal maps (http://members.shaw.ca/jimht03/normal.html)
Offset Bump Mapping = Blurred height map is used to distort the surface texture based on the parallax angles of the camera to the surface. A normal map is added into the mix to create further surface bumping detail. Also called Parallax Bump Mapping. Unreal3 uses this technique on its bricks, but they also put some actual brick geometry in there too (you could see it in their wireframes at E3).
OpenGL discussion, including demos and refinements (http://www.opengl.org/discussion_boards/ubb/Forum3/HTML/011292.html)
Displacement Mapping = Height map is used to extrude the geometry. Geometry is often tesselated to allow proper extrusion, sometimes tesselated more where there are large differences in height (more acute curvature), sometimes also tesselated more the closer the geometry is to the camera (LOD, short for Level Of Detail).
Hardware displacement mapping on a Matrox card (http://www.pcstats.com/articleview.cfm?articleid=1109&page=5)
Sorry if I'm stating the obvious here. Also please chime in if you have some insights or (hopefully) better definitions.
Gyzer
05-25-2004, 07:04 PM
From what I know, the virtual displacement isn't being used outside of a few companies cause of the hardware required to do it. I might be wrong but I don't know. Displacement mapping of course is being used, but I haven't heard of any engines that are starting to use plain old displacement mapping, seeing as that would up the polly count trmendously more then what most engines are capabable of doing, thats why theres the new virtual displacement mapping.
These are things I've heard, so I'm not 100% on either of them.
EricChadwick
05-25-2004, 07:27 PM
Yeah, I think because of Unreal3's "virtual displacement mapping" marketing terminology, things might get confusing for some people.
It looks like the same thing discussed on OpenGL.org, which is a refinement of an older technique (SIGGRAPH 2000 (http://www.cs.sunysb.edu/~oliveira/RTM/RTM.html)) so it has been around awhile (sort of). Requires at least a GeForce4/Radeon8700 I think, so yeah it's not going to work on lower end cards. It isn't all that hardware-intensive, AFAIK its just that the old cards don't have the proper shader instructions to do it.
Our engine, for one, is using displacement maps and adapting them to whatever hardware is present. Old-school bump mapping for low-end systems, normal mapping for later cards, parallax for current cards, displacement for the few that support it so far, etc. If the source texture is a height map, it's much more versatile than a normalmap, but I'm sure I've hyped that enough.
The way they did it for the Unreal3 demo looks great.
csven
05-25-2004, 07:33 PM
got it. you're using "offset bumpmapping" in place of "virtual displacement". or "parallax mapping". or......
i ask only because Zbrush's regular displacement mapping is getting alot of press with the new release, so that version of the term is being discussed at the same time as the dot3 version. and someone pointed out to me on another forum that some hardware expected out in the near future would handle regular displacement mapping - extra poly's and all (don't know how valid that comment really was). if true, that's only going to confuse things further!
i rather like the term Parallax mapping myself now that i consider it. eliminates both "bump" and "displacement" to indicate something new and different. btw, i'm familiar with that OpenGL thread - excellent discussion.
AndreKling
05-25-2004, 10:26 PM
Well, my question was if we could use virtual displacement for cg. Not only for real time. It would be awesome if we can have a mid poly model rendering as if were much more complex than it really is. How much it would slow the rendering time?
Andre
EricChadwick
05-25-2004, 10:31 PM
Virtual Displacement/Parallax Mapping/Offset Bump Mapping (all the same thing, I agree with csven that Parallax Mapping is probably the easiest term).. anyhow, it isn't really that great of an effect. It looks good in some cases, but not really in others. There's no silhouette, and the color map can really smear around when you're close up. So I doubt anyone would integrate it into an offline renderer. Micro-poly-tesselation with displacement is the way to go.
some hardware expected out in the near future would handle regular displacement mapping Matrox' Parhelia has been available already for some time, and AFAIK displacement is supported directly in DX9 so the next gen of cards should all support it too.
Here's the link again for Parhelia info.
http://www.pcstats.com/articleview.cfm?articleid=1109&page=5
Some more images.
http://www6.tomshardware.com/graphic/20020514/parhelia-03.html
Some details...
http://www.extremetech.com/article2/0,1558,1162274,00.asp
AndreKling
05-25-2004, 10:58 PM
Yeah, but you could use it when u need to do lots of motion blur, and you could use your high poly models for the close up scenes. Maybe like that you could reduce the rendering time. I think the silhouete is just a problem when you can walk around the subject, if it is moving, it would b quite hard to spot the problem i guess.
Andre
csven
05-25-2004, 11:33 PM
"Parhelia" - looks familiar. believe this was mentioned to me earlier. i really need to keep abreast of hardware developments. but graphics stuff seems to be on such a steep curve right now!
if i'm not mistaken, the Parallax mapping corrects the silhouette issue to some degree on some objects. i was wondering why Epic didn't post screens of characters with it and an answer i got by someone claiming to work there was that while it can be done, the effect is lost in the character's movement. wasn't worth it when a normalmap on an 8-10k model looked pretty realistic on its own. the technique is apparently much more applicable to static objects (and yeah, i'm wondering why a few map objects they posted online weren't v-disp mapped - you can see the edgy profiles).
like any technique, i suppose levels of quality will be matched to technique.
(edit: spelling)
EricChadwick
05-26-2004, 12:33 AM
AndreKling, if you're using a lot of moblur, then I would think normalmapping is probably just fine.
csven, sounds like from the OGL thread that when a silhouette effect is added in, it swims around a bit.
Without silhouette...
http://www.reallyslick.com/pictures/offsetmapping.jpg
One of the silhouette experiments...
http://festini.device-zero.de/uglyhack.jpg
Another...
http://www.delphi3d.net/misc/images/uber_bumps_depth_replace2.jpg
Yet another, the best so far (details on 4th page in the thread).
http://www.lionhead.com/personal/aevans/silmap.gif
csven, would you mind sharing which forum you got the info from? I'm always on the lookout for more sources.
csven
05-26-2004, 01:25 AM
i suspect that "swimming" issue didn't sink in when i read that OpenGL thread. when trying to figure out why Epic's site didn't show a character model with the v-disp technique, only thing i could figure was that a distortion occurred during model animation.
btw, just noticed some new pics on the Epic site (may be old news):
http://www.unrealtechnology.com/html/technology/ue30.shtml
and the Epic(?) person commenting on why characters didn't use the technique is in this thread near the bottom:
http://www.blitzbasic.com/Community/posts.php?topic=33913 (not a great source for info, but sometimes it's good to read a more casual coding site; some hardcore sites - like OpenGL - can be hard to follow imo)
sebast1an2
05-26-2004, 05:02 PM
Hi, nice work here..but i got some general questions about normal mapping in combination with lightmaps or vertex colors of the hires model..
-is it possible to use a (gi)-lightmap of the hires model in combination with the normal map?
-how are the performance differences between a baked lightmap or baked vertex colors in combination with normal mapping?
-and is there a way to control this "plastic-look"???
thx
Dargon
05-26-2004, 05:19 PM
It really all depends on your engine. Some will be able to handle it. As far as I know, Vertex colouring is really cheap, and has little to do with the normal map, so I don't see any reason why not, as long as that engine supports both normal and vertex colouring.
As far as the plastic look, that comes down more to the phong-style shader applied than the normal map. The way to fix this, would be either to use a more complicated shader, like a blinn or an anisotropic, to just get by with a lambert, or be fairly clever with your phong.
Typically the controls for a phong-type shader are size of highlight, brightness of that highlight, and colour of it. You can help avoid the plastic look by avoiding white highlights. If you add the same colour as the texture, you should achieve a more metallic look. The size and brightness of the highlight will help you range it between dull and really shiny materials.
I think because of the reletive cost of rendering a normal map, many game companies will opt for a fairly simple phong-like shader, to help show off the normal mapping without too much of a performance hit. So for a while, be prepared to see a lot of plasticy looking models, or flat shaded ones.
EricChadwick
05-26-2004, 05:30 PM
Good points Dargon.
IMO, never mix static lightmaps with normalmaps. Normalmaps really only work well with dynamic directional light. If you don't have decent lighting, then drop the normal mapping and go with vanilla pixel- or vertex- lightmaps.
There are better lighting approaches available without much work. Diffuse cubemap lighting is very nice, when combined with a directional light or two.
It seems to hep here if we add a little subtle shading in the creases of our color maps, some subtle GI. But we have to throw out any major shading from the color map.
A couple thoughts...
sebast1an2
05-26-2004, 09:28 PM
much thx for your replies.. I only thought that it would enhance the look a little bit if there would be a hires lightmap instead of (or together with) the sharp dynamic lighting.. so the "brick wall" would have the advantages of a highres realistic gi-lightmap (or baked vertex colors?) together with the datailed normal map.. and that's all only with 2 real polygons in he game...
but by the way.. why cost a lambert-like shader more performance then a phong looking one??
csven
05-27-2004, 03:34 PM
agree with Eric, some interesting points Dargon brings up. i hadn't even thought about the impact of using a Phong vs a Lambert vs whatever. i may have to revisit some old threads to see if this is something else that went over my head!
something else that occured to me as i was reading some posts on triangle stripping (something i've known about for some time, but effectively ignored), is how/if stripping impacts normalmapping. i'd guess that it does. but unsure how significantly. this is of particular interest to me, since i am starting to using CAD-generated "mechanical" models to create high-rez objects. i was just talking about using CAD for technical models in this thread: http://www.cgtalk.com/showthread.php?s=&threadid=144013 (i posted a pic there and a link to more - including one triangulated model image). up til i started thinking about the stripping last night, i thought CAD was a possible option now that prices have really come down (and some free apps are/were available as well). i'm not so sure anymore...
[*edit - if someone wants to test this in an engine i'd be more than happy to supply a model. unfortunately i don't have a dot3 video card - or newer PC - to run this stuff. would happily supply some content if someone would post a couple images or short vid. just rendering a pic in Maya , which is what i've been doing, isn't good enough.]
EricChadwick
05-28-2004, 02:53 PM
.. why cost a lambert-like shader more performance then a phong looking one?? AFAIK, Lambert is cheaper (no highlight) than Phong. Blinn is a better specular model, but more expensive. This page has some nice renderings of the different shaders, look for the spheres about halfway down the page.
http://woodall.ncsa.uiuc.edu/dbock/Class/csc187/Lecture/ColorandShading.html
how/if stripping impacts normalmapping. I don't think it does really. Stripping does impact rendering performance. UV and material borders usually stop a strip from continuing across the surface. But a normal map is a pixel shader, while a stripper is a vertex shader (I think so... still a little hazy on which vert ops are considered a "vertex shader").
As far as I can tell, with my limited exposure to triangle stripping, artists shouldn't worry too much about it. It's handled usually by the game model-processing code, and some coders are pretty smart about how they massage the model. UV borders, material borders, smoothing borders, bone count per vert, and overall vertex count are usually the issues that artists have a larger impact on, performance-wise.
I think trying to model with strips in mind is not nearly as important. On top of that there's shaders and how much of an impact they have. Often a lot more than vertex issues, in my experience, but of course that depends on what platform you're working with, is it fillrate-bound or transform-bound...
Well, I'm learning as I go. Please correct my assumptions if they're incorrect.
sebast1an2
05-28-2004, 06:02 PM
[QUOTE]Originally posted by EricChadwick
[B]AFAIK, Lambert is cheaper (no highlight) than Phong. Blinn is a better specular model, but more expensive...for the spheres about halfway down the page.
[urlhttp://woodall.ncsa.uiuc.edu/dbock/Class/csc187/Lecture/ColorandShading.html..[/url]
??..I thought we are talking about hardware shading??
..the Maya attributes are nothing new to me, beause I'm a maya user since version 2.0...
EricChadwick
05-28-2004, 06:33 PM
Yeah, sorry, didn't have a link to hardware shading examples. I didn't mean to imply that you don't know the differences. I thought it might help to take a look at them, since I would think that the shading results would be basically the same between software and hardware.
Oops, sounds like Phong is more expensive than Blinn. See this paper, page 6, section 2.5.1
http://www.google.com/search?q=cache:htyws7ZPM-oJ:developer.nvidia.com/attach/6588+blinn+phong+lambert&hl=en
Lambert just seems like a less-intensive shader, since it is so simple. But I'm no coder...
csven
05-31-2004, 04:13 PM
just did a little reading on NURBs patch modeling. i'm new to that technique and was interested mainly b/c i'm aware that at least one game company makes their hi-rez meshes using NURBs. personally, i find it tedious to split the meshes and go through the iteration to bring the pieces together (only to stitch them in the end).
but...from what i can tell, the biggest advantage to NURBs in entertainment is in UV layout and textures for filmmaking (i distinguish from other industries - i use NURBs for product design). so the question is:
if the high-rez mesh is only used to generate normal data, then don't poly/subD models make more sense?
Dargon
05-31-2004, 04:36 PM
They do to me - the thing is the final data is going to be put onto a texture, probably 1024^2, or less, so the amount of precision isn't up there where having a NURBS surface will help you at all. Using the normal map generation program that I'm working with, it doesn't accept anything but poly, so you'll have to convert anyways. Plus, you don't particularily need UVs for the hi-res at all. That being said, some things are easier to model with NURBS, so if it's for Normal production, why not use em?
As I wrote this, I did realise that if you did make it from NURBS patches, you'd end up with entirely quads, which could make it easier to make a low-res cage from them - and would make any resultant mesh you made from it go over to ZBrush better (it likes quads)
SuperOstrich
06-02-2004, 02:50 AM
Thx for the great thread guys. Very helpful. It's amazing how little there is on the subject on the Internet.
I have a question: Is there only one solution for the mirrored-UV's causing your per-pixel lighting to appear lit from the wrong direction? That solution being to UV the parts you would normally mirror independently?
Also, does this problem only affect mirrored areas that are actually connected by vertices? For example, the separate arms of a character would still appear normal if mirrored, but a torso mirrored down the center would have problems?
Thanks for any help.
EricChadwick
06-02-2004, 02:07 PM
AFAIK, you have three possible solutions. Don't mirror UVs, mirror UVs but duplicate your maps mirroring one of the maps instead, or mirror as much as you like but use a game engine (or viewer) that massages the normals before lighting them.
In my tests, all mirrored UVs are lit incorrectly, whether connected (chest) or not (arms), unless I use an engine that adjusts the normals.
In my experience, the lighting problems also occur along any UV seams where the two UV edges use different orientations in UV space... for example one is North-South and the other is East-West. Shoulders are one possible example, where a vertical torso UV chunk might be meeting a vertical arm UV chunk, but where they meet in geometry space the arm is horizontal to the chest. Your engine coder(s) can solve these lighting seams by doing a pre-processing step on your models.
SuperOstrich
06-03-2004, 12:35 AM
Thanks for the reply. So this problem can be solved through the engine?
Does anyone have any examples or websites where the programming aspects of fixing this are discussed?
EricChadwick
06-03-2004, 02:18 PM
Some code here.
http://www.cgtalk.com/showthread.php?s=&threadid=129627&perpage=15&pagenumber=4#post1262216
SuperOstrich
06-03-2004, 05:16 PM
Eric, thank you very much for the help. This has been very informative. Hopefully I can learn enough to help contribute to this thread.
bcloward
06-04-2004, 05:32 AM
Hey, cool, it's SuperO from Macross World! Welcome to CGTalk. (Not like I've been around here long, but . . . ) I didn't post on Macross World much (we weren't allowed to) but I did read all your posts about how poor our game was (Robotech: Battlecry).
:0) Don't worry, no hard feelings.
The way I like to think about the mirroring problem is like this:
Polygons are single sided and each has a normal pointing in the direction that the surface is facing. If the polygon is facing the light source (the normal is pointed toward the light) it's nice and bright, but if you flip the polygon so the normal is facing the other way, it either doesn't draw (when backface culling is on) or it turns dark.
Now, UV coordinates also have a normal and that normal also points in the direction that the surface is facing - so when you look at the triangles in the unwrap window, you can imagine that they all have a normal that is pointing out of the screen.
When you mirror the UV coordinates, you basically flip the normal of the UV coordinates so it is facing the opposite direction as the polygon that they're applied to - so now you have a polygon with a normal facing one direction and the UV coord normal facing the opposite direction. This is no big deal for regular lighting, but since normal mapping relies on tangant space, it causes big problems.
The solution, like Eric mentioned, is to write code into your game engine's model exporter that recognizes when the two normals don't match. When it detects this, it can flip the UV's normal back the right way (without effecting the coordinates).
Don't ask me to get any more specific than that, though. I'm an artist, not a techie. I understand the concepts (at least I think I do!) but I can't write the code.
SuperOstrich
06-04-2004, 06:01 PM
You worked on BC? *embarrassed about past comments*
Haha, actually if you kept up with the thread about it, I believe I admitted it was a decent game after awhile. I would've personally stayed away from cel-shading, but that's about the only real gripe I can have with the game anymore. Your new game is looking MUCH better. Good decision to go with Mospeada as well instead of another Macross game. Mospeada always lent itself to a better game IMO anyway.
Hey, great job with the tutorial stuff on normal mapping. It was very useful. I've moved over to different tools already, but it was a perfect way to get my feet wet. We're actually not using any normal mapping yet where I work, but I'm trying to learn it so I'm not left behind when we do make the switch. I don't want to be obsolete.
Thanks for the info on the normal thing. I pretty much came to the same conclusion. I'm basically going to have two mapping channels from now on. One for the normal map, one for the texture map.
Doubt
06-08-2004, 07:36 AM
Originally posted by Dargon
You only have to UVW map your low-res model. You can UVW the high-res, and add bump maps, to ahve them be applied to the normal map, but if you don't want those, you don't have to do them. Either way, the UVW maps don't have to match. (it would be nigh-impossible to do in many cases, anyway...) [/B]
I've read through most of this and am still a bit confused, I must be missing something I think.
If you want to generate a normal map from a hi-res model version to use on a low-res model version... then the UV layouts would have to match (or be similar) right? How else would you generate normal map layouts that would work on the lower resolution mesh?
Dargon
06-08-2004, 10:43 AM
The Normal map is generated by the closest point on mesh - i.e. the distance of the vertexes from the low-res surface, and normal direction controls how the normal map is created.
This information is then applied as a colour map to fit the UVs of the Low-res model. It doesn't use the UVs to get the information, just to write the info.
Let's face it, if you had to make the UVs fit, it wouldn't be a technique many would use, because it would be a more of a pain of the a$$ to do it than would be worth the final result. It is after all just a complex bump map.
EricChadwick
06-08-2004, 02:19 PM
Discreet provided an early tool for baking normal maps that required both meshes to use an identical UV layout. That wasn't fun. But others developed tools that only required UVs on the low-res mesh.
If you download the trial for Kaldera, it should come with a Help file. In there they have some diagrams that explain how they cast rays from the low-res mesh to the high-res one. Look for the section called "Kaldera Concepts." Very helpful. The same basic strategy is used by the ATI normalmapper.
csven
06-08-2004, 02:19 PM
If you want to generate a normal map from a hi-res model version to use on a low-res model version... then the UV layouts would have to match (or be similar) right? How else would you generate normal map layouts that would work on the lower resolution mesh?
expanding on "closest point on mesh" - thought i would add that when you create a normalmap, the objects need to "align" in space. meaning, if you create a hi-rez model and you want to map its normals onto a lo-rez version, even if you create them in different programs, they'll need to be same scale and positioned the same relative to the world coordinate system. more simply: the models need to "overlap". this allows, for instance, exporting out of one modeler (as i do with my CAD package as an .obj), exporting out of another (for me it's Maya and also as an .obj), and then running ATi's normalmapping utility and plugging these two files in. the utility isn't using light to capture information (a common misperception), it's only determining the normal vector of a vertex on the hi-rez object, finding the closest part of the lo-rez mesh to that hi-rez vertex, and transfering its normal data (x/y/z vectors) onto that lo-rez point. the UV map is simply a way of organizing that data and properly associating it. the RGB image of the normalmap is a storage device that uses UV's to maintain a proper relationship to the lo-rez object. wouldn't want that normal data information "swimming" around on the lo-rez!
at least that's what i've learned and understand.
Doubt
06-08-2004, 04:11 PM
Originally posted by Dargon
The Normal map is generated by the closest point on mesh - i.e. the distance of the vertexes from the low-res surface
This must have been written somewhere else in this thread, I must have overlooked it. Thanks for clarifying Dargon.
I did tinker with a Discreet tool (must have been a year ago almost) that required matching UV's... I was under a misconception that this was still the core method, and am extremely excited to find out that it isn't!
>>EricChadwick "Discreet provided an early tool for baking normal maps that required both meshes to use an identical UV layout. That wasn't fun."
Agreed. I've been busy at work on our next title and haven't had any time to look into this stuff in quite a while...
All that being said, which tool (tools) seem to provide the best results based on this "vertex location difference" method? I'm and XSI guy.
EricChadwick
06-08-2004, 04:25 PM
Melody seems pretty good. Lots of options. An upgrade is in the works.
http://developer.nvidia.com/object/melody_home.html
csven
06-08-2004, 04:26 PM
don't think it's an issue of which tool does it best. it's kinda like a file translater - data is data. however, convenience and ease-of-use are probably an issue.
i thought XSi had a built-in normalmapper. if not, people like ORB alot. i've only used ATi's Maya plug-ins and the modified, standalone version of it for .obj files. i think there's a GUI interface available for the ATi tool, but haven't tried it yet; i still use command line.
SuperOstrich
06-09-2004, 05:10 AM
A lot of guys in the industry are using Mankua's Kaldera. Supposedly the most robust tool available. Kinda pricey if you're not using it for a commercial product though.
csven
06-09-2004, 02:57 PM
i've also read that Kaldera is the best tool. i recall it being like $1000+ tho. true?
EricChadwick
06-09-2004, 03:02 PM
Kaldera is great, but only works in 3ds max v5/v6, not going to help a XSI user. ;)
Mankua sells it for US$395.00.
https://www.mankua.com/orders/kaldera_order.cfm
csven
06-09-2004, 03:26 PM
cheaper than i recall. but still only for Max. oh well...
jeffro
06-10-2004, 06:51 PM
Here is a normal mapping just using Maya 6.0 tutorial I just did.
http://www.jeffparrott.com/normalmaptut_01.html
Doubt
06-10-2004, 06:57 PM
Good stuff Jeffro, I'm assuming that if you had removed your UV's on your high resolution mesh and attempted to generate the normal map, you'd get the same results right? This tool in Maya uses vertex position relationship between objects as well?
jeffro
06-10-2004, 07:43 PM
Honestly, not sure yet. I just started diving into this thing. I don't know.
Doubt
06-10-2004, 08:10 PM
Yea, I've only recently learned that most of these tools use vertex position relationships instead of UV position relationships...
If you can't find any documentation on how that particular Maya tool is doing it... then try and remove those UVs on your hi-res and see if it barks :)
j3st3r
07-17-2004, 11:57 AM
As an XSI user, I`m relatively satisfied with the tools in XSI for creating normal maps. I have few problems though. First, the seams, but as I understood, it`s application specific, game engines can do it well. (what about mip-mapping?)
I`m experimenting with this technology, but I learnt, a lot. For example that the edge hardness smoothness counts a lot (being normal related... :) )
As for the working process. I used to model the high poly first. Why? Because it can change a lot. The art director changes the details, the proportions, the size, etc. Then I have to remodel the high level model. If everybody is satisfied, I can make the low level model (using the highlevel model as template). In production it`s much more reliable workflow. And moreover. A high level model used to have different poly structures than the lowlevel ones.
bcloward
07-17-2004, 02:18 PM
Mip-maps that are automatically generated will kill a normal map!
The specific color of each pixel in a normal map is very important because the r,g, and b values must add up to create a normalized vector. (A line with a lenth of 1). If you change the colors, the vector that they create is no longer normalized and will give you incorrect results in your lighting.
By default, mip-maps are generated by averaging the color of 4 pixels in the higher res version into one pixel in the next mip level down. If you do that to a normal map, all of the pixels in the mip-maps will no longer be normalized vectors - so the lighting at the top resolution will be correct, but none of the lower resolutions will work correctly.
That being said, they'll still work ok, they just won't be as good as they could be. Your lighting will tend to blur and flatten out the farther away that you get.
So what you need to do is use mip-map generation software that knows how to handle normal maps. After it averages the value of the four pixels into one pixel, it needs to take that RGB values of that pixel and "re-normalize" them - change them around so that the vector they create has a length of one again.
Nvidia's DDS plugin for photoshop has a feature for "re-normalization." You can also tell it to create normalized mip maps. ATi's NormalMapper will generate all your mip-maps based on the original models instead of just averaging the pixels from the higher res image. This is probably the most acurrate way to do it, but it takes a but longer. It gives you 8 targa images that you then have to combine into one texture with mip-maps somehow. You can do that in photoshop with the DDS plugin.
Most game engines just automatically generate the mip-maps, so if you work at a game company you'll need to talk to the programmers about modifying the process slightly so it will treat normal maps differently - if you want the best results.
While we're at it, we should probably talk about the evils of texture compression too. I can't do it right now though. I gotta get to work. Our gold master candidate is due on Monday!! :-O
EricChadwick
07-19-2004, 03:29 PM
An interesting article about mipping normal maps.
http://developer.nvidia.com/object/mipmapping_normal_maps.html
(best of luck Ben!)
NeptuneImaging
07-23-2004, 08:51 PM
Now that Normal Mapping has raised my interest, how do I texture my character after I create the normal map from the hi-res model? Such as painting my color map, diffuse map, and my bump map (for skin pores)?
EricChadwick
07-23-2004, 09:02 PM
I suggest modelling the high-res first, baking your normal maps, then using the normal maps as guides for the others. I use the normal map in the bottom Photoshop layer, as a reference, painting the color map, specular map, etc. as new layers on top of it. For skin pores or other fine wrinkles, one way is to paint them as grayscale bump maps, then convert to a normal map with Nvidia's plugin, then blend that into the geometry normal map, then re-normalize using the same plugin.
Xaint
07-26-2004, 08:00 PM
I use Kaldera to generate normal map. On the roof the normals should give a 0,0,1 value (approximateley a flat surface), except from the tiles of course. But as you see at the corners the normals differ from the 0,0,1 average, they 'turn' somehow on the surface. I suspect it has to do with smoothing groups, but I'm not sure.
The high mesh is flat there, and so should the normal. The question is what could be wrong, and how can it be solved?
Thanx in advance!
EricChadwick
07-26-2004, 08:13 PM
Smoothing groups are the most likely the problem. Do you have them set up? Can you show smooth-shaded screengrabs of the low and high models?
Xaint
07-26-2004, 08:37 PM
Here are they. There are overlapping textures, so I just deleted the repeating parts of the mesh (I have left just one side of the building) and after the normal map created I copied the the left part to recover the other sides.
EricChadwick
07-26-2004, 08:56 PM
The line of rooftiles that overlaps the edge is going to cause curved normals in the normal map, no matter what. The high-res model curves away from your flat low-res model. I think it should be OK, as long as your game properly supports mirrored normal maps. If not then you may want to extract the edge-tile normals separately from the roof, using a plane that is flat-on to them, then composite the three normal maps (left, main, right) together in a paint program. So you end up with a uniformly-blue normal map.
I also see a darkening across the main flat area of the rooftiles... I'd guess that's caused by smoothing on the low-res roof. Make each side a different SG and see what happens.
Not sure if this helps much...
Xaint
07-27-2004, 06:52 PM
Thanx for helping Eric!
The problem is with the dark area you spotted, it should be flat. As you can see on the pics, the roof was a separate smoothing group when the normals were calculated.
I've also read in the Kaldera manual, that it's better to have one smoothing group for the whole model when you calculate the normals. I think this method is not for this low-poly building, because it has adjacent planes with high angles connecting to each other. Maybe the one smoothing group would work better for organic stuff, like characters.
I'm experimenting with multiplie LOD levels. The main problem is that vertex count differs at each LOD phase, and so the vertex color is very different. This way the jump between LODs are very obvious. I tought normal maps will solve the problem, and every LOD will look the same (I mean really close to the other) regading to shading. So I made a low LOD and a high LOD and baked the maps of the high-poly model into both. The jump still can be seen at the roof, and It's because the normal maps are different. Maybe I do something wrong, I'll check it again, but I'm curious, if my theory about LODs and normal maps is correct or not? I would be glad if someone could point me to some good tutorials about creating LODs.
NATEMO
07-29-2004, 05:31 PM
ok this is a new guy question.
what is a good for photoshop plug in for the normal maps ?
I have the NVIDIAs plug in
but iam not sure how I can paint more detail on the normal map with the plug in.
I read threw most of the thred but i did not read anything about it.
let me know if you think this is a real dumb qestion
Thanks
EricChadwick
07-29-2004, 05:47 PM
You can use Nvidia's tool to convert from a grayscale height map into a normal map. Then you can combine that with a normal map from another source, for example one that is generated from geometry using ZBrush or Orb or the like. Combine the two like you would any other pair of layers, erasing one to show parts of the other. This way you can add fine details like wrinkles, painting them as a grayscale image, without having to create it in geometry. Then once you've combined the two images, use Nvidia's tool to "re-normalize" before saving. This fixes any illegal colors you may have produced, so the lighting will be correct in-game.
Does that help?
NATEMO
07-29-2004, 06:13 PM
ya! I had some thoughts you sure help make sure of them true.
:)
Now I just need to find some good Zbrush tuts
Thanks again Eric your pretty active on the fourms .
EricChadwick
07-29-2004, 06:26 PM
You're welcome. I learn so much from others, so I try to help out where I can.
Some good info in this thread about using ZBrush.
http://www.cgchat.com/forum/showthread.php?s=&threadid=19416
A coworker got great answers to his questions via the people in the thread.
j3st3r
08-02-2004, 03:32 PM
Hi folks,
We`ve just ran into a serious problem. We have a character to be normal mapped. For "economical " reasons, we decided to texture the half of the model, and mirror it later for the engine (face is mapped as a whole object, because we want significant differences between the right and left side of the face).
The problem is that the mirrored part looks terrible with any of the viewer programs (including XSI realtime viewport, Maya CG plugin, Melody, etc.)
Does anybody have idea about it?
Thanks,
EricChadwick
08-02-2004, 03:40 PM
This series of posts might help.
http://www.cgtalk.com/showthread.php?t=129627&page=4#post1262216
NATEMO
08-02-2004, 07:28 PM
Hi anyone reading .
I was playing with orb but not sure how to close it ..
I hit the x and nothing happens alt-f4 nothing
I wanted to get the tuts or somthing to read but the link was down.
also I got ATI Normal mapping program but I went to a few places looking for a NMF exporter for max could not find one .
heres a pic of the model iam working on.
Thanks!
EricChadwick
08-02-2004, 07:45 PM
Sounds like you're not reading the docs that come with these tools.
The 3ds max plugins are in the normalmapper zip file, read the readme.
NATEMO
08-02-2004, 08:38 PM
hummm wierd must have missed them thanks .
ya i guess the pdf that comes with orb was just a file no ext ... but I downloaded orb again and it showed up as a pdf this time with other files so I have the manual now !
j3st3r
08-02-2004, 09:20 PM
Thanks Eric, alas the documentation is not found...Can you send me via email, or give a new address?
Thank you in advance
j3st3r
08-03-2004, 02:53 PM
It looks like that I solved the mirroring problem at least in XSI.
Workflow:
Make your UV, including mirroring
Pick up your mirrored UV`s and move out from the 0.0 1.1 UV space
Mirror back the mirrored UVs in UV space
Calculate Tangents and normal maps
restore UVs of mirrored parts
See result
I hope these make sense.
Thanks Eric, and folks!
Xaint
08-03-2004, 06:04 PM
I don't really get this.
j3st3r
08-03-2004, 06:21 PM
What part is not clear?
Tomorrow I may post an illustrated guide.
Xaint
08-03-2004, 07:08 PM
The guide would probably help. I'm not an XSI user (yet :) ), but I think the method should be the same in other softwares too.
Xaint
08-04-2004, 01:30 PM
Can Kaldera bake specular maps? I can bake vertex colors with the custom map function, but haven't find specular.
EricChadwick
08-05-2004, 03:19 PM
j3st3r... this bit of code apparently will help your game programmers integrate a fix into their engine code in order to support artist's mirrored normal map texture coordinates.
http://developer.nvidia.com/object/NVMeshMender.html
About your mirroring technique, that seems to invalidate the benefits of mirroring, since step 4 calculates the normals without mirroring, so the normal map ends up using twice the pixel space. Can you show the normal map that results from this? It seems to me that both sides of the chest (for example) would be next to one another in the map, instead of on top of one another (reusing the same pixels).
Xaint... Kaldera can't, apparently it's a limitation of 3ds max not Kaldera. There's a thread on Discreet's forum about this. Here's the developer's answer...
http://support.discreet.com/webboard/wbpx.dll/~discreetcertifiedplugins/read?94097,160
Topic: Specular output in Kaldera (8 of 9), Read 96 times
Conf: Kaldera
From: Diego Castaño
Date: Tuesday, December 09, 2003 11:41 AM
Hello Wes,
I have been studying the specular request a lot, and I have come to the conclusion that with the current max release it is not posible to output the specular color and level.
The problem is that max has a very complex hierarchy in the materials editor, and the materials and shaders themself can be 3rd party plugins, so getting the specular color and level from those materials and shaders is a very hard work using just the 3dsmax materials, shaders and maps, and there is no way to get it if the user has 3rd party plugins in the materials tree.
So, I think that the only possible solution is an script that moves the specular color and level to the diffuse channel in a second and third pass respectively.
diego
However, you might be able to use Render To Texture to output specular. Not sure if that's Level or Color though. Not sure why RTT can do it when Kaldera can't. Although I do know RTT is actually using a wholly-separate renderer.
j3st3r
08-06-2004, 09:01 AM
Eric,
this procedure doesn`t kill mirroring.
It just put aside the mirrored parts1` UV data, and after creating the map, you restore your original UV set up. All mirrored parts remain intact, the geometry tangents are correct, and the normal will have correct shading
I`m sorry, but I have little time to do the guide, but as soon as possible, I`m gonna post it
j3st3r
08-06-2004, 01:06 PM
Here`s the idea in XSI:
http://w3.enternet.hu/matefy/Tutorial.gif
I hope it`s clear. If not I`m gonna update this
the rookie
08-07-2004, 04:42 PM
I'm a newbie to modeling and I was wondering or my question was, when and where does this normal mapping have to take place, is it for minimizing geometry by using a normal map or is something required for texture upon setting up your model? here's what I have thus far for order of operation:
Modeling
Rigging
UV
Weighting (maybe in this order)
Texturing
Now I do understand where normal mapping can be used to make up that detail needed or extra fleshing out, because here's a tutorial on normal mapping just using a cylinder and applying a map to minimize the extra geometry, and here is a example :
http://www.drone.org/tutorials/displacement_maps.html
please tell me if I'm going about this right, and when is it a real good time to used this, in reference information for the unreal engine 3 they have a example of a high rez model with the additional normal map on it for extra extra detail, is this always the case? are some people using this on high rez models to save geometry or are they going right into it, I've seen some low rez models they may not use normal maps at all, but please tell if I'm wrong, so I can be aware of another procedure to use during modeling, this is a question I had for a while and I've seen some higher grades of models using normal maps on there textures to give it a little extra Emph!!! to it and they came out pretty nice, is this suggested to do this to minimize geometry usage? or is it still the same no matter what?
EricChadwick
08-08-2004, 04:35 PM
j3st3r, thanks for the GIF, this helps a lot.
I'm still not clear though why this avoids the normal map mirror seam. All I see really is moving the mirrored parts out of the normal-map-calculation space (so they are ignored during calculation), calculating the normals, then moving the mirrored parts back in.
Moving them out of the way is a good idea, to avoid overlapped geometry being fed to the normal map calculation tool. But it fixes a different issue than the mirrored seams problem (which actually isn't a problem if your rendering software or game engine supports mirroring).
In my experience once I move them out of the 0-1 UV box, I can leave them out there and keep them mirrored. As long as they are exactly 1 (or any whole number) unit outside, the renderer (or game) will align the maps correctly onto the surface. Moving them out merely avoids them causing overlaps during the normal mapping creation step.
I don't see why you un-mirror them during the bake. Maybe something XSI-specific?
Anyhow, no matter where the UVs are, if they're mirrored when they're exported to the game engine, they'll cause seams (if the game doesn't support mirrored normal maps). Doesn't matter how the normal map is created, if it is mirrored you'll see lighting problems on the backwards parts, you'll see lighting coming from the wrong direction. If the mirrored parts butt up against each other, you'll see a seam since the lighting suddenly changes. But if the parts don't touch you'll still see bad lighting on one side (think of two arms for example).
the rookie, those steps vary from studio to studio, though modeling is always the first step (after concepts). The basic advantage of normal maps is being able to reduce the number of vertices being sent to the renderer (whether a real-time-rendering game engine or a non-real-time software renderer), by replacing the vertex shading info with faster-rendering texture-based shading information. So yes, geometry complexity should be reduced if someone is using normal mapping. Otherwise what's the point?
However it does have its drawbacks... the shading detail is limited by the size of the texture, you can see pixelization if you get too close. The other drawback is that normal mapping doesn't change the silhouette of the model, it just alters the shading of the surface that is there already. You also generally don't get self-shadowing (although some new techniques (http://www.delphi3d.net/articles/viewarticle.php?article=bumpmapping.htm) are attempting to fix these issues).
Displacement mapping does alter the silhouette, and does self-shadow, because new vertices are created at render time. It just takes longer to render (except if the graphics card (http://www.pcstats.com/articleview.cfm?articleid=1109&page=5) can do the vertices for you).
Whew, hope that helps. Let me know if I'm falling off my rocker here...
the rookie
08-08-2004, 08:21 PM
Cool that helps, because I didn't know when and where it was used, I see how it can be used, and I was looking at the unreal engine 3, and they have a model on there that is really high in Geom, but they still apply a normal map on top of that,and I see what it does surface wise (look at the unreal engine 3 at this site www.unrealtechnology.com (http://www.unrealtechnology.com) and they have the before and after and low rez models as well also, at this site http://www.drone.org/tutorials/displacement_maps.html
they show a cylinder with I guess what they call displacement maps in Maya, which I hope is the same as a normal maps, of it being applied to a cylinder, the information of the verticies was a huge information saver, do engines really bog down on verticies? this is all new to me and I would like to produce models for the next gen stuff there showing on the unreal engine 3, and I still like low poly models, was displacement maps used on the older PS one game models? I can tell a tad for the games of PS 2, but thanks for the extent of the subject, I just wanted to make sure I know what it's used for and when it may be required and may not, this helps alot, please check the sites and tell me what you think (if you have the time) thank you
EricChadwick
08-08-2004, 08:41 PM
I've read both sites, they're great links. Sounds like you could benefit from an article like this one.
http://www.delphi3d.net/articles/viewarticle.php?article=bumpmapping.htm
Normal mapping, ala Unreal3, means deriving shading info from a high-res model BUT applying that to a low-res model. Displacement mapping is a different technique altogether, not suited to real-time 3d (yet). PS1 doesn't use displacement, neither does PS2, only a few of the newest graphics cards do at this point (but more will soon reportedly).
the rookie
08-08-2004, 10:38 PM
Wow, I kinda understood that with the displacement map site I posted, that displacement maps add geometry and the article you posted explains the difference between the two, bump maps and displacement maps, I'm going to have to look into this more, in the site I posted they go into setting up a low rez model and using Z brush to create higher detail, but reading the article you posted it goes into mapping for games and what it does and how it's done, thanks posting the article that help a mega deal it also explain some programming issues as well, this really does help thanks again
NATEMO
08-09-2004, 07:42 PM
I fixed the problem i had........
frameless
08-11-2004, 04:44 PM
great thread. I have got a serious problem though ^^
i cannot generate my normal maps :/
Heres what i did so far:
1.) created a high poly model
2.) cut down the number of polys of the high poly model so that i get a low poly and a high poly model
3.) applied UVW Map to both of the models (collapsed stack)
4) applied unwarp UVW to both
5) exported both models (*.nmf)
6)used normal mapper ui to generate normal map....but the map cannot be created (and i cannot see whats the mistake because that msdos window suddenly closes
I followed ionization's tut and saw this note
Note: - All UVW coordinates must be within 0.01 and 0.99. Otherwise, the normal map utility will not run.
Well i don't understand this :sad: Can somebody explain me what this means because this could be the solution. I am relativy new to texturing so don't mind if this is a stupid question ;)
thx :)
EricChadwick
08-11-2004, 05:22 PM
When you hit the Edit button in the UVW Unwrap modifier, it opens a window. There's a dark blue box in the window, this is your 0-1 UV space. A texture baker (like Render To Texture) or normal map generator (like ATI's) only bakes into the UVs that are completely inside that 0-1 box. These tools also don't like it if any of the UVs are overlapping each other, since then you may get multiple "hits" overlaid on top of one another in the final baked image. This feature can be used to your advantage... by moving chunks of the UV mesh outside the 0-1 box, you can tell the baker to ignore them. This helps when making mirrored maps... you want to move the backwards pieces outside so they don't contribute to the map.
Does this help? The whole concept of the UV mesh may be weird to wrap your head around.
bcloward
08-11-2004, 06:01 PM
sygoth,
NormalMapper doesn't work if your low res model has UV coordinates that are higher than one or lower than zero (Outside the dark blue box in the unwrap window - like Eric said). If you do, it just quits and gives you that error. The way to fix it is to open the unwrap window for your low res model and make sure that all the verts are inside the box.
NormalMapper is EXTREMELY sensitive to numbers. Sometimes you'll have a vert that's on the very edge of the box and Max says that its U value is 1.00, but it's actually something like 1.000532. NormalMapper won't work in that case.
The easiest thing to do (just to get it to work) is to grab all your verts in the unwrap window and scale them down so there is an empty border between the mesh and the dark blue boundry. The re-export your low res mesh and try NormalMapper again.
By the way, you don't have to have UV coordinates applied to the high res model.
Good luck.
frameless
08-11-2004, 07:15 PM
thx guys now i understand...and now it works :thumbsup:
I used the NMF Viewer to view the normal map applied to the low res model.
Is there a way to view the model with normal map in max without the nVidea cg plugin?
Or more precise: Would nVideas plugin communicate fine with my ATI Radeon 9800 Pro?
thx again :)
EDIT: Aaaaaaaaaaand another question :P
Do i have to use smoothing groups on the low poly model. Or is it totally wrong to use them?
EricChadwick
08-11-2004, 07:29 PM
You could use the Direct3D MetalBump shader, but the quality isn't great.
Cg probably works with ATI's cards, haven't tried it though. Ben's tutorial has a how-to.
http://www.monitorstudios.com/bcloward/tutorials_normal_maps6.html
As he says, if you're using max6, you could also try HLSL instead.
EricChadwick
08-11-2004, 07:33 PM
Instead of smoothing groups, I prefer to use a small bevel instead. When smoothing groups are exported to a game format they will cause the game to duplicate the vertices along the creases. Typically each vertex can only store a single normal at a time, so to get a crease you need two differewnt normals, so the verts are duplicated "behind the scenes" in 3ds max. You might as well add those verts in yourself, since that gives you greater control over the hardness of the crease, yet it costs the same performance as smoothing groups.
My 2 cents of course..
frameless
08-11-2004, 07:52 PM
me again ^^
thx erik. you guys are very helpful :)
well, i downloaded the cg compiler and the cgfx plugin.
The cg compiler i installed to my c:/programs directory. The cgfx plugin in the 3dsmax/plugin directory(automatic)
When i load up may it says that c:/programs/3ds max 6/plugins/nvcgfx.dlm failed to initialize.
:/
This causes that i cannot choose "cg" under viewport manager (in max 6 its called directx manager)
EricChadwick
08-11-2004, 08:18 PM
I searched for "cgfx" in the 3ds max section...
http://www.cgtalk.com/showthread.php?t=159397
j3st3r
08-11-2004, 08:23 PM
Hi guys I was busy in the last few days.
I feel it`s my duty to share my experiences as I learn a lot from cgtalk as well. Thanks Eric, your pm, so I write it down here:
I must say, that it works in XSI, but I don`t know if it works in other tools (including Melody and Ati NormalMapper)
As far as I understood, Normal Map is somehow the difference of the lopoly and the highpoly objects` normals. Take a highpoly model, make two lowres model out of it, one medium resolution, and one mid resolution. Create similar UVs. You`ll see large differences between the two generated normalmaps. The fewer polygons cause more contrast in the normal map, than the more detailed model, because ther are more differences between the normals.
The problem:
The problem is, when you create your normal map for mirrored objects, the result will be crappy, because the original normals of the mirrored parts will display the difference of the MIRRORED NORMALS and the normal map. Simple math:
5-3=2
-5-3=-8 where (-5) represents the mirrored normal, and 3 the normal map
The solution:
Check out your tool. In XSI the tool stores the basic colors for normal map calculation in a color-at-vertices property of the lopoly mesh. If I run it on the half of the model then I mirror it, it doesn`t calculate real normals, because they gonna be flipped. But if I calculate normals for the whole model (including the mirrored parts), I recieve good results. But not good enough. Because XSI uses the UV data the fire the normal map calculation rays. As I understood, that it start in the 0.0 UV space, fires the rays, and records the difference between the source (lowpoly) and the target (highpoly) normal. So if the UV mapped polygons are mirrored, their UV data is mirrored also (compared to it`s GEOMETRY). So I must MIRROR the UVs also. It`s a tricky part. E.g. if you mapped an arm, in mirrored the geometry on X, you have to mirror the arm`s UV according to it`s orientation. If you orient it`s UV vertically, you have to mirror the UV vertically, if you mapped horizontally, you have to mirror horizontally.
Moving out the mirrored polygons UV data from the 0.0 1.1 UV space, I ensure that the normal`s will be calculated for the lowpoly object properly, but they won`t be represented in the texture.
After the calculation you may restore your original UV data.
Looking at the simple map above, if you do these preparations before the calculation, your normals will be represented like this:
5-3=2 on the original side of the model
5-3=2 on the mirrored side of the model
All in all, it looks like it`s the XSI way. I don`t know if it works in other tools...
bcloward
08-11-2004, 08:25 PM
Nvidia's Cg Plug-in for Max only works in Max 5.1 and it also only works if you have an Nvidia graphics card. Sounds like you're out of luck there. :0( I need to update my tutorial to let people know that.
I really wish that Discreet would just make a normal map shader that would work like their metalbump shader.
frameless
08-11-2004, 08:33 PM
hmm crap :( *unistallscgplugins*
Well, i use the metal shader now but i think even this does not work for me ^^
The model looks just like it would ithout the normal map...
In the ATI NFM Viewer it looks different...better :/
EDIT: Would be cool if someone could take a look at my thread http://www.cgtalk.com/showthread.php?t=162210
Miguelito
08-18-2004, 08:55 PM
Now I am completely confused!! AFter days of reading and studying all the articels and links my brain doesnt work any more. I tried several normal mapping tests and - of course - nothing worked!
I have 3ds 6 and a good old GF3.
So here is my problem: I made a low poly sphere, made the UVs. Then I made a high poly version and added detail. Then I used ATI tool to get the normal map.
1st I just tried to put this*tga into the bump slot.-> looks like crap.
then I made a *dds of it , again into the bump slot -> same as before.
I thought the problem was the missing cg plugin stuff from nvidia. But that doesnt work with max6.
So EricChadwick mentions HLSL shader. Where can I find this shader exactly and is it something like per-pixel lighting? Sry if that question is stupid but I am really getting annoyed here :argh:
All I wanted today was to get a sphere like here : http://www.monitorstudios.com/bcloward/tutorials_normal_maps4.html , rendered in MAX and also in the viewport...
When I try to use metalbump 9 the normal map effect wont be rendered!
I guess I havent found the right rendering option yet...
PLZ help me guys :cry:
EricChadwick
08-18-2004, 09:07 PM
Yes, it might seem complicated. Don't despair. MetalBump and Cg shaders are only good for the viewport, not for a render. GNormal and Kaldera's NormalMap map are both only good in a render, not in the viewport.
To use MetalBump, here are some directions...
http://www.cgtalk.com/showthread.php?t=87991
Look in the middle of the first post, where it says "HOW TO VIEW NORMAL MAPS".
To use Cg, see Ben Cloward's tutorial (apparently Cg isn't working in max6, although Discreet says HLSL does... I'm still in max5 so I can't vouch for that).
http://www.monitorstudios.com/bcloward/tutorials_normal_maps6.html
To get GNormal for max6, go here...
http://www.maxplugins.de/max6.php?search=gnormal
To get Kaldera go here...
http://www.mankua.com/kaldera.cfm
Hope this helps you.
Miguelito
08-18-2004, 09:54 PM
THX for the quick answer! I'll give it a try tomorrow. I have enought of it for today :hmm:
bcloward
08-18-2004, 10:10 PM
I found out that HLSL works in Max6 only if you have a DX9 class video card (GeForceFX or Radeon 9700 or greater). Otherwise it just makes your model disappear from the viewport. So you won't be able to use that. And yes, sadly, Nvidia hasn't released a version of the Cg plug-in that works with Max6 yet - so it would seam that for seeing it in real-time in the max viewport, the metalbump shader is your only option. It might be what you want, but don't get your hopes up. MetalBump isn't that great.
If you don't mind not seeing it in real-time and you just want to render it, try Gnormal like Eric said.
If you're interested in seeing it in real-time in a nice viewer, I recommend the polybump previewer. You can get it here:
http://www.crytek.com/downloads/index.php?sx=polybump (http://www.crytek.com/downloads/index.php?sx=polybump)
Miguelito
08-19-2004, 03:06 PM
Ok so I got up right now and it is ... wow 3 p.m. :D
I tried Gnormal and it seems to be great. Now the normals are rendered correctly.
Next problem will be fixing seems :argh:
EricChadwick
08-19-2004, 03:16 PM
Thanks for checking that out Ben, I was curious about HLSL in v6.
Fixing seams can be easy. Many normal map making tools have an option to automatically replicate the edge pixels, which fixes most seams. If yours doesn't I have a Photoshop action that does it nicely, ask me.
If you're talking any mirror-UV seams, re-read the thread, many tips about that.
frameless
08-19-2004, 03:44 PM
Many normal map making tools have an option to automatically replicate the edge pixels, which fixes most seamsI already asked this in my other thread but twice is better ;)
Do you or anybody else here know whats this option is called in the ATI NormalMapper Tool? I took a screenie to show you the options.
http://img.photobucket.com/albums/v230/gwemmer/normalmapperui.jpg
EDIT: Sorry for that small font...hope it does not hurt your eyes ;)
Miguelito
08-19-2004, 04:09 PM
Actually it is kinda tricky. There are mirrored parts but not the classical way. It is more like poopinmymouths technique to get some variation on the face. I attached an example image.
At the moment I have some doubts that this technique is good for normal maps..
edit: For me ATIs tool works but it doesnt recognize my resolution changes. It always produces 512x512 maps :banghead: Anybody has the same problem?
EricChadwick
08-19-2004, 05:05 PM
sygoth I think it might be Edge Pad.
Miguelito any parts that use mirrored UVs will cause their lighting to appear to come from the wrong direction, causing a lighting seam if the mirrored parts touch, or merely causing incorrect lighting if they don't... unless your game engine (or previewer or rendering plugin) is specifically designed to overcome this. Most aren't AFAIK.
Miguelito
08-19-2004, 05:36 PM
Hm...I see so it's better to avoid mirrored parts (for normal maps) where the light could cause problems...The face for example.
On the other side the doom3 faces are symmetrical and so the textures are also mirrored (I extracted the pks..). I guess this is the case that u mentioned when the engine can handle "incorrect lighting". Sry for my bad English :) . Hope u know what I mean...
bcloward
08-19-2004, 05:59 PM
sygoth,
In that screen shot you included, the feature that you're looking for is called "Expand Border Texels." It's a check box in the filtering category. You should always have that box checked so that the texels right on the UV seams will be sampled correctly.
What it does is take all the pixels that are along the edge of a seam and "smear" them outward by a few pixels. This fixes seam problems caused by texture filtering (bilinear, trilinear, etc) and also allows mip maps to not have seam problems.
EricChadwick
08-19-2004, 06:21 PM
Good one Ben. Nicely put.
Miguelito you should only avoid mirroring IMHO if your target engine/game doesn't have the mirror fix. I noticed Doom 3 has some mirror-edge seams, like when you first meet the administrator that has the bad eye, he has a seam running down his forehead. Not sure if this is the same issue, since if it wasn't fixed we'd see totally different lighting on one side, but on this character it is just slightly wrong. So Doom 3 probably works fine with mirrored normal maps, but maybe just has some mistakes with some of the lighting in certain situations?
frameless
08-19-2004, 08:11 PM
Many thanks guys ;)
Does anybody know whats this edge pad option is exactly for?
Miguelito
08-22-2004, 05:22 PM
Hmmmmm. Yummie!! I'm getting into it. Kaldera seems to be awesome!! It renders some very nice Normal Maps and bakes some very beautiful light maps. So I put the normal map into the bump slot with gnormal and the light map into the diffuse slot.
I think the result is not bad! It's not perfect but I havent invested much time into the high poly model and didnt tweak the lowpoly one neither anyway...
If there wouldnt be a diffusemap u could see that the mirroring problem still remains. I tried to move the mirrored UVs along 1.0 but the result was the same after I moved them back...
The other problem are the outlines of the normal map which u can clearly see on head 2. The teeth suffer from the same problem. Think I'm going with an alpha map here but I'm not sure how to get rid of it on the rest of the head...
What do u think?
edit: the high poly version has about 220.000 faces. the low poly one about 800.
Deadalus
08-31-2004, 07:22 PM
i didnt go trough all message so maybe that was already ask
but is it possible to have an animated normal map on a model?
EricChadwick
08-31-2004, 07:23 PM
Sure. I'm using an animated normal map for waves, works great. Depends on your engine though, whether it supports animated textures or not.
rob-beddall
09-01-2004, 12:05 AM
hey!!
tomorrow i am going to attempt my first normal map in Max. i just have 2 questions...( they may have been answered before but i could only get to page 7 of this thread, then got major headache :). at the moment i'm just trying to get all the tools together.
1. does the ATI normal mapper work with Nvidia cards? ( if not, which is the best normal mapper to use for a Gf4 ti 4200? i hear melody needs FX chipsets)
2. hmmm..... well it would seem i only had one question. oops
cheers!!
p.s i'm using Max 6. apparently i need an NMF exporter to use the ATI mapper but there isn't one available? (sorry if that's out of date. i'm looking at past threads)
thanks!!
p.p.s (sorry) i'm new to Max. i usually use Maya, but will a Max 5 Plug-in work with Max 6?
Nvidia seem slow to release the plug-ins for this version.?
thanks again.
note: i tried to download mike bunnell's mod, but it's no longer there. and last time i tried, orb wouldn't work with my keyboard. (i have no idea why)
thanks
mackster
09-07-2004, 02:35 PM
Hello Normal mappers! Nice thread!
I am a Maya 6.01 user and I have tried making a normal mapped character with the use of Nvidias Melody. So far so good. But has any one a good idea of how I do to view my results in Maya 6.01 with a shader and the normalmap applied to my character and then render it?
I have tried one way making it in Maya (shader with normal map and point the normal maps color.out to normal.camera with the connection editor), but the render results look awful. There must be some other way to make a animate a cool walk cycle with the normal map applied in Maya, right?
Cryteks Polybump seems to be a good tool viewing the results, but if there is any way to get almost the same result in Maya I would appriciate if somebody told me. :)
Thanks in advance!
Ancient-Pig
09-13-2004, 01:45 AM
Having a problem with Maya.. I have the normal maps working thanks to Jeff Parrots awesome tutorial he posted around page 2 or so... (Maya 6 by the way)
Problem is, I cant seem to get my specular map working. Specular shaders work.. however not a map.
I have it set up using a Lambert shader, and am placing the specular map in the diffuse slot (was told thats where it went in Maya.. Im more of a max guy), however there have been no positive results :/
Anyone out there with some input on this?
rob-beddall
09-13-2004, 09:47 AM
hey!!
can you bake bump maps in to the normal map with the ATI normal mapper?
and if so how? ( i can't see an option for it anywhere in the gui)
cheers!!
wigal
09-13-2004, 10:36 AM
Norma mapper Usage: lowres highres Width Height [value] [heightmap heightscale] outputname .... the heightmap is tje bump map that will be baked in the normal map....
rob-beddall
09-13-2004, 12:30 PM
hey!!
eh?
do i have to type stuff in the dos window or something?
i'm really naff at stuff like that (i can't even navigate round the folders :)
is there no way to do it through the GUI max plug-in ?
i had another look to make sure i didn't just pass over a height map option but it's still not there.
cheers!!
EricChadwick
09-13-2004, 02:48 PM
Rob, looks like Lodestone left that option out, at least in the v1.21 I have here (i don't use it). Using the command line isn't difficult.
Put the normal mapper exe and your models/maps directly in the root directoty of your harddrive. Then make a new TXT document there, and type the commands into it. Name it something short, change the extension to .BAT and then open the DOS window (Start > Run > cmd > OK to bring it up). If the directory isn't at the root, type CD\ and press Enter. Then type in the name of your BAT file, i.e. MYBATCH, and press Enter. The files will show up in the root folder when it's done.
Batch files are great, since you can line up a bunch of tests that it will run one after the other without you having to start each one manually. Like to test the different intersection options.
Here's a multi-test batch I used a long time ago (before I found Kaldera)...
NormalMapper -c Low.NMF High.NMF 512 512 ATINormals_f.tga >atinormalmapper_c.txt
NormalMapper -C Low.NMF High.NMF 512 512 ATINormals_f.tga >atinormalmapper_capital-c.txt
NormalMapper -f Low.NMF High.NMF 512 512 ATINormals_f.tga >atinormalmapper_f.txt
NormalMapper -F Low.NMF High.NMF 512 512 ATINormals_f.tga >atinormalmapper_capital-f.txt
NormalMapper -d Low.NMF High.NMF 512 512 ATINormals_f.tga >atinormalmapper_d.txt
NormalMapper -D Low.NMF High.NMF 512 512 ATINormals_f.tga >atinormalmapper_capital-d.txt
NormalMapper -b Low.NMF High.NMF 512 512 ATINormals_f.tga >atinormalmapper_b.txt
The part at the end of the line that reads >whatever.txt is optional, it tells DOS to save the exe's progress report to a text file, so I can read it later, if there were any problems.
And here's Mike Bunnell's tool, in case you want that (but ATI's tool is newer)
http://www.seanomlor.com/mikeb/
rob-beddall
09-13-2004, 04:09 PM
hey!!
thanks for the info eric,
i will give it a try. although i had problems with batch files when i was using maya.
guess i will keep at it this time tho until i get the hang of it.
cheers!!
Miguelin
09-14-2004, 03:53 PM
ati normalmapper reports that "no visible triangles found".
Any idea?
There are some restriction to make the high res model?
EricChadwick
09-14-2004, 06:05 PM
Sounds like the high-res model and the low-res model weren't exported from the same position in space, or are different scales or something.
zeroeefx
09-23-2004, 10:44 PM
--Maya 6-- Normal Mapping Toturial
http://www.kennorman.com/assets/images/toturials/normalmap.htm
i know there are others out there, but hopefully this will clean up somethings for poeple.
-Ken
wigal
09-23-2004, 10:48 PM
ati normalmapper reports that "no visible triangles found".
Any idea?
There are some restriction to make the high res model?
Freeze transformation on both models... this could cause this error...
cheers
Dargon
09-23-2004, 11:12 PM
OK, I have a question now.
It's more of a theoretical question.
Can you UV scroll Normal maps?
Obviously, World space ones wouldn't have nice results, but I'm thinking tangent space should be OK.
For example, scrolling UVs are often used for tank treads, in non-normal mapped games. I'm wondering if something like that would work, or would the engine process the normals only the once?
And if scrolling might work, what about sequential? Like if you were to use normal maps on alpha planes for leaves on a tree, could you cycle through a set of normal maps as well as colour and alpha maps, to get the leaves blowing?
And if that would work, what about blending from one normal map to another? I'm thinking that normal maps are fairly powerful, and you could get a decent amount of diference between character using only normal maps, and one could get some pretty interesting morphs if it could be supported.
So the question kinda revolves around animating Normals using normal maps in the same ways we animate other textures.
What are your guy's thoughts on this? Would it work? Would it even be worth it?
Discuss.
bcloward
09-24-2004, 03:05 AM
You can scroll the UVs on a normal map just fine. That technique would be useful for water as well as the tank tread you mentioned and any other surface that needs to move uniformly. Good idea!
Sequential normal maps would also work - just like sequential diffuse maps work. For the example you mention with the leaves, it seams like it would be cheaper to animate the polygons that the leaves were on than to have a sequence of defuse and normal maps. This really depends on the situation whether or not it would be worth it - but yeah it would work.
Blending from one normal map to another would also work. You would need to have a special pixel shader that read in both normal maps and did a linear interpolation between them based on time or a slider or something - and then renormalized. You could do some really cool stuff with that. Anyone that knows HLSL or Cg should be able to write a shader to do it.
Dargon
09-24-2004, 03:10 AM
Cool! Thanks for the quick reply! I'm actually thinking that the power of normal maps lies less in making bumpy characters, and more in stuff like animated textures and texture swapping.
Like how you often create 1 mesh, and have a vew texture variations to that mesh to save on processing all that extra data, and still get variation. But with normal maps, you should be able to create a base mesh that's fairly simple, and get a really large amount of variation between instances.
I'm finding this whole normal map thing to be very... inspiring.
EricChadwick
09-24-2004, 02:53 PM
We use animated normal maps, for example for ocean waves (rendered from geometry created by the Dreamscape plugin for 3ds max, very convincing). One thing I found that helped was to make sure the maps were rendered without dithering... with dither the noisiness tends to jump around frame to frame, yuck. But, as with any animated map you run into memory issues pretty quick, and normal maps really work best at the highest res we can afford. So, memory management is important. Auto-memory managers are an artist's friend!
As for blending, yeah Ben is right. Here we're blending multiple normal-mapped characters, and it works great. In fact we've been using masks to blend animated normal maps with static ones.
One example we have is a muscle-bound character that has veins pulsing, and sweat rivulets running down his skin. The muscles are a single large normal map, and the animation is a smaller looped and tiled sequence. The animated map is tiled across his body, and the mask controls where it the veins or sweat becomes visible (veins on forehead, sweat on cheeks, etc.). The alphas of the normal maps control glossiness, so the sweat is shiny as it descends the flesh, but the veins are not.
The trick there was to make the sweat animation loop and also tile, not real easy. To create it I animated geometry of sweat beads, with little trails behind them, and carefully aligned them along the edges of the render, as well as aligning their movements to loop.
Although in practice this particular animation might be a bit too subtle for most games, but it does make for a neat little technology demo, and can be used for less-subtle tricks. Wish I had some good pictures of it. It's fun to play with.
On this page (http://www.whatif-productions.com/video.htm) you can see an example video of two characters blending their normal maps, as well as everything else. It's the third image on the page, the one with the spotlight on the red legs. The blending works pretty well.
I've been playing with parallax bump mapping lately, anyone else tried this out? I'm finding it a bit fragile, high-frequency bump maps tend to just create a pixelly mess. Really works best with large bumps, like the perennial brick wall. Works great with floor tile pavers, will be trying it with other surfaces soon.
[edit... oops fubared URLs.]
bcloward
09-24-2004, 06:06 PM
Eric, I wrote a Cg shader that does the offset/parallax bump mapping thing. I got the same results as you. It looks most convincing when it's applied to a flat surface and you're perpendicular to it - like on walls that are right in front of you. From that angle it works really well. Once the angle starts to narrow it just falls apart - like if you put it on the floor and look straight ahead. And yeah, it works best with large objects.
On my web site, I posted two texture sets that I created while I was learning this stuff. Each set includes a diffuse map, a normal map, and an offset map. The first set is a cobblestone floor and the other set is a brick wall. I created them by modeling very high res geometry in max. The sets are both tiling and are rendered at 2048x2048. You can find them here:
http://www.monitorstudios.com/bcloward/textures_extra.html
I rendered out the diffuse map with ambient occlusion included using 3DS Max's LightTracer. The normal map (especially the brick one) is a combination of high detail geometry and bump map. I combined them using the new normal map combiner that comes with the latest version of ATi's NormalMapper. I created the offset map by rendering the zDepth of my high res model in Max and then overlaying the bump map in Photoshop.
Creating real-time textures is getting a LOT more complicated! And these sets didn't need specular masks or reflection maps or details maps, etc, etc. :0)
TAKAVAR
09-26-2004, 05:06 AM
hi , first time posting , i don't say i'm a newb , but well ... i'm not really good. and i did read all the posts.
ok , problem :
i made the low res , in max , then the high res , both are close shapes , then i exported them as .3ds , and loaded them up in melody , generated the normal map there , and it looked fine in melody's display, it gave me a .dds file . every thing fine to here. i apply the the .dds tangent normalmap to my low res model in max , and ... it doesn't have the same texture co-ordinates and it all gets messed up
any one know the solution ? please tell me too
edit :
for got to add , i UVW mapped the low poly , but didn't map the the high poly version since it was said it is not nessecery.
NileshXYZ
09-26-2004, 04:20 PM
usefull links...
http://www.delphi3d.net/articles/viewarticle.php?article=bumpmapping.htm
http://www.doom3world.org/phpbb2/viewtopic.php?t=482
http://www.doom3world.org/phpbb2/viewtopic.php?t=483
http://www.doom3world.org/phpbb2/viewtopic.php?t=563
Gyzer
09-26-2004, 06:22 PM
In melody, did u have the auto unwrap for the hi polly selected? I belive there is also a option for it to use the uvs from the low polly in melody. I haven't used melody for awhile so I might just be talking out of my ass here.
TAKAVAR
09-27-2004, 12:29 AM
ok thanks , i got it to work.
should have payed more attention to the options in meLODy
AlexMateo
09-29-2004, 06:14 PM
i have an ati radeon 9600 xt , its good? or i must be buy an other ? thanks
Ravennome
10-04-2004, 10:15 PM
So here's a question. What card from both ATI and Nvidia support normal mapping? What is the oldest generation to support it?
I have an Fire GL1 and I'm pretty confidant that I'm going to have to purchase a new card. I like the Fire GL series, but for some reason normal mapping isn't on much of the tech specs for ATIs workstation class hardware. I assume all the higher end cards can do it via DirectX 9 and other software solutions, but I was wondering what workstation
(not consumer/gamer) cards "by name" support it either through software or directly though hardware.
JeePee
10-10-2004, 02:07 PM
i got this problem where the roundness bulges inward instead of outward and i did not mirror the uv's
anyone knows why this happens?
http://www.jeepee.demon.nl/NMap.jpg
EricChadwick
10-12-2004, 02:55 PM
Normal mapping does not alter the silhouette of the model, so you will still see that edge as a flat one. I think it may be an optical illusion that it is indenting, or else the UVs might be distorted slightly there. One way to avoid this problem is to add a little more mesh detail to the model along those bevels, in the low-poly model.
As for which hardware renders normal mapping, I can't recall. Might help to ask in the hardware section.
JeePee
10-12-2004, 08:37 PM
Ah, it's just a small ridge and not on the outside silhouette so i didn't think of it.
It's weird though that the ridge on the far right looks fine, i don't fully understand this yet.
Thanks for your imput Eric, your always a great help.
bcloward
10-13-2004, 02:14 AM
JeePee, did you create that normal map in ORB or in another program? (It looks like you made it in ORB, but I'm just checking). My normal maps look like they're poking in like that (instead of out) when my green channel of the normal map is lit in the opposite direction. Some normal map generation software makes the green channel go one way and some make it go the other way. Try opening your normal map in photoshop and inverting the green channel. It might help.
Ravennome, Nvidia's cards have supported Normal Mapping ever since the GeForce2. Any card that will run DX shader model 1 or better will support normal maps. I don't know the names of the specific cards though - but that's how you can tell.
Hi, guys, I got my normal map working using Maya 6 TransferSurfaceNormal Plugin. However there are a couple of problems.
1) The Highlighted areas look "waxy" & full of noise. I am using Blinn Material,
2) The Normal Mapped model looks self-illuminated (like a light bulb) when I try to render in software. There is no problem when I render using hardware.
Having a problem with Maya.. I have the normal maps working thanks to Jeff Parrots awesome tutorial he posted around page 2 or so... (Maya 6 by the way)
Problem is, I cant seem to get my specular map working. Specular shaders work.. however not a map.
I have it set up using a Lambert shader, and am placing the specular map in the diffuse slot (was told thats where it went in Maya.. Im more of a max guy), however there have been no positive results :/
Anyone out there with some input on this?Lambert is a non-highlight shader. If you wanted highlight, use a shader like blinn & connect the spec map to spec color slot.
Sorry Side track a bit. How do I merge (or is normalising the word) a normal map (created with NVidia Normal Map Filter) and an existing one. I tried using Overlay filter over the existing map but I lost some details (or depth) along the way.
Just .inc
11-09-2004, 10:50 AM
Hey all, I have some general questions about normals that are probably pretty obvious to some but I've been wrapping (and unwrapping) my brain with it for a while. Can a normal map be animated like any other texture? If you do shape animation to the high poly model is there any way to capture that and apply it to similar shape animation to the low poly model? Is there a huge bog down on most game engines with the animation of textures? If animation is a possibility for this new fun way of displaying high poly objects through pixels then where might I dig into some info for it? Any info to any of these would be rad, thanks all.
EricChadwick
11-09-2004, 02:14 PM
I've used animated normal maps for ocean waves, works great. It's a memory hog, that's the biggest limitation so beware of that. I rendered wave geometry from Dreamscape 2, an ocean plugin for 3ds max. Had to turn off dithering in the render, otherwise got a lot of fuzzy pixel-jumping in the normal map sequence.
I've also used animated normal maps for other things like squirming worms, sweat and veins, etc.
djmonkeyboy
11-22-2004, 10:30 PM
I came across the same #2 render problem. Appears you can either set maya's render to hardware mode or I also found a Utility: http://www.carboneros.com/mel.htm
specifically the tangentShader Node
Hi, guys, I got my normal map working using Maya 6 TransferSurfaceNormal Plugin. However there are a couple of problems.
1) The Highlighted areas look "waxy" & full of noise. I am using Blinn Material,
2) The Normal Mapped model looks self-illuminated (like a light bulb) when I try to render in software. There is no problem when I render using hardware.
Bpanting
12-14-2004, 09:04 PM
I am atempting to create my first normal map for a gun I created, and I am trying to figure out the best workflow. I created a highpoly verson first then copied it and started reducing that one. I still need to layout the UV's, and my question is should I have done that before copying and reducing or is it OK to do that after? I am creating this in Maya 6, if that matters any.
la_piaga
12-17-2004, 12:48 PM
So here's a question. What card from both ATI and Nvidia support normal mapping? What is the oldest generation to support it? Normal mapping is supported in hardware since DX7 (nVidia geforce256 aka nv10; ati radeon), when it was implemented via fixed function, the DP3 pass. After the introduction of DX8 (nVidia geForce3 aka nv20; ati radeon8500 aka r200) the possibility to program gpus via shaders made normal mapping more flexible therefore more used.
Dargon
12-17-2004, 06:15 PM
I am atempting to create my first normal map for a gun I created, and I am trying to figure out the best workflow. I created a highpoly verson first then copied it and started reducing that one. I still need to layout the UV's, and my question is should I have done that before copying and reducing or is it OK to do that after? I am creating this in Maya 6, if that matters any.
You don't need to make UVs at all for the high poly version. It does not use the UV space to calculate, only to draw the normal map.
You can, however, apply bump maps to your high poly model, and they will come through to the normal map. If you choose to do this, you will of course need to UV your high poly model to apply the bump maps.
svenjuhlin
12-18-2004, 12:48 PM
I'm currently baking out my normals from a highpolly (75 000 tris) but it´s been baking for more than 2 h, is this normal or has something gone wrong ???
Dargon
12-18-2004, 09:31 PM
Hard to say without knowing more intormation.
What programs are you using?
What's your computer like?
What settings are you calculating the normals on?
Basically, if you are using some really high settings, it's not impossible to take 2 hours for calculating, especially if your computer is a little underpowered.
Try baking with really low settings - no antialiasing, low resolution, etc. If it still is taking a long time, there may be a problem with your model, like issues with the normals, double faces, or double sided faces that are confusing the converter.
KaOsphere
12-22-2004, 02:55 PM
Hello ,
i just recently tried using normal maps with success but there is something that i still don't understand.
I have some shading problems when trying to display my model in real time that seem to correspond to my uv unwrap but it occurs only in one direction.
I use polybump previewer to display model in real time , could the problem come from that or is there something i did not understand ? Problem occurs in all cases ( world , local , and tangent coordonates ).
I red trough this thread but 15 pages are a bit harsh for a non native english speaker so don't be too hard if i missed something please.....
Any help or suggestion would be greatly appreciated.
Cheers,
Kao.
Following is an image describing the problem :
http://kaosphere.3dvf.net/gravball/problems/pbnormal-map.jpg
EricChadwick
12-22-2004, 03:26 PM
...I have some shading problems when trying to display my model in real time that seem to correspond to my uv unwrap...
Answer is in this series of posts...
http://www.cgtalk.com/showthread.php?t=129627&page=4#post1262216
KaOsphere
12-22-2004, 03:58 PM
Thanks for the reply.I 'll try my models ingame assuming that engine will display them with no seams because the nvidia tool seems too "coder-oriented" for my little brain.
Btw , thanks again.
bcloward
12-22-2004, 07:11 PM
KaOsphere,
That looks like a bug in the specular component of the pixel shader that Polybump is using. Your normal map looks good to me. You just need a better shader/viewer (like Eric said). What 3D app are you using? If you're using Max 7, I've written a normal map shader that works pretty well that you can have.
Kwyjibo,
I think it's best to apply UVs to the low res model after you've cut the poly count on it. That way you don't need to worry about messing up the coords as you remove verts/tris. Another work flow method that you might consider is to create a medium res model and then add more detail for the final high res model and remove detail for the final low res model.
KaOsphere
12-22-2004, 07:32 PM
I would be very happy to try your shader...
I'll PM you !
AgentX
12-23-2004, 02:02 AM
Ok i'm having some Maya 6 normal mapping issues. I am trying to normal map a low poly character, and he is all one object. I have done other normal mapped obects before, with no issues i couldn't fix, but not as complex. This one is giving me wierd errors on the map, and I can't fix it adjusting the settings. I have made them higher and lower, and more detailed, and etc... I can't fix it! Here is an image showing what it's doing:
http://img150.exs.cx/img150/2774/normalerror5vv.jpg
Please if you know how to fix it let me know! Or if you an suggest something better for me to use with Maya 6!
Thanks
bcloward
12-23-2004, 01:18 PM
AgentX,
Your problem is happening because Maya is getting confused about which part of the high res model to sample in order to find the normals for the low res model. Can you see how that line on his thigh that you circled looks almost like a shadow of his arm? That's because Maya is shooting a ray from those points on the thigh of the low res model and it's hitting the high res model at multiple points (the arm and the thigh). Maya has to decide somehow which point to pick and it looks like it's picking the wrong ray/point intersection in a lot of places.
One of the best ways to fix that problem is to build the model all strached out in the Da Vinci pose so that each ray that is cast has fewer intersection options that it has to choose. Since you've already built both models, though, you're probably looking for an easier fix.
Another method would be to limit the distance that a ray can travel. I don't know what the options are in Maya for that, but that's what I would look for next. In the thigh, for example, if you can make it so the rays don't go as far as the arm, they'll be able to find the right intersection better.
In some cases you want long rays for some parts of the model and short rays for other parts of the model. In theses cases, you could render out several version of the normal map, each using the various settings. One normal map might give you good results on the arm while another might give you good resluts on the head, etc. Then you take your images into photoshop and peice them together - taking the good parts of each one to combine them into the final map. It's kinda of a pain but it's one way of doing it.
One other thing that you might consider is breaking the model up and rendering a normal map for each part seperately. Then combining all of the resulting images in photoshop into one normal map. I've done that before when I was getting a lot of garbage data in the map like you're getting.
Good luck!
EricChadwick
12-23-2004, 02:26 PM
Kwyjibo,
I think it's best to apply UVs to the low res model after you've cut the poly count on it. That way you don't need to worry about messing up the coords as you remove verts/tris. Another work flow method that you might consider is to create a medium res model and then add more detail for the final high res model and remove detail for the final low res model.Not sure if I posted this link before or not. Some good advice in here about normal-map-modeling strategies, from actual in-the-trenches game developers...
http://dynamic.gamespy.com/~polycount/ubb/Forum1/HTML/012107.html?00011
(the link may be dead, depending on Gamespy's flaky server code)
Another method would be to limit the distance that a ray can travel.Some tools have an option that lets you use a third mesh object to confine the rays. Usually this 3rd object is the same resolution as the low-poly one, just ballooned out a bit. The normal-map-deriving rays then fire from this model inwards, instead of starting from some uniform distance outside the low-poly model. Thus, if you edit the 3rd model you can control exactly where the rays go. Max 7's projection modifier apparently allows this, haven't tried it myself. Kaldera allows this as well.
AgentX
12-23-2004, 07:16 PM
Thanks guys for the help.
Yeah bcloward, I could kinda figure out why Maya was doing, but my settings were not helping when I changed them. I think what I am going to have to do is cut up my low poly, and take the parts into z-brush and and create the high poly again, and then create my normal maps in multiple pieces. Does anyone how uses Maya's normal mapping tools have any thought? Does anyone know if Maya has the mesh restricting tools that was just mentioned in EricChadwick's post?
-Thanks
poly-phobic
12-24-2004, 11:35 PM
ok, i am sorry but this thread is 17 pages long.
so forgive me, as i know these probably came up b4.
this is my first time doing low rez work.
here is the approach i am taking right now.
using alias's maya v. 6.01
1) i model my high rez
2) i reference my high rez, and i use it so i can resurface my low rez using it as a stand in. so its 2 seperate models, i remodel the low rez based on the high rez i already built.
this is as far as i am, but... i will...
3) i UV them, i try to match the UV's as close as possible
4)bake my normal map
5)apply my baked normal map using the maya plugin to my low rez model?
am i on the right track here?
is there some tutorials that maybe describes the steps at normal mapping.
again, sorry if this was brought up....
but i am new to low rez work.
here are samples of what i am doing: high Rez
http://img.photobucket.com/albums/v295/vladimirjp/SM_contest/reek_done_side.jpg
http://img.photobucket.com/albums/v295/vladimirjp/SM_contest/reek_done_front_persp.jpg
Low rez [so far] :
http://img.photobucket.com/albums/v295/vladimirjp/SM_contest/lowRez.jpg
http://img.photobucket.com/albums/v295/vladimirjp/SM_contest/lowRez2.jpg
I'm not sure how the Maya plug-in handles it, but in most cases you do not need to do a UV map for the high polygon model... Just do one for the low polygon model first.
Do a test by making a box, and then making a high poly box with some noise on it. In 3dsmax, it would be under modifiers/noise.
Then bake the normal map, and see if it works.
Fish-MD
12-24-2004, 11:43 PM
you are on the right track. Make sure you dont mirror anything in the uv map. Also, you don't have to uv the highpoly.
poly-phobic
12-25-2004, 02:15 AM
thanks to you both.
so, as i understand the UVs, can be totally independent of each other.
thats good news. but i'll still have to map the high rez beacause it will be textured.
i will do the simple cube test that you suggested also and see the results.
AgentX
12-25-2004, 07:59 AM
Hey vladimir_ here is a easy tutorial for Maya 6 by Ken Norman. THANKS KEN! (Former student of his)
http://www.kennorman.com/assets/images/toturials/normalmap.htm
Enjoy
poly-phobic
12-25-2004, 04:18 PM
thank u :) http://cgtalk.com/images/smilies/thumbsup.gif
poly-phobic
12-25-2004, 06:05 PM
great tut. very informative. the maya docs explained it a little cleared as well.
on least thing, why should i not mirror my uv map?
my final game model is completely symmetrical.
http://img.photobucket.com/albums/v295/vladimirjp/SM_contest/lowrezWire1.jpg
http://img.photobucket.com/albums/v295/vladimirjp/SM_contest/reek_lowRez2.jpg
poly-phobic
12-27-2004, 08:19 PM
:cool: **bump**
bcloward
12-29-2004, 05:05 PM
Heh, I've never seen a bump in a pinned thread before. :0)
We've talked about the mirroring issue quite a bit in this thread. Here's one example of an explaination that I gave:
http://www.cgtalk.com/showthread.php?t=129627&page=8&pp=15
EricChadwick
12-29-2004, 05:23 PM
I recently saw this whitepaper again, it seems to dovetail nicely with your post Ben.
What you said about the normals pointing the wrong way, Sim Dietrich goes on to explain in detail. The paper is written for programmers, but it includes artist-friendly visual examples. http://www.nvidia.com/dev_content/gdc2002/texture_space_on_real_models_files/frame.htm
I found it kind of cool to learn the ins and outs of why the UV-mirroring artifact happens.
bcloward
01-03-2005, 10:45 PM
On the previous page, I mentioned to KaOsphere that I had written a normal mapping shader that he could use. After that I decided to make a new section on my web site and post all of the shaders that I've written so that other people can use them. You can get them here:
http://www.monitorstudios.com/bcloward/resources_shaders.html
All of the shaders there are written in HLSL and will work in the real-time viewport of 3DS Max 7. They should also work in other applications that support the DirectX FX format for shaders.
Every shader that I've posted so far supports normal mapping. They also have some other features like offset/parallax mapping, point light attenuation, simple global illumination, etc.
Give them a shot and tell me what you think.
bcloward
01-03-2005, 10:51 PM
On the previous page, I mentioned to KaOsphere that I had written a normal mapping shader that he could use. After that I decided to make a new section on my web site and post all of the shaders that I've written so that other people can use them. You can get them here:
http://www.monitorstudios.com/bcloward/resources_shaders.html
All of the shaders there are written in HLSL and will work in the real-time viewport of 3DS Max 7. They should also work in other applications that support the DirectX FX format for shaders.
Every shader that I've posted so far supports normal mapping. They also have some other features like offset/parallax mapping, point light attenuation, simple global illumination, etc.
Give them a shot and tell me what you think.
Lupus D'Scotia
01-07-2005, 02:46 AM
Hi, I've been trying to create a normal map for a model to be used in a mod, but have had a few problems. I've used ORB a bit, but it crashes at 99% of the last pass if I try to render out a map at 1024x1024, I get this error:
glGetError() code: 1281
GL_INVALID_ENUM 1280
GL_INVALID_VALUE 1281
GL_INVALID_OPERATION 1282
GL_STACK_OVERFLOW 1283
GL_STACK_UNDERFLOW 1284
GL_OUT_OF_MEMORY 1285
So I've been trying Mike Brunnell's normal mapper, I can get it to work (but I've had to export my model in different instances- quads, 750k tiangles, 180k triangles etc.) as it crashes with high poly model in some of these cases.
So in the ones where it actually loads it in, the map it generates....isn't there. All I get is GIMP's grey, checkered background. A 3mb targa file that contains nothing :(
I just tried it loading in the same model that was exported as quads, this actually produced a visible map, but for some reason it is partially transparent in some areas. Does anyone have any ideas? I'm using Blender to make the models, I've uv mapped the low poly and it worked ok in ORB (just that ORB crashes at the resolution I want the map to actually be).
Also if anyone could please suggest some good settings to use to create a good map to be used in a Half-Life 2 mod that would be great too (I'm using the stand-alone UI).
EDIT: I've been working more at it, it seems that the program will just crash if I try to put in a mesh over about 200 thousand polygons. I just rendered a map of another exported version of the high poly mesh and some parts of it showed up this time.
I decided to try typing in the commands in the dos prompt thing instead of using the stand alone UI, but whenever I try I get a message saying:
ERROR: Texture coordinates must like in the 0.0 - 1.0 range for the low rest model (u: -1.000000)!
My uvmap (done in Blender too) fits within the square in the uv image window, and I even shrank it all down a fair bit so there is a large gap between the edge of the square and the uvs on the outside of the map.
This is getting very frustrating :(
denzil
01-10-2005, 05:10 PM
Does anybody else get the above posted problem, or know a fix for it? Thanks!
bcloward
01-11-2005, 02:55 AM
Lupus,
I was having the same crash problems with ORB (when I tried to make high res maps) that you mention so I stopped using it in favor of ATi's NormalMapper. I wonder if you emailed the people that make ORB and told them your problem if they could help? Now that 3DS Max 7 has normal mapping tools, I'm using it almost exclusively.
I also found that NormalMapper was EXTREMELY sensitive to verts being near the edge of the UV range of 0 to 1. A lot of times when my UV tool said the value was 0, NormalMapper said the value was something rediculous like 0.000004. My solution was usually to scale all of the UVs down so that there was a border around the whole thing. From your post, though, it sound like you've already done that.
You're getting a value of -1. That sound fishy. Try this:
Make your low res object a simple square.
Give all of the UVs the same value within the 0-1 range.
Export the model and try to create the normal map
Check the value that it give you (in the spot were it says u: -1.000000 now)
Move the UVs around and see if you can get it to give you a value other than u: -1.000000
It could be that Blender's UV values are just off by one or something and you need to move all of your UVs to the right by one. This would be a way to figure that out.
Lupus D'Scotia
01-11-2005, 03:11 PM
Thanks for the reply, I thought there might be something different with Blender's uvs so I imported the model into another program, check them there and exported again. I'm afraid that didn't help though :( But I don't thinkg the blenders uvs are the problem as I was able to get normalmapper to generate a normal map for a fair simple model I made, though the map was partially transparent. I've tried shrinking the whole uv map down so there is a massive border around it and that doesn't work either.
It also seems that normalmapper will crash if I put in a model with a very high poly count. It will run with one that has about 180k, but doesn't seem to work with 450k, the program just crashes when trying to read it.
Does anyone know any other free programs I could try to generate a normal map?
djkaneda
01-12-2005, 11:35 PM
ok so i'm working in 3ds max 7, and i made the low poly mesh of my char first and am now working on the high poly. and i'm kinda confused about setting up the high poly so that the low poly picks up the right normals.. me and my friends have had some confusion about whether or not the high poly model actually "has" to be on the outside of the low poly mesh.
EricChadwick
01-13-2005, 04:16 PM
confusion about whether or not the high poly model actually "has" to be on the outside of the low poly mesh. No, but it's usually best for the two to be overlapping one another. They should be in the same position in space, but the two can go in and out of one another.
There can be problems where the high-poly mesh intersects itself, or overlaps parts of itself. Bcloward talked about that issue here (http://www.cgtalk.com/showthread.php?t=129627&page=16&pp=15#post1835423). Same issues occur in all normal mappers, AFAIK.
101st_airborne
01-17-2005, 08:10 AM
hi i am new to normal mapping i am useing Melody and i am haveing a few problems
1. The texture cord. that the map comes out as do not match that of the orginal model i know there is a setting to stop taht but what is it?
2. I also find black lines in the map that is produced how can i fix this?
these may have been mentioned but there is just soo... many posts someone should do a FAQ .
so please help me out.
Silentstep
02-27-2005, 03:05 PM
I'm normal mapping my first character, which I'll post up when it's done, I have a few questions, firstly.. I'm making this character for my demo reel, and I hope to get a job in the gaming industry. What is a average normal map resolution for games? xbox, pc, etc. Does it differ from texture maps? 512x512, etc.
(3dsmax question) Also, I was wondering if anyone had any advice using the cage. I find that my high and low poly silhouette is slightly different and I have to spend alot of time using push and tweaking verts to fit everything..problem is the push modifier doesn't do a clean enough job on the eyes, ears, face, hands etc. do you have any suggestions to get a solid cage, with no holes, or red marks on your normal map?
thanks alot.
EricChadwick
02-27-2005, 03:13 PM
Cage doesn't have to fully encase the high-res model, you can interpenetrate the two. Of course, the closer you make the high to the low, in general the more accurate projection you'll get. Some nice illustrations by "tpe" about exceptions to the rule in this thread:
http://dynamic.gamespy.com/~polycount/ubb/Forum1/HTML/012107.html?00011
Also some nice workflow notes by Per128.
(edit... tpe's image can be found here (http://www.ericchadwick.com/examples/images/timothy_evison_normalmap_projections.jpg))
I use Kaldera here, and if I have a model with lots of overlaps, I simply break up the low-res model into material IDs, and cast each one separately, then combine the maps in Photoshop.
As for resolution, it is all over the board. But a couple 512x512s for the normal maps seems common. Same res for the color maps.
Sorry I haven't used Melody, so I can't help there.
vBulletin v3.0.5, Copyright ©2000-2012, Jelsoft Enterprises Ltd.