Hey EQ that's looking killer, I especially like the details and sense of mass in the 1st person view. I'll make sure to lookout for the textures when and if you get to that stage, good luck^_^!
What do you mean by half? He explodes the mesh and uses (IIRC) local space maps instead of tangent. Weapons don't deform, so they don't need tangent space. That usually results in pristine normals.
Whats this IIRC? Usually, I would make my high poly model in max, then make low from high, unwrap it, to save map space, i'd weld the uvs together that are symetrical, but thats after I had baked out the maps via max again by setting the cage around it. Thats what I think you mean by tangent isn't?Sorry, self taught and don't know the terms. Usually, when I do this, the maps don't particulary come out that well. It's all bumpy and stuff. Its fine for organic stuff but not too good for stuff like this. It works and all but I'm usually left with lots of cleaning up to do.
EQ usually doesn't mirror polys on his weapon models from what I've seen. Both sides get baked out as is. Tangent space normal maps average off of the normals of the low poly objects, which results in shading errors, if the low poly is TOO low poly. That same model with a local/object space map baked out will have no errors, regardless of it's polycount.
What do you mean by half? He explodes the mesh and uses (IIRC) local space maps instead of tangent. Weapons don't deform, so they don't need tangent space. That usually results in pristine normals.
Tad off-topic, but local-space is the same as tangent-space, you're probably referring to object-space normalmaps.
Yeah, sorry about this. I'm just amazed at how cleanly EG 's normal maps are. I know that the way I do normal maps are the best way for this challenge and would like to know how to the the best maps out. From what I gather, I do tangent space mapping, so what this object space mapping?
Thanks for all the responses guys! I've got a good start on the texture here, but the flooding in iowa has kept me busy, our offices have bounced around a couple different buildings so far(8monkey labs is floating away) and i think we're getting a new one again today, no fun.
Yeah, i use object space normals, which means no mirroring =( but i like the quality i get from that more than having a bit more resolution to my textures, and the ease of baking etc.
Also if give me the option to add in a lot more geometry, to make sure everything is projected straigt on instead of all wonky and curved/distorted as i usually tend to get with tangent.
I've been saving some screenshots and i plan to go over my process a little bit when i'm all finished.
Sweet. I plan to start today. Should have my high poly model done by the week end. Once, I get to that stage, I hope you won't mind if I pick your brain a bit. I feel a bit bad about flooding your thread with this nooby crap.
No its fine, feel free to ask questions here. One thing to keep in mind, is that if you plan to use object space normals, make sure your rendering package supports it, as a lot of game engines don't, and of course you have to keep in mind that you wont be able to do things like rotate/pose it on a plane etc unless you have some sort of special way to do that correctly either.
The reason object space props work for us is that we have a seperate level editor where we place meshes etc, so that keeps tracks of how the mesh is transformed and updates the lighting correctly.
If you just want to make some simple renders, or hell you could just be a little creative with how you light/place things in your scene for renders(rotate everything else, etc) object space should be fine.
Thanks. I think I better get my model done then think about that stuff. It sounds like you are talking about game engine stuff. I'll just be using Max. I can do all the AO, spec, Tangent normal mapping and difuse stuff. But that stuff you mentioned is all new to me. Looking forwards to seeing your work process. Right now, I'm raiding all your HK mp5 images from the ref images you post for everyone to use. Thanks for that by the way.
very very sexy work, not really into weapons, but this one is done really good.
However if i had to critizise anything i'd say, redo the Namethingie, i mean, what exactly is this? Kinda looks like painted onto it, not like some sort of tape or band aid or anything.
oh and what are those artifacts in the lower right corner?
wow. very nice. The only thing I can say is for the fpshot (and this is getting picky) is that the gun should be a little more angled forward. Like 5-10 degrees. I know you want to show off all that detail on the side but yeah just a lil more forward i think. Good stuff
yup, you did it again. only suggestion that is shader based is to make the scratches a tad more pronounced in the difuse , because the left shot seems kinda only the base colors , but using 30 is like that i suppose.Solid piece of work you crazy ass mexican.
Sek: Yeah gotta do some custom normal detail there for the masking tape, shouldnt be hard to make that pop out. Not sure about the artifacts, we dont blend the hdr cube maps for our lighting so it gets a little pixelated at times, maybe thats what you're refering to.
Johny: lol butts
Henning: Yeah i started modeling a strap, but yeah just got a little lazy and didnt finish it. The clip/grip thing i modeled as well but just thought it made the fpv quite akward. As far as the color, yeah blue would be pretty easy to do, we'll see how lazy i am with this, i'm considering it pretty close to being done at this point, gotta work out some extra effects and stuff, tweak the textures a bit more, etc.
Joe: Yeah floating bits for a lot of it, i'll post some more shots and such when i'm done. Basicly anthing that can be a seperate mesh is, and almost everything that i could float i did
Impressive work man, I love the slick design and looks like it could fit right in MGS 4! There only one things thats weird, with lighting, we lose a lot of the color variation you put; the black and beige arnt as distinctive as in the left shot. Maybe put that camo diffuse a tad brighter.
Alright, well i forgot to update the files on my usb drive when i came home, but i do have some stuff that i started to collect about process etc, so i'll go over this a bit here.
This is mainly just discussing my workflow for creating fpv weapons, i'll cover some points that i think are important. I'm not going to spend much time going over exactly how to make highres meshes, well not today atleast, maybe a bit later.
Alright, so first off, I already have my highres mesh done at this point, along with my lowpoly + uvs. I slap a grid texture on and prioritize where i want the most pixel space, and resize accordingly. You can see some objects have probabbly twice as much pixel space(150%x150% uvs, 200% uv space would = 4x the space)
Ok, now that we have our uvs layed out correctly, we can move on to prepping the meshes to be baked.
Now at first glance there may not look like there is a huge difference between these areas, but this stuff really really matters. Areas that you likely want to have more uv space will be the spots that are going to be up close, expecially if you have an area like iron sights/scope that you will zoom in on, this will need to have the most relative space(smallest squares). And you can see areas like the very front, and the very back that will A. be far away from the camera or B. be completely out of sight, those areas should definately get the lease amount of coverage. I'll usually end up a with a few details etc that get a bit more, just because they are smaller shapes and easier to pack into uvs.
Now that we have everything to a point where we're happy with the pixel distribution, we can move on to packing the uvs into they're final position(sorry i didnt save wip shots of the uvs before this) Now things might shuffle size a little at this point, but i try to keep the same rules in mind and have everything stay consistant(relative to how we set it up above of course).
Alright, first here is just the wires of the lowpoly mesh.
Now, this is really the most important ULTRA-TIME-SAVING aspect of baking a clean normals map, we're going to copy of this mesh. Then we'll take both the lowres mesh, and the highres mesh, and split them apart the exact same way, usually i do this by units that are easy to remember, like 100 or 50 or whatever. We do this so that when it comes time to bake, you dont have lots of objects intersecting and causing all sorts of errors that you will have to painstakingly paint out later in photoshop.
So heres the lowpoly mesh, exploded:
And heres the highpoly mesh, exlpoded:
After we have all that in order, what i like to do, and there are a few ways of doing this depending on what app you use. With xnormal i'll make a simple image, with a few colors and just basicly apply different colors to different materials of the highres by planar mapping them over the corresponding color. In max you could just use mat colors etc. This will save a SHITTON of time when it comes to creating layer groups for different material types in your psd later down the line. You generally want pretty contrasting colors here, this isnt a type to choose your color scheme, i'll just use this for creating masks. So here white is polymer, black is metal and grey is rubber. And you can see i switched some of these mats later on while i was texturing, which is a lot easier to do when you have these simple masks available to you.
I'll include the final result of this mask texture, you'll have to tweak a few errors with this generally, but its easy. I actually will render this map last, after the normals/ambocc are all set.
Alright, now that we have colors all set up with our highres mesh, i'll do a test render to see how well the normals are turning out. Generally there will always need to be tweaks at this point to my bake mesh(the exploded mesh) And since i'm using object space maps i can edit this geometry in any way i see fit! This means i can add or remove edges, etc really just do anything i want to do with it whatsoever.
So i'll generally go back in, and add in a bunch more edge loops in certain parts if the details arent rendering out straight(warped, crooked details, etc) The basic idea here is really similar to trying to maintain hard edges etc in your highres, you want more geometry in your cage to give a more accurate projection. Now if you're using tangent space with split smoothing groups, this may not be as much of a problem and you can skip this step. Or alternatively as this really only applies to object space, you can actually convert an OS map to tangent space(xnormal go!) after you have the results you want in the end. This tends to create artifacts around the edges where you have split smoothing groups, which sort of defeats the purpose tho.
So heres a comparison of before and after, now ignore the messy geometry, it really *doesnt matter at all* as long as the bake comes out clean, do whatever you like here. We wont be using this mesh for anything meaningful aside from baking.
Now that we've done a pass over all of the parts of the mesh that arent quite right, we can render out a nice, final, clean normals map!
Now i dont always do this next step, but i have on the last couple models and it tends to go a long way, when you've got the mesh all baked etc and can preview your normals, check and see what details are close-up to the camera but look pretty flat, once you figure that out you can cut in some extra geometry and really make those areas pop. Doing this to a few areas will help to create the illusion that more is actually modeled than you can see, and makes it hard to really tell what is modeled and what is just normals detail.
Now you can do this before you do your final bake, but i tend to like to do it after, that way i can keep my uvs simple. And since i'm using object space normals, i can do anything i want to the mesh afterwords without needing to rebake. Now if you were using tangent, you definately want to nail this sort of detail down before your final bake.
Now this may seem like a lot of crap just to get a decent normals map, but most of these steps are actually pretty simple when you get in there and do it. If anyone has any questions or anything feel free, or if something dosent make sense etc let me know so i can edit o_O
How do you guys go about rendering AO when using floaters?
I usually just render one pass without, and one with only the floaty bits, and then multiply those two.....
Is there a better way?
How do you guys go about rendering AO when using floaters?
I usually just render one pass without, and one with only the floaty bits, and then multiply those two.....
Is there a better way?
And yeah, that grid is horrible, it something i stole off the internets from home because i lost the one i use here at work. Dosent really bother me much tho =D
awesome man, excellent process. A lot of really useful information in this. I think everyone that wants to know how to do in game weapons should read this stuff.
Replies
that looks badass so far.
i'd love to see some high res shots along the way
EQ usually doesn't mirror polys on his weapon models from what I've seen. Both sides get baked out as is. Tangent space normal maps average off of the normals of the low poly objects, which results in shading errors, if the low poly is TOO low poly. That same model with a local/object space map baked out will have no errors, regardless of it's polycount.
Tad off-topic, but local-space is the same as tangent-space, you're probably referring to object-space normalmaps.
Yeah, i use object space normals, which means no mirroring =( but i like the quality i get from that more than having a bit more resolution to my textures, and the ease of baking etc.
Also if give me the option to add in a lot more geometry, to make sure everything is projected straigt on instead of all wonky and curved/distorted as i usually tend to get with tangent.
I've been saving some screenshots and i plan to go over my process a little bit when i'm all finished.
The reason object space props work for us is that we have a seperate level editor where we place meshes etc, so that keeps tracks of how the mesh is transformed and updates the lighting correctly.
If you just want to make some simple renders, or hell you could just be a little creative with how you light/place things in your scene for renders(rotate everything else, etc) object space should be fine.
However if i had to critizise anything i'd say, redo the Namethingie, i mean, what exactly is this? Kinda looks like painted onto it, not like some sort of tape or band aid or anything.
oh and what are those artifacts in the lower right corner?
wow. very nice. The only thing I can say is for the fpshot (and this is getting picky) is that the gun should be a little more angled forward. Like 5-10 degrees. I know you want to show off all that detail on the side but yeah just a lil more forward i think. Good stuff
personally i prefer the blueish tint of the concept over the camo look, shouldnt be too hard to make variations though.
i hope you're going to add the extra grip and strap, would look cool i think even if the strap wouldnt add much in 1st person view.
Johny: lol butts
Henning: Yeah i started modeling a strap, but yeah just got a little lazy and didnt finish it. The clip/grip thing i modeled as well but just thought it made the fpv quite akward. As far as the color, yeah blue would be pretty easy to do, we'll see how lazy i am with this, i'm considering it pretty close to being done at this point, gotta work out some extra effects and stuff, tweak the textures a bit more, etc.
Joe: Yeah floating bits for a lot of it, i'll post some more shots and such when i'm done. Basicly anthing that can be a seperate mesh is, and almost everything that i could float i did
Cheers.
This is mainly just discussing my workflow for creating fpv weapons, i'll cover some points that i think are important. I'm not going to spend much time going over exactly how to make highres meshes, well not today atleast, maybe a bit later.
Alright, so first off, I already have my highres mesh done at this point, along with my lowpoly + uvs. I slap a grid texture on and prioritize where i want the most pixel space, and resize accordingly. You can see some objects have probabbly twice as much pixel space(150%x150% uvs, 200% uv space would = 4x the space)
Ok, now that we have our uvs layed out correctly, we can move on to prepping the meshes to be baked.
Now at first glance there may not look like there is a huge difference between these areas, but this stuff really really matters. Areas that you likely want to have more uv space will be the spots that are going to be up close, expecially if you have an area like iron sights/scope that you will zoom in on, this will need to have the most relative space(smallest squares). And you can see areas like the very front, and the very back that will A. be far away from the camera or B. be completely out of sight, those areas should definately get the lease amount of coverage. I'll usually end up a with a few details etc that get a bit more, just because they are smaller shapes and easier to pack into uvs.
Now that we have everything to a point where we're happy with the pixel distribution, we can move on to packing the uvs into they're final position(sorry i didnt save wip shots of the uvs before this) Now things might shuffle size a little at this point, but i try to keep the same rules in mind and have everything stay consistant(relative to how we set it up above of course).
Alright, first here is just the wires of the lowpoly mesh.
Now, this is really the most important ULTRA-TIME-SAVING aspect of baking a clean normals map, we're going to copy of this mesh. Then we'll take both the lowres mesh, and the highres mesh, and split them apart the exact same way, usually i do this by units that are easy to remember, like 100 or 50 or whatever. We do this so that when it comes time to bake, you dont have lots of objects intersecting and causing all sorts of errors that you will have to painstakingly paint out later in photoshop.
So heres the lowpoly mesh, exploded:
And heres the highpoly mesh, exlpoded:
After we have all that in order, what i like to do, and there are a few ways of doing this depending on what app you use. With xnormal i'll make a simple image, with a few colors and just basicly apply different colors to different materials of the highres by planar mapping them over the corresponding color. In max you could just use mat colors etc. This will save a SHITTON of time when it comes to creating layer groups for different material types in your psd later down the line. You generally want pretty contrasting colors here, this isnt a type to choose your color scheme, i'll just use this for creating masks. So here white is polymer, black is metal and grey is rubber. And you can see i switched some of these mats later on while i was texturing, which is a lot easier to do when you have these simple masks available to you.
I'll include the final result of this mask texture, you'll have to tweak a few errors with this generally, but its easy. I actually will render this map last, after the normals/ambocc are all set.
Alright, now that we have colors all set up with our highres mesh, i'll do a test render to see how well the normals are turning out. Generally there will always need to be tweaks at this point to my bake mesh(the exploded mesh) And since i'm using object space maps i can edit this geometry in any way i see fit! This means i can add or remove edges, etc really just do anything i want to do with it whatsoever.
So i'll generally go back in, and add in a bunch more edge loops in certain parts if the details arent rendering out straight(warped, crooked details, etc) The basic idea here is really similar to trying to maintain hard edges etc in your highres, you want more geometry in your cage to give a more accurate projection. Now if you're using tangent space with split smoothing groups, this may not be as much of a problem and you can skip this step. Or alternatively as this really only applies to object space, you can actually convert an OS map to tangent space(xnormal go!) after you have the results you want in the end. This tends to create artifacts around the edges where you have split smoothing groups, which sort of defeats the purpose tho.
So heres a comparison of before and after, now ignore the messy geometry, it really *doesnt matter at all* as long as the bake comes out clean, do whatever you like here. We wont be using this mesh for anything meaningful aside from baking.
Now that we've done a pass over all of the parts of the mesh that arent quite right, we can render out a nice, final, clean normals map!
Now i dont always do this next step, but i have on the last couple models and it tends to go a long way, when you've got the mesh all baked etc and can preview your normals, check and see what details are close-up to the camera but look pretty flat, once you figure that out you can cut in some extra geometry and really make those areas pop. Doing this to a few areas will help to create the illusion that more is actually modeled than you can see, and makes it hard to really tell what is modeled and what is just normals detail.
Now you can do this before you do your final bake, but i tend to like to do it after, that way i can keep my uvs simple. And since i'm using object space normals, i can do anything i want to the mesh afterwords without needing to rebake. Now if you were using tangent, you definately want to nail this sort of detail down before your final bake.
I wont bother going over my process for AO, because i've already done this here: http://wiki.polycount.net/Ambient_Occlusion_Map?highlight=%28ambient%29
Now this may seem like a lot of crap just to get a decent normals map, but most of these steps are actually pretty simple when you get in there and do it. If anyone has any questions or anything feel free, or if something dosent make sense etc let me know so i can edit o_O
I usually just render one pass without, and one with only the floaty bits, and then multiply those two.....
Is there a better way?
I generally just paint out out the little circles around floaty bits, i go over my AO process here: http://wiki.polycount.net/Ambient_Occlusion_Map?highlight=%28ambient%29
And yeah, that grid is horrible, it something i stole off the internets from home because i lost the one i use here at work. Dosent really bother me much tho =D
Ok enough tech crap, back to arts. I forgot my wacom pen at work so i havent gotten as much as i'de like but heres a little more:
Thanks for the tutorial.