def getInfoLens(self): lens = self.lens self.fback_w_cm = tde4.getLensFBackWidth(lens) self.fback_h_cm = tde4.getLensFBackHeight(lens) self.p_aspect = tde4.getLensPixelAspect(lens) self.lco_x = tde4.getLensLensCenterX(lens) self.lco_y = tde4.getLensLensCenterY(lens)
def getFocalParameters(lensTmp): # get the captor size fbxTmp = tde4.getLensFBackWidth(lensTmp) fbyTmp = tde4.getLensFBackHeight(lensTmp) # get lensTmp Parameters folcalParameter = dict() folcalParameter["filmW"] = fbxTmp folcalParameter["filmH"] = fbyTmp folcalParameter["focalLength"] = tde4.getLensFocalLength(lensTmp) folcalParameter["pixelAspect"] = tde4.getLensPixelAspect(lensTmp) #TODO log.debug(folcalParameter) return folcalParameter
def exportNukeDewarpNode(id_cam,offset,nuke_path): id_lens = tde4.getCameraLens(id_cam) model = tde4.getLensLDModel(id_lens) num_frames = tde4.getCameraNoFrames(id_cam) w_fb_cm = tde4.getLensFBackWidth(id_lens) h_fb_cm = tde4.getLensFBackHeight(id_lens) lco_x_cm = tde4.getLensLensCenterX(id_lens) lco_y_cm = tde4.getLensLensCenterY(id_lens) pxa = tde4.getLensPixelAspect(id_lens) # xa,xb,ya,yb in unit coordinates, in this order. xa_unit,xb_unit,ya_unit,yb_unit = tde4.getCameraFOV(id_cam) f = open(nuke_path,"w") try: f.write('# Created by 3DEqualizer4 using Export Nuke Distortion Nodes export script\n') f.write("LD" + nukify_name(model) + ' {\n') f.write(' direction undistort\n') ################################ # focal length # ################################ if is_focal_length_dynamic(id_cam): # write focal length curve if dynamic # print 'dynamic focal length' f.write(' tde4_focal_length_cm {{curve ') for frame in range(num_frames): # Internally, frames start at 1. focal = tde4.getCameraFocalLength(id_cam,frame + 1) f.write ('x%i %.7f ' % (frame + offset,focal)) f.write('}}\n') else: # write static focal length otherwise # print 'static focal length' f.write(' tde4_focal_length_cm %.7f \n' % tde4.getCameraFocalLength(id_cam,1)) ################################ # focus distance # ################################ # For Release 1 this function return False, so no problem with getCameraFocus. if is_focus_distance_dynamic(id_cam): # write focus distance curve if dynamic # print 'dynamic focus distance' f.write(' tde4_custom_focus_distance_cm {{curve ') for frame in range(num_frames): # Internally, frames start at 1. focus = tde4.getCameraFocus(id_cam,frame + 1) f.write ('x%i %.7f ' % (frame + offset,focus)) f.write('}}\n') else: try: # write static focus distance otherwise f.write(' tde4_custom_focus_distance_cm %.7f \n' % tde4.getCameraFocus(id_cam,1)) except: # For Release 1 we simply write out the default value to Nuke. f.write(' tde4_custom_focus_distance_cm 100.0 \n') ################################ # built-in parameters # ################################ # the remaining five built-in parameters f.write(' tde4_filmback_width_cm %.7f \n' % w_fb_cm) f.write(' tde4_filmback_height_cm %.7f \n' % h_fb_cm) f.write(' tde4_lens_center_offset_x_cm %.7f \n' % lco_x_cm) f.write(' tde4_lens_center_offset_y_cm %.7f \n' % lco_y_cm) f.write(' tde4_pixel_aspect %.7f \n' % pxa) ################################ # field-of-view # ################################ f.write(' field_of_view_xa_unit %.7f \n' % xa_unit) f.write(' field_of_view_xb_unit %.7f \n' % xb_unit) f.write(' field_of_view_ya_unit %.7f \n' % ya_unit) f.write(' field_of_view_yb_unit %.7f \n' % yb_unit) # write distortion parameters # # dynamic distortion dyndistmode = get_dynamic_distortion_mode(id_lens) old_api = True try: for para in getLDmodelParameterList(model): tde4.getLensLDAdjustableParameter(id_lens, para, 1) break except: old_api = False if old_api: # dynamic focal length (zoom) if dyndistmode=="DISTORTION_DYNAMIC_FOCAL_LENGTH": # print 'dynamic lens distortion, focal length' for para in getLDmodelParameterList(model): f.write(' ' + nukify_name(para) + ' {{curve ') for frame in range(num_frames): # Internally, frames start at 1. focal = tde4.getCameraFocalLength(id_cam,frame + 1) f.write ('x%i %.7f ' % (frame + offset,tde4.getLensLDAdjustableParameter(id_lens,para,focal))) f.write('}}\n') # dynamic focus distance if dyndistmode=="DISTORTION_DYNAMIC_FOCUS_DISTANCE": # print 'dynamic lens distortion, focus distance' for para in getLDmodelParameterList(model): f.write(' ' + nukify_name(para) + ' {{curve ') for frame in range(num_frames): # Older Releases do not have Focus-methods. try: # Internally, frames start at 1. focus = tde4.getCameraFocus(id_cam,frame + 1) except: focus = 100.0 f.write('x%i %.7f ' % (frame + offset,tde4.getLensLDAdjustableParameter(id_lens,para,focus))) f.write('}}\n') # static distortion if dyndistmode=="DISTORTION_STATIC": # print 'static lens distortion' for para in getLDmodelParameterList(model): f.write(' ' + nukify_name(para) + ' %.7f \n'%tde4.getLensLDAdjustableParameter(id_lens,para,1)) else: # new API if dyndistmode=="DISTORTION_STATIC": # print 'static lens distortion' for para in getLDmodelParameterList(model): f.write(' ' + nukify_name(para) + ' %.7f \n'%tde4.getLensLDAdjustableParameter(id_lens,para,1,1)) else: # print 'dynamic lens distortion,' # dynamic for para in getLDmodelParameterList(model): f.write(' ' + nukify_name(para) + ' {{curve ') for frame in range(num_frames): # Internally, frames start at 1. focal = tde4.getCameraFocalLength(id_cam,frame + 1) focus = tde4.getCameraFocus(id_cam,frame + 1) f.write('x%i %.7f ' % (frame + offset,tde4.getLensLDAdjustableParameter(id_lens,para,focal,focus))) # print "%i[3DE4] -> %i[Nuke]" % (frame + tde4.getCameraFrameOffset(id_cam),frame + offset) f.write('}}\n') f.write(' name LD_3DE4_' + decode_entities(tde4.getCameraName(id_cam)) + '\n') f.write('}\n') finally: f.close()
if tde4.getCameraStereoOrientation( cam) == 'STEREO_LEFT' and tde4.getCameraStereoMode( cam) != 'STEREO_OFF': name = ShotName + '_trk_camLeft' elif tde4.getCameraStereoOrientation( cam ) == 'STEREO_RIGHT' and tde4.getCameraStereoMode( cam) != 'STEREO_OFF': name = ShotName + '_trk_camRight' else: name = ShotName + '_trk_cam' #name = "%s_%s_1"%(name,index) index += 1 fback_w = tde4.getLensFBackWidth(lens) fback_h = tde4.getLensFBackHeight(lens) p_aspect = tde4.getLensPixelAspect(lens) focal = tde4.getCameraFocalLength(cam, 1) lco_x = tde4.getLensLensCenterX(lens) lco_y = tde4.getLensLensCenterY(lens) # convert filmback to inch... fback_w = fback_w / 2.54 fback_h = fback_h / 2.54 lco_x = -lco_x / 2.54 lco_y = -lco_y / 2.54 # convert focal length to mm... focal = focal * 10.0 # create camera... f.write("\n")
def exportCameras(f, cameras, camFrameStart, exportPath, campg, outSize, date): for cameraIndex, cam in enumerate(cameras): frameStart = int(camFrameStart[cameraIndex]) frame0 = frameStart - 1 camInfo = tools.TDECamInfo(cam, cameraIndex) cameraName = camInfo.name cameraPath = camInfo.cameraPath projectName = camInfo.projectName projectPath = camInfo.projectPath rez_x = camInfo.rez_x rez_y = camInfo.rez_y firstFrame = camInfo.firstFrame lastFrame = camInfo.lastFrame offset = camInfo.offset noframes = camInfo.noframes offset = int(firstFrame) - int(frameStart) model = camInfo.model camType = camInfo.camType model_maya = tools.getLDmodelNukeNodeName(model) lens = camInfo.lens if lens is not None: fback_w = tde4.getLensFBackWidth(lens) fback_h = tde4.getLensFBackHeight(lens) p_aspect = tde4.getLensPixelAspect(lens) focal = tde4.getCameraFocalLength(cam, 1) lco_x = tde4.getLensLensCenterX(lens) lco_y = tde4.getLensLensCenterY(lens) # convert filmback to inch... fback_w = fback_w / 2.54 fback_h = fback_h / 2.54 lco_x_in = -lco_x / 2.54 lco_y_in = -lco_y / 2.54 # convert focal length to mm... focal = focal * 10.0 # get the focalLenght # fotalLenght = tde4.getLensFocalLength(lens) # UNUSED # get the focusDistance # focus = tde4.getLensFocus(lens) # UNUSED # create camera f.write("\n") f.write("// create camera %s...\n" % cameraName) f.write( "string $cameraNodes[] = `camera -name \"camera_%s\" -hfa %.15f -vfa %.15f -fl %.15f -ncp 0.01 -fcp 10000 -shutterAngle 180 -ff \"overscan\"`;\n" % (cameraName, fback_w, fback_h, focal)) f.write("string $cameraTransform = $cameraNodes[0];\n") f.write("string $cameraShape = $cameraNodes[1];\n") f.write( "xform -zeroTransformPivots -rotateOrder zxy $cameraTransform;\n" ) f.write( "setAttr ($cameraShape+\".horizontalFilmOffset\") %.15f;\n" % lco_x_in) f.write("setAttr ($cameraShape+\".verticalFilmOffset\") %.15f;\n" % lco_y_in) f.write( 'addAttr -ln "distortion_model" -dt "string" $cameraShape;\n') f.write( 'setAttr -type "string" ($cameraShape + ".distortion_model") %s;\n' % model_maya) ''' for para in (tools.getLDmodelParameterList(model)): f.write('addAttr -ln %s -dt "string" $cameraShape;\n'%tools.getLDmodelMayaParameterName(para)); f.write('setAttr -type "string" ($cameraShape + ".%s") %s;\n'%(tools.getLDmodelMayaParameterName(para),tde4.getLensLDAdjustableParameter(lens, para, fotalLenght, focus))) ''' f.write( 'addAttr -ln "pixel_aspect_ratio" -at "float" $cameraShape;\n') f.write('setAttr ($cameraShape + ".pixel_aspect_ratio") %s;\n' % p_aspect) ''' 'f.write('addAttr -ln "plate_resolution_x" -at "long" $cameraShape;\n'); f.write('setAttr ($cameraShape + ".plate_resolution_x") %s;\n'%rez_x) f.write('addAttr -ln "plate_resolution_y" -at "long" $cameraShape;\n'); f.write('setAttr ($cameraShape + ".plate_resolution_y") %s;\n'%rez_y) ''' f.write('addAttr -ln "frameOffset" -at "long" $cameraShape;\n') f.write("setAttr ($cameraShape + \".frameOffset\") %s;\n" % offset) f.write('addAttr -ln "lcoX" -at "double" $cameraShape;\n') f.write("setAttr ($cameraShape + \".lcoX\") %s;\n" % lco_x) f.write('addAttr -ln "lcoY" -at "double" $cameraShape;\n') f.write("setAttr ($cameraShape + \".lcoY\") %s;\n" % lco_y) f.write('addAttr -ln "lcoXin" -at "double" $cameraShape;\n') f.write("setAttr ($cameraShape + \".lcoXin\") %s;\n" % lco_x_in) f.write('addAttr -ln "lcoYin" -at "double" $cameraShape;\n') f.write("setAttr ($cameraShape + \".lcoYin\") %s;\n" % lco_y_in) p3d = tde4.getPGroupPosition3D(campg, cam, 1) p3d = convertZup(p3d, yup) f.write( "xform -translation %.15f %.15f %.15f $cameraTransform;\n" % (p3d[0], p3d[1], p3d[2])) r3d = tde4.getPGroupRotation3D(campg, cam, 1) rot = convertToAngles(r3d) f.write("xform -rotation %.15f %.15f %.15f $cameraTransform;\n" % rot) f.write("xform -scale 1 1 1 $cameraTransform;\n") # image plane... f.write("\n") f.write("// create image plane...\n") f.write("string $imagePlanes[] = `imagePlane`;\n") f.write("string $imagePlane = $imagePlanes[1];\n") f.write("select $imagePlane;\n") f.write("string $imagePlaneTransfo[] = `pickWalk -d up`;\n") f.write("select -cl;\n") f.write("cameraImagePlaneUpdate ($cameraShape, $imagePlane);\n") f.write("setAttr ($imagePlane + \".frameOffset\") %s;\n" % offset) f.write("setAttr ($imagePlane + \".offsetX\") %.15f;\n" % lco_x) f.write("setAttr ($imagePlane + \".offsetY\") %.15f;\n" % lco_y) f.write("setAttr ($imagePlane + \".type\") 1;\n") f.write("parent $imagePlaneTransfo[0] $cameraTransform;\n") path = tde4.getCameraPath(cam) sattr = tde4.getCameraSequenceAttr(cam) if camType == "SEQUENCE": f.write("setAttr ($imagePlane+\".useFrameExtension\") 1;\n") f.write( "expression -n \"frame_ext_expression\" -s($imagePlane+\".frameExtension=frame\");\n" ) pathPrepared = prepareImagePath(path, sattr[0]) else: f.write("setAttr ($imagePlane+\".useFrameExtension\") 0;\n") pathPrepared = path.replace("\\", "/") f.write( "setAttr ($imagePlane + \".imageName\") -type \"string\" \"%s\";\n" % (pathPrepared)) f.write("setAttr ($imagePlane + \".fit\") 4;\n") f.write("setAttr ($imagePlane + \".displayOnlyIfCurrent\") 1;\n") f.write("setAttr ($imagePlane + \".depth\") (9000/2);\n") # parent camera to scene group... f.write("\n") f.write("// parent camera to scene group...\n") f.write("parent $cameraTransform $sceneGroupName;\n") if camType == "REF_FRAME": # and hide_ref: f.write("setAttr ($cameraTransform +\".visibility\") 0;\n") # animate camera... if camType != "REF_FRAME": f.write("\n") f.write("// animating camera %s...\n" % cameraName) f.write("playbackOptions -min %d -max %d;\n" % (1 + frame0, noframes + frame0)) f.write("\n") frame = 1 rot0 = None while frame <= noframes: # rot/pos... p3d = tde4.getPGroupPosition3D(campg, cam, frame) p3d = convertZup(p3d, yup) r3d = tde4.getPGroupRotation3D(campg, cam, frame) rot = convertToAngles(r3d) if frame > 1: rot = [ angleMod360(rot0[0], rot[0]), angleMod360(rot0[1], rot[1]), angleMod360(rot0[2], rot[2]) ] rot0 = rot f.write( "setKeyframe -at translateX -t %d -v %.15f $cameraTransform; " % (frame + frame0, p3d[0])) f.write( "setKeyframe -at translateY -t %d -v %.15f $cameraTransform; " % (frame + frame0, p3d[1])) f.write( "setKeyframe -at translateZ -t %d -v %.15f $cameraTransform; " % (frame + frame0, p3d[2])) f.write( "setKeyframe -at rotateX -t %d -v %.15f $cameraTransform; " % (frame + frame0, rot[0])) f.write( "setKeyframe -at rotateY -t %d -v %.15f $cameraTransform; " % (frame + frame0, rot[1])) f.write( "setKeyframe -at rotateZ -t %d -v %.15f $cameraTransform; " % (frame + frame0, rot[2])) # focal length... focal = tde4.getCameraFocalLength(cam, frame) focal = focal * 10.0 f.write( "setKeyframe -at focalLength -t %d -v %.15f $cameraShape;\n" % (frame + frame0, focal)) frame += 1 # set Distortion f.write('addAttr -ln "distortion" -at "bool" $cameraShape;\n') if tools.cameraHasDistortion(cam): f.write('setAttr ($cameraShape + ".distortion") 1;\n') else: f.write('setAttr ($cameraShape + ".distortion") 0;\n') # change params as in old export to nuke # create new ones f.write( 'addAttr -ln "first_tracked_frame" -at long -dv 0 $cameraShape;\n') f.write( 'addAttr -ln "last_tracked_frame" -at long -dv 0 $cameraShape;\n') f.write('addAttr -ln "colorspace" -dt "string" $cameraShape;\n') f.write('addAttr -ln "RenderRez_X" -at long -dv 0 $cameraShape;\n') f.write('addAttr -ln "RenderRez_Y" -at long -dv 0 $cameraShape;\n') f.write('addAttr -ln "disto_comp" -dt "string" $cameraShape;\n') # set values minFrame = firstFrame f.write('int $minFrame = ' + str(minFrame) + '; \n') f.write('setAttr ($cameraShape + ".first_tracked_frame") $minFrame;\n') maxFrame = lastFrame f.write('int $maxFrame = ' + str(maxFrame) + '; \n') f.write('setAttr ($cameraShape + ".last_tracked_frame") $maxFrame;\n') # if firstFrame == lastFrame: if 'labo/log' in cameraPath: colorspace = getdata.getRootColorSpace(projectName) else: colorspace = 'sRGB' f.write('string $colorspace = "' + colorspace + '"; \n') f.write( 'setAttr -type "string" ($cameraShape + ".colorspace") $colorspace;\n' ) renderOutX = str(max(int(rez_x), int(outSize[cameraIndex].width))) renderOutY = str(max(int(rez_y), int(outSize[cameraIndex].height))) f.write('int $renderOutX = ' + str(renderOutX) + '; \n') # TODO if positive disto is other value f.write('setAttr ($cameraShape + ".RenderRez_X") $renderOutX; \n') # TODO if positive disto is other value f.write('int $renderOutY = ' + str(renderOutY) + '; \n') f.write('setAttr ($cameraShape + ".RenderRez_Y") $renderOutY; \n') f.write('string $exportFileName = "' + exportPath.replace("\\", "/") + '_undisto/' + cameraName + '_undisto.nk";\n') f.write( 'setAttr -type "string"($cameraShape + ".disto_comp") $exportFileName; \n' ) # other values coefX = 1.0 * int(renderOutX) / rez_x coefY = 1.0 * int(renderOutY) / rez_y oldhfa = fback_w oldvfa = fback_h newHfa = str(coefX * oldhfa) newVfa = str(coefY * oldvfa) f.write('setAttr ($cameraShape + ".hfa") ' + newHfa + '; \n') f.write('setAttr ($cameraShape + ".vfa") ' + newVfa + '; \n') f.write( 'string $initIplane[] = `listConnections -type "imagePlane" $cameraShape`; \n' ) f.write('string $camIplaneShape = $initIplane[0]; \n') f.write('setAttr ($camIplaneShape + ".sizeX") ' + newHfa + '; \n') f.write('setAttr ($camIplaneShape + ".sizeY") ' + newVfa + '; \n') undistoFilePath = camInfo.getUndistoImagePath(app='maya', date=date) f.write('setAttr -type "string" ($camIplaneShape + ".imageName") "' + undistoFilePath + '"; \n') f.write('setAttr ($camIplaneShape + ".type") 0; \n') # camera rendeable f.write('setAttr ($cameraShape + ".renderable") 1; \n') # keys in some params touchParam(f, '$cameraShape + ".hfa"', insertKey=True, lock=False) touchParam(f, '$cameraShape + ".vfa"', insertKey=True, lock=False) pixelAspectRatioParamName = '$cameraShape + ".pixel_aspect_ratio"' touchParam(f, pixelAspectRatioParamName, insertKey=True, lock=True) renderRezXparamName = '$cameraShape + ".RenderRez_X"' touchParam(f, renderRezXparamName, insertKey=True, lock=True) renderRezTparamName = '$cameraShape + ".RenderRez_Y"' touchParam(f, renderRezTparamName, insertKey=True, lock=True) touchParam(f, '$cameraShape + ".distortion"') touchParam(f, '$cameraShape + ".first_tracked_frame"', insertKey=False) touchParam(f, '$cameraShape + ".last_tracked_frame"', insertKey=False) touchParam(f, '$cameraShape + ".colorspace"', insertKey=False) touchParam(f, '$cameraShape + ".frameOffset"', insertKey=False) # set render globals f.write('setAttr "defaultResolution.width" ' + renderOutX + '; \n') f.write('setAttr "defaultResolution.height" ' + renderOutY + '; \n') # delete old params f.write('deleteAttr ($cameraShape + ".distortion_model"); \n') f.write('deleteAttr ($cameraShape + ".lcoX"); \n') f.write('deleteAttr ($cameraShape + ".lcoY"); \n') f.write('deleteAttr ($cameraShape + ".lcoXin"); \n') f.write('deleteAttr ($cameraShape + ".lcoYin"); \n')
def generateNukeNode(cam, direction, offset=0, index=0): lens = tde4.getCameraLens(cam) model = tde4.getLensLDModel(lens) num_frames = tde4.getCameraNoFrames(cam) w_fb_cm = tde4.getLensFBackWidth(lens) h_fb_cm = tde4.getLensFBackHeight(lens) lco_x_cm = tde4.getLensLensCenterX(lens) lco_y_cm = tde4.getLensLensCenterY(lens) pxa = tde4.getLensPixelAspect(lens) # xa,xb,ya,yb in unit coordinates, in this order. fov = tde4.getCameraFOV(cam) print 'camera: ', tde4.getCameraName(cam) print 'offset:', offset print 'lens:', tde4.getLensName(lens) print 'model: ', model nukeNode = [] nukeNode.append('# Created by 3DEqualizer4 ') nukeNode.append('# using Export Nuke Distortion Nodes export script') nukeNode.append("LD" + tools.nukify_name(model) + ' {') nukeNode.append(' direction ' + direction) # write focal length curve if dynamic if tde4.getCameraZoomingFlag(cam): print 'dynamic focal length' dynFocalLength = [] for frame in range(1, num_frames + 1): dynFocalLength.append('x%i' % (frame + offset)) dynFocalLength.append(' %.7f ' % tde4.getCameraFocalLength(cam, frame)) focalLenghtStr = "".join(dynFocalLength) nukeNode.append(' tde4_focal_length_cm {{curve ' + focalLenghtStr + ' }}') # write static focal length else else: print 'static focal length' focalLenghtStr = ' tde4_focal_length_cm %.7f ' focalLenghtStr = focalLenghtStr % tde4.getCameraFocalLength(cam, 1) nukeNode.append(focalLenghtStr) # write focus distance curve if dynamic try: if tde4.getCameraFocusMode(cam) == "FOCUS_DYNAMIC": print 'dynamic focus distance' dynFocusDistance = [] for frame in range(1, num_frames + 1): dynFocusDistance.append('x%i' % (frame + offset)) dynFocusDistance.append(' %.7f ' % tde4.getCameraFocus(cam, frame)) focusDStr = "".join(dynFocusDistance) toWrite = ' tde4_custom_focus_distance_cm {{curve ' + focusDStr + '}}' nukeNode.append(toWrite) except: # For 3DE4 Release 1: pass # write static focus distance else else: print 'static focus distance' try: cameraFocus = ' tde4_custom_focus_distance_cm %.7f ' cameraFocus = cameraFocus % tde4.getCameraFocus(cam, 1) nukeNode.append(cameraFocus) except: # For 3DE4 Release 1: nukeNode.append(' tde4_custom_focus_distance_cm 100.0 ') # write camera nukeNode.append(' tde4_filmback_width_cm %.7f ' % w_fb_cm) nukeNode.append(' tde4_filmback_height_cm %.7f ' % h_fb_cm) nukeNode.append(' tde4_lens_center_offset_x_cm %.7f ' % lco_x_cm) nukeNode.append(' tde4_lens_center_offset_y_cm %.7f ' % lco_y_cm) nukeNode.append(' tde4_pixel_aspect %.7f ' % pxa) nukeNode.append(' field_of_view_xa_unit %.7f ' % fov[0]) nukeNode.append(' field_of_view_ya_unit %.7f ' % fov[2]) nukeNode.append(' field_of_view_xb_unit %.7f ' % fov[1]) nukeNode.append(' field_of_view_yb_unit %.7f ' % fov[3]) nukeNode.append(' filter Simon') # dynamic distortion try: dyndistmode = tde4.getLensDynamicDistortionMode(lens) except: # For 3DE4 Release 1: if tde4.getLensDynamicDistortionFlag(lens) == 1: dyndistmode = "DISTORTION_DYNAMIC_FOCAL_LENGTH" else: dyndistmode = "DISTORTION_STATIC" if dyndistmode == "DISTORTION_STATIC": print 'static lens distortion' for para in (tools.getLDmodelParameterList(model)): distStr = ' %.7f ' % tde4.getLensLDAdjustableParameter( lens, para, 1, 1) nukeNode.append(' ' + tools.nukify_name(para) + distStr) else: print 'dynamic lens distortion,' # dynamic for para in (tools.getLDmodelParameterList(model)): lensCurve = [] for frame in range(1, num_frames + 1): focal = tde4.getCameraFocalLength(cam, frame) focus = tde4.getCameraFocus(cam, frame) lensCurve.append('x%i' % (frame + offset)) frameParam = tde4.getLensLDAdjustableParameter( lens, para, focal, focus) lensCurve.append(' %.7f ' % frameParam) lensCurveStr = ' {{curve ' + "".join(lensCurve) + ' }}' nukeNode.append(' ' + tools.nukify_name(para) + lensCurveStr) nameNode = 'name ' + getLDNodeName(cam, direction, offset, index) nukeNode.append(nameNode) nukeNode.append('}') return nukeNode
def exportNukeDewarpNode(cam, offset, nuke_path): lens = tde4.getCameraLens(cam) model = tde4.getLensLDModel(lens) num_frames = tde4.getCameraNoFrames(cam) w_fb_cm = tde4.getLensFBackWidth(lens) h_fb_cm = tde4.getLensFBackHeight(lens) lco_x_cm = tde4.getLensLensCenterX(lens) lco_y_cm = tde4.getLensLensCenterY(lens) pxa = tde4.getLensPixelAspect(lens) # xa,xb,ya,yb in unit coordinates, in this order. fov = tde4.getCameraFOV(cam) print 'camera: ', tde4.getCameraName(cam) print 'offset:', offset print 'lens:', tde4.getLensName(lens) print 'model: ', model f = open(nuke_path, "w") try: f.write( '# Created by 3DEqualizer4 using Export Nuke Distortion Nodes export script\n' ) f.write("LD" + nukify_name(model) + ' {\n') f.write(' direction undistort\n') # write focal length curve if dynamic if tde4.getCameraZoomingFlag(cam): print 'dynamic focal length' f.write(' tde4_focal_length_cm {{curve ') for frame in range(1, num_frames + 1): f.write('x%i' % (frame + offset)) f.write(' %.7f ' % tde4.getCameraFocalLength(cam, frame)) f.write('}}\n') # write static focal length else else: print 'static focal length' f.write(' tde4_focal_length_cm %.7f \n' % tde4.getCameraFocalLength(cam, 1)) # write focus distance curve if dynamic try: if tde4.getCameraFocusMode(cam) == "FOCUS_DYNAMIC": print 'dynamic focus distance' f.write(' tde4_custom_focus_distance_cm {{curve ') for frame in range(1, num_frames + 1): f.write('x%i' % (frame + offset)) f.write(' %.7f ' % tde4.getCameraFocus(cam, frame)) f.write('}}\n') except: # For 3DE4 Release 1: pass # write static focus distance else else: print 'static focus distance' try: f.write(' tde4_custom_focus_distance_cm %.7f \n' % tde4.getCameraFocus(cam, 1)) except: # For 3DE4 Release 1: f.write(' tde4_custom_focus_distance_cm 100.0 \n') # write camera f.write(' tde4_filmback_width_cm %.7f \n' % w_fb_cm) f.write(' tde4_filmback_height_cm %.7f \n' % h_fb_cm) f.write(' tde4_lens_center_offset_x_cm %.7f \n' % lco_x_cm) f.write(' tde4_lens_center_offset_y_cm %.7f \n' % lco_y_cm) f.write(' tde4_pixel_aspect %.7f \n' % pxa) f.write(' field_of_view_xa_unit %.7f \n' % fov[0]) f.write(' field_of_view_ya_unit %.7f \n' % fov[2]) f.write(' field_of_view_xb_unit %.7f \n' % fov[1]) f.write(' field_of_view_yb_unit %.7f \n' % fov[3]) # write distortion parameters # # dynamic distortion try: dyndistmode = tde4.getLensDynamicDistortionMode(lens) except: # For 3DE4 Release 1: if tde4.getLensDynamicDistortionFlag(lens) == 1: dyndistmode = "DISTORTION_DYNAMIC_FOCAL_LENGTH" else: dyndistmode = "DISTORTION_STATIC" old_api = True try: tde4.getLensLDAdjustableParameter(lens, para, 1) except: old_api = False if old_api: if dyndistmode == "DISTORTION_DYNAMIC_FOCAL_LENGTH": print 'dynamic lens distortion, focal length' # dynamic focal length (zoom) for para in (getLDmodelParameterList(model)): f.write(' ' + nukify_name(para) + ' {{curve ') for frame in range(1, num_frames + 1): focal = tde4.getCameraFocalLength(cam, frame) f.write('x%i' % (frame + offset)) f.write(' %.7f ' % tde4.getLensLDAdjustableParameter( lens, para, focal)) f.write('}}\n') if dyndistmode == "DISTORTION_DYNAMIC_FOCUS_DISTANCE": print 'dynamic lens distortion, focus distance' # dynamic focus distance for para in (getLDmodelParameterList(model)): f.write(' ' + nukify_name(para) + ' {{curve ') for frame in range(1, num_frames + 1): # Older Releases do not have Focus-methods. try: focus = tde4.getCameraFocus(cam, frame) except: focus = 100.0 f.write('x%i' % (frame + offset)) f.write(' %.7f ' % tde4.getLensLDAdjustableParameter( lens, para, focus)) f.write('}}\n') # static distortion if dyndistmode == "DISTORTION_STATIC": print 'static lens distortion' for para in (getLDmodelParameterList(model)): f.write(' ' + nukify_name(para) + ' %.7f \n' % tde4.getLensLDAdjustableParameter(lens, para, 1)) else: # new API if dyndistmode == "DISTORTION_STATIC": print 'static lens distortion' for para in (getLDmodelParameterList(model)): f.write( ' ' + nukify_name(para) + ' %.7f \n' % tde4.getLensLDAdjustableParameter(lens, para, 1, 1)) else: print 'dynamic lens distortion,' # dynamic for para in (getLDmodelParameterList(model)): f.write(' ' + nukify_name(para) + ' {{curve ') for frame in range(1, num_frames + 1): focal = tde4.getCameraFocalLength(cam, frame) focus = tde4.getCameraFocus(cam, frame) f.write('x%i' % (frame + offset)) f.write(' %.7f ' % tde4.getLensLDAdjustableParameter( lens, para, focal, focus)) f.write('}}\n') f.write(' name LD_3DE4_' + decode_entities(tde4.getCameraName(cam)) + '\n') f.write('}\n') finally: f.close()
def main(): campg = None pgl = tde4.getPGroupList() for pg in pgl: if tde4.getPGroupType(pg) == "CAMERA": campg = pg if campg == None: tde4.postQuestionRequester("Export Maya...", "Error, there is no camera point group.", "Ok") # # open requester... try: req = _export_requester_maya except (ValueError, NameError, TypeError): _export_requester_maya = tde4.createCustomRequester() req = _export_requester_maya tde4.addFileWidget(req, "file_browser", "Exportfile...", "*.mel") tde4.addTextFieldWidget(req, "startframe_field", "Startframe", "1") # tde4.addOptionMenuWidget(req,"mode_menu","Orientation","Y-Up", "Z-Up") tde4.addToggleWidget(req, "hide_ref_frames", "Hide Reference Frames", 0) cam = tde4.getCurrentCamera() offset = tde4.getCameraFrameOffset(cam) tde4.setWidgetValue(req, "startframe_field", str(offset)) # ret = tde4.postCustomRequester(req,"Export Maya (MEL-Script)...",600,0,"Ok","Cancel") ret = 1 if ret == 1: # yup = tde4.getWidgetValue(req,"mode_menu") # if yup==2: yup = 0 yup = 1 # path = tde4.getWidgetValue(req,"file_browser") path = get_mel_filename()['path'] # frame0 = float(tde4.getWidgetValue(req,"startframe_field")) # frame0 -= 1 framerange = get_frame_range() playbackoptions = 'playbackOptions -min {0} -max {1};' playbackoptions = playbackoptions.format(framerange['first'], framerange['last']) frame0 = framerange['first'] - 1 hide_ref = tde4.getWidgetValue(req, "hide_ref_frames") if path != None: if not path.endswith('.mel'): path = path + '.mel' f = open(path, "w") if not f.closed: # # write some comments... f.write("//\n") f.write("// Maya/MEL export data written by %s\n" % tde4.get3DEVersion()) f.write("//\n") f.write( "// All lengths are in centimeter, all angles are in degree.\n" ) f.write("//\n\n") # # write scene group... groupname = """// create scene group... string $sceneGroupName = `group -em -name "mm_{name}"`; """ # f.write("// create scene group...\n") # f.write("string $sceneGroupName = `group -em -name \"Scene\"`;\n") groupname = groupname.format( name=get_mel_filename()['filename'][:-4]) f.write(groupname) # # write cameras... cl = tde4.getCameraList() index = 1 for cam in cl: camType = tde4.getCameraType(cam) noframes = tde4.getCameraNoFrames(cam) lens = tde4.getCameraLens(cam) if lens != None: name = validName(tde4.getCameraName(cam)) cam_name = 'cam_mm_' + name # name = "%s_%s_1"%(name,index) # name = "%s_%s"%(name,index) name = cam_name index += 1 fback_w = tde4.getLensFBackWidth(lens) fback_h = tde4.getLensFBackHeight(lens) p_aspect = tde4.getLensPixelAspect(lens) focal = tde4.getCameraFocalLength(cam, 1) lco_x = tde4.getLensLensCenterX(lens) lco_y = tde4.getLensLensCenterY(lens) # convert filmback to inch... fback_w = fback_w / 2.54 fback_h = fback_h / 2.54 lco_x = -lco_x / 2.54 lco_y = -lco_y / 2.54 # convert focal length to mm... focal = focal * 10.0 # create camera... f.write("\n") f.write("// create camera %s...\n" % name) f.write( "string $cameraNodes[] = `camera -name \"%s\" -hfa %.15f -vfa %.15f -fl %.15f -ncp 0.01 -fcp 10000 -shutterAngle 180 -ff \"overscan\"`;\n" % (name, fback_w, fback_h, focal)) f.write("string $cameraTransform = $cameraNodes[0];\n") f.write("string $cameraShape = $cameraNodes[1];\n") f.write( "xform -zeroTransformPivots -rotateOrder zxy $cameraTransform;\n" ) f.write( "setAttr ($cameraShape+\".horizontalFilmOffset\") %.15f;\n" % lco_x) f.write( "setAttr ($cameraShape+\".verticalFilmOffset\") %.15f;\n" % lco_y) f.write("setAttr ($cameraShape+\".renderable\") 1;\n") p3d = tde4.getPGroupPosition3D(campg, cam, 1) p3d = convertZup(p3d, yup) f.write( "xform -translation %.15f %.15f %.15f $cameraTransform;\n" % (p3d[0], p3d[1], p3d[2])) r3d = tde4.getPGroupRotation3D(campg, cam, 1) rot = convertToAngles(r3d) f.write( "xform -rotation %.15f %.15f %.15f $cameraTransform;\n" % rot) f.write("xform -scale 1 1 1 $cameraTransform;\n") """add pipeline attributes to camerashape""" # attribs = add_pipeline_attribs() ### OBSOLETE WAY attribs = add_pipeline_parms() f.write(attribs) # image plane... f.write("\n\n\n\n// create image plane...\n") f.write( "string $imagePlane = `createNode imagePlane`;\n") f.write( "cameraImagePlaneUpdate ($cameraShape, $imagePlane);\n" ) f.write( "setAttr ($imagePlane + \".offsetX\") %.15f;\n" % lco_x) f.write( "setAttr ($imagePlane + \".offsetY\") %.15f;\n" % lco_y) if camType == "SEQUENCE": f.write( "setAttr ($imagePlane+\".useFrameExtension\") 1;\n" ) else: f.write( "setAttr ($imagePlane+\".useFrameExtension\") 0;\n" ) f.write( "expression -n \"frame_ext_expression\" -s ($imagePlane+\".frameExtension=frame\");\n" ) path = tde4.getCameraPath(cam) sattr = tde4.getCameraSequenceAttr(cam) path = prepareImagePath(path, sattr[0]) f.write( "setAttr ($imagePlane + \".imageName\") -type \"string\" \"%s\";\n" % (path)) f.write("setAttr ($imagePlane + \".fit\") 4;\n") f.write( "setAttr ($imagePlane + \".displayOnlyIfCurrent\") 1;\n" ) f.write( "setAttr ($imagePlane + \".depth\") (9000/2);\n") # parent camera to scene group... f.write("\n") f.write("// parent camera to scene group...\n") f.write("parent $cameraTransform $sceneGroupName;\n") if camType == "REF_FRAME" and hide_ref: f.write( "setAttr ($cameraTransform +\".visibility\") 0;\n" ) # animate camera... if camType != "REF_FRAME": f.write("\n") f.write("// animating camera %s...\n" % name) f.write(playbackoptions) # f.write("playbackOptions -min %d -max %d;\n"%(1+frame0,noframes+frame0)) f.write("\n\n") frame = 1 while frame <= noframes: # rot/pos... p3d = tde4.getPGroupPosition3D(campg, cam, frame) p3d = convertZup(p3d, yup) r3d = tde4.getPGroupRotation3D(campg, cam, frame) rot = convertToAngles(r3d) if frame > 1: rot = [ angleMod360(rot0[0], rot[0]), angleMod360(rot0[1], rot[1]), angleMod360(rot0[2], rot[2]) ] rot0 = rot f.write( "setKeyframe -at translateX -t %d -v %.15f $cameraTransform; " % (frame + frame0, p3d[0])) f.write( "setKeyframe -at translateY -t %d -v %.15f $cameraTransform; " % (frame + frame0, p3d[1])) f.write( "setKeyframe -at translateZ -t %d -v %.15f $cameraTransform; " % (frame + frame0, p3d[2])) f.write( "setKeyframe -at rotateX -t %d -v %.15f $cameraTransform; " % (frame + frame0, rot[0])) f.write( "setKeyframe -at rotateY -t %d -v %.15f $cameraTransform; " % (frame + frame0, rot[1])) f.write( "setKeyframe -at rotateZ -t %d -v %.15f $cameraTransform; " % (frame + frame0, rot[2])) # focal length... focal = tde4.getCameraFocalLength(cam, frame) focal = focal * 10.0 f.write( "setKeyframe -at focalLength -t %d -v %.15f $cameraShape;\n" % (frame + frame0, focal)) frame += 1 # # write camera point group... f.write("\n") f.write("// create camera point group...\n") name = "cameraPGroup_%s_1" % validName( tde4.getPGroupName(campg)) f.write( "string $pointGroupName = `group -em -name \"%s\" -parent $sceneGroupName`;\n" % name) # f.write("$pointGroupName = ($sceneGroupName + \"|\" + $pointGroupName);\n") f.write("\n") # write points... l = tde4.getPointList(campg) for p in l: if tde4.isPointCalculated3D(campg, p): name = tde4.getPointName(campg, p) name = "p%s" % validName(name) p3d = tde4.getPointCalcPosition3D(campg, p) p3d = convertZup(p3d, yup) f.write("\n") f.write("// create point %s...\n" % name) f.write( "string $locator = stringArrayToString(`spaceLocator -name %s`, \"\");\n" % name) f.write("$locator = (\"|\" + $locator);\n") f.write("xform -t %.15f %.15f %.15f $locator;\n" % (p3d[0], p3d[1], p3d[2])) f.write("parent $locator $pointGroupName;\n") f.write("\n") f.write( "xform -zeroTransformPivots -rotateOrder zxy -scale 1.000000 1.000000 1.000000 $pointGroupName;\n" ) f.write("\n") # # write object/mocap point groups... camera = tde4.getCurrentCamera() noframes = tde4.getCameraNoFrames(camera) pgl = tde4.getPGroupList() index = 1 for pg in pgl: if tde4.getPGroupType(pg) == "OBJECT" and camera != None: f.write("\n") f.write("// create object point group...\n") pgname = "objectPGroup_%s_%d_1" % (validName( tde4.getPGroupName(pg)), index) index += 1 f.write( "string $pointGroupName = `group -em -name \"%s\" -parent $sceneGroupName`;\n" % pgname) f.write( "$pointGroupName = ($sceneGroupName + \"|\" + $pointGroupName);\n" ) # write points... l = tde4.getPointList(pg) for p in l: if tde4.isPointCalculated3D(pg, p): name = tde4.getPointName(pg, p) name = "p%s" % validName(name) p3d = tde4.getPointCalcPosition3D(pg, p) p3d = convertZup(p3d, yup) f.write("\n") f.write("// create point %s...\n" % name) f.write( "string $locator = stringArrayToString(`spaceLocator -name %s`, \"\");\n" % name) f.write("$locator = (\"|\" + $locator);\n") f.write( "xform -t %.15f %.15f %.15f $locator;\n" % (p3d[0], p3d[1], p3d[2])) f.write("parent $locator $pointGroupName;\n") f.write("\n") scale = tde4.getPGroupScale3D(pg) f.write( "xform -zeroTransformPivots -rotateOrder zxy -scale %.15f %.15f %.15f $pointGroupName;\n" % (scale, scale, scale)) # animate object point group... f.write("\n") f.write("// animating point group %s...\n" % pgname) frame = 1 while frame <= noframes: # rot/pos... p3d = tde4.getPGroupPosition3D(pg, camera, frame) p3d = convertZup(p3d, yup) r3d = tde4.getPGroupRotation3D(pg, camera, frame) rot = convertToAngles(r3d) if frame > 1: rot = [ angleMod360(rot0[0], rot[0]), angleMod360(rot0[1], rot[1]), angleMod360(rot0[2], rot[2]) ] rot0 = rot f.write( "setKeyframe -at translateX -t %d -v %.15f $pointGroupName; " % (frame + frame0, p3d[0])) f.write( "setKeyframe -at translateY -t %d -v %.15f $pointGroupName; " % (frame + frame0, p3d[1])) f.write( "setKeyframe -at translateZ -t %d -v %.15f $pointGroupName; " % (frame + frame0, p3d[2])) f.write( "setKeyframe -at rotateX -t %d -v %.15f $pointGroupName; " % (frame + frame0, rot[0])) f.write( "setKeyframe -at rotateY -t %d -v %.15f $pointGroupName; " % (frame + frame0, rot[1])) f.write( "setKeyframe -at rotateZ -t %d -v %.15f $pointGroupName;\n" % (frame + frame0, rot[2])) frame += 1 # mocap point groups... if tde4.getPGroupType(pg) == "MOCAP" and camera != None: f.write("\n") f.write("// create mocap point group...\n") pgname = "objectPGroup_%s_%d_1" % (validName( tde4.getPGroupName(pg)), index) index += 1 f.write( "string $pointGroupName = `group -em -name \"%s\" -parent $sceneGroupName`;\n" % pgname) f.write( "$pointGroupName = ($sceneGroupName + \"|\" + $pointGroupName);\n" ) # write points... l = tde4.getPointList(pg) for p in l: if tde4.isPointCalculated3D(pg, p): name = tde4.getPointName(pg, p) name = "p%s" % validName(name) p3d = tde4.getPointMoCapCalcPosition3D( pg, p, camera, 1) p3d = convertZup(p3d, yup) f.write("\n") f.write("// create point %s...\n" % name) f.write( "string $locator = stringArrayToString(`spaceLocator -name %s`, \"\");\n" % name) f.write("$locator = (\"|\" + $locator);\n") f.write( "xform -t %.15f %.15f %.15f $locator;\n" % (p3d[0], p3d[1], p3d[2])) for frame in range(1, noframes + 1): p3d = tde4.getPointMoCapCalcPosition3D( pg, p, camera, frame) p3d = convertZup(p3d, yup) f.write( "setKeyframe -at translateX -t %d -v %.15f $locator; " % (frame + frame0, p3d[0])) f.write( "setKeyframe -at translateY -t %d -v %.15f $locator; " % (frame + frame0, p3d[1])) f.write( "setKeyframe -at translateZ -t %d -v %.15f $locator; " % (frame + frame0, p3d[2])) f.write("parent $locator $pointGroupName;\n") f.write("\n") scale = tde4.getPGroupScale3D(pg) f.write( "xform -zeroTransformPivots -rotateOrder zxy -scale %.15f %.15f %.15f $pointGroupName;\n" % (scale, scale, scale)) # animate mocap point group... f.write("\n") f.write("// animating point group %s...\n" % pgname) frame = 1 while frame <= noframes: # rot/pos... p3d = tde4.getPGroupPosition3D(pg, camera, frame) p3d = convertZup(p3d, yup) r3d = tde4.getPGroupRotation3D(pg, camera, frame) rot = convertToAngles(r3d) if frame > 1: rot = [ angleMod360(rot0[0], rot[0]), angleMod360(rot0[1], rot[1]), angleMod360(rot0[2], rot[2]) ] rot0 = rot f.write( "setKeyframe -at translateX -t %d -v %.15f $pointGroupName; " % (frame + frame0, p3d[0])) f.write( "setKeyframe -at translateY -t %d -v %.15f $pointGroupName; " % (frame + frame0, p3d[1])) f.write( "setKeyframe -at translateZ -t %d -v %.15f $pointGroupName; " % (frame + frame0, p3d[2])) f.write( "setKeyframe -at rotateX -t %d -v %.15f $pointGroupName; " % (frame + frame0, rot[0])) f.write( "setKeyframe -at rotateY -t %d -v %.15f $pointGroupName; " % (frame + frame0, rot[1])) f.write( "setKeyframe -at rotateZ -t %d -v %.15f $pointGroupName;\n" % (frame + frame0, rot[2])) frame += 1 # # global (scene node) transformation... p3d = tde4.getScenePosition3D() p3d = convertZup(p3d, yup) r3d = tde4.getSceneRotation3D() rot = convertToAngles(r3d) s = tde4.getSceneScale3D() f.write( "xform -zeroTransformPivots -rotateOrder zxy -translation %.15f %.15f %.15f -scale %.15f %.15f %.15f -rotation %.15f %.15f %.15f $sceneGroupName;\n\n" % (p3d[0], p3d[1], p3d[2], s, s, s, rot[0], rot[1], rot[2])) f.write("\n") f.close() # tde4.postQuestionRequester("Export Maya...","Project successfully exported.","Ok") print '--> successfully exported Maya Mel' else: tde4.postQuestionRequester("Export Maya...", "Error, couldn't open file.", "Ok") return get_mel_filename()['path']
def pixel_aspect(self): return tde4.getLensPixelAspect(self._lens_id)
def exportDistortionParameters(tde4, cam, lens, f, offset): """Add undistort attributes to the Maya camera""" model = tde4.getLensLDModel(lens) f.write('addAttr -longName "tde4_lens_model" -dataType "string" -storable 1 -readable 1 -writable 1 $cameraShape;\n') f.write('addAttr -longName "tde4_focal_length_cm" -attributeType "double" -storable 1 -readable 1 -writable 1 $cameraShape;\n') f.write('addAttr -longName "tde4_filmback_width_cm" -attributeType "double" -storable 1 -readable 1 -writable 1 $cameraShape;\n') f.write('addAttr -longName "tde4_filmback_height_cm" -attributeType "double" -storable 1 -readable 1 -writable 1 $cameraShape;\n') f.write('addAttr -longName "tde4_lens_center_offset_x_cm" -attributeType "double" -storable 1 -readable 1 -writable 1 $cameraShape;\n') f.write('addAttr -longName "tde4_lens_center_offset_y_cm" -attributeType "double" -storable 1 -readable 1 -writable 1 $cameraShape;\n') f.write('addAttr -longName "tde4_pixel_aspect" -attributeType "double" -storable 1 -readable 1 -writable 1 $cameraShape;\n') f.write('addAttr -longName "tde4_bbox_scale_factor" -attributeType "double" -storable 1 -readable 1 -writable 1 $cameraShape;\n') f.write('addAttr -longName "tde4_animated_distortion" -attributeType "short" -storable 1 -readable 1 -writable 1 $cameraShape;\n') for para in (getLDmodelParameterList(model)): f.write('addAttr -longName "'+ getLDmodelNukeParameterName(para) + '" -attributeType "double" -storable 1 -readable 1 -writable 1 $cameraShape;\n') lensModel = getLDmodelNukeNodeName(model) f.write('setAttr ($cameraShape+".tde4_lens_model") -type "string" "%s";\n' % lensModel) numberFrames = tde4.getCameraNoFrames(cam) if tde4.getCameraZoomingFlag(cam): # dynamic focal length for frame in range(1,numberFrames+1): f.write('setKeyframe -at "tde4_focal_length_cm" -t %d -v %.7f $cameraTransform; '%(frame+offset,tde4.getCameraFocalLength(cam,frame))) else: # static focal length f.write("setAttr ($cameraShape+\".tde4_focal_length_cm\") %7f;\n" % tde4.getCameraFocalLength(cam,1)) fbw = tde4.getLensFBackWidth(lens) fbh = tde4.getLensFBackHeight(lens) lcx = tde4.getLensLensCenterX(lens) lcy = tde4.getLensLensCenterY(lens) pxa = tde4.getLensPixelAspect(lens) f.write('setAttr ($cameraShape+\".tde4_filmback_width_cm\") %.7f;\n'%fbw) f.write('setAttr ($cameraShape+\".tde4_filmback_height_cm\") %.7f;\n'%fbh) f.write('setAttr ($cameraShape+\".tde4_lens_center_offset_x_cm\") %.7f;\n'%lcx) f.write('setAttr ($cameraShape+\".tde4_lens_center_offset_y_cm\") %.7f;\n'%lcy) f.write('setAttr ($cameraShape+\".tde4_pixel_aspect\") %.7f;\n'%pxa) # compute the bounding box scale factor (animation taken into account) bbox_x, bbox_y, bbox_w, bbox_h = getDistortionBoundingBox(cam, lcx, lcy) w_px = tde4.getCameraImageWidth(cam) h_px = tde4.getCameraImageHeight(cam) # print "%dx%d => %dx%d" % (w_px, h_px, bbox_w, bbox_h) distortion_scale_x = float(bbox_w+2) / float(w_px) distortion_scale_y = float(bbox_h+2) / float(h_px) # print "distortion scale factor x: %f" % distortion_scale_x # print "distortion scale factor y: %f" % distortion_scale_y distortion_scale = max(distortion_scale_x, distortion_scale_y) f.write('setAttr ($cameraShape+\".tde4_bbox_scale_factor\") %.7f;\n' % distortion_scale) if tde4.getLensDynamicDistortionFlag(lens): # dynamic distortion for para in (getLDmodelParameterList(model)): for frame in range(1,numberFrames): focal = tde4.getCameraFocalLength(cam,frame) f.write('setKeyframe -at "%s" -t %d -v %.7f $cameraTransform; '%(getLDmodelNukeParameterName(para),frame+offset,tde4.getLensLDAdjustableParameter(lens, para, focal))) f.write('setAttr ($cameraShape+\".tde4_animated_distortion\") 1;\n') else: # static distortion for para in (getLDmodelParameterList(model)): f.write('setAttr ($cameraShape+\".'+getLDmodelNukeParameterName(para)+'\") %.7f;\n' % tde4.getLensLDAdjustableParameter(lens, para, 1)) f.write('setAttr ($cameraShape+\".tde4_animated_distortion\") 0;\n')