I honestly first thought that those were shots of the hipoly and I got confused about all the compliments for the bakes, then I realised that those were the bakes and my mind got blown. You did it again Motenai!
Thanks everyone for the nice support you always show me
For baking i guess i can repropose these tips that i wrote few years ago while i was doing a Protoss Zealot fan art. Beside this there isn't really much i can add, it's all a matter of getting used to do bakes, learn from mistakes, and stuff like that.
Here it is:
"As requested from Artquest (but i hope it will be usefull to many other people) i decided to do a mini tutorial (better to call it "a bunch of tips") to explain my baking workflow.
There isn't really anything more than the things that someone who bake low poly models should already know.
Anyway, let's get started.
Image A:
Here i show in general how is the main retopo and bake process.
I usually import from zbrush 2 different version of the same object.
The first one (1.) is heavily decimated, in order to keep it light for 3ds max viewport, but also in order to maintain all the main volumes of the object, ad it's the object on wich i retopology the final low poly geometry (2.)
The second object i import from zbrush is the same, but with a much higher polycount, in order to keep all the sculpted details, and this is what i'm gonna use to bake the normal map (3.)
The last object in the image is the baked low poly mesh (4.)
Image B:
Here are a bunch of tips i think it's good to keep in mind when you're dealing with your low poly mesh.
1. Choose your geometric details. It means that, while you're building your lowpoly geometry in the retopology process, you have to carefully choose what details of the highpoly model you want to model, and what details you want to leave to the normal map.
In general a good idea i to try to reproduce the big volumes, keeping an eye on the silouette in order to keep it smooth and curvy enough (of course if you have a curved silouette). In the image i show in green how i decided to keep intact certain edges that are probably going to be visible in the silouette. Instead i decided to simplify the red area, cause the normal map will be enough to show the details there.
P.S. Remember also to keep an eye at the polycount
2. Choose your Smooothing Groups. This is foundamental if your wanna bake a nice normal map. Usually i try to keep the SG as low as possible in number to keep things simple in the UV mapping phase. A good way to decide your SG is to start giving to everything just one SG, and then checking where the shading isn't smooth, and changing the SG in that area.
In general angles over 60°-70° needs different smoothing groups, but then of course it's up to you.
In the image i've highlighted the different SG i used.
3. Unwrap (UV map). This is a basic one. The only thing you have to keep in mind while doing your UVs is to break the UV islands in correspondence of an hard edge (due to a change of SG). In the image you can see the green lines in correspondece of any change of SG. Remember to leave enough space for the padding between one UV island and another.
Image C:
This image is more to show some useful tools, and my Render to Texture settings.
First, on the left, you can see i use Outliner Script for 3dsmax.
It mainly show you all the objects you have in your scene, with the option to show them by Hierarchy, Layers, and more. In this case i use it with visualization by layers, so that i can choose the single objects (correspondent lowpoly and bake models) very quickly. If you keep your scene organized with named object, this will save u a lot of time in my opinion.
In the center you can see the cage for the projection...seriously nothing to say about it, no special settings, no tricks. I just increase the amount till i see no more intersections of the cage with the hipoly model. Easy.
On the right you can see my Render to Texture settings. Also here there is nothing particular to point out. The only thing is that i usually bake at double resolution of the one i have in mind for my texture, and then i rescale the bakes in photoshop. I do this to keep the bake quick, instead of using some Hammerslay supersampler that would make the render a lot more heavy (but i'm still not sure of which process is better).
So i bake at 2048 a texture that will be 1024 in the end (this object cover a 512 portion of that 1024).
I also keep a padding of 16 px for a 2048 (keep in mind that it will be scaled to 8 px)
I think i've said everything on how i bake my models, i hope it's clear enough and that my english is not to bad
If you have any questions i'm here to answer them
Cheers"
Alright after re-reading it, a few things to keep in mind.
Smoothing-groups: once i use to break my mesh in many smoothing groups, since i work on Dota i'm trying to limite them as much as i can. Less smoothing groups, less problems.
Bake Padding: in the tutorial i go with 16px. Nothing wrong about it, only difference is that now i like to do my padding in photoshop with xnormal plugins, so i leave it to 2px or 0px in max.
Maps: i don't bake anymore tangent normals in 3dsmax, but i bake World Space normals, and then obtain the Tangents in Handplane. This also fix possible baking problems that max sometimes have (it also allow me to go more extreme with the smoothing groups, that's why now i can do less of them).
Wow, thank you so much for putting the time and effort into doing something like this. I will certainly be having a look at a few of these tips when I start baking my future projects.
- Using a Object Space workflow like you do has the huge benefit of generating bakes that are effectively universal. What I mean by that is that while there is a gazillion ways to generate and display Tangent Space normalmaps (every engine and every 3d program is handling the creation and the display of TS maps slightly differently, making such TS maps pretty much incompatible with each other especially for hard surface designs), Object Space normalmaps are actually universally consistent since since they do not involve any surface information coming from the lowpoly shading. That's a hugely important point when it comes to obtaining perfectly seamless bakes, especially on the mirror line of a symmetrical model. And of course, Handplane then takes care of generating the very specific Source-specific Tangent Space normalmap with maximum accuracy. I thought I'd stress this point, since for some reason the Handplane workflow seems to be ignored by the Dota2 community even tho it has been created especially to our benefit.
- Another remark would be that to an extent, such a workflow *can* allow us to bypass the use of hard edges completely, since the TS map ultimately being generated by Handplane is completely synchronized with the Source Engine and thus doesn't need to rely on any trick, even on sharp objects like the edge of a sword. Now I can see that in some case the artist might still want to use hard edges on the low, to make a blade look sharp even when the camera is far away (meaning that the textures are blurry, and start to fail at keeping things sharp shading-wise) ; however, the advantage of going for a fully smoothed model with a perfectly tuned Handplane TS map is that it doesn't require and edge hardening at all - which means less potential for errors down the road.
Anyways - sorry for the verbose post, I just thought I could add some extra information to your already very useful breakdown
Also, an additional on image B, caption 3 : you are again absolutely correct. The necessary "split apart" UV edges are the ones where there is, indeed, a hard edge in the low.
I am stressing this, because I have encountered artists being confused by that part and doing the complete opposite, that is to say putting a hard edge on their mesh for every UV island border. Now this will not affect the visual results, but it is absolutely unnecessary, and can only create issues. On top of that, it makes the model heavier for the engine, which is always something to be avoided.
TLDR : there is no need to put a hard edge down the symmetry line of a model, like some artists seem to be doing. It is only asking for errors to happen.
Sorry for the hijack, and congrats on Venge coming along nicely
One cool thing about smooth groups is that they actually help in having good normals on both LOD0 and LOD1.
To simplify lest say I have cube with 1 smooth group and later I will delete bottom of that cube. Vertex normals will change near deleted face. However if I know with advance that I will delete this part I can give it different smoothing group so after deletion all will be perfecto Maybe not worth a hassle but I found this useful of course in more complex shapes also
Konras : do you have any practical example of this ? I am not saying that it is impossible to do, but it just seems unnecessarily convoluted and hard to predict. (however, I would be happy to be won over if that technique turns out to be useful !)
Regarding the normals changing after face deletion : I think it would be possible to avoid that problem (at least in Maya) by transferring the vertex normals information using Transfer Attributes.
@Pior I know in 3DSMax this could be achieved with Edit Normals modifier that is capable of freezing them. There is also a plugin that can be used to transfer normals from any other object, however I found my approach a bit simplier for me.
Basically whenever I know I will be deleting any faces that are ~90 angle I give them different smooth groups. This work for dota because of top-down exclusive view for LOD1. This sadly would not have any application in any other game without top-down view. Simply because no one would delete underneath geometry for LOD1 that could be seen from the side as well.
Anyway here is a screenshot of Terrorblade armor from set I did last time. I set up here blue material to faces that I deleted for LOD1 to show where I added different smooth groups. His collar armor was actually not deleted inside, however I collapsed the thickness so different smooth group also help to prevent there weird errors.
I dont know if that is any good and will help someone but well, discusion is always nice
Very interesting ! Thank you for sharing that example. It looks like it would require quite a bit of planning, but I can certainly see how this could be useful when specific designs allows for it. Good stuff to keep in mind !
Actually you can do a lot of "normals-magic" to make sure your lod0 and lod1 look more alike. Basically you can simplify any areas that do not contribute to the silhouette of the model, then point the normals of those areas in the same direction (usually planar) via the Edit Normals, on both lod0 and lod1. Then baking the normal map. Since the normal map modifies the normals direction and the normals on both lod0 and lod1 are pointing in the same direction the result will look almost identical. It's quite complicated to understand without images but I hope it's not too confusing.
What you're doing with smoothing groups is essentially the same thing.
You make sure that the areas were geometry changes retain their normals on both lod0 and lod1.
@Vovosunt Yes, however I found better to first remove things that will not be visible and later if necessary collapse/weld remaining geometry. One thing I don't like about Edit Normals modifier is that it always freak out and mess up normals when I make any changes to geometry after its setup Maybe I do something wrong ^^'
@Konras: Yeah 3dMax modifiers are quirky, one of the reasons why I don't use it. I can only recommend doing it as the last step to avoid those mess-ups. Edit normals in maya is also not that great (and by that I mean downright horrible).
@Eduardo: Firstly, Mudbox, Zbrush and xNormal have nothing to do with it, since those applications are for sculpting or map baking. Configuring your normals should be done in you main 3D modeling program.
Smoothing groups in Maya are implemented via hard/soft edges (in my opinion a much better and faster to use system). Basically a smoothing group in 3dMax has all internal edges set to soft and outer to hard. In maya you can also play around with normals via the Edit Normals Tool (Set Normal is also available if you know the exact normal direction you want).
The advantage is that your lod0 and lod1 look much more alike as the normals remain the same (basically what Konras had explained).
I think we should to give the thread back to Monetai, it was hijacked for quite a while :P
@pior, motenai
Correct me if I'm wrong but it was my understanding that using the 'Handplane Source Engine Tangent Calculator' plugin for xNormal would already bake a normal map that is specifically optimized for the Source Engine, thus skipping the step and eliminating the need for baking out an Object Space normal map first in order to convert it later?
@Konras, @Vovosunt
Very interesting, I've mostly been pretty negligent with the normals for the lod1 since at game distance it's really hard to see anything, but this is quite an interesting approach. For the next one, I'll try locking the normals vs. not locking them and see if there is a noticable improvement in quality, thanks for sharing.
@Eduardo: Firstly, Mudbox, Zbrush and xNormal have nothing to do with it, since those applications are for sculpting or map baking. Configuring your normals should be done in you main 3D modeling program.
Smoothing groups in Maya are implemented via hard/soft edges (in my opinion a much better and faster to use system). Basically a smoothing group in 3dMax has all internal edges set to soft and outer to hard. In maya you can also play around with normals via the Edit Normals Tool (Set Normal is also available if you know the exact normal direction you want).
The advantage is that your lod0 and lod1 look much more alike as the normals remain the same (basically what Konras had explained).
Thanks a bunch for the explanation. The reason I put Mudbox, ZBrush and xNormal there is because I thought (especially Mudbox/ZBrush) for baking they didn't understand smoothing groups. Anyhow yeah I agree, the tools in Maya are probably easier in that regard.
Once again, thanks! Also sorry for the thread hijack, it was just too interesting. :poly124:
Spudnik : as a matter of fact, I still have to try that workflow ! I do remember reading that one of the recent Handplane updates featured such a plugin, but I never took the time to test it out. One more thing to add on my to-do list !
Arguably I personally would still need the OS map as I use it as a very fast way to obtain a "directional" pass (the green channel of an OS map represents all the parts of a model pointing up, something that I find very useful for weathering), so it wouldn't save me much time ; but you are right, it could streamline things just a bit further. Now of course this is all irrelevant for people who do everything inside a 3d app like Maya or Max.
(well, except for the fact that Bent Normals are usually "bent" just a little further than OS maps in order to hackily simulate AO is some engines, and therefore would not provide a proper input for Handplane OS to TS conversion, but that's irrelevant to the discussion here of course. Speaking of which, I did hear reports that the Bent normalmaps generated by Xnormal are looking exactly the same than OS normalmaps ; if that's indeed the case, then something is wrong with Xnormal, as these maps are suppose to serve different purposes to begin with).
On a side note : another advantage of sharing OS maps is for communication between artists. If someone somehow ends up with messed up vertex normals, which seems to happen more that it should in Maya, the OS maps will still be perfect, and can be used to "save" a poorly setup model after resetting its shading. But of course, if everything is all setup properly, that's not necessary and indeed I can see a huge benefit in that Xnormal plugin baking straight to "proper Source normals". Gotta try it !
Motenai, great work at texturing in mudbox! As far as i see you use blur, but in my way it works strange: it moves all my highlighted areas (or shadowed) to the point i don't want them to be. Is that because of blur working with all the layers?
And did you learned painting in art school or something?)
Great job on the set~ Everything in the presentation materials are really eye catching. Really love how the hair turned out. Going to have to use this set for some carry-venge games, cause it's too badass for plain old wards... ;D
Looks great, everything come out really well. My only criticism would be the new auto attack particlelooks similar to the auto attack for Desolator but otherwise outstanding work!
That surely sounds like a good idea...the hair is the part i like the less....how did you deal with the 1bit alpha though? i'm afraid on hair is gonna look too harsh
@ quockhanhlk : i don't understand your doubt...like, you're not sure if me and Anuxi are 2 separate entities ? (yes we are)
@ Katzeimsack : ye i went to re-check your Lycan and i noticed that the hair are solid stripes without any alpha....i think i'll give it a go, thanks for the suggestion a lot
P.S. I checked your portfolio and i found out you're one of my "hero/inspiration artist" since a long time...i just didn't know it was you
Which max version are you using? "realistic" in 2014+ actually manages to SORT transparency!
Not kidding
(right now the alpha seems to cut your body in the viewport)
Replies
There looks like there is a small amount of mesh intersection on the knee area.
Seriously now. Those are super impressive!!
For baking i guess i can repropose these tips that i wrote few years ago while i was doing a Protoss Zealot fan art. Beside this there isn't really much i can add, it's all a matter of getting used to do bakes, learn from mistakes, and stuff like that.
Here it is:
"As requested from Artquest (but i hope it will be usefull to many other people) i decided to do a mini tutorial (better to call it "a bunch of tips") to explain my baking workflow.
There isn't really anything more than the things that someone who bake low poly models should already know.
Anyway, let's get started.
Image A:
Here i show in general how is the main retopo and bake process.
I usually import from zbrush 2 different version of the same object.
The first one (1.) is heavily decimated, in order to keep it light for 3ds max viewport, but also in order to maintain all the main volumes of the object, ad it's the object on wich i retopology the final low poly geometry (2.)
The second object i import from zbrush is the same, but with a much higher polycount, in order to keep all the sculpted details, and this is what i'm gonna use to bake the normal map (3.)
The last object in the image is the baked low poly mesh (4.)
Image B:
Here are a bunch of tips i think it's good to keep in mind when you're dealing with your low poly mesh.
1. Choose your geometric details. It means that, while you're building your lowpoly geometry in the retopology process, you have to carefully choose what details of the highpoly model you want to model, and what details you want to leave to the normal map.
In general a good idea i to try to reproduce the big volumes, keeping an eye on the silouette in order to keep it smooth and curvy enough (of course if you have a curved silouette). In the image i show in green how i decided to keep intact certain edges that are probably going to be visible in the silouette. Instead i decided to simplify the red area, cause the normal map will be enough to show the details there.
P.S. Remember also to keep an eye at the polycount
2. Choose your Smooothing Groups. This is foundamental if your wanna bake a nice normal map. Usually i try to keep the SG as low as possible in number to keep things simple in the UV mapping phase. A good way to decide your SG is to start giving to everything just one SG, and then checking where the shading isn't smooth, and changing the SG in that area.
In general angles over 60°-70° needs different smoothing groups, but then of course it's up to you.
In the image i've highlighted the different SG i used.
3. Unwrap (UV map). This is a basic one. The only thing you have to keep in mind while doing your UVs is to break the UV islands in correspondence of an hard edge (due to a change of SG). In the image you can see the green lines in correspondece of any change of SG. Remember to leave enough space for the padding between one UV island and another.
Image C:
This image is more to show some useful tools, and my Render to Texture settings.
First, on the left, you can see i use Outliner Script for 3dsmax.
It mainly show you all the objects you have in your scene, with the option to show them by Hierarchy, Layers, and more. In this case i use it with visualization by layers, so that i can choose the single objects (correspondent lowpoly and bake models) very quickly. If you keep your scene organized with named object, this will save u a lot of time in my opinion.
In the center you can see the cage for the projection...seriously nothing to say about it, no special settings, no tricks. I just increase the amount till i see no more intersections of the cage with the hipoly model. Easy.
On the right you can see my Render to Texture settings. Also here there is nothing particular to point out. The only thing is that i usually bake at double resolution of the one i have in mind for my texture, and then i rescale the bakes in photoshop. I do this to keep the bake quick, instead of using some Hammerslay supersampler that would make the render a lot more heavy (but i'm still not sure of which process is better).
So i bake at 2048 a texture that will be 1024 in the end (this object cover a 512 portion of that 1024).
I also keep a padding of 16 px for a 2048 (keep in mind that it will be scaled to 8 px)
I think i've said everything on how i bake my models, i hope it's clear enough and that my english is not to bad
If you have any questions i'm here to answer them
Cheers"
Alright after re-reading it, a few things to keep in mind.
Smoothing-groups: once i use to break my mesh in many smoothing groups, since i work on Dota i'm trying to limite them as much as i can. Less smoothing groups, less problems.
Bake Padding: in the tutorial i go with 16px. Nothing wrong about it, only difference is that now i like to do my padding in photoshop with xnormal plugins, so i leave it to 2px or 0px in max.
Maps: i don't bake anymore tangent normals in 3dsmax, but i bake World Space normals, and then obtain the Tangents in Handplane. This also fix possible baking problems that max sometimes have (it also allow me to go more extreme with the smoothing groups, that's why now i can do less of them).
If I may add, here are a couple remarks :
- Using a Object Space workflow like you do has the huge benefit of generating bakes that are effectively universal. What I mean by that is that while there is a gazillion ways to generate and display Tangent Space normalmaps (every engine and every 3d program is handling the creation and the display of TS maps slightly differently, making such TS maps pretty much incompatible with each other especially for hard surface designs), Object Space normalmaps are actually universally consistent since since they do not involve any surface information coming from the lowpoly shading. That's a hugely important point when it comes to obtaining perfectly seamless bakes, especially on the mirror line of a symmetrical model. And of course, Handplane then takes care of generating the very specific Source-specific Tangent Space normalmap with maximum accuracy. I thought I'd stress this point, since for some reason the Handplane workflow seems to be ignored by the Dota2 community even tho it has been created especially to our benefit.
- Another remark would be that to an extent, such a workflow *can* allow us to bypass the use of hard edges completely, since the TS map ultimately being generated by Handplane is completely synchronized with the Source Engine and thus doesn't need to rely on any trick, even on sharp objects like the edge of a sword. Now I can see that in some case the artist might still want to use hard edges on the low, to make a blade look sharp even when the camera is far away (meaning that the textures are blurry, and start to fail at keeping things sharp shading-wise) ; however, the advantage of going for a fully smoothed model with a perfectly tuned Handplane TS map is that it doesn't require and edge hardening at all - which means less potential for errors down the road.
Anyways - sorry for the verbose post, I just thought I could add some extra information to your already very useful breakdown
I am stressing this, because I have encountered artists being confused by that part and doing the complete opposite, that is to say putting a hard edge on their mesh for every UV island border. Now this will not affect the visual results, but it is absolutely unnecessary, and can only create issues. On top of that, it makes the model heavier for the engine, which is always something to be avoided.
TLDR : there is no need to put a hard edge down the symmetry line of a model, like some artists seem to be doing. It is only asking for errors to happen.
Sorry for the hijack, and congrats on Venge coming along nicely
To simplify lest say I have cube with 1 smooth group and later I will delete bottom of that cube. Vertex normals will change near deleted face. However if I know with advance that I will delete this part I can give it different smoothing group so after deletion all will be perfecto Maybe not worth a hassle but I found this useful of course in more complex shapes also
Regarding the normals changing after face deletion : I think it would be possible to avoid that problem (at least in Maya) by transferring the vertex normals information using Transfer Attributes.
Basically whenever I know I will be deleting any faces that are ~90 angle I give them different smooth groups. This work for dota because of top-down exclusive view for LOD1. This sadly would not have any application in any other game without top-down view. Simply because no one would delete underneath geometry for LOD1 that could be seen from the side as well.
Anyway here is a screenshot of Terrorblade armor from set I did last time. I set up here blue material to faces that I deleted for LOD1 to show where I added different smooth groups. His collar armor was actually not deleted inside, however I collapsed the thickness so different smooth group also help to prevent there weird errors.
I dont know if that is any good and will help someone but well, discusion is always nice
Ahh and Motenai sorry for making a mess here ^^'
What you're doing with smoothing groups is essentially the same thing.
You make sure that the areas were geometry changes retain their normals on both lod0 and lod1.
I have never used that Smoothing Groups technique before to bake my normal maps, I may need to rethink that.
I only have two questions if someone could please answer :
--> How do you use a similar technique of smoothing groups in Maya, Mudbox, ZBrush or xNormal?
--> Which are the advantages of using smoothing groups on the low poly to bake normals?
Thanks a bunch!
Eduardo
@Eduardo: Firstly, Mudbox, Zbrush and xNormal have nothing to do with it, since those applications are for sculpting or map baking. Configuring your normals should be done in you main 3D modeling program.
Smoothing groups in Maya are implemented via hard/soft edges (in my opinion a much better and faster to use system). Basically a smoothing group in 3dMax has all internal edges set to soft and outer to hard. In maya you can also play around with normals via the Edit Normals Tool (Set Normal is also available if you know the exact normal direction you want).
The advantage is that your lod0 and lod1 look much more alike as the normals remain the same (basically what Konras had explained).
I think we should to give the thread back to Monetai, it was hijacked for quite a while :P
Correct me if I'm wrong but it was my understanding that using the 'Handplane Source Engine Tangent Calculator' plugin for xNormal would already bake a normal map that is specifically optimized for the Source Engine, thus skipping the step and eliminating the need for baking out an Object Space normal map first in order to convert it later?
@Konras, @Vovosunt
Very interesting, I've mostly been pretty negligent with the normals for the lod1 since at game distance it's really hard to see anything, but this is quite an interesting approach. For the next one, I'll try locking the normals vs. not locking them and see if there is a noticable improvement in quality, thanks for sharing.
Thanks a bunch for the explanation. The reason I put Mudbox, ZBrush and xNormal there is because I thought (especially Mudbox/ZBrush) for baking they didn't understand smoothing groups. Anyhow yeah I agree, the tools in Maya are probably easier in that regard.
Once again, thanks! Also sorry for the thread hijack, it was just too interesting. :poly124:
Arguably I personally would still need the OS map as I use it as a very fast way to obtain a "directional" pass (the green channel of an OS map represents all the parts of a model pointing up, something that I find very useful for weathering), so it wouldn't save me much time ; but you are right, it could streamline things just a bit further. Now of course this is all irrelevant for people who do everything inside a 3d app like Maya or Max.
(well, except for the fact that Bent Normals are usually "bent" just a little further than OS maps in order to hackily simulate AO is some engines, and therefore would not provide a proper input for Handplane OS to TS conversion, but that's irrelevant to the discussion here of course. Speaking of which, I did hear reports that the Bent normalmaps generated by Xnormal are looking exactly the same than OS normalmaps ; if that's indeed the case, then something is wrong with Xnormal, as these maps are suppose to serve different purposes to begin with).
On a side note : another advantage of sharing OS maps is for communication between artists. If someone somehow ends up with messed up vertex normals, which seems to happen more that it should in Maya, the OS maps will still be perfect, and can be used to "save" a poorly setup model after resetting its shading. But of course, if everything is all setup properly, that's not necessary and indeed I can see a huge benefit in that Xnormal plugin baking straight to "proper Source normals". Gotta try it !
And did you learned painting in art school or something?)
Big thanks to Abyss FX for the particles work!
Go vote for it if you like it, link on the image
@ Katzeimsack : ye i went to re-check your Lycan and i noticed that the hair are solid stripes without any alpha....i think i'll give it a go, thanks for the suggestion a lot
P.S. I checked your portfolio and i found out you're one of my "hero/inspiration artist" since a long time...i just didn't know it was you
Thanks everyone for the support
^ this, mean no offense though. As i said above the set looks awesome
No offense taken
Looking forward to the final asset!
(the clipping you see on the arms is damn max viewport)
Not kidding
(right now the alpha seems to cut your body in the viewport)