John made a good point which I did overlook, which is that forceValidate() 
doesn't seem to work properly when called from most (if not all) scripts.

The alternative is to simply create the node without passing inpanel=False and 
then hide its control panel.

cam = nuke.createNode('Camera2', 'file {%s} read_from_file True' % filepath)
# Set up camera knobs here
cam.hideControlPanel()

-Nathan

On Jun 28, 2012, at 2:32 AM, "Vincent Langer" <[email protected]> 
wrote:

> here is my stereo FBX cam importer so far:
> 
> it finds the right cams but the camera do not update its positions!!!
> i have to switch the cameras and back or hit the reload button but then the 
> window pops up again.
> 
> script:
> 
> import nuke, nukescripts
> 
> 
> def getStereoCamSetupFromFBX():
> 
> 
>    filepath = nuke.getFilename("Pick FBX wih StereoCameras", 
> "*.fbx","Y:/100_SHOTS/")
> 
> 
>    axisNode = nuke.createNode("Axis2")
>    offsetPosX = axisNode.xpos()
>    offsetPosY = axisNode.ypos()
> 
> 
>    cam_l = nuke.createNode('Camera2', 'file {'+filepath+'} read_from_file 
> True', inpanel=False)
>    cam_l.forceValidate()
>    cam_r = nuke.createNode('Camera2', 'file {'+filepath+'} read_from_file 
> True', inpanel=False)
>    cam_r.forceValidate()
> 
> 
>    cam_l.setInput(0,axisNode)
>    cam_r.setInput(0,axisNode)
> 
> 
>    cam_l.setName("FBX_Cam_Left")
>    cam_r.setName("FBX_Cam_Right")
> 
>    cam_l.setXYpos(offsetPosX-90,offsetPosY+90)
>    cam_r.setXYpos(offsetPosX+90,offsetPosY+90)
> 
> 
>    strinStart = cam_l['fbx_node_name'].value().replace("Producer 
> ","P_").replace('"','').find('}')
> 
>    camList = cam_l['fbx_node_name'].value().replace("Producer 
> ","P_").replace('"','')[strinStart+2:].rsplit(' ')
> 
> 
>    for itemPos in range(len(camList)):
>        if camList[itemPos] in ['Left','left','StereoCamera_Left']:
>            cam_l['fbx_node_name'].setValue(itemPos)
> 
>        if camList[itemPos] in ['Right','right','StereoCamera_Right']:
>            cam_r['fbx_node_name'].setValue(itemPos)
> 
> 
>    sceneNode = nuke.createNode("Scene")
>    sceneNode.setXYpos(offsetPosX,offsetPosY+150)
> 
>    sceneNode.setInput(0,cam_l)
>    sceneNode.setInput(1,cam_r)
> 
>    dot2Scene = nuke.createNode("Dot")
>    dot2Scene.setXYpos(offsetPosX+25,offsetPosY+240)
> 
> 
>    dot2Scene.setInput(0,sceneNode)
> 
>    bgNode = nuke.createNode("Constant")
>    bgNode.setXYpos(offsetPosX,offsetPosY+300)
> 
>    dot2bg = nuke.createNode("Dot")
>    dot2bg.setInput(0,bgNode)
>    dot2bg.setXYpos(offsetPosX+25,offsetPosY+385)
> 
> 
> 
>    scanRenderLinks = nuke.createNode("ScanlineRender")
>    scanRenderLinks.setName("ScanlineRender_Left")
>    scanRenderLinks.setInput(0,dot2bg)
>    scanRenderLinks.setInput(1,dot2Scene)
>    scanRenderLinks.setInput(2,cam_l)
> 
> 
> 
>    scanRenderRechts = nuke.createNode("ScanlineRender")
>    scanRenderRechts.setName("ScanlineRender_Right")
>    scanRenderRechts.setInput(0,dot2bg)
>    scanRenderRechts.setInput(1,dot2Scene)
>    scanRenderRechts.setInput(2,cam_r)
> 
>    scanRenderLinks.setXYpos(offsetPosX-90,offsetPosY+420)
>    scanRenderRechts.setXYpos(offsetPosX+90,offsetPosY+420)
> 
>    nukescripts.stereo.setViewsForStereo()
>    joinViewsNode = nuke.createNode("JoinViews")
>    joinViewsNode.setInput(0,scanRenderLinks)
>    joinViewsNode.setInput(1,scanRenderRechts)
>    joinViewsNode.setXYpos(offsetPosX,offsetPosY+510)
> 
> 
> 
> ___________
> 
> cheers,
> vincent
> 
> 
> _______________________________________________
> Nuke-python mailing list
> [email protected], http://forums.thefoundry.co.uk/
> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
_______________________________________________
Nuke-python mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python

Reply via email to