tags : MSP

リファレンス

https://docs.cycling74.com/max8

Maxの教科書

jit.matrix

https://docs.cycling74.com/max8/refpages/jit.matrix?q=jit.matrix

  • マトリックス
    • ディメンション 縦横の平面
      • セル ディメンションの一つ
        • プレーン セルの中身

jit.matrix [プレーンの数] [プレーンの型] [ディメンション横] [ディメンション縦]

マトリックスには名前がある 指定しないと自動で付けられる パッチコードを流れるのは jit_matrix [マトリックス名] (ポインタのようなもの) 実際のマトリックスはメモリ上にある

OpenGL in Max/MSP

Let’s Start with Jitter! - OpenGL in Max/MSP 01 - YouTube

jit.world [context name]

jit.worldオブジェクトは、jit.window、jit.gl.render、jit.gl.node、jit.gl.cornerpin、jit.phys.worldを含む、いくつかのjitterオブジェクトの機能をカプセル化しています。物理オブジェクトとGLオブジェクトは自動的にjit.worldのコンテキストに追加され、ビデオオブジェクトは同じパッチ内であれば、その自動出力が有効になります。

@floating 1 でwindowを固定できる

@size 800 600 でwindowサイズを変更

@enable 1 で有効に(toggleでもできる)

@erase_color [RGBA] で背景色を変更できる

Jitterでのカラーは 2D = ARGB 3D = RGBA

jit.gl.gridshape [context]

https://docs.cycling74.com/max8/refpages/jit.gl.gridshape?q=jit.gl.gridshape

連結されたグリッド上に配置された複数の単純な形状(球、トーラス、円柱、opencyclinder、立方体、opencube、平面、円)のうちの1つを作成します。これらの形状は,直接レンダリングすることも,値の行列として左端のアウトレットに送り出すこともできます.

@lighting_enable でライティングを有効

@scale x y z でスケール変更(引数一つの場合はxyz全てが変わる)

@color R G B A で色設定

@smooth_shading 1 でスムージング

@dim [int] [int] でグリッドのディメンション(きめ細かさ)を設定(デフォルト 20 20)

@poly_mode [int] [int] で表面と裏面のレンダリングモードを決める 0 = 塗りつぶしたポリゴンとしてレンダリング 1 = 線として表示 2 = ポイントとしてレンダリング

OB3D という共通のアトリビュートがあり jit.gl.gridshape はそれを継承している

jit.gl.handle

https://docs.cycling74.com/max8/refpages/jit.gl.handle?q=jit.gl.handle

jit.gl.handleは、その左アウトレットからrotateとpositionメッセージを生成することによって、デスティネーションでのマウスのクリックとドラッグに応答します。

reset メッセージでリセット

マウス操作 クリック&ドラッグ = 回転 alt + ドラッグ = 前後移動 cmd + ドラッグ = XY平面移動

jit.gl.camera [context]

https://docs.cycling74.com/max8/refpages/jit.gl.camera?q=jit.gl.camera

OpenGLでビューを定義するのに必要なプロパティを設定します。視野角、クリッピング平面、透視投影モード、正射投影モードなどがあります。また、3D空間の仮想カメラの位置と向きを定義し、これらの変換から適切なビューを生成することができます。

jitter は右手(world)座標系

@position x y z で位置を指定

@anim_reset でリセット

jit.anim.drive

https://docs.cycling74.com/max8/refpages/jit.anim.drive?q=jit.anim.drive

相対的な変形をイージングを伴って時間的にアニメーションさせます。jit.anim.driveオブジェクトは、jit.anim.nodeやOpenGLオブジェクトと連携してこの機能を実行します。このオブジェクトをダブルクリックすると、UIマッピングディクショナリーが開かれ、ある種のユーザーインターフェイスアクションをアニメーションメッセージにマッピングすることができます。

イージングをしたりするのに使える?

@ui_listen 1 で w a s d q z キーでの移動ができる

@anim_reset でリセット

Let’s Start with Jitter! - OpenGL in Max 02 - Textures, Materials, Camera - Y…

jit.gl.camera のアトリビュート

@tripod 1

カメラを三脚に取り付けたかのように強制的に向きを変えます。Y軸の回転数は、animmodeに関わらずワールドスペースで適用されます(デフォルト=0)。

@lookat x y z

カメラを向ける3次元の位置(デフォルト=0 0 0)

@locklook 1

オリエンテーションメッセージやアトリビュートを無視して、カメラをlookat値に向けたままにします(デフォルト=0)。

jit.gl.texture [context] @name [texture name]

https://docs.cycling74.com/max8/refpages/jit.gl.texture?q=jit.gl.texture

3Dジオメトリの描画に使用されるイメージデータのバッファであるOpenGLテクスチャを作成します。jit.gl.textureはjit.matrixに似ていますが、テクスチャはグラフィックカード上に存在します。

jit.matrix に importmovie, bang メッセージを送り jit.gl.texture にパッチングすることで素材をtextureに読み込める

プレビューを表示するには jit.pwindow を jit.gl.texture のアウトにつなげる

@apply で適用するモードを選べる Possible values:

‘replace’ ‘decal’ ‘modulate’ ‘blend’ ‘combine’

jit.gl.material [context]

https://docs.cycling74.com/max8/refpages/jit.gl.material?q=jit.gl.material

テクスチャの入力やアクティブなライトの数に自動的に適応する、高品質なレンダリングのためのシェーダを生成します。

マテリアルを作る

テクスチャとマテリアルの違い

テクスチャは表面に映る画像 マテリアルは表面の素材を表現するもの

jit.gl.light [context]

OpenGLで光源を定義するのに必要なプロパティが含まれています。光源のタイプ(指向性、ポイント、スポット)、光源の色、減衰、スポットの角度とフォールオフなどがあります。さらに、3D空間内の仮想光源の位置(ポイントとスポット)と方向(指向性とスポット)を定義できます。

テスト用に jit.gl.gridshape myWorld @position 1 1 1 @scale 0.1 @color 1 1 1 1 を置くとライトがどこにあるかわかりやすい

Let’s Start with Jitter! - OpenGL in Max 03 - Animate Objects - YouTube

jit.bfg

https://docs.cycling74.com/max8/refpages/jit.bfg?q=jit.bfg

手続き型基底関数のライブラリを評価し、公開します。これらの基底関数は、既存の計算を参照することなく、任意の座標に渡って、任意の数の次元で評価することができます。さらに、これらの基底関数はすべて共通のインターフェイスを持っているので、基底関数を組み合わせて、複数のjit.bfgオブジェクトを相互に参照することによって、関数グラフで評価することができます。

とりあえず simplexnoise を使えるということを覚えておく

jit.bfg 3 float 32 2 2 1 @basis noise.simplex

で float 32 の x 2 y 2 z 1 のノイズが取り出せる

jit.iter

https://docs.cycling74.com/max8/refpages/jit.iter?q=jit.iter

行列のすべてのセルをイテレートし,各セルごとにメッセージまたはリストをオブジェクトの左アウトレットに送信します.出力は、データのプレーンごとに1つのアイテムです。中央のアウトレットからは,現在のセル座標を含む ints のリストが送信されます.

マトリクスをリストに変換する

jit.submatrix

データをコピーすることなく入力行列のサブ領域を参照したい場合には、jit.submatrixオブジェクトを使用します。

マトリクスから一部を取り出す

jit.submatrix @dim 1 で jit.bfg の simplex noise からリストを取り出せる

jit.op

https://docs.cycling74.com/max8/refpages/jit.op

jit.op オブジェクトは、2つの入力行列に2項演算子を適用するか、左の入力行列に1項演算子を適用します。各平面に対して異なる演算子を指定することもできますし、2つ目の行列を使用する代わりにval属性でスカラを指定することもできます。

jit.op @op + @val 1.

で全ての行列に1を足す

jit.clip

https://docs.cycling74.com/max8/refpages/jit.clip?q=jit.clip

行列の値を,オブジェクトの min および max 属性で指定された範囲に制限します.

jit.clip @max 5 @min 0.1

Let’s Start with Jitter! - OpenGL in Max 04 - jit.gl.sketch Lines - YouTube

jit.gl.sketch

https://docs.cycling74.com/max8/refpages/jit.gl.sketch

3D描画コマンドに基づいて記録・描画を行います。これらのコマンドは、単純なタートルグラフィックスからOpenGL APIの大部分まで多岐にわたっています。

3D空間上に描画ができる

clear メッセージで削除

linesegment x1 y1 z1 x2 y2 z2 で2点間を結ぶ線が描ける

OpenGL in Max 05 - JIT.GL.MULTIPLE / First Introduction to JIT.GEN - YouTube

jit.gl.multiple

https://docs.cycling74.com/max8/refpages/jit.gl.multiple?q=jit.gl.multiple

jit.gl.meshやjit.gl.gridshapeのようなjit.glオブジェクトのインスタンスを繰り返し描画するために、複数のjit.matrixオブジェクトを使用します。これは、name属性で指定されたjit.gl(OB3D)オブジェクトのインスタンスにアタッチされます。

@glparams

マトリックスを渡すことで変更可能な、オブジェクトインレットに対応するOB3D属性のリストです。有効な属性は、position, rotate (angle-axis), rotatexyz, scale, color, textureです。 対象を複数指定するとインレットが増える

@targetname

アタッチして複数回描画するためのjit.glオブジェクトの名前です。

jit.gl.gridshape などの OB3Dオブジェクトに @name で名前が付けられ、jit.gl.multiple の @targetname [name] などから操作できる

OB3D の @automatic 0

自動レンダリングフラグ(デフォルト=1) フラグがセットされていると、関連するjit.gl.renderオブジェクトがbangメッセージを受信したときにレンダリングが行われます。

jit.noise

https://docs.cycling74.com/max8/refpages/jit.noise?q=jit.noise

jit.noiseは、ランダムな値の行列を生成します。

jit.gen

gen patcherとコード式から新しいJitter Matrix Operator (MOP)オブジェクトを生成します。パッチャーとコードは、jit.matrixの各セルがjit.genオブジェクトによってどのように処理されるかを記述します。

swiz

https://docs.cycling74.com/max8/refpages/gen_jit_swiz?q=swiz

gen オブジェクト gen 内で matrix の unpack を行う swiz x で x 軸の値を swiz y で y軸の値を取れる

vec

https://docs.cycling74.com/max8/refpages/gen_jit_vec?q=vec

gen オブジェクト gen 内での pack を行う vec 0 0 0 で数3つのプレーンを生成

jit.iter

https://docs.cycling74.com/max8/refpages/jit.iter?q=jit.iter

行列のすべてのセルをイテレートし,各セルごとにメッセージまたはリストをオブジェクトの左アウトレットに送信します.出力は、データのプレーンごとに1つのアイテムです。中央のアウトレットからは,現在のセル座標を含む ints のリストが送信されます.

zl group [num]

num 以上のメッセージを受け取ったら num のリストして返す

OpenGL in Max 06 - Animating Objects with jit.gl.multiple e JIT.GEN - YouTube

jit.world の @fsaa アトリビュート

Full Scnen Anti Aliasing の略 フルシーンのアンチエイリアスを有効にする(デフォルト=0)

jit.gen 内に変数を保つ方法

jit.gen 内に param 変数名 初期値 と記述

jit.gen 外で 変数名 値 で外から注入できる

clocker

max を開いてからのミリ秒をintで取得

OpenGL in Max 07 - Waves Motion with jit.gl.multiple e JIT.GEN - YouTube

jit.cellblock

jit.matrix をエクセルのように表で表示

jit.pwindow

プレビューウィンドウを表示

jit.gen 内の norm

入力されたマトリックスの座標を正規化した値 (0 ~ 1の値)

jit.gen 内の snorm

入力されたマトリックスの座標を符号付きで正規化した値 (-1 ~ 1の値)

jit.gen 内の length

ベクトルの長さを計算する

GL3 Shaders Tutorials | Phong Lighting - Part 01: Setup - YouTube

jit.gen と jit.mesh の使い方

Part 1: Drawing with jit.gl.mesh and jit.gen - YouTube

jit.gen

  • norm

    入力されたマトリックスの座標を正規化した値(0~1の値)

  • cell

    入力されたマトリックスのセル座標(0~dim-1の値)

  • dim

    入力されたマトリックスのディメンション

jit.mesh

空間座標を含む一番左のインレットに接続されたjit.matrixから幾何学的なサーフェイスを作成します。他のインレットに他のjit.matrixオブジェクトをアタッチすることで、追加のジオメトリを指定することができます。

Part 2: Video-Controlled particle system in Jitter - YouTube

jit.grab

jit.grabオブジェクトを使用して、外部入力(カメラ)信号をJitterマトリックスまたはGLテクスチャに展開します。

jit.rgb2luma

jit.rgb2luma は、L = (.299 * R value) + (.587 * G value) + (.114 * B value) という方程式を用いて、4プレーンのARGB (alpha, red, green, blue) 行列を、オリジナル行列の輝度を含む1プレーンのモノクロ行列に変換します。

Part 3: Modulating a particle system using Simple Harmonic Motion - YouTube

clocker と sin で揺らす処理

Part 4: Video-Controlled particle system in Jitter: Video Processing in jit.g…

jit.gen

  • smaple

    元画像に解像度に依らず(x=0.01.0, y=0.01.0)の正規座標に変換される。 マトリックスから、与えられた座標(正規化されたもの)に対応する値を、線形補間によってサンプリングする。サンプルにはboundmodeアトリビュートがあり、ラップ、ミラー、クランプに設定できます。

    ここに詳しい jit.gl.pixで映像エフェクタを作ろう #2 jit.gl.pix入門その2 | MAXER JP

  • torus

    トーラス(ドーナッツの形状)の式。入力座標の範囲は(0~1)の値。

  • sphere

    球形の式。入力座標の範囲は(0~1)の値。

  • mix

Part 5: Modulating a particle system using a Basis Function Graph - YouTube

jit.gen

  • noise

pak

pak オブジェクト(発音は「ポック」)は pack の機能の多くを提供しますが、どのインレットで入力を受けてもリスト全体を出力します。