でけた(^^)/
#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への移植の準備は出来ました(^^)/