Home Technical Talk

Advance Normal Mapping in XSI

polycounter lvl 11
Offline / Send Message
raul polycounter lvl 11
Yo peeps,

I have a series of questions. That i hope to get some answers to :)

I have been using xsi for about 2 years at the place i work at. Is all good, pretty neat software. But now im starting to get deep into normal mapping and wut not. And im having some serious issues. And i cant find any actual tutorials and such.

In max, i can use the render to texture feature and create a cage, and set material ids to make sure that the high poly objects cast in the proper places.

The problem is that i cant find how to do any of these things in softimage. The test subject i am running is as follow.

I have this helmet. A low poly and a high poly.

meshes.jpg

And im also having issues with the normals ( the hard edge deal is messing up the way the edges should smooth ) but that's a question that will come in later.

So far, all i have done, is applied ultimapper to my mesh. I went ahead a made a group called "high poly" and picked it for the high poly source on the ultimapper input. I have given unique uvs to the low poly for quick checking. ( look at pic below)

ultimapper-group.jpg

Right after casting. This what the normal map looks on the mesh.

normal-casting.jpg

Here is another example of another prop i made.
gas-mask_014.jpg

meshes-2.jpg

My solution was to render each piece at a time, which took quite a while. If this method can be avoided in max, i dont see y it cant be done inside of softimage!

As you can see, the normals are being casted all over the place. How do i stop this from happening? Is there a material id control like in max?

While i was doing my goggle search, i found this video. They use something called GPU Surface FX2, but this was before xsi 5. XSI 5 replaced this with the ultimapper.

http://www.vast.ws/resources/xsi/tutorials/Rendering/movies/14_3.html

That seems to do what im looking for. However, i cant find any info on it. Any tips or help will be really appreciate it! :)

Replies

  • Ben Apuna
    Options
    Offline / Send Message
    Sorry I know nothing about XSI.

    It looks like your normals are not baking cleanly. As you said one way to bake is to isolate the different high/low pairs with material IDs in Max.

    Another option that is software independent, is to explode your model before you bake. The first post in this thread illustrates the idea behind this.
  • vahl
    Options
    Offline / Send Message
    vahl polycounter lvl 18
    explode your lowpoly using keyframes and tweak your cage settings, it's obviously way too ihgh, also check your tangents, if you get hard splits, it means they are messed up, you'd need to tweak the low verts positions so that they are not too extreme, but I think it may be more uv related.

    the distance to surface isn't a percentage like max, maya or xnormal, it's the actual distance, so if your mesh is smaller than 1 unit, no wonder the high casts all over the low
  • Ark
    Options
    Offline / Send Message
    Ark polycounter lvl 11
    Don't think xsi uses a cage per say, you have to use the 'distance to surface'.

    Stupid question but did you hit the 'compute' button before you hit 'generate'? Doing this this should get you somewhere close with the 'distance to surface'.

    Never looked into the material id option, always exploded the mesh like Vahl said.

    You may also want to check your 'geometry approximation' on both models.
    You can also adjust the tangents in the 'Ultimappers' advanced tab.

    Xnormal is alot better for this though with its wide array of settings.
  • raul
    Options
    Offline / Send Message
    raul polycounter lvl 11
    Thanx for the help guys! I haven't had a chance to check this yet but I'm pretty sure that my problem is that my mesh is really small and that's y ultimapper is going nuts.

    I'm sorry I'm just a huge normal map noob lol.

    So the geo aprox plus the tangents is how I control how the details r casted into the normals of the low poly? Interesting.
  • raul
    Options
    Offline / Send Message
    raul polycounter lvl 11
    hey guys, its me again. Over this xmas break i got a chance to sit down and try things out. I still cannot bake the normal maps as easy as i do in max. Are there any examples some where?

    I watched some digital tutor training, they were kinda useful. Yet they left me hanging as they combined their high poly into one object and didnt really get into specifics about anything.

    I ended up just baking my maps in max. But i really just want to use xsi. :) hehehe.

    By the way, in max, if i want to mirror something and get no seems. I would uv the model, then mirror the face ( for example if this was a head), break half the model ( on the uv editor), toss it to the side, then set w to 1 on the uvs and bake away. On the source model that has both sides of the face on top of each other. Everything looks fine and dandy. However, i noticed something, in xsi there is no way to set the uvs to a value of w=1...so that alone stooped me from going any further. Does xsi do the mirroring automatically?
  • Sage
    Options
    Offline / Send Message
    Sage polycounter lvl 19
    I was wondering if you could bake by clusters. Anyway if you create several high opy groups it should be like exploding the mesh. I haven't tried it though.
  • raul
    Options
    Offline / Send Message
    raul polycounter lvl 11
    Well, if i understand correctly a mat id in max, is the equivalent of a cluster in xsi. In where its a way to apply different materials to the same object. But then how would you tell ultimapper to look for specific clusters, without writing some crazy script. I dont feel like spending 2 weeks writing a tool, at least not till im 100 percent sure there is no other way to do this.

    What do you mean, bake by clusters tho?
  • Sage
    Options
    Offline / Send Message
    Sage polycounter lvl 19
    I was thinking in max terms. I don't know if ultimapper lets you do it. But since you can bake by groups you should be able to have xsi render a map for each group and then combine those in photoshop, similar to how you would with max. The easiest way might be to key frame and explode the model though.
  • raul
    Options
    Offline / Send Message
    raul polycounter lvl 11
    Yo guys. I have a new question. In max. To be able to have overlapping UVs you set those uvs W value to 1. w= 1. How do you do that in xsi?
  • Ark
    Options
    Offline / Send Message
    Ark polycounter lvl 11
    In the texture editor theres two input boxes labeled U and V, just enter your offsets in there, just make sure that 'set' box is not selected thats near the input boxes less you'll merge the uv's to a single point.
  • raul
    Options
    Offline / Send Message
    raul polycounter lvl 11
    Thanx Ark. I knew about that, but what im trying to do is have overlapping uvs with a normal map. That dont have have a weird seam in the middle.

    I guess what my question really is, how would you go about baking normal maps in such a way that if for example you have a human head and you would like to mirror uvs. You dont get a weird seem in the middle?
  • Ark
    Options
    Offline / Send Message
    Ark polycounter lvl 11
    You could try increasing the 'spilling' value in ultimapper when you bake.
  • cryrid
    Options
    Offline / Send Message
    cryrid interpolator
    I'm not sure what the technical rammifications of doing this are, but just move half the UVs over 1 unit as suggested to get them outside the 1:1 space. Bake the map, put the UVs back so that they stack, and then delete and reapply the tangent and binormal data. This appears to get rid of the seam.
  • MM
    Options
    Offline / Send Message
    MM polycounter lvl 17
    Sage wrote: »
    I was thinking in max terms. I don't know if ultimapper lets you do it. But since you can bake by groups you should be able to have xsi render a map for each group and then combine those in photoshop, similar to how you would with max. The easiest way might be to key frame and explode the model though.

    why would you need to keyframe ? u could just have an separate instance of the mesh exploded.

    just curious, i never needed to animate my bake mesh.
  • raul
    Options
    Offline / Send Message
    raul polycounter lvl 11
    Thanx for the help guys!
    I really wish there was a "match material id" thing like in max's render to texture.
    MM wrote: »
    why would you need to keyframe ? u could just have an separate instance of the mesh exploded.

    just curious, i never needed to animate my bake mesh.
  • vahl
    Options
    Offline / Send Message
    vahl polycounter lvl 18
    MM: it's just a preference and an ease of checking thing, say you have your low combined on frame 0 and your exploded low/high on frame 1, lets you quickly check the normals, etc in the same file, you also have all the steps of your assets in the same file making it easier for modification or if someone else needs to use it, etc. I think it was explained a bit more in some earlier threads though.

    I was doing it your way before and found keyframing to be really really useful, especially for anything mechanical.
  • raul
    Options
    Offline / Send Message
    raul polycounter lvl 11
    Thanx for the help guys. I ended up trying out softimage, as i hate jumping between packets so much.

    I figured out how to explode my mesh. and was wondering if i could share my method to discuss how bad i did it. lol. Tho, here is a screenshot of the mesh im trying to cast inside of marmoset.

    http://i7.photobucket.com/albums/y259/RaulXpT/modeling%20II/2010_spring_brileyClass/lantern-low__002.jpg

    1024x1024 Normal and AO maps displayed inside the xsi viewport. Generated using the ultimapper preview shader.
    lantern-low__003.jpg

    I do have a few question,

    1. Is there a way to have ultimapper make a 32 bit normal map with an alpha channel? When i opened them in photoshop, i see the alpha channel, but its empty.
    2. When you open the TangentOp2 window, what does "Encode Binormal Sign in Alpha" do? I guess this is new in si2010.
  • raul
    Options
    Offline / Send Message
    raul polycounter lvl 11
    I hate to bump this post up. Tho, a year and so many props later. Im still having trouble baking normals with softimage. And previewing the maps. I just cant seem to get the same results i do when i use max. The problem happens mainly when i try to do more complex shapes.

    It seems that there is always some kind of overcasting going on. Or some kind of waves. So i have a few questions.

    1. If i apply a push modifier to my mesh. Would this serve as a "cage"?
    2. I keep hearing that i can use the xoliu shader or any other .fx sahder out there. I cant say i had luck with this. Any tutorials out there?
    3. For baking, xnormal or xsi?
  • cryrid
    Options
    Offline / Send Message
    cryrid interpolator
    Unless they changed it in the newer versions, I don't think there is a cage system for Ultimapper.

    Xoliu's first few versions of his shader works fine in Softimage, though you wont have the same luck wither newer versions. Other shaders are hit-or-miss if they work or not (regardless if they are .fx or cgfx). I'm guessing it depends on what features the shader has going for it.
  • ZacD
    Options
    Offline / Send Message
    ZacD ngon master
    baking everything separate is the easiest solution, but I think I'm just going to use max for baking with the awesome shaders it has.
  • raul
    Options
    Offline / Send Message
    raul polycounter lvl 11
    cryrid - no cage system? so do we just use the distance to surface options?....lame.
    You have some cool tutorials on your site!

    ZacD - have learned to love max for that same reason. I wish xsi would have the same.


    I mean, i just dont get it. Doesnt capcom and konami use xsi for their next gen games? How did they bake all their badass normals. My thing is that, in max this is all super simple. And its problably the only area of xsi that has given me the most issues.

    thanx for the replies guys!
  • ZacD
    Options
    Offline / Send Message
    ZacD ngon master
    Maybe they have their own toolset or they use xnormal or some other separate app?

    Or they just deal with it?
  • cryrid
    Options
    Offline / Send Message
    cryrid interpolator
    Doesnt capcom and konami use xsi for their next gen games?
    Capcom, Konami, Square, and a few other wizards whose 3d magic is beyond me. I imagine they either bake meshes separately (perhaps with have a script or something to do them all at once), use their own toolset (Konami said they used Ultimapper though), or just use their own shaders to make the normal maps appear more error-free when displayed in their engine.

    I did a quick test and seemed to get mostly similar results.
    normalmaps.jpg
    I assume is more specific to when the mesh has multiple parts, or when you want alpha included?
  • j_bradford
    Options
    Offline / Send Message
    j_bradford polycounter lvl 17
    I use Softimage professionally as well and have just decided to use Xnormal for baking and Marmoset toolbag for viewing. Both in my opinion do a much better job at baking and viewing than even Max so it's just as well that they are used instead. However it's hard to beat Softimage for rendering AO maps (mental ray) so I keep that part within the program.
  • commador
    Options
    Offline / Send Message
    commador polycounter lvl 14
    j_bradford wrote: »
    I use Softimage professionally as well and have just decided to use Xnormal for baking and Marmoset toolbag for viewing. Both in my opinion do a much better job at baking and viewing than even Max so it's just as well that they are used instead. However it's hard to beat Softimage for rendering AO maps (mental ray) so I keep that part within the program.


    I've always wanted to know why the option for using the systems GPU was not available. I love the results of AO from XSI, but man do they take a while. Ive gotten into the habit of baking albedo and normals in one go with settings on high, then checking off only the AO and changing that to medium.


    Raul, I'll just echo whats been said by everyone else. Easiest way to get clean results is move your pieces away from each other by a good margin, and treat your lowpoly mesh like the cage. I've never computed the distance to surface (after testing I always got weird results). If your lowpoly mesh completely envelopes the high source, you will get good results. At least from my experience it works out rather well this way.
    raul wrote:
    1. If i apply a push modifier to my mesh. Would this serve as a "cage"?
    yes, exactly. just be careful when some verts are in a concave area, as they tend to overlap one another if you push them too far.
Sign In or Register to comment.