jit.gl.pixで映像エフェクタを作ろう #1 jit.gl.pix入門その1

こんにちは、コバルト爆弾αΩΣです。

第1回目の今回からjit.gl.pix入門と題して、jit.gl.pixの概要とオブジェクトの使い方を解説していきたいと思います。


jit.gl.pix?

jit.gl.pixはMAX6からMAXのjitter機能を拡張するアドオンとして組み込まれた機能です。従来のjit.gl系オブジェクトは自分でオブジェクトの中身まで作り込むことは難しかったですが(externalやjxsを書かない限り…)、このjit.gl.pixの登場により通常のMAXと同様の感覚でグラフィカルにShaderの中身をパッチングすることが出来る様になりました。


jit.gl.pix vs jit.pix?

jit.gl.pixに似たオブジェクトにjit.pixがあります。両者の機能はほぼ同じですがjit.gl.pixはGPU処理、jit.pixはCPU処理となっており実行速度が異なります。両者がどう違うかというイメージは以下の動画を見てみてください

CPUは1ピクセルずつ描画するのに対し、GPUは画面全体を一発で描画しているというイメージを持って頂ければOKです。本連載ではjit.gl.pixを使ってエフェクトを紹介しますが、同じ内容でjit.pixでも動作します。


 jit.gl.pix基礎

jitglpix_1_0_patchcords jitglpix_1_1_jitglpix内部

新規にjit.gl.pixオブジェクトを作成すると上記の様なオブジェクトが作成され、パッチをロックした状態でダブルクリックするとjit.gl.pixの中身を見ることが出来ます。
このjit.gl.pixオブジェクトは「in1」と「in2」の入力を足し合わせ「out1」に出力するパッチになっています。また一番右のアウトレットは常に「dumpout」になります。

genオブジェクト

  • in: jit.gl.pixのインレットを指定、「in」+「数字」でインレット番号を指定
  • out: jit.gl.pixのアウトレットを指定、「out」+「数字」でアウトレット番号を指定
  • +: インプットを足し合わせる

 jit.gl.pix使い方

それではjit.gl.pixの基本的な接続方法を説明したいと思います。

jit.gl.pixは入力に映像データ(もしくはtextureデータ)を取り、出力はtextureデータになります。textureデータは投影先を指定しなくてはいけないので、ここではjit.gl.videoplaneを投影先に指定しています。またMAXでOpenGLを用いる場合にはレンダリングが必要になりますのでjit.worldをレンダリング先に指定しています。
(MAX6以前ではjit.gl.renderを用いる必要があります、MAX6対応版のパッチはダウンロードファイルを参照)


クロスフェーダー

jitglpix_1_2_patch

jitglpix_1_2_jitglpix内部

次に2つの映像をスイッチするクロスフェーダーを作ってみましょう。

パッチ部

クロスフェーダーとしてsliderオブジェクトを作成し、fadeという変数名を付けてjit.gl.pixの第1インレットに接続します。

jit.gl.pix内部

jit.gl.pix内にmixオブジェクトを作成し、in1、in2をそれぞれ第1、第2インレットに接続します。mixの第3インレットにはparamオブジェクトを接続し、paramの第1引数には「fade」を指定します。これにより外部から「fade」+「数値」というリストを入力することでmix値を変更することが出来ます。

genオブジェクト

  • mix: 第1インレットと第2インレットの値をmixする。第3インレットに0.-1.の値を取り、0で第1インレット、1.で第2インレットの値を出力。0.-1.では両者の値は線形補完される。
  • param: genオブジェクトの外から値を与える変数の指定。第1引数に変数名、第2引数に初期値を指定する。

カラーフィルター

jitglpix_1_3_patch

jitglpix_1_3_jitglpix内部

それでは最後にカラーフィルターを紹介したいと思います。
作成するのはcolor pickerで選択した色に従い元映像の色を変化させるフィルターです。

パッチ部

color picker部分では選択した色をunpackしRGBの各成分に分解した後、red、green、blueの変数名を付けてjit.gl.pixに入力します。

jit.gl.pix内部

jit.gl.pix内部ではswizオブジェクトを用いて元映像のrgba成分を分解します。分解後にcolor pickerで取得したRGBの各値に以下の計算を行いcolor picker値分の色を変化させます。
出力値 = 元映像値 – |(colorpicker値 – 1)|
計算後の値はvecオブジェクトにてpackされた後出力されます。
尚RGBAはjit.gl.pix内では0.-1.の値を取ります。

genオブジェクト

  • swiz:ベクトル成分を分解する。第1引数に抽出したいrgbaやxyの成分をローマ字もしくは数字で指定
  • vec: スカラー値をベクトル成分にpackする。引数の数でベクトル成分の要素数を指定
  • abs: 入力の絶対値を返す

jit.gl.pix入門その1いかがでしたでしょうか。

次回は引き続きjit.gl.pixオブジェクトの解説をしながらモザイク処理やマスクエフェクトを紹介していきたいと思います。
お楽しみに!

 


掲載パッチダウンロード

https://www.dropbox.com/s/tnk33gitegtukhr/jitglpix_01.zip?dl=0


参考webサイト

cycling’74のswizチュートリアル
https://cycling74.com/2012/02/02/gen-tutorial-2a-the-joy-of-swiz/
cycllng’74のshaderチュートリアル
https://cycling74.com/2007/05/23/your-first-shader/

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中