8 votes
Date Updated: 

With RemapPSDyou can easily map your entire photoshop file to a different set of uvs. The script will handle any complexity in your photoshop files:


  • layers with masks
  • folders with masks
  • nested folders
  • adjustment layers with masks
  • layered tiffs


Additional Info: 

An example case: You have worked on a lowpoly game character and are almost done when the lead artist approaches you with the request to give the character's face more space on the texture. This is not so difficult if you are working on a flat image, but impossible to do with complex photshop files. With RemapPSD it's inredibly easy. You can change the uv-layout of an existing model and the psd file with all the layers, folders, adjustment layers, masks etc, will be remapped with just the click of a button.

I hope you will find it just as helpful as I do. To get started it is probably best to watch the video tutorial on vimeo:


  1. Select Maxscript/run and choose „RemapPSD.mzp“
  2. You will find the macroscipt under customize in the category „3dhippie“. Assign it to a shortcut or make a new menu item.


Basically you need three things to make the script work.

  1. Any piece of textured geometry
  2. Two sets of UV's: Channel 1 for the old mapping, Channel 2 for the new mapping
  3. A standard material with a bitmap texture as it's diffuse map

RemapPSD will do the rest for you.

The script will run through four phases:

  1. Photoshop will pop up, open the document, save it under „[originalname]_remapped“ and do some preparations.
  2. Back in 3ds Max render to texture will render all layers.
  3. Photoshop will collect all rendered images and update the psdfile.
  4. In 3ds Max the original object's material will be updated to use the remapped psd file.

That's it. You can now continue working on your psd file which will be organized just the same as before, with all layers, adjustment layers, folders and so on.


You cannot remap vector elements, such as vector masks, or text layers, or smartobjects. All of those elements will be rasterized.

Long layernames will be truncated.


If this script has saved your life maybe you could donate me some money? I have setup a paypal donation button on my blog:

I am looking for part-time or full-time positions as a 3d generalist in the games or films industry, as well as for freelance jobs. Please take a look at my current showreel:

If you have comments or critique, you are always welcome to write me a line. I can't promise that I will implement new feature requests, but I will try my best.


first release

    - fixed problem with too long layernames (more than 31 characters)
    - fixed error when trying to clear an adjustment layer
    - fixed error caused by slashes in layernames
    - fixed spelling error in messagebox

    - fixed problem with slashes in remapped_name variable (thanks to Pixhellmann)

    - fixed problem where projection was turned off and automatic unwrap got applied.

    - checked with Photoshop CS6
    - fixed issues with empty layers
    - cleaned photoshop history
    - fixed issue with wrong settings in RTT dialog
    - fixed issue with forwardslashes in layernames
    - improved general stability

    - fixed bug when render to texture dialog wasn't opened (thanks trebor777)

    - removed unneccessary command and execute steps. Compatibility to 3dsmax 2012 established.

    - Proper handling of premultiplied alphas (no more black halos).
    - fixed bug that occured when the baked layer's alpha was empty



Version Requirement: 
3ds Max 2012, 2013, 2014
Other Software Required: 
Adobe Photoshop CS or higher
Video URL: 
remappsd.mzp8.93 KB


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
3dhippie's picture

Great to hear it's working

Great to hear it's working for you.

JokerMartini's picture

Such a time save let me tell

Such a time save let me tell you.
Thanks man for this solid script.

John Martini
Digital Artist (new site)

3dhippie's picture

haha, whatever gets the job

haha, whatever gets the job done :-D

But still...I will need to take a look CS6.

cptSwing's picture

To be fair, while the bug

To be fair, while the bug stops the script from completing successfully, the renderoutput is still saved and salvagable, so a little copying around worked out fine for me.
I haven't tested it in CS5, no..

3dhippie's picture

Oh. Photoshop CS6 must have

Oh. Photoshop CS6 must have introduced changes to the scripting language. Thanks for pointing this out. I haven't debugged the script for CS6 yet, but will do so in near future. Have you successfully used it with CS5?

cptSwing's picture


While the rendering etc. seems to be working well, I get an error in Photoshop:

Error 8800: General Photoshop error occurred. This functionality may not be available in this version of Photoshop.
- The command "Set" is not currently available.
Line: 123
-> executeAction( idsetd, desc304, DialogModes.NO

It'll probably be CS6's fault? (I'm running Max2013 and CS6, both 64 bit)..

Thanks for looking, and from what is actually working, it looks pretty impressive!

pixhellmann's picture

I have 3dsmax in english 64

I have 3dsmax in english 64 bit (2011,2012 and 2013) on win7 home premium german.

perhaps its the mix of german operating system and english max.. don't know

Interactive, real-time, apps, games, character, animation, visualization, TV commercials, marketing and print material. Visit

3dhippie's picture

yes you're right. I must have

yes you're right. I must have updated the old script. Thanks for reminding me. I uploaded a correct version.

I don't know why both lines of code work on my computer whereas only one works on yours. I have the same system. Is your Max version english or german?

pixhellmann's picture

Old \\ Error still there

Hi David,

the old error we fixed together is still there..
if I put the old code back in to fix the \\ it works for me again.

I really want to know why this is not a problem on your computer..
I have Windows 7 Pro, German on an i7 PC. 3dsmax 2012 with the newest update and servicepacks.

search for this in the "preparation part" (around line 507):
remapped_name = (getFilenamePath original_name)+(getFilenameFile original_name)+"_remapped.psd"

and replace it with:
remapped_name = substituteString ((getFilenamePath original_name)+(getFilenameFile original_name)+"_remapped.psd") "\\" "/"

Interactive, real-time, apps, games, character, animation, visualization, TV commercials, marketing and print material. Visit

asymptote's picture

Cool, thanks for the

Cool, thanks for the update.
As far as my problem goes it's not the script, it works fine on a box mesh I create, but not on a RocketBox Libraries figure, and I can't work out why not.
I'll give your new script a go and see what happens.
It's just cool to watch it work ;) superb script.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.