あれからまた考えました。その結果、SetEventTimerの秒数間隔が当てにならないのであれば前後で正確な時間を取得してその差を用いれば良いのではないか?と。で計測すると
やはり結構な誤差が出ました(^_^;) でもこれを利用して係数をかければ正確な数値に近づくので出来たようなものです。色々試した結果0.01秒刻みの方が精度が高っかったので
#OBJID=38
import vrmapi
def vrmevent_38(obj,ev,param):
di = obj.GetDict()
if ev == 'init':
obj.SetSNSMode(2)
di['train'] = 0
di['timerEID'] = 0
di['length'] = 0
di['t1'] = 0
di['t2'] = 0
di['tp'] = 0
di['tt'] = 0
elif ev == 'broadcast':
dummy = 1
elif ev == 'timer':
if param['eventUID'] == 100:
di['tt'] = vrmapi.LAYOUT().SYSTEM().GetSystemTime()
k = (di['tt'] - di['tp']) / 0.01
#vrmapi.LOG(k)
di['length'] = di['length'] + (0.0185185 * di['train'].GetSpeed()) * k
di['tp'] = di['tt']
elif ev == 'time':
dummy = 1
elif ev == 'after':
dummy = 1
elif ev == 'frame':
dummy = 1
elif ev == 'catch':
if param['tire'] == 1:
di['t1'] = vrmapi.LAYOUT().SYSTEM().GetSystemTime()
di['train'] = obj.GetTrain()
di['tp'] = vrmapi.LAYOUT().SYSTEM().GetSystemTime()
di['timerEID'] = obj.SetEventTimer(0.01,100)
elif param['tire'] == 2:
di['t2'] = vrmapi.LAYOUT().SYSTEM().GetSystemTime()
length = (di['t2'] - di['t1']) * 1.85185 * di['train'].GetSpeed()
obj.ResetEvent(di['timerEID'])
vrmapi.LOG(' timerlength=' + str(di['length']))
vrmapi.LOG(' simplelength=' + str(length))
di['length'] = 0
となりました(^^)/
最新の画像もっと見る
最近の「Pythonスクリプト」カテゴリーもっと見る
最近の記事
カテゴリー
- 重要記事(18)
- HDR写真(91)
- VRM-NX(256)
- NX-TOMIX(121)
- VRM入門(82)
- VRM動画(78)
- VRM自動センサー(10)
- 天球テクスチャー(62)
- 編成(115)
- Pythonスクリプト(93)
- VRMoNLINE(25)
- VRMノンジャンル(187)
- VRMの日(22)
- 鉄道模型レイアウター(28)
- Trainz(183)
- A9(10)
- 鉄道模型(111)
- VRM4CV(69)
- cVss(20)
- VRM-Nietzsche(28)
- めっけ(8)
- 無理矢理ストラクチャ(29)
- VRM4GIS計画(仮)(12)
- VRM用技術(25)
- VRMスクリプト(21)
- 参考写真・参考書籍(28)
- 3DCG(109)
- サウンド(5)
- 単なる雑談(79)
- ノンジャンル(9)
- 双極性障害(2)
- 生活(2)
- グルメ(0)
バックナンバー
2017年
人気記事