バーチャルキャスト公式Wiki
メニュー
配信
その他
リリース情報
安定版
ベータ版
Quest版
- wiki編集者用ページ
-
安定版
ベータ版
Quest版
スタジオ内の情報を取得するのに必要な関数です。
主にアイテムの状態に関する情報を取得したり、VCIスクリプトでアイテムを操作するのに使用します。
バーチャルキャストのアイテムについてはアイテムについてから確認してください。
[EmbeddedScriptWorkspace]フォルダ内の[types.lua]を開くと一覧を確認できます。
バーチャルキャストのプリセットアイテムごとにHas関数とGet関数が存在します。
Has関数はスタジオ内にアイテムが存在するか確認する関数で、Getはアイテムのインスタンスを取得する関数です。
スタジオにアイテムが存在しないのにGetしてしまうとnullになるので、Has関数の結果がtrueの時のみGetするようにします。
また、現在(2019/08/29)は凸者も取り出し可能なアイテムに関しては取得する事ができません。
関数名 | 説明 | VCバージョン |
---|---|---|
shared | vci.studio.shared(ExportShared) | |
GetOwner fun(): ExportAvatar | VCI所有者のアバター を取得します RoomではVCIを生成した人が退室している状況があり、その場合にGetOwnerを実行するとExportAvatarは入手出来ず、nilになります | |
GetLocalAvatar fun(): ExportAvatar | ローカルマシンのユーザが使用する アバター を取得します | 2.0.0a以降 |
GetAvatars fun(): ExportAvatar[] | スタジオ内のアバター 一覧を取得します | |
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 | |
GetNameBoard fun(idOrName: string): ExportSystemItem | ネームプレートをインスタンス化します。ExportAvatarから取得したユーザー名かIDを指定します。 | |
HasNameBoard fun(idOrName: string): bool | ネームプレートがスタジオに存在すれば true |
名前 | 説明 |
---|---|
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 |
※1
SetPosition
, SetRotation
, SetLocalPosition
, SetLocalRotation
は部屋主が出したVCIからのみ実行可能です。
基本的にSystemItemと同じですが、カメラ固有の関数(GetFieldOfView等)が存在します。
名前 | 説明 |
---|---|
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 |
※1
SetPosition
, SetRotation
, SetLocalPosition
, SetLocalRotation
, SetFieldOfView
は部屋主が出したVCIからのみ実行可能です。
※2
FOV設定可能なカメラは下図の通りです。GetMinFieldOfView
、GetMaxFieldOfView
で取得可能な最小値、最大値を超えた値は設定できません。
カメラ名 | FOV設定 |
---|---|
モニターカメラ | 不可 |
ハンディカメラ | 可 |
追従カメラ | 可 |
スイッチングカメラ | 不可 |
サンプル
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の場合に処理をしない という事は確実に言える事なので、先頭にその処理を持ってくる事で分かりやすくします。
このようなプログラム書き方をガード節といいます。