jit.gl.render

gl.text3d

jit.gl系のオブジェクトは前からいじってはいたのですが、やっぱり基本をちゃんと勉強しておかないと使いいこなせないので一から勉強し直すことにしました。上に書いたのは、めちゃくちゃ簡単なもので、単にOPEN GLを使ってテキストを表示しているだけです。フレームレートは、なんと400fpsそりゃそうだわね。動いてないし(笑)

どういう仕組みかというと、右のjit.gl.text3dで、3dのテキストデータを生成してjit.gl.renderを介してjit.windowに3Dのデータが行く感じです。

多分、jit.gl.text3dの中ではリアルタイムな3dデータがあって、jit.gl.renderにbangメッセージが来るたびにjit.jl.text3dの中にある3Dデータを読み取ってjit.windowに表示している感じだと思う。



ちなみに、qmetroからt(triggerオブジェクト)を使って、b eraseに分岐させていますが、まずeraseメッセージをjit.gl.renderに送ってjit.gl.renderの中身を削除してから、jit.gl.text3dの中の3Dデータを読み込んで表示させています。

この流れは、他のOPEN GL系のオブジェクトにも共通していて、基本的には、

1.jit.gl.text3d, jit.gl.plato等, 3Dの元データ
 (リアルタイムな3D情報を生成するオブジェクト)
 (bangを送らなくても常にデータを内部で更新している)

2.jit.gl.render
 (レンダリングデータを生成, 3Dを2Dのマトリックスに変換)
 (bangを受け取った時点の3Dデータをレンダリングする)
 (基本的には、tオブジェクトを使って、eraseを受け取ってからbang)

3.jit.pwindow、 jit.window、jit.matrix等、マトリックス系オブジェクト
 (マトリックスデータを表示 or 格納)

という順に処理されるようです。

jit.gl.text3dではなく、jit.gl.plato(正多面体を生成するオブジェクト)を使った場合は以下のような感じになります。このパッチでは、cycle~を使って、正四面体を周期的にグリグリ動くようにしています。

plato

plato2

尚、rotateや、position、scale、poly_modeなど、色々なメッセージをjit.gl.platoに送っていますが、これは他の、jit.gl.text3dやjit.gl.model(3Dモデルを描画するもの)といったjitterオブジェクトにも共通するアトリビュートで、ob3dグループと呼ばれているそうです。他にもいろんなアトリビュートを送って操作できるようですので、HELPなどをチェックしてみてください。

ちなみに上にある、jit.gl.platoのパッチで、qmetroの下にある、tオブジェクトから出ているeraseのパッチコードを消すと、jit.gl.renderの中身が毎回初期化されなくなるため、残像が残るようになります。やりようによっては面白くできそうですね。

render