Thanks those expressions Frank and Jose, they both seem to work well (if you don't need Motion Blur)...
As a long term goal, I was wondering if it wouldn't be possible somehow to access the Vertex information directly from the alembic file, I mean the data must be already there as it's a baked animation, right? I feel a little bit like tracking a checker board here... :) Are there any approaches on this? Is this possible with Python? thanks, andy On Jul 18, 2012, at 9:56 PM, Frank Rueter <[email protected]> wrote: > that's what I did to work around this. Fairly rough and untested though: > > CheckerBoard2 { > inputs 0 > name CheckerBoard1 > selected true > xpos -148 > ypos -140 > } > Transform { > translate {{"\[python -execlocal cam\\ =\\ nuke.toNode('Camera1')\\naxis\\ > =\\ nuke.toNode('Axis1')\\nwm\\ =\\ > axis\\\['world_matrix'\\].valueAt(nuke.frame())\\nxform\\ =\\ > nuke.math.Vector3(wm\\\[3\\],\\ wm\\\[7\\],\\ wm\\\[11\\])\\nret\\ =\\ > nukescripts.snap3d.projectPoint(cam,\\ xform).x]"} {"\[python -execlocal > cam\\ =\\ nuke.toNode('Camera1')\\naxis\\ =\\ nuke.toNode('Axis1')\\nwm\\ =\\ > axis\\\['world_matrix'\\].valueAt(nuke.frame())\\nxform\\ =\\ > nuke.math.Vector3(wm\\\[3\\],\\ wm\\\[7\\],\\ wm\\\[11\\])\\nret\\ =\\ > nukescripts.snap3d.projectPoint(cam,\\ xform).y]"}} > center {1024 778} > name Transform1 > selected true > xpos -148 > ypos -68 > } > Camera2 { > inputs 0 > name Camera1 > selected true > xpos -420 > ypos -70 > } > push $cut_paste_input > Axis2 { > rotate {0 -4 0} > name parentAxis > selected true > xpos -366 > ypos -323 > } > Axis2 { > translate {-0.392 -0.04399999976 -2.140000105} > name Axis1 > selected true > xpos -293 > ypos -238 > } > Scene { > name Scene1 > selected true > xpos -293 > ypos -129 > } > push 0 > ScanlineRender { > inputs 3 > output_motion_vectors_type accurate > name ScanlineRender1 > selected true > xpos -303 > ypos -16 > } > Merge2 { > inputs 2 > name Merge1 > selected true > xpos -148 > ypos -16 > } > > > > > > > > On 19/07/12 2:37 PM, Jose Fernandez de Castro wrote: >> I'm wondering if anyone has used the snap3d.project points successfully to >> achieve this (I mean, if it's actually stable and usable). For starters it >> seems like it only takes the root format of the script, but it might be >> possible to cheat it through the win_scale u v. Anyway, just curious, an >> example setup: >> >> set cut_paste_input [stack 0] >> version 6.3 v8 >> Axis2 { >> inputs 0 >> translate {{curve i x1048 -1.396000028 x1088 -0.9840000272 x1108 >> -0.1986213923 x1119 0.3740000129} {curve i x1048 0.5559999943 x1088 >> 0.3759999871 x1102 0.41049599 x1108 0.4199999869 x1119 -0.5339999795} {curve >> i x1048 0 x1088 0 x1108 0 x1119 0}} >> name Axis3 >> selected true >> xpos 236 >> ypos 21 >> } >> push $cut_paste_input >> Camera2 { >> translate {{curve x1104 0} {curve x1080 0.3 x1104 0} {curve x1104 >> 7.050000191}} >> rotate {0 5 0} >> focal 13.5 >> name Camera3 >> selected true >> xpos -25 >> ypos 68 >> addUserKnob {20 ProjectFrame l "Project Frame"} >> addUserKnob {3 frameproj l "Projection Frame"} >> frameproj 1000 >> addUserKnob {6 currFrame l "Set to current frame" +STARTLINE} >> addUserKnob {22 setFrame l "Set Projection Frame" T >> "\nknoblist=\[]\nknoblistPre=\[\"translate\",\"rotate\",\"pivot\",\"scaling\",\"uniform_scale\",\"skew\",\"focal\",\"haperture\",\"vaperture\",\"far\",\"near\",\"win_scale\",\"win_translate\",\"winroll\",\"focal_point\",\"fstop\"]\nfor >> name in knoblistPre:\n knoblist.append(name)\n >> knoblist.append(name+\"_r\")\n knoblist.append(name+\"_l\")\n \ntry:\n >> >> nuke.thisNode().knob(\"read_from_file\").setValue(False)\nexcept(AttributeError):\n >> pass\nanimation=False\n\nfor i in knoblist:\n >> knob=nuke.thisNode().knob(i)\n if knob:\n if >> knob.hasExpression():\n animation=True\n >> newexpression=knob.toScript().split(\"\{\")\[1].split(\"\}\")\[0]\n >> if \"(frameproj)\" not in newexpression:\n >> knob.setExpression(\"%s(frameproj)\"%(newexpression))\n \n elif >> knob.isAnimated():\n print \"this ran\"\n >> animation=True\n knob.setExpression(\"curve(frameproj)\")\n\n\nif >> nuke.thisNode().knob(\"currFrame\").value():\n >> nuke.thisNode().knob(\"frameproj\").setValue(nuke.frame())\nif >> animation==True:\n >> previouslabel=nuke.thisNode().knob(\"label\").value()\n >> previouslabel=previouslabel.replace(\"\\nProjection frame: \[value >> frameproj]\",\"\")\n newlabel=previouslabel+\"\\nProjection frame: >> \[value frameproj]\"\n >> nuke.thisNode().knob(\"label\").setValue(newlabel)\n" +STARTLINE} >> addUserKnob {22 unsetFrame l "Unset Projection Frame" T >> "\nknoblist=\[]\nknoblistPre=\[\"translate\",\"rotate\",\"pivot\",\"scaling\",\"uniform_scale\",\"skew\",\"focal\",\"haperture\",\"vaperture\",\"far\",\"near\",\"win_scale\",\"win_translate\",\"winroll\",\"focal_point\",\"fstop\"]\nfor >> name in knoblistPre:\n knoblist.append(name)\n >> knoblist.append(name+\"_r\")\n knoblist.append(name+\"_l\")\nfor i in >> knoblist:\n knob=nuke.thisNode().knob(i)\n if knob:\n if >> knob.hasExpression():\n >> newexpression=knob.toScript().split(\"\{\")\[1].split(\"\}\")\[0].replace(\"(frameproj)\",\"\")\n >> if \"curve\" in newexpression:\n >> knob.setExpression(\"curve\")\n else:\n >> knob.setExpression(newexpression)\n\n\npreviouslabel= >> nuke.thisNode().knob(\"label\").value()\npreviouslabel=previouslabel.replace(\"\\nProjection >> frame: \[value >> frameproj]\",\"\")\nnuke.thisNode().knob(\"label\").setValue(previouslabel)\n" >> +STARTLINE} >> } >> set Ne20aad70 [stack 0] >> Scene { >> inputs 2 >> name Scene3 >> selected true >> xpos 236 >> ypos 249 >> } >> push $Ne20aad70 >> CheckerBoard2 { >> inputs 0 >> format "1920 1080 0 0 1920 1080 1 HD" >> name CheckerBoard3 >> selected true >> xpos -175 >> ypos 10 >> } >> Group { >> inputs 2 >> name project_point2 >> selected true >> xpos -109 >> ypos 310 >> addUserKnob {20 User} >> addUserKnob {13 point3d} >> point3d {{parent.Axis3.translate.left} {parent.Axis3.translate.left} >> {parent.Axis3.translate.left}} >> addUserKnob {12 point2d} >> point2d {{"\[python -execlocal >> n=nuke.thisNode()\\nret=nukescripts.snap3d.projectPoint(camera=n.input(1),point=(n\\\[\\\"point3d\\\"\\].value(0),n\\\[\\\"point3d\\\"\\].value(1),n\\\[\\\"point3d\\\"\\].value(2)))\\\[0\\]]" >> x1048 1400} {"\[python -execlocal >> n=nuke.thisNode()\\nret=nukescripts.snap3d.projectPoint(camera=n.input(1),point=(n\\\[\\\"point3d\\\"\\].value(0),n\\\[\\\"point3d\\\"\\].value(1),n\\\[\\\"point3d\\\"\\].value(2)))\\\[1\\]]" >> x1048 698}} >> } >> Input { >> inputs 0 >> name IMAGE >> xpos -50 >> ypos -94 >> } >> Output { >> name Output1 >> xpos -50 >> ypos 10 >> } >> Input { >> inputs 0 >> name CAMERA >> selected true >> xpos 145 >> ypos -111 >> number 1 >> } >> end_group >> >> >> >> _______________________________________________ >> Nuke-users mailing list >> [email protected], http://forums.thefoundry.co.uk/ >> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users > > > _______________________________________________ > Nuke-users mailing list > [email protected], http://forums.thefoundry.co.uk/ > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users
_______________________________________________ Nuke-users mailing list [email protected], http://forums.thefoundry.co.uk/ http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users
