I came up with a script (with some help from Alexey) to achieve this.
import PhotoScan
outDir = "D:\\Some\\Directory\\"
chunk = PhotoScan.app.document.activeChunk
enabled = []
for cam in chunk.cameras:
if cam.enabled:
enabled.append(cam)
cam.enabled = False
for cam in enabled:
cam.enabled = True
oldMask = cam.mask()
cam.setMask(cam.image())
chunk.buildTexture(mapping="current",size=8192)
chunk.model.save(path=outDir + chunk.label + "_" + cam.label.replace(".tif",".obj") ,format="obj",texture_format="png",texture=True,normals=True,cameras=False)
cam.setMask(oldMask)
cam.enabled = False
for cam in enabled:
cam.enabled = True
First you need to UV unwrap your model, either in an external program, or by building a texture in photoscan.
Then disable all but the images you want projected individually, and run the script.
It will save out individual models/textures with each of the remaining enabled cameras projected using the current UVs.
The script also temporarily disables any masks present in the images.
Each saved model is named after the input image that is projected onto it in each case, and in the script above it assumes a .tif extension, but you could modify this to be more generic or suit another specific type by changing the extension.
It just saves out 8 bit PNG texture currently, i haven't looked at scripting out 32 bit textures yet!