Lighting OFF Lighting ON
So I started looking into different files, and after some time playing with photoshop, I am now able to get custom tattoo on without causing weird lighting effect.Here's how:
Program and Tools needed:
- Adobe Photoshop (I'm using CS, dunno whether earlier versions can do the same)
- EAGraph
- nfshtool (can't remember where I got it from, someone post a link plz)
- fshX
- and patience...
Preparation Steps
Step 1: Extract an arm file from sgsm\common\xplrtex.viv as reference. It doesn't matter what skin color that is, coz we won't need the skin eventually...however, I strongly recommend files ended with a "2" (i.e. arm02.fsh). Those are skin files with the stongest muscle definition, using them as references can help us adjusting the tattoos when we put them on. Place the extracted file in a new folder. Screenshot
Step 2: We are going to create a XXXXXXX__arm_tat.fsh, and we are not able to create a fsh file out of nowhere(At least I dunno how). So we also need a tat file of an existing player, strongly recommend AI's tat files, guy has tattoos all over his body . Extract the file (arm or leg) to the same folder. Screenshot
Step 3: Set nfshtool.exe as the default tool to open *.fsh files if you haven't already done so. Double click on the extracted alivers_arm_tat.fsh, nfshtool will create a new folder with the file name and place all texture files in it. Do the same with the armXX.fsh file. Screenshot
Step 4: Start Photoshop, then open both "0000.bmp" and "0000-a.bmp" in the tat folder together with "0000.bmp" in the arm folder. Double-size every one of them, so that you can work in details. Screenshot
Step 5: Switch to the black and white tat file("0000-a.bmp"), select the whole thing(Ctrl-A), then copy(Ctrl-C). Afterthat, switch to the almost black tat file("0000.bmp"), duplicate the background layer as a new layer then remove the locked background layer (the lower one). With the duplicated layer selected(you may wish to rename it), click on the Add Layer Mask button, then go to Channels and select the mask layer, Ctrl-A again then paste(Ctrl-V), you should be able to get something like this. Go back to the Layers section and drag the whole layer to the opened arm file, then place the layer where it supposed to be. Screenshot
Ok, now you are done with the preparations. Go make yourself a cup of coffee, it's about to get serious...
Main Procedures
Procedure 1: Get your tattoo prepared, by "prepared" I mean get the tattoo on a transparent layer. Refer to the tutorial by themelloman5423 if you need more help here. As a Chinese, I chose this dragon for example(oh well, lucky creature). Here's the same dragon prepared.
Procedure 2: Switch to the arm file prepared earlier, hide the reference tattoo layer and drag the new tattoo layer to it. Place it accordingly (you may wish to switch the ref. layer on and off when placing your tattoo, remember not to exceed the area covered by the ref. tattoo). Since the tattoo texture will be place on a 3D arm, you may need to make certain adjustments(skew and distort) to your tattoo to fit (using the muscle definition as reference). The red line shown in this screenshot is where the texture will be seperated for left and right arm, left hand side is for the character's right arm, and the right for left arm. When placing tattoo on the left arm(right hand side), remember to flip the tattoo horizontally, otherwise the tattoo will show up flipped.
Procedure 3: Well now, we know where the tattoo will locate and we have the alpha channel ready, it's about time for us to save the tattoo seperately as an arm_tat.fsh. First create a new file with the width and height same as the ref. tattoo (1012*658 for AI's tat double-sized). Color the background completely black, then place the tattoo layer(apply the mask first!) on top of it, you should be getting something like this.
Procedure 4: Go to "Select", "Load selection" then choose "(Your tattoo layer)'s Transparency". Expand the selection by 1 pixel if you want a clearer tattoo in game. Then click on the add layer mask button, and the alpha channel will be created for you. Go to "Channels" and duplicate the alpha channel for later use. Switch back to "Layers" and flatten the image. Now you should get an almost black image with an alpha channel, like so. Resize the image to the ref. tattoo's default dimension(506*329 for AI's arms), save the image as bmp and overwrite the original "0000.bmp", remember to clear the checkbox named "Alpha Channels". We'll be saving the black and white alpha channel as another file, "0000-a.bmp" remember? Select the alpha channel, copy and paste it as a new file, change it to greyscale, then overwrite the original one as "0000-a.bmp".
Congradulations, you 've just finished the tattoo editing. The only thing left is to put the tattoo in game.
Getting the arm_tat.fsh in game
1. Go to the arm_tat folder generated by nfshtool, you have already overwritten the two bmp files in there, it should now contain your tattoo and its alpha channel, like this.
2. Double-click the "index.fsh", nfshtool will then repack the fsh file with the new tattoo. Open the arm_tat.fsh with fshX("alivers_arm_tat.fsh" in my case), now you should be able to see something like this. (Just tested, we cannot use fshX to import the tattoo file, even if we save the tattoo together with alpha as a DDS, it will crash . So plz stay with nfshtool)
3. Rename the .fsh file to (Player's ID7)_tat_arm.fsh, I'm testing mine on Mario Kasun, so I renamed the file "makasun_arm_tat.fsh". Put the renamed fsh file in your sgsm folder, fire up NBA Live 06, and you should be able to see the tattoo(s) on your player.
Screenshot 1
Screenshot 2
Some other tattoos made:
Thatz all, fellow Live fans, hope that can help at least some of you
This is my first tutorial, so comments and feedbacks are much appreciated. Also if you discover anything new about getting custom tattoo in game, please let me know. Cheers guys.
EDIT: Just got two new screenies from the same friend of mine using my tattoo file, so this method should work on yours too. Both of them with lightings set to "ON".