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