To project a video instead of a photo:
convert your video to an image sequence (with Nuke, AfterFX, Premiere, whatever...)
load it into your file node, then click on 'Use Image Sequence'
scroll in the timeline, and Maya will load the according frame
I finally found how to do this on the internet. Just call this procedure with a camera name and the worldspace coordinate of a point as attributes.
def worldSpaceToScreenSpace(camera, worldPoint):
# get current resolution
resWidth = mc.getAttr('defaultResolution.width')
resHeight = mc.getAttr('defaultResolution.height')
# get the dagPath ...
You need the MTypeId of the override you want to create. Find typeIDs.py in your Maya installation folder (.../lib/python2.7/site-packages/maya/app/renderSetup/model/typeIDs.py)
As you can see, the MTypeId of a shader override is 0x58000386.
Then, just create a layer and a collection, and call your createOverride method:
from maya.app import renderSetup
Select your camera, locators (if exported), and anything else from Nuke. Group them all together with ctrl+g and modify that group as a whole.
You can scale uniformly (but not independent axes), rotate, and translate.
Often one trick is to snap the pivot point of the group to a specific reference point (hold down d and v then drag to the reference point, ...
This still isn't as easy as it should be, but the way forward is to export your geometry as Alembic. It supports many textured objects, and even animated sequences. Depending on your version of Maya, you may need to install a plugin, but it is much better than dealing with OBJ and FBX as the interchange format in most cases.
I solved my own problem after some more trial and error. For awhile it looked like the fact that I was using Mental Ray shaders combined with general shaders was the problem, but that didn't really make sense so I kept tweaking. It turns out that an image plane I had tied to my camera was the problem. The image on the plane never rendered out, so I assumed ...