jit.gl.videoplane 透過PNGを扱ってみる

スクリーンショット 2014-03-19 12.35.26

Jitter の  jit.gl.videoplaneで透過PNGを使うときのポイントです。上図では、2つのjit.gl.videoplaneを利用し同一平面上に透過PNGを重ねて表示しています。

ポイント

  • blend_enableをチェック。チェックをしないと透過されない。またblend は alpha blend に設定。
  • 透過PNG同士を重ねたりしたい場合は、depth_clear をチェック。

blend_enabled 例

スクリーンショット 2014-03-19 12.35.36

左側は blend_enabled をチェック。右側はblend_enableをOFFにしています。右側は透過処理が出来ていない事が確認できます。

depth_clear 例

スクリーンショット 2014-03-19 12.43.32

depth_clear をオフにした状態です。上手く重なり部分の表示が出来ていない事が確認できます。重なり合う2つのjit.gl.videoplaneに対して depth_clearを指定して置いた方が良さそう。

サンプルパッチ

スクリーンショット 2014-03-19 12.35.41

このような設定はOpenGLが分かって人にとっては基本的な事のようですが、いきなりJitterのglから入ると謎すぎる!jit.gl系扱う時はOpenGL1.0~2.0のテキストで一旦 OpenGLのお作法を学習した方が理解が早そうです。

jit.qt.movie で動画を1度最後まで再生し、その後 指定区間をループ

スクリーンショット 2014-03-16 21.20.49

@loopreport 1 にしておくと、再生終了時に jit.qt.movie の第2インレットから loopnotify bang が出力されるので、そのbangを使ってlooppointsを指定すれば、実現できました。looppointsは、動画をread する都度[ 0 最大値 ]が再設定されます。設定する値は QuickTime time valuesとヘルプパッチには書いてあるのですが、単位がわからず・・・

Cycling74 Maxで3Dモデルをキャプチャし連番PNGデータを生成

スクリーンショット 2014-02-19 14.16.38

3Dモデルを読み込み、回転させて、連番シーケンスPNGを生成したかったので、Max6のJitterのパッチを作ってみました。鮫

Photoshop等で加工すれば、生成したPNGをアニメーションGIFにしてみたり出来ます

Jitterのデバッグに使える Matrix Probe

スクリーンショット 2014-02-03 18.36.32Jitterのデバッグ・表示確認するときに、いちいちjit.pwindowなどを作ってMatrixの中身見てましたが・・・。このMatrix Probeは、ONにしてJitterのグリーンの線の上にマウスを持っていくだけで中身が見られる!!!

Scopeのタグの方ではヒストグラム等も確認可能です。

スクリーンショット 2014-02-03 18.39.27

Max → Debug → Matrix Probe でウインドが出現します。

jit.gl.lua 動画テクスチャを利用する

jit.gl.lua内で動画テクスチャを扱う場合に、外部からmatrixで受け取り、jit.gl.textureと接続する方法がForumにありました。少しずつOpenGLとjit.gl.luaの使い方が分かってきました。

スクリーンショット 2014-01-29 01.43.17

[javascript]

local gl = require("opengl")
local GL = gl

local tex = jit.new("jit.gl.texture", this.drawto)

function jit_matrix(name)
tex:jit_matrix(name)
end

function draw()
jit.gl.bindtexture(tex.name, 0)
gl.Color(1., 1., 1., 1.)

gl.Begin(GL.QUADS)
–top left
gl.TexCoord(0., 1.)
gl.Vertex(-0.5, 0.5, 0.)

–bottom left
gl.TexCoord(0., 0.)
gl.Vertex(-0.5, -0.5, 0.)

–bottom right
gl.TexCoord(1., 0.)
gl.Vertex(0.5, -0.5, 0.)

–top right
gl.TexCoord(1., 1.)
gl.Vertex(0.5, 0.5, 0.)
gl.End()

gl.PushMatrix()
gl.Translate(1,0,0)
gl.Begin(GL.QUADS)
–top left
gl.TexCoord(0., 1.)
gl.Vertex(-0.5, 0.5, 0.)

–bottom left
gl.TexCoord(0., 0.)
gl.Vertex(-0.5, -0.5, 0.)

–bottom right
gl.TexCoord(1., 0.)
gl.Vertex(0.5, -0.5, 0.)

–top right
gl.TexCoord(1., 1.)
gl.Vertex(0.5, 0.5, 0.)
gl.End()
gl.PopMatrix()

jit.gl.unbindtexture(tex.name, 0)
end

[/javascript]