ユーザ用ツール

サイト用ツール


vci:script:reference:exportstudio

vci.studio(ExportStudio)&(標準アイテム用スクリプト)


スタジオ内の情報を取得するのに必要な関数です。
主にアイテムの状態に関する情報を取得したり、VCIスクリプトでアイテムを操作するのに使用します。
バーチャルキャストのアイテムについてはVirtualCast TOPから確認してください。


メソッド一覧

メソッド一覧は[EmbeddedScriptWorkspace]フォルダ内の[types.lua]を開くと最新のメソッド一覧を確認できます。

ExportStudio

バーチャルキャストの標準アイテムごとにHas関数とGet関数が存在します。
Has関数はスタジオ内にアイテムが存在するか確認する関数で、Getはアイテムのインスタンスを取得する関数です。
スタジオにアイテムが存在しないのにGetしてしまうとnullになるので、Has関数の結果がtrueの時のみGetするようにします。
また、現在(2019/08/29)は凸者も取り出し可能なアイテムに関しては取得する事ができません。

メソッド名 説明
shared vci.studio.shared(ExportShared)
GetMic fun(): ExportSystemItem マイク をインスタンス化します
HasMic fun(): bool マイク がスタジオに存在すれば true
GetLightSource fun(): ExportSystemItem 光源 をインスタンス化します
HasLightSource fun(): bool 光源 がスタジオに存在すれば true
GetMirror fun(): ExportSystemItem をインスタンス化します
HasMirror fun(): bool がスタジオに存在すれば true
GetHarisen fun(): ExportSystemItem ハリセン をインスタンス化します
HasHarisen fun(): bool ハリセン がスタジオに存在すれば true
GetMosaic fun(): ExportSystemItem モザイク をインスタンス化します
HasMosaic fun(): bool モザイク がスタジオに存在すれば true
GetHammer fun(): ExportSystemItem ピコピコハンマー をインスタンス化します
HasHammer fun(): bool ピコピコハンマー がスタジオに存在すれば true
GetWindowCamera fun(): ExportSystemCamera モニターカメラ をインスタンス化します
HasWindowCamera fun(): bool モニターカメラ がスタジオに存在すれば true
GetHandiCamera fun(): ExportSystemCamera ハンディカメラ をインスタンス化します
HasHandiCamera fun(): bool ハンディカメラ がスタジオに存在すれば true
GetAutoFollowCamera fun(): ExportSystemCamera 追従カメラ をインスタンス化します
HasAutoFollowCamera fun(): bool 追従カメラ がスタジオに存在すれば true
GetSwitchingCamera fun(): ExportSystemCamera スイッチングカメラ をインスタンス化します
HasSwitchingCamera fun(): bool スイッチングカメラ がスタジオに存在すれば true

SystemItem

メソッド名 説明
_new fun(interactableItemController: usertype, controller: usertype): ExportSystemItem
GetName fun(): string アイテムの名前を取得します
GetLocalPosition fun(): Vector3 アイテムの位置を取得します
(出現時のローカル座標が原点)
GetPosition fun(): Vector3 アイテムの位置を取得します
(ワールド座標の(0,0,0)が原点)
GetLocalRotation fun(): Quaternion アイテムの回転を取得します
(出現時のローカルの姿勢が基準)
GetRotation fun(): Quaternion アイテムの回転を取得します
(ワールド座標基準)
GetLocalScale fun(): Vector3 アイテムの縮尺を取得します
GetRight fun(): Vector3 アイテムの右方向(+X)のベクトル
GetUp fun(): Vector3 アイテムの上方向(+Y)ベクトル
GetForward fun(): Vector3 アイテムの正面(+Z)ベクトル
GetLocalToWorldMatrix fun(): Matrix4x4 アイテムのローカル座標からワールド座標に変換した時の行列
SetPosition fun(position: Vector3): number アイテムの位置(Position)を変更します
(ワールド座標) ※1
SetRotation fun(rotation: Quaternion): number アイテムの姿勢(Rotation)を変更します
(ワールド座標) ※1
SetLocalPosition fun(localPosition: Vector3): number アイテムの位置(Position)を変更します
(ローカル座標) ※1
SetLocalRotation fun(localRotation: Quaternion): number アイテムの姿勢(Rotation)を変更します
(ローカル座標) ※1
IsGrabbed fun(): bool grabされているなら true
GetHashCode fun(): number ハッシュ値を生成します
ToString fun(): string SystemItemを文字列に変換します

※1
SetPosition, SetRotation, SetLocalPosition, SetLocalRotation部屋主が出したVCIからのみ実行可能です。


ExportSystemCamera

基本的にSystemItemと同じですが、カメラ固有の関数(GetFieldOfView等)が存在します。

メソッド名 説明
_new fun(interactableItemController: usertype, controller: usertype): ExportSystemItem
GetFieldOfView fun(): number カメラの視野角(FOV)を取得します
SetFieldOfView fun(fov: number): number カメラの視野角(FOV)を変更します ※1 ※2
GetMinFieldOfView fun(): number カメラの最小視野角(FOV)を取得します
GetMaxFieldOfView fun(): number カメラの最大視野角(FOV)を取得します
GetName fun(): string アイテムの名前を取得します
GetLocalPosition fun(): Vector3 アイテムの位置を取得します
(出現時のローカル座標が原点)
GetPosition fun(): Vector3 アイテムの位置を取得します
(ワールド座標の(0,0,0)が原点)
GetLocalRotation fun(): Quaternion アイテムの回転を取得します
(出現時のローカルの姿勢が基準)
GetRotation fun(): Quaternion アイテムの回転を取得します
(ワールド座標基準)
GetLocalScale fun(): Vector3 アイテムの縮尺を取得します
GetRight fun(): Vector3 アイテムの右方向(+X)のベクトル
GetUp fun(): Vector3 アイテムの上方向(+Y)ベクトル
GetForward fun(): Vector3 アイテムの正面(+Z)ベクトル
GetLocalToWorldMatrix fun(): Matrix4x4 アイテムのローカル座標からワールド座標に変換した時の行列
SetPosition fun(position: Vector3): number アイテムの位置(Position)を変更します
(ワールド座標) ※1
SetRotation fun(rotation: Quaternion): number アイテムの姿勢(Rotation)を変更します
(ワールド座標) ※1
SetLocalPosition fun(localPosition: Vector3): number アイテムの位置(Position)を変更します
(ローカル座標) ※1
SetLocalRotation fun(localRotation: Quaternion): number アイテムの姿勢(Rotation)を変更します
(ローカル座標) ※1
IsGrabbed fun(): bool grabされているなら true
GetHashCode fun(): number ハッシュ値を生成します
ToString fun(): string SystemItemを文字列に変換します

※1
SetPosition, SetRotation, SetLocalPosition, SetLocalRotation, SetFieldOfView部屋主が出したVCIからのみ実行可能です。

※2
FOV設定可能なカメラは下図の通りです。GetMinFieldOfView、GetMaxFieldOfViewで取得可能な最小値、最大値を超えた値は設定できません。

カメラ名 FOV設定
モニターカメラ 不可
ハンディカメラ
追従カメラ
スイッチングカメラ 不可

概要

サンプル

main.lua
function onUse(use)
    -- PositionResetをUseした時
    if use == "CameraPositionReset" then
        -- カメラの位置をリセットする
        CameraPositionReset()
    end
end
 
function CameraPositionReset()
    -- ハンディカメラが存在しない場合終了する
    if vci.studio.HasHandiCamera() == false then
        print("ハンディカメラが存在しないので終了")
        return
    end
 
    -- リセットする座標
    local position = Vector3.__new(0, 1, 0)
    -- カメラのインスタンス
    local camera = vci.studio.GetHandiCamera()
    -- カメラの位置を変更
    camera.SetPosition(position)
    print("カメラの位置 :"..tostring(camera.GetPosition()))
end

実行結果

カメラの位置 : (0,1,0)
(カメラの座標がワールド座標で(0,1,0)の位置に移動します)

解説

CameraPositionResetというSubItemをgrabした時に、ハンディカメラの位置を(0,1,0)の位置にリセットするサンプルです。

    if vci.studio.HasHandiCamera() == false then
        print("ハンディカメラが存在しないので終了")
        return
    end

スタジオの中にハンディカメラが存在しない状態で vci.studio.GetHandiCamera() を実行してしまうと、エラーになります。
なので vci.studio.HasHandiCamera() == false でハンディカメラが存在しない場合は return をして処理を終了してしまいます。

vci.studio.HasHandiCamera() == true の場合は return が実行されずに camera.SetPosition(position) の行までいくので、カメラがリセットされます。
なので、アイテムが存在するか確認するHas関数の後に、アイテムをインスタンス化するGet関数を実行する必要があります。

また、ケースバイケースではありますが Has関数がfalseの場合にreturnする という書き方を推奨します。
trueの場合に実行する でも問題ないのですが、変数のスコープがif文の中になってしまうのや、さらにif文がネストする可能性が大きいです。
Has関数がfalseの場合に処理をしない という事は確実に言える事なので、先頭にその処理を持ってくる事で分かりやすくします。
このようなプログラム書き方をガード節といいます。


vci/script/reference/exportstudio.txt · 最終更新: 2019/11/06 14:43 by fumo

ページ用ツール