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.0
1.0, y=0.01.0)の正規座標に変換される。 マトリックスから、与えられた座標(正規化されたもの)に対応する値を、線形補間によってサンプリングする。サンプルにはboundmodeアトリビュートがあり、ラップ、ミラー、クランプに設定できます。
-
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 の機能の多くを提供しますが、どのインレットで入力を受けてもリスト全体を出力します。