Hello all, I'm working on creating assets for a game and in order to convert the models to the game's proprietary format they need to be in .xsi format. Since I use maya I thought this wouldn't be much of a problem because I can just use crosswalk to go between software packages then just save as a .xsi.
The problem is that I can't seem to get my model to keep the same tangents as It had in maya and as a result my normal map has seams along the uv regions in the game. It seems to be somehow changing the tangents somewhere along the way. Anyone have any ideas of where to start looking?
Since I learned pretty much everything I know about tangents and bitangents here on PC I figured it was the best place to get some advice
![:D :D](https://polycount.com/plugins/emojiextender/emoji/twitter/grin.png)
Thanks in advance,
-artquest
Replies
The easier way is to bake in XSI if you are exporting from it.
I will probably do this moving forward.. however it did take awhile to bake the maps the first time around so for this one id rather not have to explode the model + bake it and learn how to do all of that in XSI for the first time when the deadline for this asset is already here. But if it comes to that... any good tutorials for XSI that you know of?
I tried this but when I convert to the game format converter spits out all my tangents with the value of 0.0. It seems to only recognize that the model has tangents when I use the "get property> tangent" option in XSI.
So, you should work with your tech team on setting up a synchronized workflow. Whether the bakes are in Maya, XSI, Xnormal, it doesn't matter, as long as it all plays nicely with your engine.
Try baking with a larger edge padding and see if that works.
All the old assets are done in XSI or in maya then exported as .obj and finished in XSI so I was assuming if I could get it right in XSI then everything would be fine in engine. As I understand it now(from looking at both the code for the model files and the shader), the game is expecting vectors for the tangents to be stored in the model file. Then it passes the tangents to the shader to compute the bitangents. So if that is correct, isn't the problem in going from maya to XSI?
It's a different kind of seam
Thanks for your input everyone
From the documentation on the exporter:
"hasValidTangents: This tells the engine whether the mesh already
has valid tangents or not. If a mesh doesnt provide valid tangents
they will be generated by DirectX. This is not preferred as 3D packages
tend to do a better job."
So yup, it is using XSI's generated tangents. I confirmed this by opening up the file in notepad++ and finding that this option is marked as "TRUE" on my mesh after exporting. So the exporter is using tangents from XSI. I also applied the normal map in XSI and It looks exactly the same as it does in game.
So my question is, if I set up my mesh to display it correctly in XSI before exporting, wont it look correct in game too? I'm assuming there has to be a way to do this, otherwise how would you use normal maps generated in zbrush or other sculpting packages with XSI.
If your baker and engine aren't set up properly you need to minimize the difference in tangents that are calculated. The reason you apply hard edges to uv seams is so when the engine/baker calculated tangents/bitangents it doesn't think there is a triangle that passed through two different uv islands.
Since I'm new to XSI... anyone have an documentation on how to do this?
correct, I was hoping for a away around re-baking the maps using XSI, however I guess I may have to do that after all.
Very true. Forgot to mention that whatever u bake in XSI/Maya/Max it gotta match what your engine does.
That didn't work for me manytimes, unless new FBX versions are fixed.