Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import nuke
- def createExrCamVray( node ):
- mDat = node.metadata()
- reqFields = ['exr/camera%s' % i for i in ('FocalLength', 'Aperture', 'Transform')]
- if not set( reqFields ).issubset( mDat ):
- print 'no metdata for camera found'
- return
- first = node.firstFrame()
- last = node.lastFrame()
- ret = nuke.getFramesAndViews( 'Create Camera from Metadata', '%s-%s' %( first, last ) )
- fRange = nuke.FrameRange( ret[0] )
- cam = nuke.createNode( 'Camera2' )
- cam['useMatrix'].setValue( False )
- for k in ( 'focal', 'haperture', 'translate', 'rotate'):
- cam[k].setAnimated()
- task = nuke.ProgressTask( 'Baking camera from meta data in %s' % node.name() )
- for curTask, frame in enumerate( fRange ):
- if task.isCancelled():
- break
- task.setMessage( 'processing frame %s' % frame )
- val = node.metadata( 'exr/cameraFocalLength')
- cam['focal'].setValueAt(float(val),frame)
- val = node.metadata( 'exr/cameraAperture')
- tx = node.metadata('exr/cameraTransform')[12]
- tx = node.metadata('exr/cameraTransform')[13]
- tx = node.metadata('exr/cameraTransform')[14]
- cam['haperture'].setValueAt(float(val),frame)
- cam['translate'].setValueAt(float(tx),frame,0)
- cam['translate'].setValueAt(float(tx),frame,1)
- cam['translate'].setValueAt(float(tx),frame,2)
- # CONVERT STRING BACK TO LIST OBJECT AND ASSIGN
- matrixList = node.metadata('exr/cameraTransform')
- #for i, v in enumerate( matrixList ):
- # cam[ 'matrix' ].setValueAt( v, frame, i)
- # UPDATE PROGRESS BAR
- task.setProgress( int( float(curTask) / fRange.frames() *100) )
Advertisement
Add Comment
Please, Sign In to add comment