Skip to content

Instantly share code, notes, and snippets.

@danbradham
Created September 20, 2016 17:11
Show Gist options
  • Save danbradham/02cf966e28b865182452a6ecb3bf3095 to your computer and use it in GitHub Desktop.
Save danbradham/02cf966e28b865182452a6ecb3bf3095 to your computer and use it in GitHub Desktop.
Reflection Card Rig
import pymel.core as pmc
import pymel.core.nodetypes as pmtypes
def create_ramp_shader(name):
ramp = pmc.shadingNode('ramp', asTexture=True, name=name + '_color')
reverse = pmc.shadingNode('reverse', asUtility=True, name=name + '_opacity')
ramp.outColor.connect(reverse.input)
surfaceShader = pmc.shadingNode('surfaceShader', asShader=True, name=name + '_solid')
shadingGroup = pmc.sets(renderable=True, noSurfaceShader=True, empty=True, name=name + '_solidSG')
surfaceShader.outColor.connect(shadingGroup.surfaceShader, force=True)
ramp.outColor.connect(surfaceShader.outColor)
reverse.output.connect(surfaceShader.outTransparency)
return surfaceShader, shadingGroup
def create_reflection_card(name):
plane = pmc.polyPlane(axis=(0, 1, 0), createUVs=True, h=12, w=12, sw=12, sh=12, ch=False)[0]
plane.rename(name)
polyPlane = plane.getShape()
mtl, sg = create_ramp_shader(name)
pmc.sets(sg, edit=True, forceElement=plane)
return plane, polyPlane
def create_reflection_card_rig(name):
lookatLocator = pmc.createNode('locator')
lookat = lookatLocator.getParent()
lookat.rename(name + '_aim')
plane, polyPlane = create_reflection_card(name)
xform=pmc.group([plane, lookat], name=name + '_grp')
pmc.aimConstraint(lookat, plane, aim=(0, 1, 0), upVector=(0, 0, -1), worldUpType='scene')
return xform, plane, lookat
create_reflection_card_rig('refl_card')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment