tag:blogger.com,1999:blog-51806358233889709832024-03-14T01:01:14.184+05:30Nuke Tutorials and Toolssatheesh nuke tutorialshttp://www.blogger.com/profile/11629568558935326180noreply@blogger.comBlogger52125tag:blogger.com,1999:blog-5180635823388970983.post-76802162388067685712019-02-26T22:00:00.000+05:302019-02-26T22:05:03.362+05:30connectCamera script for nuke<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
connectCamera python script for nuke</div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
<span style="background-color: white; caret-color: rgb(29, 33, 41); color: #1d2129; font-family: system-ui, -apple-system, BlinkMacSystemFont, ".SFNSText-Regular", sans-serif; font-size: 14px; text-size-adjust: auto; white-space: pre-wrap;">connectCamera script helps users to connect with any camera from anywhere in their nuke script. When you run this script it will find all the Camera's from the script, pops a window to choose the desired "Camera" from the list.</span></div>
<div style="text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-KuiB7puAGcg/XHVmk9K6oBI/AAAAAAAAKWc/bmpGnUamgKwCzoApzNoiO_PBrZWTw4U-ACLcBGAs/s1600/Screen%2BShot%2B2019-02-26%2Bat%2B9.41.47%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="680" data-original-width="1412" height="192" src="https://4.bp.blogspot.com/-KuiB7puAGcg/XHVmk9K6oBI/AAAAAAAAKWc/bmpGnUamgKwCzoApzNoiO_PBrZWTw4U-ACLcBGAs/s400/Screen%2BShot%2B2019-02-26%2Bat%2B9.41.47%2BPM.png" width="400" /></a></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<span style="background-color: white; caret-color: rgb(29, 33, 41); color: #1d2129; font-family: system-ui, -apple-system, BlinkMacSystemFont, ".SFNSText-Regular", sans-serif; font-size: 14px; text-size-adjust: auto; white-space: pre-wrap;">When you hit connect this script it will create a "Dot" node and connect with the selected camera. Also, add the selected camera name to the Dot.</span></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Example video:</div>
<div style="text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/9KPIPxzOlfc/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/9KPIPxzOlfc?feature=player_embedded" width="320"></iframe></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Download the script:</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<span style="font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";"><span style="caret-color: rgb(88, 96, 105);"><b><a href="https://github.com/satheeshvfx/Nuke_python_codes/blob/master/connectCamera.py">https://github.com/satheeshvfx/Nuke_python_codes/blob/master/connectCamera.py</a></b></span></span></div>
<div style="text-align: left;">
<span style="font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";"><span style="caret-color: rgb(88, 96, 105);"><br /></span></span></div>
<div style="text-align: left;">
<span style="font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";"><span style="caret-color: rgb(88, 96, 105);">Raw code:</span></span></div>
<div style="text-align: left;">
<span style="font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";"><span style="caret-color: rgb(88, 96, 105);"><br /></span></span></div>
<pre style="caret-color: rgb(0, 0, 0); overflow-wrap: break-word; text-size-adjust: auto; white-space: pre-wrap;">### connect camera v1.0
### connects user selected camera using a Dot node anywhere from the script
### for bugs and reports satheesrev@gmail.com
### thanks to Wouter Gilsing for helping out to make this happen
import nuke
def connectCamera():
###getting list of camera's available in the script
cameraNames = ' '.join([n.name() for n in nuke.allNodes('Camera2')])
if cameraNames:
###Creating nuke panel and storing informations
panel = nuke.Panel("connectCamera", 100)
panel.addEnumerationPulldown('selectCamera', cameraNames)
panel.addButton("cancel")
panel.addButton("connect")
result = panel.show()
selCamera = panel.value("selectCamera")
### return function when user hit cancel
if result == 0:
return
else:
### creating DOt node and connect with selected camera
dot = nuke.createNode("Dot", inpanel=False)
dot.setInput(0, nuke.toNode(selCamera))
dot['label'].setValue(' \n'+selCamera)
dot['note_font_size'].setValue(20)
dot['note_font'].setValue('Bitstream Vera Sans Bold')
dot['hide_input'].setValue(True)
else:
nuke.message('No Camera Found\nimport some camera to connect')
</pre>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
</div>
satheesh nuke tutorialshttp://www.blogger.com/profile/11629568558935326180noreply@blogger.com6tag:blogger.com,1999:blog-5180635823388970983.post-4863682744858757172018-11-20T16:05:00.007+05:302019-02-27T20:32:53.363+05:30Nuke Viewer Interactive Bounding Box Warning message<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
<span style="font-size: large;">Viewer Interactive Bounding Box Warning message.</span></div>
<div style="text-align: center;">
<b><br /></b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-dBfd0h6H_BM/W_PMpk1Vl_I/AAAAAAAAKC4/m09u5RftYg0L4FAbMocU01dOU9RCrYcYgCLcBGAs/s1600/Screen%2BShot%2B2018-11-20%2Bat%2B2.25.48%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1216" data-original-width="1600" height="304" src="https://4.bp.blogspot.com/-dBfd0h6H_BM/W_PMpk1Vl_I/AAAAAAAAKC4/m09u5RftYg0L4FAbMocU01dOU9RCrYcYgCLcBGAs/s400/Screen%2BShot%2B2018-11-20%2Bat%2B2.25.48%2BPM.png" width="400" /></a></div>
<div style="font-family: Helvetica; font-size: 12px; font-stretch: normal; line-height: normal;">
<br /></div>
<div style="font-family: Helvetica; font-stretch: normal; line-height: normal;">
Bounding box management is essential in compositing. This applies for all the compositing application. Compositor should have good knowledge in managing bbox in their workflow. Your script became more efficient and manageable by maintaining bbox as original format. Also, this help nuke to render your script much faster.</div>
<div style="font-family: Helvetica; font-stretch: normal; line-height: normal; min-height: 14px;">
<br /></div>
<div style="font-family: Helvetica; font-stretch: normal; line-height: normal;">
All the big studios teaching artists, how to manage bbox in their script. Even-though, Experienced artists fails to maintain their bbox when it comes deadline. Every compositor knows how an artist works a deadline’s. This is a common issue across the studio.</div>
<div style="font-family: Helvetica; font-stretch: normal; line-height: normal; min-height: 14px;">
<br /></div>
<div style="font-family: Helvetica; font-stretch: normal; line-height: normal;">
</div>
<div style="font-family: Helvetica; font-stretch: normal; line-height: normal;">
Came up with this small idea to warn the artist when their bbox goes beyond twice as original format. Bundled this tool with viewer LUT. When the bbox became 2times bigger than original format, Viewer pops warning message interactively. Warning message goes away once the bbox became normal.</div>
<div style="font-family: Helvetica; font-size: 12px; font-stretch: normal; line-height: normal;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-5qGF2vZRHuM/W_PM4tyTcvI/AAAAAAAAKC8/geTNL509lrITxJ8psX3EeXFPrrZqE7rpQCLcBGAs/s1600/Screen%2BShot%2B2018-11-20%2Bat%2B2.25.03%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="748" data-original-width="1600" height="297" src="https://2.bp.blogspot.com/-5qGF2vZRHuM/W_PM4tyTcvI/AAAAAAAAKC8/geTNL509lrITxJ8psX3EeXFPrrZqE7rpQCLcBGAs/s640/Screen%2BShot%2B2018-11-20%2Bat%2B2.25.03%2BPM.png" width="640" /></a></div>
<div style="font-family: Helvetica; font-size: 12px; font-stretch: normal; line-height: normal;">
<br /></div>
<div>
default sRGB LUT sRGB bundled with bbox warning</div>
<div>
<br /></div>
<div>
Breakdown steps:</div>
<div>
<br /></div>
<div>
Creating a banner on top of the viewer:</div>
<div>
<br /></div>
<div>
"expression" node with basic math will create a red banner on top of the canvas. You can change the size of the banner as per your taste.<br />
<br />
<a href="http://www.nukepedia.com/written-tutorials/expressions-101">http://www.nukepedia.com/written-tutorials/expressions-101</a></div>
<div>
<br /></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-KVTfu6FZ1OQ/W_PWSvCL0NI/AAAAAAAAKDM/fNngrcGfV_s-rony9_fQVNeEFdeB6AHcwCLcBGAs/s1600/Screen%2BShot%2B2018-11-20%2Bat%2B2.47.20%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="908" data-original-width="1600" height="362" src="https://1.bp.blogspot.com/-KVTfu6FZ1OQ/W_PWSvCL0NI/AAAAAAAAKDM/fNngrcGfV_s-rony9_fQVNeEFdeB6AHcwCLcBGAs/s640/Screen%2BShot%2B2018-11-20%2Bat%2B2.47.20%2BPM.png" width="640" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
Created banner using an expression node. Now we need to add warning text on top of the banner.</div>
<div>
<br /></div>
<div>
Interactive warning "text" node:</div>
<div>
<br /></div>
<div>
Create a Text node with the desired warning message. Keep the text in center aligned and justified.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-8pU0tdTDggU/W_PWfKcJd4I/AAAAAAAAKDQ/cf6Mq-qhYQ4MmHMJrym-vp6NtcoQlZFpwCLcBGAs/s1600/Screen%2BShot%2B2018-11-20%2Bat%2B2.48.59%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="850" data-original-width="1600" height="338" src="https://1.bp.blogspot.com/-8pU0tdTDggU/W_PWfKcJd4I/AAAAAAAAKDQ/cf6Mq-qhYQ4MmHMJrym-vp6NtcoQlZFpwCLcBGAs/s640/Screen%2BShot%2B2018-11-20%2Bat%2B2.48.59%2BPM.png" width="640" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
Now, the issue is when the canvas (project) size change. Text node alignment will change! of course. How do we fix this!</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-NcCdeThuP6Q/W_PWqJ4U3GI/AAAAAAAAKDY/VycJheg_PLgKlklTop07Qd8hkH9tcWmbQCEwYBhgL/s1600/Screen%2BShot%2B2018-11-20%2Bat%2B2.49.37%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="788" data-original-width="1600" height="314" src="https://3.bp.blogspot.com/-NcCdeThuP6Q/W_PWqJ4U3GI/AAAAAAAAKDY/VycJheg_PLgKlklTop07Qd8hkH9tcWmbQCEwYBhgL/s640/Screen%2BShot%2B2018-11-20%2Bat%2B2.49.37%2BPM.png" width="640" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
Hers is the way, parent the text bbox to project width*height.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-3uoWjRbX-gM/W_PWxtmmDkI/AAAAAAAAKDg/yTq6-rdVdVo2x8wWQAHGBr-MCpT1M2DVQCLcBGAs/s1600/Screen%2BShot%2B2018-11-20%2Bat%2B2.50.41%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="842" data-original-width="1600" height="336" src="https://1.bp.blogspot.com/-3uoWjRbX-gM/W_PWxtmmDkI/AAAAAAAAKDg/yTq6-rdVdVo2x8wWQAHGBr-MCpT1M2DVQCLcBGAs/s640/Screen%2BShot%2B2018-11-20%2Bat%2B2.50.41%2BPM.png" width="640" /></a></div>
<div>
<br /></div>
<div>
Now alignment fixed. But there is one more issue! When the project size goes even smaller?</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/--79gUpmHlX8/W_PXCJmLAnI/AAAAAAAAKDs/Og6JnZVFd7Ih28g2RicFs-oAgb9xkpVCQCLcBGAs/s1600/Screen%2BShot%2B2018-11-20%2Bat%2B2.54.22%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1082" data-original-width="1600" height="432" src="https://3.bp.blogspot.com/--79gUpmHlX8/W_PXCJmLAnI/AAAAAAAAKDs/Og6JnZVFd7Ih28g2RicFs-oAgb9xkpVCQCLcBGAs/s640/Screen%2BShot%2B2018-11-20%2Bat%2B2.54.22%2BPM.png" width="640" /></a></div>
<div>
<br /></div>
<div>
Not cool right! There is a fix to overcome this issue.</div>
<div>
<br /></div>
<div>
Parent text size with format width will help us.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-SWgvUI6QC0c/W_PXY2KkBKI/AAAAAAAAKD0/ThANNUBKw6U7SLktDgChlpIijJVaU4ysgCLcBGAs/s1600/Screen%2BShot%2B2018-11-20%2Bat%2B2.55.14%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="842" data-original-width="1600" height="336" src="https://4.bp.blogspot.com/-SWgvUI6QC0c/W_PXY2KkBKI/AAAAAAAAKD0/ThANNUBKw6U7SLktDgChlpIijJVaU4ysgCLcBGAs/s640/Screen%2BShot%2B2018-11-20%2Bat%2B2.55.14%2BPM.png" width="640" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
Now, this is cool :).</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
How do we make this work in the usual way? Switch node will do the magic here.</div>
<div>
<br /></div>
<div>
Take a separate branch from your main tree, merge the banner as 'A' input. Add a switch node on the main spine, connect bbox warning setup in '1' input. Now add below expression to 'which' knob on the switch node.</div>
<div>
<br /></div>
<div>
Expression math for switch node:</div>
<div>
<br /></div>
<div>
2*(width*height)>(bbox.w*bbox.h)?0:1</div>
<div>
<br /></div>
<div>
This expression tells to switch node, when the bbox size 2 times greater then the original format, switch to input 1.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-LLlYKyTja8k/W_PfegIln1I/AAAAAAAAKEA/B0j-zUqiBk8HkP6hRNukD2BczTz6SPf8ACLcBGAs/s1600/Screen%2BShot%2B2018-11-20%2Bat%2B3.01.51%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1015" data-original-width="1600" height="404" src="https://2.bp.blogspot.com/-LLlYKyTja8k/W_PfegIln1I/AAAAAAAAKEA/B0j-zUqiBk8HkP6hRNukD2BczTz6SPf8ACLcBGAs/s640/Screen%2BShot%2B2018-11-20%2Bat%2B3.01.51%2BPM.png" width="640" /></a></div>
<div>
<br /></div>
<div>
Here is the result:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-Fv0hbBafZI0/W_PhPhk1BNI/AAAAAAAAKEM/LHt7lmwL9akMZZVhrTrDFMaGWBmskhnNACLcBGAs/s1600/Screen%2BShot%2B2018-11-20%2Bat%2B3.02.56%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1492" data-original-width="1214" height="640" src="https://1.bp.blogspot.com/-Fv0hbBafZI0/W_PhPhk1BNI/AAAAAAAAKEM/LHt7lmwL9akMZZVhrTrDFMaGWBmskhnNACLcBGAs/s640/Screen%2BShot%2B2018-11-20%2Bat%2B3.02.56%2BPM.png" width="520" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
Convert this setup as Group and connect anywhere in your script to make it work.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-6jpBz08rKd0/W_PhpqPj8xI/AAAAAAAAKEU/iFL1wEEB7Ng4GoISM5N6SKdam16KvCc-wCLcBGAs/s1600/Screen%2BShot%2B2018-11-20%2Bat%2B3.05.03%2BPM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="746" data-original-width="1600" height="148" src="https://4.bp.blogspot.com/-6jpBz08rKd0/W_PhpqPj8xI/AAAAAAAAKEU/iFL1wEEB7Ng4GoISM5N6SKdam16KvCc-wCLcBGAs/s320/Screen%2BShot%2B2018-11-20%2Bat%2B3.05.03%2BPM.png" width="320" /></a></div>
<div>
<br /></div>
<div>
<a href="https://3.bp.blogspot.com/-luYGIKSb0Y0/W_Ph4k9TgDI/AAAAAAAAKEY/HJ1taIYlqU0djBRsaQ8SmNn2hJ-hTie0wCLcBGAs/s1600/Screen%2BShot%2B2018-11-20%2Bat%2B3.05.19%2BPM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="1224" data-original-width="1362" height="287" src="https://3.bp.blogspot.com/-luYGIKSb0Y0/W_Ph4k9TgDI/AAAAAAAAKEY/HJ1taIYlqU0djBRsaQ8SmNn2hJ-hTie0wCLcBGAs/s320/Screen%2BShot%2B2018-11-20%2Bat%2B3.05.19%2BPM.png" width="320" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Can be used as VIEWER_INPUT.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-IUTopz2nvyY/W_PiP3PG5tI/AAAAAAAAKEk/wvCoB9Uf3Ukn5uDdDk2FiMUPzM6E5luzACLcBGAs/s1600/Screen%2BShot%2B2018-11-20%2Bat%2B3.06.05%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1442" data-original-width="1188" height="320" src="https://4.bp.blogspot.com/-IUTopz2nvyY/W_PiP3PG5tI/AAAAAAAAKEk/wvCoB9Uf3Ukn5uDdDk2FiMUPzM6E5luzACLcBGAs/s320/Screen%2BShot%2B2018-11-20%2Bat%2B3.06.05%2BPM.png" width="263" /></a></div>
<div>
<br /></div>
<div>
How do we bundle this with Viewer LUT ?</div>
<div>
<br /></div>
<div>
Import your LUT from the colour grading department. Add bbox warning setup like Below image. Export it as Group node. Import the Group as Viewer LUT while nuke starts-up. Bingo.... </div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-uWWf4uiekag/W_Pih6GBisI/AAAAAAAAKEs/HzFHWPGoOdQc5PamrnaIuXbNfb10EnvxACLcBGAs/s1600/Screen%2BShot%2B2018-11-20%2Bat%2B3.07.15%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1186" data-original-width="484" height="320" src="https://2.bp.blogspot.com/-uWWf4uiekag/W_Pih6GBisI/AAAAAAAAKEs/HzFHWPGoOdQc5PamrnaIuXbNfb10EnvxACLcBGAs/s320/Screen%2BShot%2B2018-11-20%2Bat%2B3.07.15%2BPM.png" width="130" /></a></div>
<div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-FUj1x2hM_oE/W_PlCr1l24I/AAAAAAAAKFA/JO_LJQly5uMjZLgChTHVQP7MpIeGNPeSQCLcBGAs/s1600/Screen%2BShot%2B2018-11-20%2Bat%2B4.10.07%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1234" data-original-width="1240" height="397" src="https://1.bp.blogspot.com/-FUj1x2hM_oE/W_PlCr1l24I/AAAAAAAAKFA/JO_LJQly5uMjZLgChTHVQP7MpIeGNPeSQCLcBGAs/s400/Screen%2BShot%2B2018-11-20%2Bat%2B4.10.07%2BPM.png" width="400" /></a></div>
<br />
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-Jp6xC0QXY3A/W_PjF3E4amI/AAAAAAAAKE0/ScXq8Q-p4cEAWWfjT0c3vf_OZp8LX_5LQCLcBGAs/s1600/Screen%2BShot%2B2018-11-20%2Bat%2B3.08.18%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1492" data-original-width="1084" height="640" src="https://3.bp.blogspot.com/-Jp6xC0QXY3A/W_PjF3E4amI/AAAAAAAAKE0/ScXq8Q-p4cEAWWfjT0c3vf_OZp8LX_5LQCLcBGAs/s640/Screen%2BShot%2B2018-11-20%2Bat%2B3.08.18%2BPM.png" width="464" /></a></div>
<div>
<br /></div>
<div>
Example script: <a href="https://drive.google.com/open?id=1Cs0KUZibb5fHEOSGFJAzOE-hRIjsH118" target="_blank">download</a><br />
<br />
Suggestions and feedbacks are welcome. Hope this will help you !!<br />
<br />
<br /></div>
<div>
<br /></div>
</div>
satheesh nuke tutorialshttp://www.blogger.com/profile/11629568558935326180noreply@blogger.com1tag:blogger.com,1999:blog-5180635823388970983.post-75536963107128125942018-06-20T13:53:00.000+05:302018-06-20T13:56:58.243+05:30simple clean screen using IBK colour with un-premult<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
simple clean screen using IBK colour with un-premult</div>
<div style="text-align: center;">
<br /></div>
Many of us using stack of IBK colour node with incremental of values to get clean Blue or Green screen.<br />
<br />
Example below image:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-CuYNmpQhXGY/WynoEwCU3EI/AAAAAAAAJx0/7bWyV0gtDWgLqZ0LM5TF5sx_PPftgoyhwCLcBGAs/s1600/Screen%2BShot%2B2018-06-20%2Bat%2B11.06.29%2BAM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1112" data-original-width="1186" height="300" src="https://3.bp.blogspot.com/-CuYNmpQhXGY/WynoEwCU3EI/AAAAAAAAJx0/7bWyV0gtDWgLqZ0LM5TF5sx_PPftgoyhwCLcBGAs/s320/Screen%2BShot%2B2018-06-20%2Bat%2B11.06.29%2BAM.png" width="320" /></a></div>
<br />
Most cases 1 IBK color node will give good result. But in some shots we ended up stacking multiple IBK color node to get the clean screen(plate).<br />
<br />
When use multiple IBK color node the script became slow, Each node takes more time to produce the result. How do we overcome this slowness ?!<br />
<br />
Here is the alternate way:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-t7NId9kn7Z0/WyoNFjaFK8I/AAAAAAAAJyU/eNEP9PNgP5EgmGJvo_uTtwUtdY3skRdjQCLcBGAs/s1600/Screen%2BShot%2B2018-06-20%2Bat%2B1.44.47%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="646" data-original-width="596" height="320" src="https://2.bp.blogspot.com/-t7NId9kn7Z0/WyoNFjaFK8I/AAAAAAAAJyU/eNEP9PNgP5EgmGJvo_uTtwUtdY3skRdjQCLcBGAs/s320/Screen%2BShot%2B2018-06-20%2Bat%2B1.44.47%2BPM.png" width="295" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
I used blur and un-premult nodes to get the similar result. This is much faster then IBK color stacking.<br />
<br />
Comparison of both method result:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-OYtfQ7X3WgA/WyoNlxagqiI/AAAAAAAAJyc/9o-eQaPTVQ8zMhxUqhGfVAYYjsq4YFqTACLcBGAs/s1600/Screen%2BShot%2B2018-06-20%2Bat%2B1.47.04%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1208" data-original-width="1600" height="301" src="https://3.bp.blogspot.com/-OYtfQ7X3WgA/WyoNlxagqiI/AAAAAAAAJyc/9o-eQaPTVQ8zMhxUqhGfVAYYjsq4YFqTACLcBGAs/s400/Screen%2BShot%2B2018-06-20%2Bat%2B1.47.04%2BPM.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
Result looks similar. Some shots this method produced better result compare to IBK color stacking.<br />
<br />
<br />
Final result comparison:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/9piU9_Y7BD4/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/9piU9_Y7BD4?feature=player_embedded" width="320"></iframe></div>
<br />
<br />
Here is the steps:<br />
<br />
1. Denoise your plate.<br />
2. Create a IBK colour node. Choose your screen type. Play with the values to get the fine result.<br />
3. Add a premult after IBK colour.<br />
4. Create a Blur node. Change channels to rgba. Enable mask to rgba and check invert. Check below image.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-kqUIplR-xug/WyoN9fYx2hI/AAAAAAAAJyk/PblzQHuyGskf1otQHR9wVSfEOkne9RncQCLcBGAs/s1600/Screen%2BShot%2B2018-06-20%2Bat%2B1.47.55%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="432" data-original-width="1148" height="120" src="https://2.bp.blogspot.com/-kqUIplR-xug/WyoN9fYx2hI/AAAAAAAAJyk/PblzQHuyGskf1otQHR9wVSfEOkne9RncQCLcBGAs/s320/Screen%2BShot%2B2018-06-20%2Bat%2B1.47.55%2BPM.png" width="320" /></a></div>
<br />
5. Add un-premult after the Blur node.<br />
6. Add some value to the Blur size. Magic, all the blacks will start filling with your screen colour.<br />
<br />
Hope this will help you compers. Comment your thoughts and ideas below.<br />
<br />
<br />
<br /></div>
satheesh nuke tutorialshttp://www.blogger.com/profile/11629568558935326180noreply@blogger.com4tag:blogger.com,1999:blog-5180635823388970983.post-27157696748568912762018-06-05T21:34:00.002+05:302018-06-07T17:27:46.607+05:30S_Despill<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
S_Despill Nuke Gizmo</div>
<div style="text-align: center;">
<br /></div>
There are tons of despill gizmos and templates available in internet and nukepedia for nuke. Many compositors having their own set of gizmos and technic to do despill.<br />
<br />
Here is one of my all time fav despill gizmo i have created. Used in many instances over couple of years. S_Despill gives me lot of control in terms of edge management and retaining plate color.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-QGKtqhY__LA/WxZmPE-5o6I/AAAAAAAAJv0/Kcljjx9SgjYs4JMxa6YkXu3Na2jr0w0LACLcBGAs/s1600/S_Despill.tif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="664" data-original-width="1179" height="225" src="https://4.bp.blogspot.com/-QGKtqhY__LA/WxZmPE-5o6I/AAAAAAAAJv0/Kcljjx9SgjYs4JMxa6YkXu3Na2jr0w0LACLcBGAs/s400/S_Despill.tif" width="400" /></a></div>
<br />
This gizmo gives much more control to user<br />
1. User can visualise the the amount of spill removed from the plate.<br />
2. Make your screen to middle gray after removing spill by adjust the multiply.<br />
3. Red Contribution controlling the red amount of de-spill. Mask option give user to apply the red contribution on selected areas. (good for control the skin tone edges)<br />
<br />
Here is the video demo:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/0-OOxKq4150/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/0-OOxKq4150?feature=player_embedded" width="320"></iframe></div>
<br />
Download: <a href="http://www.nukepedia.com/gizmos/channel/s_despill">http://www.nukepedia.com/gizmos/channel/s_despill</a><br />
<br /></div>
satheesh nuke tutorialshttp://www.blogger.com/profile/11629568558935326180noreply@blogger.com2tag:blogger.com,1999:blog-5180635823388970983.post-56631826631304353762018-02-02T22:27:00.000+05:302018-02-05T20:19:25.768+05:30DeepEdgeSmoother<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
DeepEdgeSmoother</div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
Deep compositing became day to day work in many compositing studios around the world. Nuke having couple of Deep nodes to do Deep compositings. But Nuke still lagging Deep edge manipulating nodes like edgeBlur, erode etc.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
I have faced many issues with blending edges while merging Deep inputs with 2D plates. Edge looks too sharp in many cases even there is Deep holdout. <span style="text-align: center;">DeepEdgeSmoother is applying softness on both end of Deep layer (Deep front and Deep back).</span></div>
<div style="text-align: left;">
<span style="text-align: center;"><br /></span></div>
<div style="text-align: left;">
<span style="text-align: center;">Before:</span></div>
<div style="text-align: left;">
<span style="text-align: center;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-dKgMEvKB2NA/WnSX2VnyWOI/AAAAAAAAJjo/2S4w1m6sHOkAVKaSaz2tj9UcbvNH6fNPgCLcBGAs/s1600/Screen%2BShot%2B2018-02-02%2Bat%2B10.23.48%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1350" data-original-width="1476" height="292" src="https://1.bp.blogspot.com/-dKgMEvKB2NA/WnSX2VnyWOI/AAAAAAAAJjo/2S4w1m6sHOkAVKaSaz2tj9UcbvNH6fNPgCLcBGAs/s320/Screen%2BShot%2B2018-02-02%2Bat%2B10.23.48%2BPM.png" width="320" /></a></div>
<div style="text-align: left;">
<span style="text-align: center;"><br /></span></div>
<div style="text-align: left;">
<span style="text-align: center;">After:</span></div>
<div style="text-align: left;">
<span style="text-align: center;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-JlWqHoWfMmY/WnSX8kPAXTI/AAAAAAAAJjs/L-69koZRO78pekzjnt1EeJ4SqIzPFdeTACLcBGAs/s1600/Screen%2BShot%2B2018-02-02%2Bat%2B10.24.18%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1004" data-original-width="1600" height="200" src="https://1.bp.blogspot.com/-JlWqHoWfMmY/WnSX8kPAXTI/AAAAAAAAJjs/L-69koZRO78pekzjnt1EeJ4SqIzPFdeTACLcBGAs/s320/Screen%2BShot%2B2018-02-02%2Bat%2B10.24.18%2BPM.png" width="320" /></a></div>
<div style="text-align: left;">
<span style="text-align: center;"><br /></span></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
This gizmo add smoothness on both end of deep data to blend the edges more naturally. I hope this will help you guys.<br />
<br />
Download here: <a href="https://drive.google.com/open?id=1W_UuxwA4sk7F6VFrOE4UdUt6wuLgFjJl" target="_blank">DeepEdgeSmoother</a></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<span style="text-align: center;"><br /></span></div>
</div>
satheesh nuke tutorialshttp://www.blogger.com/profile/11629568558935326180noreply@blogger.com1tag:blogger.com,1999:blog-5180635823388970983.post-12375850903021123202016-04-02T14:27:00.001+05:302016-04-08T00:36:59.926+05:30roto shape life time settings<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
roto shape life time based on keyframes</div>
<div style="text-align: center;">
<br /></div>
This is long time request. I haven't got time to look into this after joined in MPC. Got some time yesterday. Thought to update my blog with new tool. Here is the simple tool but much needed one ( i hope).<br />
<br />
One of my friend requested to automate roto shapes lifetime based on the key frame. We use multiple way to set roto shapes lifetime. Some artists uses lifetime tab in roto node, Some simply move the roto shape out of the working resolution. Some guys are using 'multiply' node to achieve this. Some artists animating 'visible' knob in roto node. The way of doing this will differ from artist to artist. How to make this organised ?.<br />
<br />
Here is the idea: lifetimeRoto.py<br />
<br />
Most of us using nuke roto node lifetime tab set the lifetime based on the frame range.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-Uu3qFvurPsA/Vv-D7nukvaI/AAAAAAAAIZU/izV_hZXg4T4-GowPFfwxeE5HSKXV0qH-A/s1600/Screen%2BShot%2B2016-04-02%2Bat%2B2.03.36%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="230" src="https://2.bp.blogspot.com/-Uu3qFvurPsA/Vv-D7nukvaI/AAAAAAAAIZU/izV_hZXg4T4-GowPFfwxeE5HSKXV0qH-A/s400/Screen%2BShot%2B2016-04-02%2Bat%2B2.03.36%2BPM.png" width="400" /></a></div>
<br />
<br />
Some artists using mouse click option in curve window in roto node.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-xYB53uROylc/Vv-Dw-YvI5I/AAAAAAAAIZQ/-yaEg8yvDA0nvnWNppx-6Zv1lU-Ri82OQ/s1600/Screen%2BShot%2B2016-04-02%2Bat%2B2.02.46%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://4.bp.blogspot.com/-xYB53uROylc/Vv-Dw-YvI5I/AAAAAAAAIZQ/-yaEg8yvDA0nvnWNppx-6Zv1lU-Ri82OQ/s400/Screen%2BShot%2B2016-04-02%2Bat%2B2.02.46%2BPM.png" width="400" /></a></div>
<br />
In both way we need to feed the frame range either we need to choose to-end or to start. Doing this is not time consuming task for compers. But for roto & clean-up artist ?<br />
<br />
lifetimeRoto.py automatically sets the selected rotoshapes lifetime based on the shapes key frame's. This code get the selected shapes keyframe value ( example: 10, 20, 30) and apply min and max to lifetime start and end respectively. After i run this code my roto shape lifetime set to 10 - 30 automatically by single click or short-key.<br />
<br />
I have assigned 'shift+L' as short-cut. Select your roto shape and make sure you have selected the roto node. Run this shortcut, Boooommmm. Your roto shape lifetime sets based on the keyframe.<br />
<br />
I hope this will helpful. Feature request and bug reports are welcome.<br />
<br />
Download: <a href="http://www.nukepedia.com/python/nodegraph/lifetimeroto" target="_blank">lifetimeroto.py</a><br />
<br />
menu.py lines:<br />
<br />
import lifetimeRoto<br />
<br />
menuBar = nuke.menu("Nuke")<br />
menuBar.addCommand('Edit/Node/lifetimeRoto', 'lifetimeRoto.setRotoLifeTime()', 'shift+l')<br />
<br />
Full code:<br />
<br />
'''<br />
Created on 07-april-2016<br />
@author: satheesh-R<br />
mail - satheesrev@gmail.com<br />
'''<br />
### to set selected roto shapes lifetime based on the min max keyframes value.<br />
<br />
import nuke<br />
<br />
def setRotoLifeTime():<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>### get selected node<br />
selNode = None<br />
try:<br />
selNode = nuke.selectedNode()<br />
except ValueError: # no node selected<br />
pass<br />
if selNode == None:<br />
nuke.message('make sure your roto node selected')<br />
return<br />
### find selected roto shapes keyframes<br />
if selNode.Class() == 'Roto':<br />
for selShape in selNode['curves'].getSelected():<br />
keyFrame = selShape[0].center.getControlPointKeyTimes()<br />
keyFrames = [int(i) for i in keyFrame]<br />
low = (min(keyFrames))<br />
high = (max(keyFrames))<br />
### applying min max keyframe to per shape lifetime<br />
selNode['lifetime_type'].setValue(4)<br />
selNode['lifetime_start'].setValue(low)<br />
selNode['lifetime_end'].setValue(high)<br />
<div>
<br /></div>
<br /></div>
satheesh nuke tutorialshttp://www.blogger.com/profile/11629568558935326180noreply@blogger.com1tag:blogger.com,1999:blog-5180635823388970983.post-53033407315716372102015-05-22T23:05:00.001+05:302019-01-29T13:04:08.116+05:30lockNode for nuke<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
lockNode.py</div>
<div style="text-align: center;">
<br /></div>
Locking the nodes knobs (sliders) inside nuke very long waited future. It is requested many time with foundry but i don't think they going to add this unique future. So i have decided to create a python code for this function. Her is the solution.<br />
<br />
This code allow user to lock the nodes knob. Once you lock the knobs, then you cant modify any sliders until you un-lock the knobs. This will save you from any accident changes. Hope this will help you guys.<br />
<br />
Latest version support to write the info to your nuke script. So it will always locked if you close your nuke script and re-open it. I have used some cheat method to keep the node locked while user save their nuke script. I have tested many times and haven't faced any issues. Let me know if you faced any issues.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/yCFkQhJiCa0/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/yCFkQhJiCa0?feature=player_embedded" width="320"></iframe></div>
<br />
<br />
<br />
steps:<br />
<br />
right mouse click on node property panel. You will get options 'lock_knobs' and 'unlock_knobs'.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-4_mwUVr3wGg/VV9l06oToxI/AAAAAAAAEdw/_oRLbvKwr_s/s1600/Screen%2BShot%2B2015-05-22%2Bat%2B10.51.51%2Bpm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="291" src="https://2.bp.blogspot.com/-4_mwUVr3wGg/VV9l06oToxI/AAAAAAAAEdw/_oRLbvKwr_s/s400/Screen%2BShot%2B2015-05-22%2Bat%2B10.51.51%2Bpm.png" width="400" /></a></div>
<br />
<br />
Select 'lock_knobs'. This code will lock will the knobs and put Node_Locked text into node label. So user can easily identify the locked knob in UI.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-YABc8YPHvFE/VV9mbiNsqEI/AAAAAAAAEd4/m0j5UhrHhkg/s1600/Screen%2BShot%2B2015-05-22%2Bat%2B10.54.39%2Bpm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="175" src="https://3.bp.blogspot.com/-YABc8YPHvFE/VV9mbiNsqEI/AAAAAAAAEd4/m0j5UhrHhkg/s400/Screen%2BShot%2B2015-05-22%2Bat%2B10.54.39%2Bpm.png" width="400" /></a></div>
<br />
<br />
If user selects 'unlock_knob'. This code will return knobs to active and remove the Node_Locked text from label.<br />
<br />
Save your nuke script with nodes locked. Close nuke and re-open the script. You can find the locked node still locked.<br />
<br />
mail to satheesrev@gmail.com for any bugs & reports.<br />
<br />
<br />
copy paste below lines into your menu.py.<br />
<br />
import lockNode<br />
<br />
<div style="text-align: left;">
<span style="background-color: white; color: #777777; font-family: "latoregular"; font-size: 14px;">propertiesmenu = nuke.menu("Properties")</span><br />
<span style="background-color: white; color: #777777; font-family: "latoregular"; font-size: 14px;">propertiesmenu.addSeparator()</span><br />
<span style="background-color: white; color: #777777; font-family: "latoregular"; font-size: 14px;">propertiesmenu.addCommand('lock_knobs', "lockNode.lock_knobs()")</span><br />
<span style="background-color: white; color: #777777; font-family: "latoregular"; font-size: 14px;">propertiesmenu.addCommand('unlock_knobs', "lockNode.unLoc</span><span style="background-color: white; color: #777777; font-family: "latoregular"; font-size: 0px; margin: 0px; padding: 0px;"> </span><span style="background-color: white; color: #777777; font-family: "latoregular"; font-size: 14px;">k_knobs()")</span></div>
<br />
def oc():<br />
<span style="white-space: pre;"> </span>nodes = nuke.allNodes()<br />
<span style="white-space: pre;"> </span>for selNode in nodes:<br />
<span style="white-space: pre;"> </span>allknobs=selNode.allKnobs()<br />
<span style="white-space: pre;"> </span>label = selNode['label'].getValue()<br />
<span style="white-space: pre;"> </span>if 'Node_Locked' in label:<br />
<span style="white-space: pre;"> </span>for knob in allknobs:<br />
<span style="white-space: pre;"> </span>knob.setEnabled(False)<br />
<br />
<span style="white-space: pre;"> </span>for a in nuke.allNodes('Group'):<br />
<span style="white-space: pre;"> </span>for node in a.nodes():<br />
<span style="white-space: pre;"> </span>allknobs=node.allKnobs()<br />
<span style="white-space: pre;"> </span>label = node['label' ].getValue()<br />
<span style="white-space: pre;"> </span>if 'Node_Locked' in label:<br />
<span style="white-space: pre;"> </span>for knob in allknobs:<br />
<span style="white-space: pre;"> </span>knob.setEnabled(False) <br />
<br />
nuke.addOnScriptLoad(oc)<br />
nuke.addOnCreate(oc)<br />
<br />
Here is the python code:<br />
<br />
<a href="http://www.nukepedia.com/python/nodegraph/locknode" target="_blank">download lockNode.py</a></div>
satheesh nuke tutorialshttp://www.blogger.com/profile/11629568558935326180noreply@blogger.com0tag:blogger.com,1999:blog-5180635823388970983.post-552615168735887092014-10-11T16:24:00.000+05:302014-10-11T16:24:11.959+05:30rippleEditOnOff<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
rippleEditOnOff.py</div>
<br />
Hi nukers i have created this little code for my friend request. I'm decided to share this code with you. Hope this will help you friends.<br />
<br />
This code toggle on - off ripple edit mode in nuke. Select your roto shape and run the hot-key. This will really help full while edit rotoshape inside nuke. Here im using alt+q as keyboard shortcut. But you can use your combination of key's.<br />
<br />
rippleEditOnOff.py work with nukes roto and rotopaint node. Tested several time and working fine. If you have any bugs or reports mail to satheesrev@gmail.com<br />
<br />
<br />
<br />
Original Code:<br />
<br />
### created by satheesh-r, Oct 2014.<br />### To toggle on & off nuke roto, rotopaint nodes ripple edit function.<br />### for bugs & reports: satheesrev@gmail.com<br /><br />import nuke<br /><br />def rippleEditOnOff():<br /> selNode = None<br /> try:<br /> selNode = nuke.selectedNode()<br /> except ValueError: # no node selected <br /> pass<br /> getValue = selNode['toolbar_ripple'].value()<br /> if getValue == False:<br /> selNode['toolbar_ripple'].setValue(True)<br /> if getValue == True:<br /> selNode['toolbar_ripple'].setValue(False)<br /> else:<br /> return<br />
<br />
<br />
menu.py:<br />
<br />
import rippleEditOnOff<br />
nuke.menu( 'Viewer' ).addCommand( 'rippleEdit/OnOff', 'rippleEditOnOff.rippleEditOnOff()', "alt+q")</div>
satheesh nuke tutorialshttp://www.blogger.com/profile/11629568558935326180noreply@blogger.com0tag:blogger.com,1999:blog-5180635823388970983.post-36681790966127328302014-09-30T21:30:00.001+05:302014-09-30T22:04:04.026+05:30extract selected roto shapes<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
extractSelectedShapes.py</div>
<br />
This script extract selected roto shapes from selected roto, rotopaint node in nuke. Usually we use to do, copy the desired roto shapes and then create a new roto node and paste the shapes. If roto node contain baked tracker info, then we copy paste the entire roto node and then delete unwanted shape's from pasted roto node.<br />
<br />
I have created extractSelectedShapes script to make this process automatically. Tested several times and working with nuke 6, 7, 8 versions. This code also work with roto shapes imported from silhouette and mocha.<br />
<br />
How to use:<br />
<br />
Select the roto shapes need to extract make sure your roto node selected.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-hapLhZfDhRE/VCrXdcFZl4I/AAAAAAAAEPs/Xw9W3jJY01I/s1600/Screenshot%2Bfrom%2B2014-09-30%2B21%3A46%3A23.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-hapLhZfDhRE/VCrXdcFZl4I/AAAAAAAAEPs/Xw9W3jJY01I/s1600/Screenshot%2Bfrom%2B2014-09-30%2B21%3A46%3A23.png" height="387" width="400" /></a></div>
<br />
Run the script. This script will prompt you to choose the output method. User can extract the selected shapes into one roto node or each shape into separate node.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-pkzwvdZA46U/VCrYjzz1o0I/AAAAAAAAEP0/JN53Lk2r59I/s1600/Screenshot%2Bfrom%2B2014-09-30%2B21%3A50%3A03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-pkzwvdZA46U/VCrYjzz1o0I/AAAAAAAAEP0/JN53Lk2r59I/s1600/Screenshot%2Bfrom%2B2014-09-30%2B21%3A50%3A03.png" height="400" width="373" /></a></div>
<br />
<br />
If user choose single this code copy paste selected shapes into single roto node.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-cLcX-5sms9U/VCrYkNcEswI/AAAAAAAAEP4/NZXz3zgFBug/s1600/Screenshot%2Bfrom%2B2014-09-30%2B21%3A50%3A35.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-cLcX-5sms9U/VCrYkNcEswI/AAAAAAAAEP4/NZXz3zgFBug/s1600/Screenshot%2Bfrom%2B2014-09-30%2B21%3A50%3A35.png" height="400" width="372" /></a></div>
<br />
Master roto node remain same.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-tlXvMazY6xM/VCrYkYvtPRI/AAAAAAAAEP8/NTZQLHQP5zw/s1600/Screenshot%2Bfrom%2B2014-09-30%2B21%3A50%3A17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-tlXvMazY6xM/VCrYkYvtPRI/AAAAAAAAEP8/NTZQLHQP5zw/s1600/Screenshot%2Bfrom%2B2014-09-30%2B21%3A50%3A17.png" height="400" width="375" /></a></div>
<br />
If user choose each, this code create multiple roto node and copy paste selected shapes into newly created roto nodes.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-amZolrvE7EA/VCrYk-6IYGI/AAAAAAAAEQE/3vCMbL-I8v8/s1600/Screenshot%2Bfrom%2B2014-09-30%2B21%3A51%3A13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-amZolrvE7EA/VCrYk-6IYGI/AAAAAAAAEQE/3vCMbL-I8v8/s1600/Screenshot%2Bfrom%2B2014-09-30%2B21%3A51%3A13.png" height="331" width="400" /></a></div>
<br />
extractSelectedShapes also link the track info if master roto have roto information on root layer. So no need to worry about linking track info.<br />
<br />
Sample video:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/5WFNtORGlwU?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<br />
Hope this code help you friends. enjoy :) <br />
<br />
For bugs and future request send mail to satheesrev@gmail.com.<br />
<br />
Download: <a href="http://www.nukepedia.com/python/misc/extractselectedshape" target="_blank">http://www.nukepedia.com/python/misc/extractselectedshape</a><br />
<br />
Original code:<br />
<br />
### created by satheesh-r July 2014<br />### to extract selected roto shapes from selected roto node. Tested with nuke 6,7,8.<br />### for bugs and reports: satheesrev@gmail.com<br /><br />import nuke, nukescripts<br /><br />def extractSelectedShapes():<br /> panel = nuke.Panel("extractSelectedShapes", 200)<br /> panel.addEnumerationPulldown('shapes goes to:\nroto node', 'single each')<br /> panel.addButton("cancel")<br /> panel.addButton("ok")<br /> showPanel = panel.show()<br /> userChoice = panel.value('shapes goes to:\nroto node')<br /> if showPanel == 0:<br /> return<br /> if showPanel == 1:<br /> selNode = None<br /> try:<br /> selNode = nuke.selectedNode()<br /> selXpos = selNode.xpos()<br /> selYpos = selNode.ypos()<br /> except ValueError: # no node selected<br /> pass<br /><br /> if selNode:<br /> if userChoice == 'single':<br /> newRotoNode = nuke.nodes.Roto()<br /> newRotoNode['xpos'].setValue(selXpos+200)<br /> newRotoNode['ypos'].setValue(selYpos)<br /> newRotoNode['curves'].rootLayer.setTransform(selNode['curves'].rootLayer.getTransform())<br /> for selShape in selNode['curves'].getSelected():<br /> shapeName = selShape.name<br /> newRotoNode.setName(shapeName)<br /> newRotoNode['curves'].rootLayer.append(selShape.clone())<br /> if userChoice == 'each':<br /> for selShape in selNode['curves'].getSelected():<br /> selXpos = selXpos + 200<br /> shapeName = selShape.name<br /> newRotoNode = nuke.nodes.Roto()<br /> newRotoNode['curves'].rootLayer.setTransform(selNode['curves'].rootLayer.getTransform())<br /> newRotoNode['xpos'].setValue(selXpos)<br /> newRotoNode['ypos'].setValue(selYpos)<br /> newRotoNode.setName(shapeName)<br /> newRotoNode['curves'].rootLayer.append(selShape.clone())<br /><br /> else:<br /> nuke.message('<center>
make sure you have selected your roto node\n<center>
then try again :)')<br /></center>
</center>
<br />
<br />
<br />
<br />
<br />
<br />
</div>
satheesh nuke tutorialshttp://www.blogger.com/profile/11629568558935326180noreply@blogger.com2tag:blogger.com,1999:blog-5180635823388970983.post-32705373323938592202014-04-27T17:46:00.001+05:302014-04-27T17:53:25.739+05:30Inbetweener for silhouette<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
Inbetweener</div>
<br />
<br />
Silhouette don't have the very use-full keyboard short-cut for jump half-way between frames like other software's have (nuke). In nuke you can jump half way through between key frames and frames by hitting 'alt+arrow' keys. But this future is missing inside silhouette.<br />
<br />
One of my friend requested me to write script for jumping half way through between frames inside silhouette. Also he mentioned this will going to be more use-full for roto artists. So I have created this scripts months ago and like to share with public. Hoping this will help you friends.<br />
<br />
This is what this script will do....<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/cFARnM7J6xQ?feature=player_embedded' frameborder='0'></iframe></div>
<br />
Keyboard short-cuts:<br />
<br />
alt+x for forward.<br />
alt+z for backward.<br />
<br />
<br />
Tested several months. Working fine with Silhouette v5 plus, v4 plus not tested in previous versions.<br />
<br />
For bugs and reports - satheesrev@gmail.com.<br />
<br />
download scripts:<br />
<br />
<a href="https://drive.google.com/file/d/0BzfeLEFhrh44YWU0MWNJaThsem8/edit?usp=sharing" target="_blank">inbetweener</a><br />
<br />
<br />
<div>
Installation:<br /></div>
<div>
download the scripts and Copy paste it into....<br /><br />Linux: /opt/SilhouetteFX/silhouette v5.1/resources/scripts/<br />
</div>
<div>
you have to change permission to copied file. Run this command in shell... chmod 777 -R rename_shapes.py</div>
<div>
<br /></div>
<div>
Windows: /opt/SilhouetteFX/silhouette v5.1/resources/scripts/<br /></div>
restart silhouette.<div class="yj6qo ajU">
<div class="ajR" data-tooltip="Show trimmed content" id=":vx" role="button" tabindex="0">
<img class="ajT" src="https://mail.google.com/mail/u/0/images/cleardot.gif" /></div>
</div>
</div>
satheesh nuke tutorialshttp://www.blogger.com/profile/11629568558935326180noreply@blogger.com0tag:blogger.com,1999:blog-5180635823388970983.post-91955637647496020832014-03-26T23:52:00.000+05:302014-03-30T11:48:30.329+05:30extractAlpha.py<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
extractAlpha.py</div>
<br />
Usually we use "Shuffle" node to extract alpha from ID mattes. Some of us use "Expression" node to do the same thing. Some time we need to use basic maths function in "Expression" node to get exact matte. This code create 'Expression' node and feed the value from the window. It also clamp the value. So no need to worry about the clamp issue.<br />
<br />
Example maths function: r, (r+b)-g, (r+g+b), (r-g)<br />
<br />
This code will pop-up small window like below image.,<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-gjAz3XzAdTw/UzMVZ9QBZwI/AAAAAAAAD8M/-42PSHw00gs/s1600/Screenshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-gjAz3XzAdTw/UzMVZ9QBZwI/AAAAAAAAD8M/-42PSHw00gs/s1600/Screenshot.png" /></a></div>
<br />
<br />
User can select maths function from the list of drop-down menu. Most of the maths function's are pre-defined and stored on the UserChoice menu. This code allow user to feed their custom maths function. If user feed anything on custom math field this code will take the code and feed the info into the expression node.<br />
<br />
Below video will explain how the function works:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/zissFm2efE8?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<br />
<br />
Hope this will help you friends.,<br />
<br />
Download: <a href="https://drive.google.com/file/d/0BzfeLEFhrh44WFRjU1lYLU1fODQ/edit?usp=sharing" target="_blank">https://drive.google.com/file/d/0BzfeLEFhrh44WFRjU1lYLU1fODQ/edit?usp=sharing</a><br />
<br />
nukepedia: <a href="http://www.nukepedia.com/python/nodegraph/extractalpha" target="_blank">extractalpha.py</a><br />
<br />
<br />
Raw code:<br />
<br />
'''<br />
Created on 26-March-2014<br />
@author: satheesh-R<br />
mail - satheesrev@gmail.com<br />
'''<br />
<br />
import nuke<br />
<br />
def extractAlpha():<br />
ea = nuke.Panel("extractAlpha.... by satheesh-R", 350)<br />
ea.addEnumerationPulldown('UserChoice:\n(pre-defined math)', 'none r g b a r+g+b r+g+b+a r+g r+b g+b r-g r-b g-b (r+g)-b (r+b)-g (g+b)-r')<br />
math = ea.addSingleLineInput('custom Math:', '')<br />
ea.addButton("cancel")<br />
ea.addButton("ok")<br />
show = ea.show()<br />
outChannel = ea.value('UserChoice:\n(pre-defined math)')<br />
customMath = ea.value('custom Math:')<br />
print outChannel<br />
if show == 0:<br />
return<br />
if customMath:<br />
exp = nuke.createNode('Expression')<br />
exp['expr3'].setValue('clamp('+customMath+')')<br />
exp['label'].setValue(customMath+' to alpha')<br />
else:<br />
if outChannel == 'none':<br />
return<br />
else:<br />
exp = nuke.createNode('Expression')<br />
exp['expr3'].setValue('clamp('+outChannel+')')<br />
exp['label'].setValue(outChannel+' to alpha')</div>
satheesh nuke tutorialshttp://www.blogger.com/profile/11629568558935326180noreply@blogger.com4tag:blogger.com,1999:blog-5180635823388970983.post-90766564052021056952014-02-26T23:13:00.000+05:302014-02-26T23:13:21.535+05:30connectMultipleMask<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
connectMultipleMask.py</div>
<br />
Nuke having its won short key for connecting selected multiple nodes input into one target node. It is underedit menu. Goto edit --> node --> splay first will do the job. There are three more combination of shot keys with 'U'. Check with each one and enjoy. Thanks to Frank Rueter to give the information.<br />
<br />
Even-though nuke don't have short-cut key for connect multiple selected nodes 'Mask' input to target node.<br />
<br />
Tried with 'splayLast to A' 'splayFirst to A', But it connect single input nodes mask input to target node and fails with 2 or more inputs node.<br />
<br />
check ref image:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-d8Urd8xQcP8/Uw4k5irsYZI/AAAAAAAAD5Q/d2tCsfU0G-k/s1600/Screenshot-5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-d8Urd8xQcP8/Uw4k5irsYZI/AAAAAAAAD5Q/d2tCsfU0G-k/s1600/Screenshot-5.png" height="189" width="320" /></a></div>
<br />
Because splay short-cuts are working based on input order. Its not considering optional inputs. If input 0 is none it will connect 0 to target and so one so forth with other inputs :). Hmmmmm good ya..<br />
<br />
Yup then how to connect all selected nodes 'mask' input to target node with single click ?<br />
<br />
Here is the script for connect multiple nodes mask input to target node. This script will connect selected nodes mask input to target node. It will do nothing if no mask input nodes.<br />
<br />
check ref image:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-zFEukLQ_Ksk/Uw4mnA0Ki_I/AAAAAAAAD5c/SPCyDxu0zhY/s1600/Screenshot-6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-zFEukLQ_Ksk/Uw4mnA0Ki_I/AAAAAAAAD5c/SPCyDxu0zhY/s1600/Screenshot-6.png" height="216" width="320" /></a></div>
<br />
connect multiple nodes masks input to target node. Make sure your selecting the target node at last. Select the nodes need to connect and then shit+select the target node. If select with mouse drag function make sure to select the target node at last. Then hit the short-cut key. Bang!!!! all your nodes mask input connected with target node.<br />
<br />
Hope this will help you friends.,<br />
<br />
Download:<br />
<br />
<a href="https://drive.google.com/file/d/0BzfeLEFhrh44VkctenhSU2c3Nm8/edit?usp=sharing" target="_blank">connectMultipleMask.py</a><br />
<br />
<br />
Raw Code:<br />
<br />
<br />
'''<br />@author: satheesh-R<br />for bugs and reports,, mail - satheesrev@gmail.com<br />'''<br /><br />### connect multiple nodes masks input to target node. Make sure your selecting the target node at last.<br />### Select the nodes need to connect and then shit+select the target node. If select with mouse drag function make sure to select the target node at last.<br />### Then hit the short-cut key. Bang!!!! all your nodes mask input connected with target node.<br /><br />import nuke<br /><br />def connectMultipleMask():<br /> try:<br /> selNode = nuke.selectedNode()<br /> except ValueError: # no node selected<br /> pass<br /> selCheck = selNode.optionalInput()<br /> if selCheck > 0:<br /> for node in nuke.selectedNodes():<br /> min_inputs = node.minInputs()<br /> if min_inputs > 2:<br /> node.setInput(2, selNode)<br /> if min_inputs == 2:<br /> node.setInput(1, selNode)<br /> if min_inputs == 1:<br /> pass<br /> if selCheck == 0:<br /> for node in nuke.selectedNodes():<br /> min_inputs = node.minInputs()<br /> if min_inputs > 2:<br /> node.setInput(2, selNode)<br /> if min_inputs == 2:<br /> node.setInput(1, selNode)<br /> if min_inputs == 1:<br /> pass<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br /></div>
satheesh nuke tutorialshttp://www.blogger.com/profile/11629568558935326180noreply@blogger.com0tag:blogger.com,1999:blog-5180635823388970983.post-63899188371250379932014-02-16T00:46:00.001+05:302014-02-16T00:48:35.176+05:30multiMatte<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
multiMatte v1.0</div>
<br />
Today i searched my old hard drive and found some of my old tool's created for EYEON FUSION. Start to recreate those tools for nuke. multiMatte is my first tool.<br />
<br />
Searched with google and found some multiMatte gizmo for nuke. Tryed everything But those tools are not working perfectly. So i decided to recreate the tool myself. Here is the multiMatte v1.0.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-358-LwW4c6I/Uv-2ndO5woI/AAAAAAAAD4A/sDB8rIVheeE/s1600/multiMatte.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-358-LwW4c6I/Uv-2ndO5woI/AAAAAAAAD4A/sDB8rIVheeE/s1600/multiMatte.png" height="266" width="400" /></a></div>
<br />
This gizmo allowing you to create matte from 9 channels. r,g,b,a,c,m,y, luma and black.<br />
<br />
matteColor drop down menu allowing you choose the channels. Matte erode fine will expand and shrink the output matte (used some cool tech for erode the matte)<br />
<br />
un-check bbox when input don't have bounding box. Otherwise matte erode will introduce bounding box and expand it. <br />
<br />
Expanding mask control tab allow user to invert the mask channel and blur the mask input.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-G2dDURJJzBI/Uv-4bh1uAWI/AAAAAAAAD4M/M9WsnsCVJls/s1600/Screenshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-G2dDURJJzBI/Uv-4bh1uAWI/AAAAAAAAD4M/M9WsnsCVJls/s1600/Screenshot.png" height="190" width="320" /></a></div>
<br />
By-default this gizmo output only converted alpha channel and remove other channels for efficiency. User can change the output method to "alpha to rgba".<br />
<br />
Values are clamped So no worries about negative values Which i found other tools. <br />
<br />
Tested with 6.3, 7.0 and 8.0.<br />
<br />
Example: <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/0UijnOs36j4?feature=player_embedded' frameborder='0'></iframe></div>
<br />
Hope this will help you friends..,<br />
<br />
<br />
Download:<br />
<a href="https://drive.google.com/file/d/0BzfeLEFhrh44eEhuS3AtMHJEdTQ/edit?usp=sharing" target="_blank">multiMatte_v1.0</a><br />
<br />
sample nuke script:<br />
<a href="https://drive.google.com/file/d/0BzfeLEFhrh44eTVRQlNEMFh3Ym8/edit?usp=sharing" target="_blank">multiMatte sample script</a><br />
<br />
<br />
<br />
<br /></div>
satheesh nuke tutorialshttp://www.blogger.com/profile/11629568558935326180noreply@blogger.com0tag:blogger.com,1999:blog-5180635823388970983.post-82563378923369421792014-01-18T14:36:00.000+05:302014-01-19T14:27:33.645+05:30Export Maya camera and Objects to Nuke<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
Export Maya camera and Objects to Nuke</div>
<br />
Exporting Maya Camera and Objects to Nuke is really night-mare. Using .fbx file format will fail most of the time. Scene not align perfectly, meshes not displaying properly, Camera missing the key-frames, etc. Reason for this is both the software's handling Cameras in different manner.<br />
<br />
There are several scripts available for exchanging data's between mayaToNuke. Each one having their plus and minuses. I found a clever python script to do the data exchange successfully. I done some custom with the original script and used it several time with out any failure.<br />
<br />
<br />
I created a new maya scene for tutorial purpose with animated camera and couple of objects. <br />
<br />
Maya to nuke traditional export method:<br />
<br />
Step-1: Selected all the objects and Camera.<br />
Step-2: Go to file---> Export Selection....<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-doXv8r1wBHg/UtmCehxG0bI/AAAAAAAADgc/fsWzshZoyxA/s1600/Screenshot23.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-doXv8r1wBHg/UtmCehxG0bI/AAAAAAAADgc/fsWzshZoyxA/s1600/Screenshot23.png" height="285" width="400" /></a></div>
<br />
<br />
step-3: Go to Edit Presets and Change fbx format to fbx2010.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-oRMQQT8X9Go/UtmDEVQEN3I/AAAAAAAADgk/iwo4LI3Xb58/s1600/Screenshot24.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-oRMQQT8X9Go/UtmDEVQEN3I/AAAAAAAADgk/iwo4LI3Xb58/s1600/Screenshot24.png" height="288" width="400" /></a></div>
<br />
step-4: Export Selection and save it as a .fbx file.<br />
<br />
step-5: Added ReadGeo node and import the saved .fbx file.<br />
checked all the objects in ReadGeo node to load all the objects. When export animated geometry .fbx format failed most of the time <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-s3wJBv4xY58/UtmE2VyupKI/AAAAAAAADgw/CSZ5-gSeO1o/s1600/Screenshot25.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-s3wJBv4xY58/UtmE2VyupKI/AAAAAAAADgw/CSZ5-gSeO1o/s1600/Screenshot25.png" height="260" width="400" /></a></div>
<br />
<br />
step-6: Added Camera node. Checked read from file. Imported the same fbx file.<br />
My camera imported with out any key-frames inside nuke.<br />
<br />
<br />
Maya to Nuke Using the python code:<br />
<br />
step-1: Download the script and place it your custom DIR.<br />
<br />
step-2: Start maya Load your scene and open script editor.<br />
<br />
step-3: In script editor go to file---> Load script (or) hit ctrl+O and load script.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-4if_JeUip6w/Utotz-0SPXI/AAAAAAAADhA/AdI4KvdZyJo/s1600/Screenshot26.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-4if_JeUip6w/Utotz-0SPXI/AAAAAAAADhA/AdI4KvdZyJo/s1600/Screenshot26.png" height="312" width="640" /></a></div>
<br />
<br />
step-4: execute the script. It will back all the animation (camera, objects if animated)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/sAUaCbK7hvA?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<br />
step-5: Maya pops-up a window named mayaToNuke.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-Nr0KsyWgTbw/UtoxaWk2tFI/AAAAAAAADhM/amXZZUaq5ZY/s1600/Screenshot27.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-Nr0KsyWgTbw/UtoxaWk2tFI/AAAAAAAADhM/amXZZUaq5ZY/s1600/Screenshot27.png" height="320" width="193" /></a></div>
<br />
step-6: You can find several menu options in mayaToNuke window.<br />
<br />
Edit:<br />
<br />
1. Calculate Maya Data.<br />
(This will bake the animated cam and objects) <br />
<br />
2. Generate Nuke Script.<br />
<br />
Select the objects you want to export.<br />
<br />
Generates nuke script's. Exports selected objects into custom DIR as .obj files. This script creates a DIR named "mayaToNuke" into where the Maya scene file saved.<br />
<br />
If your scene file is not saved it will prompt to save your scene. Hit enter save your script and run the script again.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-gaNk9hgBZgA/Uto25IK48_I/AAAAAAAADhc/lzK9tIkqSFs/s1600/Screenshot28.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-gaNk9hgBZgA/Uto25IK48_I/AAAAAAAADhc/lzK9tIkqSFs/s1600/Screenshot28.png" height="256" width="400" /></a></div>
<br />
It stores all the objects to the custom DIR. This script copy the nuke scene to clipboard and pop-up the success message.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-yhn2on625oU/Uto7K7tgx-I/AAAAAAAADh8/PaKG-vBAmck/s1600/Screenshot29.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-yhn2on625oU/Uto7K7tgx-I/AAAAAAAADh8/PaKG-vBAmck/s1600/Screenshot29.png" height="277" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
Open nuke and paste. you can find Camera, objects and scan-line render node pasted into nuke.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-tqSboAktIzg/Uto6kkrgLKI/AAAAAAAADh0/-XDYK-7_WUM/s1600/Screenshot30.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-tqSboAktIzg/Uto6kkrgLKI/AAAAAAAADh0/-XDYK-7_WUM/s1600/Screenshot30.png" height="256" width="400" /></a></div>
<br />
<br />
3. Show Nuke script.<br />
Maya pop-up a window with nuke script as text. You can copy paste the text into nuke.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-ueK6wh2u86A/Uto8NmrecPI/AAAAAAAADiI/sSDqQ0Ona2I/s1600/Screenshot31.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-ueK6wh2u86A/Uto8NmrecPI/AAAAAAAADiI/sSDqQ0Ona2I/s1600/Screenshot31.png" height="317" width="400" /></a></div>
<br />
<br />
4. Save nuke script As.<br />
Maya will allow you to save the nuke script into where ever you want.<br />
<br />
Type:<br />
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
Select export type. Camera, mesh or all</div>
<table style="-qt-table-type: root; margin-bottom: 4px; margin-left: 4px; margin-right: 4px; margin-top: 4px;"><tbody>
<tr><td style="border: none;"></td></tr>
</tbody></table>
This menu allow user to choose which needs to export. You can select all (all selected ) Camera only or Mesh only.<br />
<br />
Animation:<br />
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
Select animation type. Camera, mesh or all</div>
<table style="-qt-table-type: root; margin-bottom: 4px; margin-left: 4px; margin-right: 4px; margin-top: 4px;"><tbody>
<tr><td style="border: none;"></td></tr>
</tbody></table>
If you check All it will export animated mesh as .obj sequence and Camera. Else it will export objects as single .obj file and camera.<br />
<br />
check below video for more info:<br />
<br />
<a href="https://www.youtube.com/watch?v=dXJ0_rp8OQM" target="_blank">https://www.youtube.com/watch?v=dXJ0_rp8OQM</a><br />
<br />
<br />
<br />
Networks:<br />
<br />
None: Only the original node<br />
Base: Build basic 3d scenemayaToNuke<br />
ContactSheet: Contact camera.<br />
<br />
Maya Vray physical Camera:<br />
<br />
This script working fine with Vray physical Camera in maya.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-UHnee0KDkDI/UtuS96iJz6I/AAAAAAAADis/1aRvZ05xkSY/s1600/Maya.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-UHnee0KDkDI/UtuS96iJz6I/AAAAAAAADis/1aRvZ05xkSY/s1600/Maya.jpg" height="291" width="640" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-CmSAsqW9D_0/UtuS981NQZI/AAAAAAAADi4/r445FWsRIpk/s1600/Nuke.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-CmSAsqW9D_0/UtuS981NQZI/AAAAAAAADi4/r445FWsRIpk/s1600/Nuke.jpg" height="330" width="640" /></a></div>
<br />
<br />
Tested with maya 2013 and V-Ray 2.30.01.<br />
<br />
<br />
Thanks to pzhaojing for giving us the awesome script.<br />
<br />
<br />
Original script:<br />
<a href="http://www.creativecrash.com/maya/script/maya2nuke-v2">http://www.creativecrash.com/maya/script/maya2nuke-v2</a><br />
<br />
<br />
Download below script and enjoy...<br />
<br />
Modified script:<br />
<a href="https://drive.google.com/file/d/0BzfeLEFhrh44T3Z2REpyckF0aW8/edit?usp=sharing" target="_blank">https://drive.google.com/file/d/0BzfeLEFhrh44T3Z2REpyckF0aW8/edit?usp=sharing</a><br />
<br />
<br />
Hope this will help you friends. feedbacks and bugs welcome.</div>
satheesh nuke tutorialshttp://www.blogger.com/profile/11629568558935326180noreply@blogger.com6tag:blogger.com,1999:blog-5180635823388970983.post-55152437526968012202013-12-17T23:57:00.000+05:302013-12-17T23:59:06.797+05:30switchMatte<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
switchMatte v2.0</div>
<br />
So long before i created this tool for my personal use. Recently improved the tool with extra control's.<br />
<br />
<br />
<div style="text-align: left;">
switchMatte v2.0 works like shakes switchmatte and Fusion matte control. Added spill control with in the node So user no need to add extra Spill nodes.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
switchMatte v2.0 interface. </div>
<div style="text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-eWy03bcZPH0/UrCUxHYbFHI/AAAAAAAADdY/-eBtTjexJNU/s1600/switchMatte_0001.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-eWy03bcZPH0/UrCUxHYbFHI/AAAAAAAADdY/-eBtTjexJNU/s1600/switchMatte_0001.jpg" height="400" width="347" /></a></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Matte channel drop-down menu allowing you to choose the matte channel.</div>
<div style="text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-p3a9vnrEVfA/UrCVqQLboXI/AAAAAAAADdg/KcHE5DBdy6w/s1600/Screenshot1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-p3a9vnrEVfA/UrCVqQLboXI/AAAAAAAADdg/KcHE5DBdy6w/s1600/Screenshot1.png" height="281" width="400" /></a></div>
<div style="text-align: left;">
User can expand and blur the alpha channel. Luma threshold slider can increase and decrease the luminance value.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Despill menu allowing you to remove the spill from the image. spill only edges control the despill area. </div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Download and play with this tool and leave the comment and requests.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
Download: <a href="http://www.nukepedia.com/gizmos/channel/switchmatte">http://www.nukepedia.com/gizmos/channel/switchmatte</a><br />
<br /></div>
satheesh nuke tutorialshttp://www.blogger.com/profile/11629568558935326180noreply@blogger.com0tag:blogger.com,1999:blog-5180635823388970983.post-75519561685097111342013-10-26T19:08:00.001+05:302013-10-27T00:14:25.750+05:30rename roto shapes in silhouette<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
rename_shapes.py</div>
<br />
I know this is for another application. Anyhow this script will help you friends. So im sharing this with you.<br />
<br />
I
searched very long some python code for rename roto shapes in
silhouette. I tried my self sometime but can't make it exactly what i
want. Accidentally i got the script from Johnny Chan's web site.<br />
<a class="ot-anchor" href="http://picostyle.com/scripts/" rel="nofollow">http://picostyle.com/scripts/</a><br />
<br />
I made some changes with his script to make it more usable. You can customize as per your need. Hope this will help you friends.<br />
<br />
<br />
<br />
This code will take the Layer name and replace the name to shapes inside the Layer. So no need to rename your hundreds and hundreds of roto shapes manually inside silhouette.<br />
<br />
Follow below steps To make it work..<br />
<br />
Before:<br />
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-f_ubT844_HI/UmvBEKCbyzI/AAAAAAAADD4/yFp9zsWGAz0/s1600/Before.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-f_ubT844_HI/UmvBEKCbyzI/AAAAAAAADD4/yFp9zsWGAz0/s1600/Before.jpg" height="186" width="400" /></a></div>
<br />
1. Rename your Layer:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-w3H7O9SRaHg/UmvBN3M45_I/AAAAAAAADEA/fUrskXrsvW4/s1600/after.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-w3H7O9SRaHg/UmvBN3M45_I/AAAAAAAADEA/fUrskXrsvW4/s1600/after.jpg" height="201" width="400" /></a></div>
<br />
<br />
<br />
<br />
2. Go to satheesh in menu bar. Under satheesh you can find Rename-> Rename shapes. select . ( silhouette 5plus)<br />
<br />
Go to Action in menu bar. Under Action you can find Rename-> Rename shapes. select . ( silhouette 4 or below)<br />
<br />
silhouette 5 above...<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-k83NmfZ4kjo/UmvBVEinJRI/AAAAAAAADEI/RzCdUmrPhEU/s1600/menu.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-k83NmfZ4kjo/UmvBVEinJRI/AAAAAAAADEI/RzCdUmrPhEU/s1600/menu.jpg" height="73" width="400" /></a></div>
<br />
<br />
silhouette 4 and below. <br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-jvn4vZCJw_4/UmvDDSnfEUI/AAAAAAAADEU/b-FHPUsP03s/s1600/menu_sil_04_0001.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-jvn4vZCJw_4/UmvDDSnfEUI/AAAAAAAADEU/b-FHPUsP03s/s1600/menu_sil_04_0001.jpg" height="85" width="400" /></a></div>
<br />
<br />
After:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-6EYEmatU528/UmvDOucR2vI/AAAAAAAADEc/ijT0mbWpTkI/s1600/renamed.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-6EYEmatU528/UmvDOucR2vI/AAAAAAAADEc/ijT0mbWpTkI/s1600/renamed.jpg" height="203" width="400" /></a></div>
<br />
<br />
That's it....<br />
<br />
Thanks to Johnny Chan's for this most usefull code.<br />
<br />
Download: <a class="ot-anchor" href="http://sdrv.ms/1a7ztlM" rel="nofollow" target="_blank">http://sdrv.ms/1a7ztlM</a><br />
<br />
There are 2 python codes inside the file. One for silhouette 5plus and another one for silhouette 4 and below.<br />
<br />
<div>
Installation:</div>
<div>
download the script and Copy paste it into....<br />
<br />
Linux: /opt/SilhouetteFX/silhouette v5.1/resources/scripts/actions/</div>
<div>
<span style="color: red;">(you have to change permission to copied file. Run this command in shell... chmod 777 -R </span><span style="color: red;">/opt/SilhouetteFX/silhouette v5.1/resources/scripts/actions/rename_shapes.py)</span></div>
<div>
<br /></div>
<div>
Windows: C:/Program Files/SilhouetteFX/Silhouette v5.0/resources/scripts/actions/</div>
Restart silhouette. Enjoy :)<br />
<br />
<br />
Tested with windows and Linux. Working fine with silhouette v5 and v4.1.<br />
<br />
<br /></div>
satheesh nuke tutorialshttp://www.blogger.com/profile/11629568558935326180noreply@blogger.com1tag:blogger.com,1999:blog-5180635823388970983.post-91898171616797942502013-10-12T16:23:00.001+05:302013-12-26T23:07:51.089+05:30Bake tracker to Roto<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
trackRoto.py</div>
<br />
Everyday we are (compers) doing this process so many times. We use tracker information to do most of the Roto. For doing this we are doing following things: <br />
<br />
Usually Some compers copy the Tracker node and paste it next to the Roto node which need to match-moved.<br />
<br />
Some use to copy paste the Trackers animation value into roto node's Root transform.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-9slOI9Tzg70/UlkXDygiQwI/AAAAAAAADBw/01szzd-SVv8/s1600/trackRoto_0857.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-9slOI9Tzg70/UlkXDygiQwI/AAAAAAAADBw/01szzd-SVv8/s1600/trackRoto_0857.jpg" height="171" width="400" /></a></div>
<br />
Following first step will slow down out script. Think if you have 50-100 roto shapes with tracker node.<br />
<br />
Connecting tracker values to roto node is best way, But connecting manually with so many roto node is time consuming process.<br />
So found the solution to automate this process. trackRoto.py.<br />
<br />
<span class="rem-submit-name"><span style="font-size: small;">Run this code with tracker node selected. This will create a roto node with selected tracker nodes track information baked. </span></span><span class="rem-submit-name"><span style="font-size: small;"><span style="font-size: small;">S</span>o <span style="font-size: small;">draw<span style="font-size: small;"> shape at any point and it</span></span> will follow the tracked object..</span></span><br />
<br />
<span class="rem-submit-name"><span style="font-size: small;">This code will bak<span style="font-size: small;">e</span> trac<span style="font-size: small;">king<span style="font-size: small;"> infor<span style="font-size: small;">mation based on your tracker node. </span></span></span> I<span style="font-size: small;">f <span style="font-size: small;">your tracker node enabled onl<span style="font-size: small;">y transform information then it will connect only the transform value. I<span style="font-size: small;">f your tracker enabled TRS then it will connect all the information automatically.</span></span></span></span></span></span><br />
<br />
<span class="rem-submit-name"><span style="font-size: small;">Hope this will help you friends..... c<span style="font-size: small;">heers..</span></span></span><br />
<br />
<span class="rem-submit-name"><span style="font-size: small;"><span style="font-size: small;">Updated on 26/12/2013.</span></span></span><br />
<br />
<span class="rem-submit-name"><span style="font-size: small;"><span style="font-size: small;">Now <span style="font-size: small;">this code</span> <span style="font-size: small;">c<span style="font-size: small;">reate default </span>roto node while user selected other nodes or nothing is selected.</span></span></span></span><br />
<span class="rem-submit-name"><span style="font-size: small;"><span style="font-size: small;"><br /></span></span></span>
<span class="rem-submit-name"><span style="font-size: small;"><span style="font-size: small;">Download: <a href="https://drive.google.com/file/d/0BzfeLEFhrh44SUVKd284OHpyM2c/edit?usp=sharing" target="_blank">https://drive.google.com/file/d/0BzfeLEFhrh44SUVKd284OHpyM2c/edit?usp=sharing</a></span></span></span><br />
<br />
<span class="rem-submit-name"><span style="font-size: small;"><span style="font-size: small;">code:</span></span></span><br />
<br />
##-------------------------------------------------<br />
## trackRoto v1.1<br />
## For bugs please email me at satheesrev@gmail.com<br />
## Compatibility: Nuke v5 - v8 plus<br />
##--------------------------------------------------<br />
<br />
import nuke, os, re<br />
<br />
def trackRoto():<br />
sel = None<br />
try:<br />
sel = nuke.selectedNode()<br />
X = sel.xpos()<br />
Y = sel.ypos()<br />
except ValueError: # no node selected<br />
pass<br />
if sel is None:<br />
rt = nuke.createNode('Roto')<br />
if sel:<br />
NodeType = re.sub(r"\d", "", sel.Class())<br />
print NodeType<br />
if NodeType == 'Tracker':<br />
rt = nuke.createNode('Roto')<br />
rt.setInput(0, None)<br />
rt.setXYpos(X+200,Y)<br />
rt['translate'].fromScript(sel['translate'].toScript())<br />
rt['rotate'].fromScript(sel['rotate'].toScript())<br />
rt['scale'].fromScript(sel['scale'].toScript())<br />
rt['center'].fromScript(sel['center'].toScript())<br />
rt['opacity'].setValue(1)<br />
<br />
else:<br />
rt = nuke.createNode('Roto')<br />
<br />
<br />
menu.py lines:<br />
<br />
import trackRoto<br />
n = nuke.toolbar('Nuke')<br />
n.addCommand('Edit/trackRoto', 'trackRoto.trackRoto()', 'O')<br />
<br />
<br /></div>
satheesh nuke tutorialshttp://www.blogger.com/profile/11629568558935326180noreply@blogger.com3tag:blogger.com,1999:blog-5180635823388970983.post-24043712178689318362013-09-28T00:16:00.000+05:302013-09-28T00:35:55.753+05:30superCrop<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
sCrop.py</div>
<br />
Nuke's crop node missing the future of select a region and crop. So i found little cheat way to achieve this. This little script get the value from ROI and set the value to selected crop node.<br />
<br />
Step - 1: <br />
Add a crop node.<br />
<br />
Step - 2:<br />
Enable ROI draw mode by " alt+w "<br />
<br />
Step - 3:<br />
Choose your region using mouse drag on Viewer. Disable the ROI by " shift+w "<br />
( currently 'roi' enable or disable is not accessible via python, So we have to disable it by manually )<br />
<br />
<br />
Step - 4:<br />
Run this code.<br />
<br />
<br />
Video example: <br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/ikgBlPat11Y?feature=player_embedded' frameborder='0'></iframe> </div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Hope this will help you friends... </div>
<br />
<br />
python code:<br />
<br />
<style type="text/css">
p, li { white-space: pre-wrap; }
</style>
<br />
import os, math, nuke<br />
<br />
def sCrop():<br />
sel = None<br />
try:<br />
sel = nuke.selectedNode()<br />
except ValueError: # no node selected <br />
pass<br />
<br />
if sel is not None:<br />
### getting value from ROI<br />
roiXY = nuke.activeViewer().node().roi()<br />
crpX = roiXY['x']<br />
crpY = roiXY['y']<br />
crpT = roiXY['t']<br />
crpR = roiXY['r']<br />
### assigning value to Crop<br />
sel['box'].setValue(crpX, 0)<br />
sel['box'].setValue(crpT, 1)<br />
sel['box'].setValue(crpR, 2)<br />
sel['box'].setValue(crpY, 3)<br />
else:<br />
nuke.message('No Crop selected')<br />
sCrop()</div>
satheesh nuke tutorialshttp://www.blogger.com/profile/11629568558935326180noreply@blogger.com0tag:blogger.com,1999:blog-5180635823388970983.post-79596944009822815592013-09-15T00:57:00.000+05:302013-09-15T01:00:28.662+05:30nuke particle templates<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
Nuke particle Templates</div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
Hi nuker's this page dedicated for nuke particle templates. I will keep update this page with different nuke particle template's. Enjoy.... </div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
1. sparks ( welding sparks)</div>
<div style="text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/80t2ent93Nw?feature=player_embedded' frameborder='0'></iframe></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
This is simple sparks, you can manipulate as per your need.<br />
<br />
Download: <br />
<a href="https://docs.google.com/file/d/0BzfeLEFhrh44M3hQM1J0bGtyV00/edit?usp=sharing" target="_blank">sparks_v01.nk</a></div>
</div>
satheesh nuke tutorialshttp://www.blogger.com/profile/11629568558935326180noreply@blogger.com1tag:blogger.com,1999:blog-5180635823388970983.post-19257079860112879162013-09-09T23:13:00.004+05:302014-07-14T19:44:38.570+05:30Nuke 7.0 roto shapes to Nuke 6.0 - 6.3<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
Nuke 7.0 roto shapes to Nuke 6.0 - 6.3</div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
Hi friends today i faced a problem with nuke roto shapes because of version-up. I done roto with nuke 7.0 and my friend need it for nuke 6.3. I just rendered as image sequence and send it to him. Everything is fine. But the edit has changed later and frames extended at beginning of the shot.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
So i searched with google and found a solution. Thank you foundry!!! always artist friendly..</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
They already have solution for this. They documented this with release notes. You can find this nuke 7.0v1 release notes page no 8.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
If you want Nuke 7 scripts to load in Nuke 6, use the convertToNuke6 or<br />
convertDirectoryToNuke6 Python functions when running Nuke 7 in<br />
terminal only mode.</div>
<div style="text-align: left;">
Here is the step to convert nuke7 rotoshape to nuke 6 rotoshape.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Save your roto-shapes into new nuke file and save it into separate folder. </div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
step 01.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
open terminal and redirect to nuke7 installed DIR.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
step 02.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Run nuke terminal mode.</div>
<div style="text-align: left;">
for windows: Nuke7.0 -t</div>
<div style="text-align: left;">
for Linux: ./Nuke7.0 -t</div>
<div style="text-align: left;">
for OSX: ./Nuke7.0 -t <span style="font-size: x-small;">( if this wrong let me know )</span></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<span style="font-size: small;">step 03.</span></div>
<div style="text-align: left;">
<span style="font-size: small;">enter below line and hit enter</span></div>
<div style="text-align: left;">
<span style="font-size: small;"><br /></span></div>
<div style="text-align: left;">
<span style="font-size: small;">import nuke.rotopaint</span></div>
<div style="text-align: left;">
<span style="font-size: small;"><br /></span></div>
<div style="text-align: left;">
<span style="font-size: small;">step 04.</span></div>
<div style="text-align: left;">
<span style="font-size: small;"><br /></span></div>
<div style="text-align: left;">
<span style="font-size: small;">enter below code with your nuke7 roto-shape file name and destination file name.</span></div>
<div style="text-align: left;">
<span style="font-size: small;">nuke.rotopaint.convertToNuke6 ("Nuke 7 rotofile", "destination file")</span></div>
<div style="text-align: left;">
<span style="font-size: small;"><br /></span></div>
<div style="text-align: left;">
<span style="font-size: small;">Example:</span></div>
<div style="text-align: left;">
<span style="font-size: small;"><br /></span></div>
<div style="text-align: left;">
<span style="font-size: small;">nuke.rotopaint.convertToNuke6("/home/satheesh/Desktop/rotoConvert/Test_nuke7_roto_v01.nk", "/home/satheesh/Desktop/rotoConvert/Test_nuke6_roto.nk")</span><br />
<br />
<span style="color: blue;">For Nuke 8.0 above users:</span><br />
<br />
<span style="color: blue;">Open the script which contain roto shapes in nuke 7.0v01(above) and save it as nuke script. Ignore all the warnings raised by nuke 7+. Now follow above steps.</span><br />
<span style="color: blue;">( Nuke 7 doesn’t support open spline. So to avoid any error make sure your script don’t have open spline ) </span></div>
<div style="text-align: left;">
<span style="font-size: small;"><br /></span></div>
<div style="text-align: left;">
<span style="font-size: small;">Now you can open the rotoshapes into nuke 6.0 - 6.3. While you import this into nuke first time. </span></div>
<div style="text-align: left;">
<span style="font-size: small;"><br /></span></div>
<div style="text-align: left;">
<span style="font-size: small;">Nuke will through some error like below image</span></div>
<div style="text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-Mb_iDFQC3XM/Ui4IBuRkLGI/AAAAAAAAC9s/X-g3Yg8eMr8/s1600/nukeRotoShape.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-Mb_iDFQC3XM/Ui4IBuRkLGI/AAAAAAAAC9s/X-g3Yg8eMr8/s1600/nukeRotoShape.jpg" /></a></div>
<div style="text-align: left;">
<br />
<br />
<br /></div>
<div style="text-align: left;">
<span style="font-size: small;">Just ignore this err<span style="font-size: small;">or and enjo<span style="font-size: small;">y.... Hope this will help you friends.</span></span></span></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
</div>
</div>
satheesh nuke tutorialshttp://www.blogger.com/profile/11629568558935326180noreply@blogger.com0tag:blogger.com,1999:blog-5180635823388970983.post-90916527936191246312013-08-08T00:11:00.000+05:302013-08-19T23:53:02.428+05:30paintNodeOpacity.py<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
paintNodeOpacity python code</div>
<br />
<br />
This little code will help you to control nuke "rotopaint" nodes clone & paint brush opacity via some short-cut keys. I created this code for my fellow artist who's working with me in paint department.<br />
<br />
Short-cut keys are assigned as per his need. You can use your custom short-cut keys.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-aOaClvqZhYY/UgKRTHwSQ_I/AAAAAAAAC58/P4ea2HN-63s/s1600/paintOpacity.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-aOaClvqZhYY/UgKRTHwSQ_I/AAAAAAAAC58/P4ea2HN-63s/s1600/paintOpacity.png" height="355" width="400" /></a></div>
<br />
<br />
<br />
There are 5 control option.<br />
<br />
<span style="color: blue;">"shift+>", "shift+<"</span> <br />
user can up & down the opacity value using <span style="color: blue;">"shift+>" and "shift+<"</span>. This will jump between current value to +0.05 or -0.05.<br />
<br />
If your value will 1 it start to decrease 0.95, 0.9, 0.85 so one so forth....<br />
<br />
<br />
<span style="color: red;">"ctrl+>", "ctrl+<"</span><br />
user can up & down the opacity value using<span style="color: blue;"><span style="color: red;"> "ctrl+>" and </span></span><span style="color: red;">"ctrl+<"</span>. This will jump between current value to +0.01 or -0.01.<br />
<br />
If your value will 1 it start to decrease 0.99, 0.98, 0.97 so one so forth....<br />
<br />
<span style="color: magenta;">"ctrl+Shift+<</span><span style="color: magenta;">" and "ctrl+Shift+<"</span><br />
This will return the opacity value to default 1 and 0.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="https://ytimg.googleusercontent.com/vi/_5YtcneUr60/0.jpg" height="266" width="320"><param name="movie" value="https://www.youtube.com/v/_5YtcneUr60?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" /><param name="bgcolor" value="#FFFFFF" /><param name="allowFullScreen" value="true" /><embed width="320" height="266" src="https://www.youtube.com/v/_5YtcneUr60?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" type="application/x-shockwave-flash" allowfullscreen="true"></embed></object></div>
<br />
<br />
Hope this will help you guys.<br />
<br />
<br />
updated Aug19th: Fixed NameError:. In previous version, while user accidentally hit these short-cut nuke will pop-up the name error. This issue fixed now and removed "please select rotopaint node" message.<br />
<br />
<br />
Download: <a href="http://sdrv.ms/1dmKF3h" target="_blank">paintOpacity.py</a><br />
<br />
else: copy paste below code:<br />
<br />
'''<br />
Created on 07-august-2013<br />
@author: satheesh-R<br />
mail - satheesrev@gmail.com<br />
'''<br />
<br />
<br />
import nuke, math, os<br />
<br />
def paintOpacityUp():<br />
selNode = None<br />
try:<br />
selNode = nuke.selectedNode()<br />
except ValueError: # no node selected<br />
pass<br />
cls = selNode.Class()<br />
<br />
if cls == 'RotoPaint':<br />
for a in nuke.selectedNodes():<br />
getValue = a['toolbar_opacity'].value()<br />
newValue = sorted([0, getValue + 0.05, 1])[1]<br />
setVal = a['toolbar_opacity'].setValue(newValue)<br />
else:<br />
return<br />
<br />
def paintOpacityUpIncrease():<br />
selNode = None<br />
try:<br />
selNode = nuke.selectedNode()<br />
except ValueError: # no node selected<br />
pass<br />
cls = selNode.Class()<br />
<br />
if cls == 'RotoPaint':<br />
for a in nuke.selectedNodes():<br />
getValue = a['toolbar_opacity'].value()<br />
newValue = sorted([0, getValue + 0.01, 1])[1]<br />
setVal = a['toolbar_opacity'].setValue(newValue)<br />
else:<br />
return<br />
<br />
<br />
def paintOpacityDown():<br />
selNode = None<br />
try:<br />
selNode = nuke.selectedNode()<br />
except ValueError: # no node selected<br />
pass<br />
cls = selNode.Class()<br />
<br />
if cls == 'RotoPaint':<br />
for a in nuke.selectedNodes():<br />
getValue = a['toolbar_opacity'].value()<br />
newValue = getValue - 0.05<br />
if newValue < 0: newValue = 0<br />
setVal = a['toolbar_opacity'].setValue(newValue)<br />
else:<br />
return<br />
<br />
def paintOpacityDecrease():<br />
selNode = None<br />
try:<br />
selNode = nuke.selectedNode()<br />
except ValueError: # no node selected<br />
pass<br />
cls = selNode.Class()<br />
<br />
if cls == 'RotoPaint':<br />
for a in nuke.selectedNodes():<br />
getValue = a['toolbar_opacity'].value()<br />
newValue = getValue - 0.01<br />
if newValue < 0: newValue = 0<br />
setVal = a['toolbar_opacity'].setValue(newValue)<br />
else:<br />
return<br />
<br />
def paintOpacityDefault():<br />
selNode = None<br />
try:<br />
selNode = nuke.selectedNode()<br />
except ValueError: # no node selected<br />
pass<br />
cls = selNode.Class()<br />
<br />
if cls == 'RotoPaint':<br />
for a in nuke.selectedNodes():<br />
a['toolbar_opacity'].setValue(1)<br />
<br />
else:<br />
return<br />
<br />
def paintOpacityZero():<br />
selNode = None<br />
try:<br />
selNode = nuke.selectedNode()<br />
except ValueError: # no node selected<br />
pass<br />
cls = selNode.Class()<br />
<br />
if cls == 'RotoPaint':<br />
for a in nuke.selectedNodes():<br />
a['toolbar_opacity'].setValue(0)<br />
<br />
else:<br />
return<br />
_______________________________________________<br />
<br />
<br />
<br />
menu.py<br />
<br />
import paintOpacity<br />
<br />
menuBar = nuke.menu("Nuke")<br />
<br />
menuBar.addCommand('Edit/Node/paintOpacity/Up', 'paintOpacity.paintOpacityUp()', 'shift+>')
<br />
menuBar.addCommand('Edit/Node/paintOpacity/Down', 'paintOpacity.paintOpacityDown()', 'shift+<')
<br />
menuBar.addCommand('Edit/Node/paintOpacity/increase', 'paintOpacity.paintOpacityUpIncrease()', 'ctrl+.')
<br />
menuBar.addCommand('Edit/Node/paintOpacity/decrease', 'paintOpacity.paintOpacityDecrease()', 'ctrl+,')
<br />
menuBar.addCommand('Edit/Node/paintOpacity/default', 'paintOpacity.paintOpacityDefault()', 'ctrl+shift+>')<br />
menuBar.addCommand('Edit/Node/paintOpacity/zero', 'paintOpacity.paintOpacityZero()', 'ctrl+shift+<')<br />
<br />
<br /></div>
satheesh nuke tutorialshttp://www.blogger.com/profile/11629568558935326180noreply@blogger.com0tag:blogger.com,1999:blog-5180635823388970983.post-8760530747128612592013-08-06T22:19:00.000+05:302013-10-21T22:49:28.545+05:30 autoPinning.py<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
auto pinning nuke cornerPin</div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
This little code place the cornerPin nodes 4 pin's automatically based on the bbox. If your image dosen't have bbox add a crop node and crop it as per your need.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Before:</div>
<div style="text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-Oiw1cjYAy9M/UgEoPwK_viI/AAAAAAAAC5U/zHdh0s0gBUM/s1600/autoPinning_before.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-Oiw1cjYAy9M/UgEoPwK_viI/AAAAAAAAC5U/zHdh0s0gBUM/s1600/autoPinning_before.png" height="400" width="335" /></a></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
After:</div>
<div style="text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-YWomtgdXdTY/UgEoXWRBwwI/AAAAAAAAC5c/Pk0lMVHYxcQ/s1600/autoPinning_after.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-YWomtgdXdTY/UgEoXWRBwwI/AAAAAAAAC5c/Pk0lMVHYxcQ/s1600/autoPinning_after.png" height="400" width="335" /></a></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-87GjqaHWseg/UgEquX9cr7I/AAAAAAAAC5s/FgfJvk2WZwk/s1600/autoPinning_example.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-87GjqaHWseg/UgEquX9cr7I/AAAAAAAAC5s/FgfJvk2WZwk/s1600/autoPinning_example.png" height="640" width="344" /></a></div>
<br />
<br />
<br /></div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
Download: <a href="http://sdrv.ms/1cGAg23" target="_blank">autopinning.py</a></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
python code:</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
<style type="text/css">
p, li { white-space: pre-wrap; }
</style>
<br />
'''<br />Created on 04-august-2013<br />@author: satheesh<br />mail - satheesrev@gmail.com<br />'''<br /><br />import sys<br />import nuke<br /><br />def autoPinning():<br /> selNode = None<br /> try:<br /> selNode = nuke.selectedNode()<br /> except ValueError: # no node selected <br /> pass<br /><br /> if selNode is not None:<br /> ## auto pin for from<br /> selNode['from1'].setExpression('[value name].bbox.x', 0)<br /> selNode['from1'].setExpression('[value name].bbox.y', 1)<br /> selNode['from1'].clearAnimated()<br /> selNode['from2'].setExpression('[value name].bbox.r', 0)<br /> selNode['from2'].setExpression('[value name].bbox.y', 1)<br /> selNode['from2'].clearAnimated()<br /> selNode['from3'].setExpression('[value name].bbox.r', 0)<br /> selNode['from3'].setExpression('[value name].bbox.t', 1)<br /> selNode['from3'].clearAnimated()<br /> selNode['from4'].setExpression('[value name].bbox.x', 0)<br /> selNode['from4'].setExpression('[value name].bbox.t', 1)<br /> selNode['from4'].clearAnimated()<br /><br /> ## copying value's from<br /> selNode['to1'].setExpression('[value name].bbox.x', 0)<br /> selNode['to1'].setExpression('[value name].bbox.y', 1)<br /> selNode['to1'].clearAnimated()<br /> selNode['to2'].setExpression('[value name].bbox.r', 0)<br /> selNode['to2'].setExpression('[value name].bbox.y', 1)<br /> selNode['to2'].clearAnimated()<br /> selNode['to3'].setExpression('[value name].bbox.r', 0)<br /> selNode['to3'].setExpression('[value name].bbox.t', 1)<br /> selNode['to3'].clearAnimated()<br /> selNode['to4'].setExpression('[value name].bbox.x', 0)<br /> selNode['to4'].setExpression('[value name].bbox.t', 1)<br /> selNode['to4'].clearAnimated()<br /><br /><br /> else:<br /> nuke.message('No node selected')</div>
</div>
satheesh nuke tutorialshttp://www.blogger.com/profile/11629568558935326180noreply@blogger.com0tag:blogger.com,1999:blog-5180635823388970983.post-84312343640863002912013-07-13T22:23:00.000+05:302013-09-01T23:30:41.251+05:30Help full Nuke short-cut's<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
Some cool and very help full nuke short-cut's</div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
Here i'm going to share some cool and very help full nuke short-cut's with you friends. These are all my favourite short-cut's inside nuke.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
1. <span style="color: blue;">"ctrl+up arrow or ctrl+down arrow"</span></div>
<div style="text-align: left;">
<br />
you can move your selected node to above or below the next node.</div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/ch10kAtH4hM?feature=player_embedded' frameborder='0'></iframe></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
But this will not work with multiple nodes. You cant move multiple nodes with this short-cut. (you can create some python code for doing this)</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
2. <span style="color: blue;">"crtl+shift+c"</span></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
This will pop-up the selected nodes "tile_color" picker window. You can color code the selected node or nodes same time.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-AF2XPCYEQ6s/UeF7hrrBoAI/AAAAAAAAC30/PI1PrtWGETs/s1600/color+picker.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-AF2XPCYEQ6s/UeF7hrrBoAI/AAAAAAAAC30/PI1PrtWGETs/s1600/color+picker.png" height="320" width="218" /></a></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
3. <span style="color: blue;">"ctrl+right arrow & left arro</span><span style="color: blue;">w"</span></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
This will jump into half of the time in your time line. example: If your current frame is 50 ctrl+left arrow will jump to 25th frame. If you give it again it will jumb into 13. <span style="color: red;">Your mouse should in viewer window.</span></div>
<div style="text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/xfYzd9JPRLg?feature=player_embedded' frameborder='0'></iframe></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
This short-cut also work with key frames. you can jump in-between the key-frames exactly.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
4. <span style="color: blue;">"n"</span></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
will rename the selected node in the node graph.</div>
<div style="text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-mLR9MbsCP7I/UeGA_6o_yGI/AAAAAAAAC4E/J27pAzH2nIw/s1600/rename.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-mLR9MbsCP7I/UeGA_6o_yGI/AAAAAAAAC4E/J27pAzH2nIw/s1600/rename.png" height="114" width="320" /></a></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
5. <span style="color: blue;">"y</span>" & <span style="color: blue;">"alt+y"</span></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
'y' connect the first selected node to next selected node.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
"alt+y' connect the mask input with next selected node.</div>
<div style="text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/qXFcQZoR0eQ?feature=player_embedded' frameborder='0'></iframe></div>
<div style="text-align: left;">
<br />
<br />
6. <span style="color: blue;">"r"</span> with selection write node.<br />
<br />
Hitting 'r' with selection a write node will take you to selected write nodes file path (DIR). User can easily read the rendered file's into nuke by using this short-cut. By default 'r' will take you to the home folder.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-p_qZjlrySh0/Ufk4-ewYYrI/AAAAAAAAC4o/FFCcVR9Wk9Q/s1600/r.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-p_qZjlrySh0/Ufk4-ewYYrI/AAAAAAAAC4o/FFCcVR9Wk9Q/s1600/r.png" height="267" width="640" /></a></div>
<br />
<br />
7. <span style="color: blue;">"alt+w"</span> to draw new ROI region.<br />
<br />
User can draw the ROI region as per their need by hitting 'alt+w'. This shortcut will reset the ROI and user can specify the area. 'shift+w' for toggle on & off of the ROI.</div>
<div style="text-align: left;">
<br />
8. <span style="color: blue;">"ctrl+node selection"</span><br />
<br />
Normal selection select any on node. "ctrl+node selection" will select all the nodes connected with your current selection. This will help you to copy the hole set-up for pre-comp and organize your script.<br />
<br />
9. <span style="color: blue;">"render order"</span> in write nodes.<br />
<br />
This option will help us to render the write nodes in order. By using this we can source files from current render. You can use multiple pre-comps and then sourcing the files to next peace of comp.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-xRtdP2HNqwU/UgENi4__5VI/AAAAAAAAC5E/sevChgKmFuo/s1600/render+order.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-xRtdP2HNqwU/UgENi4__5VI/AAAAAAAAC5E/sevChgKmFuo/s1600/render+order.png" height="412" width="640" /></a></div>
<br />
This future will help us lot of the time. Personally this is one of my favourite future in nuke.<br />
<br />
10. <span style="color: blue;">Numeric " / & * "</span><br />
<br />
Scale-up and scale-down the bg input in rotoPaint node. User can scale up and down the reveal or clone source using these keys. Shift and alt with these keys will increase and decrease the scale up and down value.<br />
<br />
<span style="color: blue;">Numeric " 0 & . "</span><br />
<br />
These two keys rotate the bg input respectively minus and plus. Shift and alt with these keys will increase and decrease the scale up and down value.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/L9uh7UKTm9A?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<br />
Usual nudging key's will move the BG X & Y.<br />
<br />
<br />
11. <span style="color: blue;">"ctrl+enter" - "shift+escape"</span><br />
<br />
ctrl+enter will open selected group node into group node graph.<br />
<br />
shift+escape will close the current node graph.<br />
<br />
<br />
12. "ctrl+L" in viewer.<br />
<br />
"ctrl+L in viewer" will lock the current camera. It turns on the camera icon into red. User also do this by clicking the camera icon using mouse.<br />
<br />
ctrl+ mouseClick will turn the camera mode interactive. The icon will turn into green color. User can animate the camera interactively by this way.<br />
( this will work for Light and Camera)<br />
<br />
<br />
<br /></div>
<div style="text-align: left;">
Continue...... </div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Friends you can suggest some more cool short-cut's.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
</div>
satheesh nuke tutorialshttp://www.blogger.com/profile/11629568558935326180noreply@blogger.com0tag:blogger.com,1999:blog-5180635823388970983.post-80662027840621637492013-06-07T22:56:00.001+05:302013-06-07T22:56:57.916+05:30Bouncing ball.... Using Nuke particle system.<div style="text-align: center;">
Nuke particle system</div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
After some request's i'm creating this post for various nuke particle example.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
1. Bouncing balls using Nuke's particle system.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Here i created simple bouncing balls scene using nuke's particle systems. I used some "trick" to create shadows and hiding the objects while rendering using some shader trick. </div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Example video:</div>
<div style="text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="https://ytimg.googleusercontent.com/vi/BhX0Ib5Tq_k/0.jpg"><param name="movie" value="https://www.youtube.com/v/BhX0Ib5Tq_k?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" /><param name="bgcolor" value="#FFFFFF" /><param name="allowFullScreen" value="true" /><embed width="320" height="266" src="https://www.youtube.com/v/BhX0Ib5Tq_k?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" type="application/x-shockwave-flash" allowfullscreen="true"></embed></object></div>
<div style="text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="text-align: left;">
This is the node graph of this nuke script.</div>
<div style="text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-u7bz7vPy1_I/UbIVJye7stI/AAAAAAAACvs/_vfJ6a0oEtc/s1600/nukeParticle_01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-u7bz7vPy1_I/UbIVJye7stI/AAAAAAAACvs/_vfJ6a0oEtc/s1600/nukeParticle_01.png" height="360" width="640" /></a></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Hope this will help you guys. More particle tut's in future......</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Script: <a href="https://docs.google.com/file/d/0BzfeLEFhrh44SUMzOEE3MlE4VzQ/edit?usp=sharing" target="_blank">Nuke_Particles_v04.nk</a></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
satheesh nuke tutorialshttp://www.blogger.com/profile/11629568558935326180noreply@blogger.com1tag:blogger.com,1999:blog-5180635823388970983.post-25065050060154769502013-05-25T02:53:00.000+05:302013-05-25T02:53:21.061+05:30Auto pivot<div style="text-align: center;">
autoPivot.py</div>
<br />
Transforming, rotating, skewing and scaling all are happening based on the pivot point in every image editing software. So placing the pivot point in right place will handy to do above things.<br />
<br />
In nuke... transform node's pivot point set to centre based on the project format by default. If our image is in a part of the format.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-AFYrxRc-fOo/UZ_VGdGmFGI/AAAAAAAACu4/TSfTpjmRVbY/s1600/AutoPivot.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-AFYrxRc-fOo/UZ_VGdGmFGI/AAAAAAAACu4/TSfTpjmRVbY/s1600/AutoPivot.jpg" height="379" width="640" /></a></div>
<br />
While doing translate, rotate and scaling this causing some problem. To do uniform scale or rotate we will move the pivot to image centre or image bottom centre by holding " ctrl+mouse click ". But we cant place it exactly in the middle or bottom middle.<br />
<br />
How to reduce this manual job ?<br />
<br />
Auto pivot.py will help you to place the pivot to centre of the image or bottom centre of the image by using short-cut keys.<br />
<br />
Pivot centre after run the script:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-7yYd8HNvp0Q/UZ_XF2b5sDI/AAAAAAAACvI/FbWTkZOopco/s1600/AutoPivot_01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-7yYd8HNvp0Q/UZ_XF2b5sDI/AAAAAAAACvI/FbWTkZOopco/s1600/AutoPivot_01.jpg" height="268" width="640" /></a></div>
<br />
Pivot bottom centre after run the script:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-Y3LxaeA6QRE/UZ_XhAbzRjI/AAAAAAAACvQ/CA12LG9MoPs/s1600/AutoPivot_02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-Y3LxaeA6QRE/UZ_XhAbzRjI/AAAAAAAACvQ/CA12LG9MoPs/s1600/AutoPivot_02.jpg" height="296" width="640" /></a></div>
<br />
<br />
Auto pivot needs "bbox" to perform this action. So keep your bbox set to the image size.<br />
<br />
This little python script saving my time on my everyday work. Hope you too friends....<br />
<br />
Download: <a href="http://sdrv.ms/172BDI1" target="_blank">autoPivot.py</a><br />
<br />
Nukepedia: <br />
<br />
script:<br />
<br />
save below script as autoPivot.py<br />
<br />
<br />
'''<br />Created on 18-may-2013<br />@author: satheesh-R<br />mail - satheesrev@gmail.com<br />'''<br /><br /><br />import sys<br />import nuke<br /><br />def centerPivot():<br /> for s in nuke.selectedNodes():<br /> s['center'].setExpression('[value name].bbox.r+([value name].bbox.x-[value name].bbox.r)/2', 0)<br /> s['center'].setExpression('[value name].bbox.t+([value name].bbox.y-[value name].bbox.t)/2', 1)<br /> s['center'].clearAnimated()<br /><br />def bottomCenterPivot():<br /> for s in nuke.selectedNodes():<br /> s['center'].setExpression('[value name].bbox.r+([value name].bbox.x-[value name].bbox.r)/2', 0)<br /> s['center'].setExpression('[value name].bbox.y', 1)<br /> s['center'].clearAnimated()<br />
<br />
<br />
<br />
<br />
menu py:<br />
<br />
copy paste below codes into your muny.py. <br />
<br />
import autoPivot
<br /><br />menuBar = nuke.menu("Nuke")<br />
menuBar.addCommand('Edit/Node/autoPivot/centerPivot', 'autoPivot.centerPivot()', 'alt+t')
<br />menuBar.addCommand('Edit/Node/autoPivot/bottomCenterPivot', 'autoPivot.bottomCenterPivot()', 'alt+shift+t')<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />satheesh nuke tutorialshttp://www.blogger.com/profile/11629568558935326180noreply@blogger.com1