Slice and plot my scanline!

Slice and plot scanlines.

Slice and plot scanlines in Nuke!


I’ve been playing with the expression node in Nuke lately, and one of the things I made was  a simple Slice tool/scanline plotter. It can sample a slice (between two points) and will plot the color values as a curve over the image.

I’ve wrapped it up in a group with a set of exposed parameters, but not exported as a gizmo, just because it might be handy to just copy/pasta it into your scripts somewhere  without the need to embed it into a pipeline.

It has three modes, per pixel which is checking the raw pixels, and a sample area which is similar to the per pixel method but it can sample a larger area pr pixel as well. (using the ex:  r(x,y,5,5) function) and one that will use the first point to determine which full scanline to sample and plot.

Maybe someone will find it usefull, maybe someone will……….buy me a beer….


set cut_paste_input [stack 0]
version 6.1 v1
push $cut_paste_input
Group {
name PlotScanline
selected true
xpos -839
ypos 206
addUserKnob {20 Controls}
addUserKnob {4 mode l "Sampling method" M {"Slice Per Pixel (faster)" "Slice Area (slower)" "Full Scanline" "" "" ""}}
mode "Full Scanline"
addUserKnob {6 add2image l "Add to original" +STARTLINE}
add2image true
addUserKnob {6 Normalize -STARTLINE}
addUserKnob {6 tonemap l "Tone Map (HDRI)" -STARTLINE}
addUserKnob {6 curve l "Plot as curve" +STARTLINE}
curve true
addUserKnob {3 curveFat l "Curve Thickness" -STARTLINE}
addUserKnob {3 sa l "Sample Area" t "Disabled when using pr pixel method."}
sa 1
addUserKnob {7 lift l Lift R -1 1}
addUserKnob {7 scale l Scale R 0 5}
scale 1
addUserKnob {26 ""}
addUserKnob {12 p1 l "Start Point"}
p1 {376 418}
addUserKnob {12 p2 l "End Point" -STARTLINE}
p2 {428.5 425.5}
addUserKnob {26 ""}
addUserKnob {26 "" l "About " T "Plot Scanline v0.4 | theo@euqahuba.com\nUse P1 to select your scanline and/or you start slice."}
}
Input {
inputs 0
name Input1
xpos -480
ypos 62
}
set N3069610 [stack 0]
Expression {
temp_name0 length
temp_expr0 sqrt(r*r+g*g+b*b)
expr0 r/length
expr1 g/length
expr2 b/length
name Normalize
xpos -480
ypos 108
disable {{1-parent.Normalize i}}
}
Expression {
expr0 r/(r+1)
expr1 g/(g+1)
expr2 b/(b+1)
name tonamap
xpos -480
ypos 134
disable {{1-parent.tonemap i}}
}
set N7fe58a0 [stack 0]
Expression {
temp_name0 rExpr
temp_expr0 "min(max(0,\r\nceil(r(x,parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)"
temp_name1 gExpr
temp_expr1 "min(max(0,\r\nceil(g(x,parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)"
temp_name2 bExpr
temp_expr2 "min(max(0,\r\nceil(b(x,parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)"
expr0 rExpr
expr1 gExpr
expr2 bExpr
expr3 0
name scanline
xpos -302
ypos 193
addUserKnob {20 User}
}
push $N7fe58a0
Expression {
temp_name0 rExpr
temp_expr0 "min(max(0,\r\nceil(r((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y,parent.sa,parent.sa)-((y/height+parent.lift)*parent.scale))),1)"
temp_name1 gExpr
temp_expr1 "min(max(0,\r\nceil(g((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y,parent.sa,parent.sa)-((y/height+parent.lift)*parent.scale))),1)"
temp_name2 bExpr
temp_expr2 "min(max(0,\r\nceil(b((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y,parent.sa,parent.sa)-((y/height+parent.lift)*parent.scale))),1)"
expr0 rExpr
expr1 gExpr
expr2 bExpr
expr3 0
name Expression_highQuality
xpos -515
ypos 197
addUserKnob {20 User}
}
push $N7fe58a0
Expression {
temp_name0 rExpr
temp_expr0 "min(max(0,\r\nceil(r((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)"
temp_name1 gExpr
temp_expr1 "min(max(0,\r\nceil(g((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)"
temp_name2 bExpr
temp_expr2 "min(max(0,\r\nceil(b((x/width)*(parent.p2.x-parent.p1.x)+parent.p1.x,(x/width)*(parent.p2.y-parent.p1.y)+parent.p1.y)-((y/height+parent.lift)*parent.scale))),1)"
expr0 rExpr
expr1 gExpr
expr2 bExpr
expr3 0
name perPixel
xpos -419
ypos 201
addUserKnob {20 User}
}
Switch {
inputs 3
which {{parent.mode i}}
name Switch2
xpos -480
ypos 253
}
Matrix {
matrix {
{0 1 0}
{1 -4 1}
{0 1 0}
}
name Matrix2
selected true
xpos -480
ypos 284
disable {{-1+parent.curve i x70 1}}
}
Dilate {
size {{parent.curveFat}}
name Dilate1
xpos -480
ypos 326
disable {{-1+parent.curve.main}}
}
Clamp {
name Clamp1
xpos -480
ypos 383
}
set N86e9e00 [stack 0]
push $N3069610
Dot {
name Dot1
xpos -556
ypos 66
}
Clamp {
maximum 331
name Clamp2
xpos -590
ypos 352
}
Merge2 {
inputs 2
operation plus
bbox intersection
name Merge1
xpos -590
ypos 394
}
Dot {
name Dot2
xpos -556
ypos 433
}
push $N86e9e00
Switch {
inputs 2
which {{parent.add2image i}}
name Switch1
xpos -480
ypos 425
}
Output {
name Output1
xpos -480
ypos 470
}
end_group

44 thoughts on “Slice and plot my scanline!

  1. Any chance there could be an option to have the actual RGB values on frame from the tool itself?

  2. ねえ達人に加入LAMた問題は、あなたが記事を公開するかを誘惑します。このテキストは、特に、私が先週の木曜日このテーマにアイデアを探していたという事実のために、非常に魅力的にするために使用しました。とても素敵なポストを
    コペット ハーブ&ピュア 全犬種用シャンプー 240ml 【COPET Shampoo(コペット シャンプ—)/犬用シャンプー/犬のシャンプー/いぬのシャンプー】【犬用品/ペット?ペットグッズ/ペット用品】:ペッツビレッジクロス~ペット通販 http://nybroforum.nu/catsaleml/5391.html

  3. の書き込みに大きな努力を入れているようです!あなたがマスターしている..それが来るように、詳しく教えてください。
    布団クリーナー 掃除機【Bejoy UVお布団クリーナー DSC-014】【10,800円~送料無料】【内祝い_お返し_結婚祝い_お誕生日_出産祝い】【父の日_お中元_ギフト】【楽ギフ_のし宛書】【結婚式_引き出物_香典返し】:レディース通販のソラーラ http://anurex.gr/shoponsel/6043.html

  4. あなたなさそこにいくつかのまともなポイント。 問題問題ジレンマ私はそのためにインターネット上で見て、位置ほとんどの人を インターネットとに加えて行きますウェブサイト。ちょっと
    ◎テラノバ 43LU1?レーザーウルトラ1【世界最軽量テント】:登山用品とアウトドアのさかいや http://factorplant.co.uk/shoponsel/3359.html

  5. おかげで、私はそれについて強く感じ、THIの多くを学んで楽しみますsの対象。達成可能な場合は、経験を積むように、あなたはより多くの詳細をあなたのブログを更新する気でしょうか?その私のために非常に便利。あなたはそれはとても素晴らしく、きちんとあなたのブログを維持するために仕事のかなり多くでなければならないです
    adm-1417 【Admiral/アドミラル】スニーカー EVERTON 0834 Brown/Ivory SJAD1308 靴 シューズ メンズ レディース エバートン:SNB-SHOP http://yorkshireconsultants.com/shoponsel/8899.html

  6. イムを得る私はこのブログを見つけました見つけ、私は問題の前に、このトピックの情報を学ぶcouldntの。私はまた、サイトを運営していて、あなたは、人々が自分のサイトをテストするためのイムは、常に表示され、可能な場合は私に知らせて自由に感じる私のために、ゲストの書き込みの少し中に、これまで深刻な場合です。立ち寄って、いつかコメントを残してください!

  7. 。私はちょうどあなたのサイトにつまずいたと私は実際にあなたのウェブサイトの記事を読んで楽しんでいることを言いたかったです。どのような方法は、私はあなたのフィードを購読することだろうと私はあなたがすぐに再度投稿したいと考えています。イムイライラうわー

  8. 単に あなたの記事のようにあると言う驚異。 | 単にあなたのポストで鮮明透明性がある 偉大と私は可能性 |この主題の専門家あなたがしているあなたがあると仮定します。 まあ今後のポストに| 更新日まで保つために| | フィードRSSフィード私はあなたをつかむためにあなたの許可を持つましょう許可。おかげで百万と追いつくに運ぶ 報酬仕事。あなたは私の心を読んで、そのような

  9. 私のサポートであなたの寛大さのための私の賞賛を伝えたいために支援懸念この特定とサポート。あなたの特定への献身発見メッセージすべて以上が素晴らしく生産されていたとしている|時間すべてのすべて なさ 専門家 はるか私のような彼らの夢を達成します。 個人貴重なチュートリアル手段は 優れた私には契約と加えて、 職場への労働者。ありがとう;私たちの から。あなたは{番号を完了し

  10. いただきましたハプニング 私は有用|これに新しい、私はこのつまずい私がした |この絶対 参考に発見が見つかりました の負荷を私を支援|}、それは{支援してきました。 &| 寄与貢献を与えるに アシストヘルプ 他 ユーザーそのような|私を助けを支援。 グレート仕事。 {しばらく

  11. そこにこんにちは、あなたの情報をありがとうございました – 私がした 間違いなく 適切な右ここから新しい何かを拾いました。インターネット|私はウェブをリロードする経験として、ウェブサイト 採用使用してこのそれにもかかわらず専門知識のいくつかの技術的な問題を私がやりました サイト私の前の時間の多くは、それが適切にロードするために得ることができます。 インターネットウェブホスティングOKであなたの場合、私は疑問に思っていましたか?私は文句を言っていたが、低迷ローディングインスタンス時間は、非常わけではないことをしばしばグーグルでの配置に影響し、広告やマーケティング場合は、AdWordsを使用して品質スコアを損傷する恐れがあります。 適切 私は私の電子メールにこのRSSを追加することができ、|のために見て表示されます 多くの もっとたくさんあなたのそれぞれのエキサイティングコンテンツの。状態誰かが基本的に深刻なポストI 作るために支援

  12. に あなたを共有しました。 MSN | ウェブログあなた| 私が発見した私が見つかりました。 非常に きちんと書かれた記事。 私がします ことを確認してくださいブックマークにそれとリターンの学ぶ 余分あなた有用の情報。ポスト| おかげで、ありがとうございました。 カムバック | 確かに間違いなく | 私は意志私がよ。

  13. ニースポスト。硬い異なるブログに毎日私はたくさんいくつかのことを学びます。他の作家から| コンテンツ素材コンテンツをとそれらの店で、特定のものを採用することは、常にあなたがちょうど読んで刺激されます。あなたが気にしないかどうかを| ウェブログ自分で| コンテンツ素材コンテンツ 採用私は、特定の適用することを選ぶだろう。 インターネットブログ| あなたの個人的な独自の上のリンクNatually私は供給与えるを提供ます。 いくつかのおかげで共有。言う

  14. するメイザーを扱う全くあらゆるローミングサービスを作るされていない有益な視点、ある。 を利用し私に加えて、任意の方法のおかげでまっすぐdeliciusにあなたの現在のポストを共有するための努力をしていたが、それは確かに明らかに問題の懸念でそれが可能であるあなたのウェブサイトをあなたがこれを再チェックする必要があります|あなたがするべき|あなたがする必要があります。 感謝の多く。

Comments are closed.