Rosso Laboratory

Python周回フライスルーカメラスクリプト

でけた(^^)/

#LAYOUT
import vrmapi
# 周回フライスルーカメラスクリプト
# dxmaxとdzmaxにレイアウトサイズを記入してください。
# fytempに視点高さ、aytempに目標点高さを記入してください。
# [B]で時計周り、[N]で停止、[M]で反時計周り
dxmax = 2000
dzmax = 1600
fxtemp = 0
fytemp = 100
fztemp = 0
axtemp = dxmax / 4
aytemp = 0
aztemp = dzmax / 4
bevid = 0
mevid = 0
def vrmevent(obj,ev,param):
    if ev == 'init':
        global dxmax
        global dzmax
        global fxtemp
        global fytemp
        global fztemp
        global axtemp
        global aytemp
        global aztemp
        global bevid
        global mevid
        pos = [fxtemp,fytemp,fztemp,axtemp,aytemp,aztemp]
        vrmapi.SYSTEM().SetGlobalCameraPos(pos)
        obj.SetEventKeyDown('B')
        obj.SetEventKeyDown('N')
        obj.SetEventKeyDown('M')
    elif ev == 'broadcast':
        dummy = 1
    elif ev == 'timer':
        dxmin = 0
        dzmin = 0
        dstep = 1000
        fxmove = dxmax / dstep
        fzmove = dzmax / dstep
        axmin = dxmax / 4
        azmin = dzmax / 4
        axmax = axmin * 3
        azmax = azmin * 3
        axmove = (axmax - axmin) / dstep
        azmove = (azmax - azmin) / dstep
        if param['eventUID'] == 300:
            if fxtemp <= dxmin and fztemp > dzmin:
                pos = [fxtemp,fytemp,fztemp,axtemp,aytemp,aztemp]
                vrmapi.SYSTEM().SetGlobalCameraPos(pos)
                fztemp = fztemp - fzmove
                aztemp = aztemp - azmove
            elif fztemp >= dzmax and fxtemp > dxmin:
                pos = [fxtemp,fytemp,fztemp,axtemp,aytemp,aztemp]
                vrmapi.SYSTEM().SetGlobalCameraPos(pos)
                fxtemp = fxtemp - fxmove
                axtemp = axtemp - axmove
            elif fxtemp >= dxmax and fztemp < dzmax:
                pos = [fxtemp,fytemp,fztemp,axtemp,aytemp,aztemp]
                vrmapi.SYSTEM().SetGlobalCameraPos(pos)
                fztemp = fztemp + fzmove
                aztemp = aztemp + azmove
            elif fztemp <= dzmin and fxtemp < dxmax:
                pos = [fxtemp,fytemp,fztemp,axtemp,aytemp,aztemp]
                vrmapi.SYSTEM().SetGlobalCameraPos(pos)
                fxtemp = fxtemp + fxmove
                axtemp = axtemp + axmove
            else:
                obj.ResetEvent(bevid)
                vrmapi.LOG("TimerEvent300-End")
        elif param['eventUID'] == 400:
            if fxtemp <= dxmin and fztemp < dzmax:
                pos = [fxtemp,fytemp,fztemp,axtemp,aytemp,aztemp]
                vrmapi.SYSTEM().SetGlobalCameraPos(pos)
                fztemp = fztemp + fzmove
                aztemp = aztemp + azmove
            elif fztemp >= dzmax and fxtemp < dxmax:
                pos = [fxtemp,fytemp,fztemp,axtemp,aytemp,aztemp]
                vrmapi.SYSTEM().SetGlobalCameraPos(pos)
                fxtemp = fxtemp + fxmove
                axtemp = axtemp + axmove
            elif fxtemp >= dxmax and fztemp > dzmin:
                pos = [fxtemp,fytemp,fztemp,axtemp,aytemp,aztemp]
                vrmapi.SYSTEM().SetGlobalCameraPos(pos)
                fztemp = fztemp - fzmove
                aztemp = aztemp - azmove
            elif fztemp <= dzmin and fxtemp > dxmin:
                pos = [fxtemp,fytemp,fztemp,axtemp,aytemp,aztemp]
                vrmapi.SYSTEM().SetGlobalCameraPos(pos)
                fxtemp = fxtemp - fxmove
                axtemp = axtemp - axmove
            else:
                obj.ResetEvent(mevid)
                vrmapi.LOG("TimerEvent400-End")
    elif ev == 'time':
        dummy = 1
    elif ev == 'after':
        dummy = 1
    elif ev == 'frame':
        dummy = 1
    elif ev == 'keydown':
        if param['keycode'] == 'B':
            obj.ResetEvent(mevid)
            bevid = obj.SetEventTimer(0.01,300)
        elif param['keycode'] == 'N':
            obj.ResetEvent(bevid)
            obj.ResetEvent(mevid)
            vrmapi.LOG("NKey-End")
        elif param['keycode'] == 'M':
            obj.ResetEvent(bevid)
            mevid = obj.SetEventTimer(0.01,400)

丸1日かかりましたが思ったより早く出来たかなという気がしますね。

それぞれの辺を1000に分割し0.01秒単位で動かしているので、長辺と短辺では速度が違うというちょっと気になる点もありますがまぁいいでしょう(^_^;)

これでNXへの移植の準備は出来ました(^^)/


ランキングに参加中。クリックして応援お願いします!

名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

※ブログ作成者から承認されるまでコメントは反映されません。

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最新の画像もっと見る

最近の「Pythonスクリプト」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事