Another driver approach
Using the methods outlined in Left / Right Test Purely checks to see if camera is on left or right of an object, where local z is up and y is forward.
Result where shapekey is a simple 2x z scaling.
Copy the script below, paste in text editor and run script to register the driver.
import bpy
def drive_shapekey(name):
cam = bpy.context.scene.camera
obj = bpy.context.scene.objects.get(name)
if not (cam and obj):
print("Driver Error")
return 0
mw = obj.matrix_world
loc = mw.translation.normalized()
left = mw.to_3x3().transposed()[0] # normal to the plane
left = -left if left.x < 0 else left # flip claus
d = left.dot((cam.matrix_world.translation - loc).normalized())
return abs(d)
bpy.app.driver_namespace["ds"] = drive_shapekey
In the shape key of the object you wish to drive, type in
#ds("Cube")
the hash "#" signals to blender that this is a python driver expression.
to drive that shapekey based on the left or right-ness of the object named "Cube" to the scene's camera.