IMAGIC BLOG

アイマジック開発ブログ

Home » VRMONLINE-NX スプライト演算

VRMONLINE-NX スプライト演算

βテストにご参加いただきまことにありがとうございます。

スプライトに幾何学演算機能を追加しました。

スプライトを設定する場合、表示座標を直接指定する場合は、SetPos()を利用して下記の流れで指定します。
座標値は、Pythonで演算した結果を設定します。

SetUV() -> SetPos() -> SetSprite()

スプライトシステムに基本的な幾何学演算を依頼することもできます。

SetUV() -> SetZoom() -> SetRotate() -> SetTranslate() -> SetSprite()

この流れで拡大縮小、回転、移動を計算します。UVまたはOrg関数で指定した大きさの四角形を拡大縮小、回転、移動の順に計算します。
SetZoom()などは、演算パラメータの設定を行います。(関数の呼び出し時点で演算は実行しません。)

幾何学演算は、SetPos()とは排他的です。幾何学演算または直接指定のいずれか1つが使用されます。

SetColor()は、RGBAのそれぞれの強さを指定します。スプライトのテクスチャーに乗算します。
サンプルでは、RBを0にして、Gのみ表示しています。
シェーダーの合成演算によって結果が異なります。半透明にする場合は、RGBAのすべての要素を減らしてください。

#OBJID=6
import vrmapi

global tr_sprite
tr_rot = [0.0]
tr_win = [1]

def vrmevent_6(obj,ev,param):
    global tr_sprite
    global tr_rot
    global tr_win
    if ev == 'init':
        tr_sprite = vrmapi.LAYOUT().CreateSprite()
        tr_sprite.LoadTrainTexture(obj.GetID(), 1)
        obj.SetEventFrame()
    elif ev == 'broadcast':
        dummy = 1
    elif ev == 'timer':
        dummy = 1
    elif ev == 'time':
        dummy = 1
    elif ev == 'after':
        dummy = 1
    elif ev == 'frame':
        vrmapi.ImGui().Begin("w1","Sample", tr_win, vrmapi.ImGuiWindowFlags.MenuBar)

        vrmapi.ImGui().SliderFloat("sl1", "ROTATE", tr_rot, 0.0, 360.0)
        tr_sprite.SetUV(0,0,84,72)
        tr_sprite.SetPos(0,100,84*2,100,0,100+72*2,84*2,100+72*2)
        tr_sprite.SetSprite()
        tr_sprite.SetUV(0,78,128,78+44)
        tr_sprite.SetZoom(2.0,2.0)
        tr_sprite.SetRotate(0,0,tr_rot[0])
        tr_sprite.SetTranslate(450,300)
        tr_sprite.SetColor(0.0,1.0,0.0,1.0)
        tr_sprite.SetSprite()

        vrmapi.ImGui().End()
# 以下省略        
スライダーで回転

Name of author

Name: imagicdev