ExportMe(ローカルマシンの情報)

このページは過去の情報となります。
新しいスクリプトリファレンスはこちらになります。

VCIを取り出したユーザーのローカル情報にアクセスする事ができます。

名前 説明 バージョン
Time クライアントを起動してから現在までの時間
UnscaledTime timeScale の影響を受けないTime
Framecount クライアントを起動してから現在までのフレーム数
GetHeadMountedDisplayType 使用しているHMDのタイプを取得 1.9.2a 以降
GetHeadMountedDisplayName 使用しているHMDの名前を取得 1.9.2a 以降
GetHeadMountedDisplayIsMounted HMDを被っているかどうかの状態 2.0.0a 以降
GetXXControllerName 使用しているControllerの名前を取得 2.2.7a 以降
GetLanguageCode 使用中の言語を取得 1.9.2a 以降
GetSystemVersion バーチャルキャストのバージョンを取得 1.9.2d 以降
CompareSystemVersion バージョンを比較 1.9.2d 以降
GetDspTime 現在のオーディオシステム上の時刻を取得 2.3.9c 以降
GetAxisInput VCIのキー操作の入力受付(※別ページ)
GetButtonInput VCIのキー操作の入力受付(※別ページ)

Time

Time : TimeSpan
バーチャルキャストの時刻を取得する

サンプル

main.lua
function update()
    print(vci.me.Time)
    print("H : "..vci.me.Time.Hours)
    print("M : "..vci.me.Time.Minutes)
    print("S : "..vci.me.Time.Seconds)
end

実行結果

00:00:03.6820000
H : 0
M : 0
S : 3

Timeの後に関数を追加すると細かい情報に分けてとる事ができます。
この時間はVCIスクリプトで定義された時間が表示されます。

UnscaledTime

UnscaledTime : TimeSpan
バーチャルキャストの時刻を取得する
クライアントを起動してから現在までの経過時間

サンプル

main.lua
function updateAll()
    print(vci.me.Time)
    print(vci.me.UnscaledTime)
end

実行結果

02:29:51:1230000
02:30:00:2540000
....

Time と UnscaledTime の違い

vci.me.Time vci.me.UnscaledTime はどちらも、ローカルマシン上での経過秒数を取得できます。
しかし、この2つは明確に違う値をとります。
なぜなら VR 空間内の時間の流れ方は、現実の時間の流れ方とは異なるからです。
使用用途によって、どちらの時間を使うのかを選択する必要があります。

vci.me.Time は VR 空間内での経過時間を測るときに使用します。
たとえば transform に対して AddForce を3秒間加えたいといった物理挙動に関するときなどです。

vci.me.UnscaledTime は現実の時間を基準にして経過時間を測るときに使用します。
たとえばタイマーなど、リアルの時間できっかり3分測りたいときなどです。
ただし、より正確に現在時刻を知りたい場合は os.date を使うのが良いでしょう。

os.date を利用する場合

os.date string
os.dateというLua自体の機能を使う事によってOSの現在時刻を取得する事ができます。
詳細は Lua 5.2 リファレンスマニュアル - os.date () を参照してください。

サンプル1

main.lua
print(os.date("%Y-%m-%d %H:%M:%S"))
print(os.date("%m%d"))
print(os.date("%H"))
print(os.date("%M"))
print(os.date("%S"))

実行結果1

2019-02-26 17:14:25
0226
17
14
25

サンプル2

月日を変数に保存しておけば、特定の日を条件にする事が可能です。
サンプルではクリスマスの日のみに実行されるサンプルです。
os.date()の戻り値はnumber型ではなくstring型なので、条件は文字列で指定するように気を付けましょう。

main.lua
today = os.date("%m%d")
 
function onGrab()
    -- today は string型
    if today == "1225" then
        print("メリークリスマス!")
    end
end

string型からnumber型へ型変換

サンプル

main.lua
day = tonumber(os.date("%d"))
 
function onGrab()
    if (day % 2) == 0 then
        print("今日は偶数の日")
    end
end

tonumber()を使う事で、string型からnumber型に変換する事ができます。
サンプルではdayを2で割った時のあまりが0である事を条件にする事で、偶数の日である事を判定しています。

FrameCount

FrameCount : num
クライアントを起動してから現在までのフレーム数

サンプル

main.lua
function updateAll()
    print(vci.me.FrameCount)
end

実行結果

10001
10002
10003
....

GetHeadMountedDisplayType

GetHeadMountedDisplayType fun(): string
HMDに関する情報を取得できます。

サンプル

main.lua
print("HMD Type: "..vci.me.GetHeadMountedDisplayType())

実行結果(VIVE を使用した場合)

HMD Type: Vive

GetHeadMountedDisplayTypeで取得可能な値

GetHeadMountedDisplayName

GetHeadMountedDisplayName fun(): string
HMDに関する情報を取得できます。

処理内容はSteamVRのhmd_ModelNumberプロパティから取得しています。
この値はSteamVRの仕様に準拠しますので、今後のアップデートで取得できる値が変わる可能性があります。

サンプル

main.lua
print("HMD Name: "..vci.me.GetHeadMountedDisplayName())

実行結果(VIVE を使用した場合)

HMD Name: Vive. MV

GetHeadMountedDisplayIsMounted

GetHeadMountedDisplayIsMounted fun(): bool

HMDを被っているかを所得できます。

GetXXControllerName

GetLeftControllerName fun(): string
GetRightControllerName fun(): string
Controllerに関する情報を取得できます。

Controllerの電源が入っていない等の理由によってControllerが認識していない場合は none が返されます。
また、別のControllerに切り替えた場合は返される値も変化します。

サンプル

main.lua
print("LeftController Name: "..vci.me.GetLeftControllerName())
print("RightController Name: "..vci.me.GetRightControllerName())

実行結果(VIVE を使用した場合)

LeftController Name: Vive. Controller MV
RightController Name: Vive. Controller MV

GetLanguageCode

GetLanguageCode fun(): string
使用中の言語を取得できます。

サンプル

main.lua
print("Language Code: "..vci.me.GetLanguageCode())

GetLanguageCodeで取得可能な値

GetSystemVersion

GetSystemVersion fun(): string
バーチャルキャストのバージョン情報をGetSystemVersionから取得できます。

サンプル

main.lua
print(vci.me.GetSystemVersion()) -- 1.9.2d

CompareSystemVersion

CompareSystemVersion fun(version: string)
CompareSystemVersionは、引数で指定するバージョン文字列が、現在のバージョンと同じ場合は0、古い場合は正の値、新しい場合は負の値を返します。

サンプル

main.lua
print(vci.me.GetSystemVersion()) -- 1.9.2d
 
local result = vci.me.CompareSystemVersion("1.9.2d")
print("Result: "..result) -- Result: 0
 
result = vci.me.CompareSystemVersion("1.9.2c")
print("Result: "..result) -- Result: 1
 
result = vci.me.CompareSystemVersion("1.9.3")
print("Result: "..result) -- Result: -1

GetDspTime

GetDspTime fun(): number
現在のオーディオシステム上の時刻を返します。

サンプル

main.lua
print(vci.me.GetDspTime())