Language:

サイドバー

バーチャルキャスト公式Wiki

メインメニュー

初心者向けガイド

VirtualCast

遊ぶ世界

THE SEED ONLINE

ニコニコ

SHOWROOM

配信

配信ツール

その他

wikiについて

デベロッパー向け


開発環境

VRM(アバター)

VCI(アイテム/背景)

VCI更新情報

更新日 - UniVCI バージョン
2021/03/17 v0.32
2.0.3b
2021/01/14 v0.31
2.0.1a
2020/12/03 v0.30
2.0.0b
2020/11/12 v0.30
2.0.0a
2020/10/22 v0.29
1.9.5b
2020/07/30 v0.29
1.9.3e
2020/06/25 v0.28
1.9.3c
2020/05/21 v0.27
1.9.2e

以前のアップデート履歴


GLB(背景)

vci:script:reference:exportavatar

ExportAvatar(アバター情報)

アバター情報を取得します。 ExportStudioGetOwner, GetAvatarsから取得できます。

メンバ変数・関数一覧

[EmbeddedScriptWorkspace]フォルダ内の[types.lua]を開くと一覧を確認できます。

ExportAvatar

名前 説明
GetName fun(): string ユーザー名を取得します
GetId fun(): string ユーザーIDを取得します。スタジオ内のみで有効な値です。スタジオを抜けるとIDが変わります。
IsOwner fun(): bool VCIの所有者かどうかを示す値を返します。
GetLocalPosition fun(): Vector3 足元のローカル座標を取得します。 ※1
GetPosition fun(): Vector3 足元のワールド座標を取得します。 ※1
GetLocalRotation fun(): Quaternion ローカル回転を取得します。 ※1
GetRotation fun(): Quaternion ワールド回転を取得します。 ※1
GetLocalScale fun(): Vector3 縮尺を取得します。 ※1
GetRight fun(): Vector3 右方向(+X)のベクトルを取得します。 ※1
GetUp fun(): Vector3 上方向(+Y)ベクトルを取得します。 ※1
GetForward fun(): Vector3 正面(+Z)ベクトルを取得します。 ※1
GetLocalToWorldMatrix fun(): Matrix4x4 ローカル座標からワールド座標に変換した時の行列を取得します。 ※1
GetBoneTransform fun(boneName: string): usertype ボーン情報を取得します。 ※1

※1
アバター情報の読込中や、アバター切替時にnilが返されることがあるので、使用する際はnilチェックを入れてください。

概要

  1. ExportStudioGetOwner, GetAvatarsを実行してアバター情報を取得する。
  2. 取得したアバター情報に対してGetBoneTransform, GetNameを実行して詳細な情報を取り出す。

注意点

  • GetBoneTransform()は初回実行時に関してはnilが返されます。
    また、アバター読み込み時の場合、nilが返される場合があります。
  • vci.studio.GetAvatars()でアバターを取得した際のIndex番号に割り振られているプレイヤーはクライアント毎に異なります。
  • 処理の内容によってはboneのnilのチェックを行う必要がります。

基本サンプル

main.lua
    -- VCIの持ち主(VCIを出した人)の情報を取得する
    local owner = vci.studio.GetOwner()
    -- VCIの持ち主の名前を表示
    print(owner.GetName())
    -- boneのnilチェック
    local hipsBone = owner.GetBoneTransform("Hips")
    if hipsBone then
        -- Hipsのpositionを表示する
        print(hipsBone.position)
        -- Hipsのrotationを表示する
        print(hipsBone.rotation)   
    end

スタジオ内に居るプレイヤーの一覧を出力するサンプル

main.lua
-- スタジオ内に居るプレイヤーの一覧を表示する
local _avaters = vci.studio.GetAvatars()
for i = 1, #_avaters do
    print("avaters["..tostring(i).."]: ".._avaters[i].GetName())
end

テンプレート

main.lua
-- VCIの持ち主(VCIを出した人)の情報
local _ownerAvater
 
-- 初期化 (VCIの持ち主のみ実行)
if vci.assets.IsMine then
    _ownerAvater = vci.studio.GetOwner()
    print("ホスト : ".._ownerAvater.GetName())
end
 
-- リモートの確認
if vci.assets.IsMine == false then
    print("あなたはVCIの持ち主ではありません")
end
 
function updateAll()
    if vci.assets.IsMine then
        print("VCIの持ち主のみが実行する処理")
    end
end
 
function onUse(switch)
    -- 各クライアントでonUseFireOnce()を実行する
    vci.message.Emit("onUseFireOnce", tostring(switch))
end
 
function onUseFireOnce(sender, name, message)
 
    print("message : "..tostring(message))
 
    -- VCIの持ち主のみ実行
    if vci.assets.IsMine then
        -- ここで主に部屋主のアバター情報などを取得
        print("VCIの持ち主のみ実行する処理")
    end
    -- リモートで確認
    if vci.assets.IsMine == false then
        print("VCIの持ち主以外が実行する処理")
    end
 
end
 
-- Emit "onUseFireOnce" で onUseFireOnce()を実行する
vci.message.On("onUseFireOnce", onUseFireOnce)

_ownerAvaterに関係する処理をVCIの持ち主のクライアントのみで実行する場合のサンプルです。
VCIの持ち主が代表して実行し、リモートのクライアントからは_ownerAvaterにアクセスしないイメージです。
共有変数やメッセージを使って状態を同期させます。

GetName

GetName fun(): string サンプル

main.lua
function onUse(use)
    local owner = vci.studio.GetOwner()
    print(owner.GetName())
end

実行結果

"バーチャルキャストちゃん"

説明
VCI所有者のユーザー名を表示します。

GetId

GetId fun(): string サンプル

main.lua
function onUse(use)
    local owner = vci.studio.GetOwner()
    print(owner.GetId())
end

実行結果

""79325077""

説明
VCI所有者のユーザーIDを取得します。スタジオ内のみで有効な値です。スタジオを抜けるとIDが変わります。

IsOwner

IsOwner fun(): bool サンプル

main.lua
function onUse(use)
    local owner = vci.studio.GetOwner()
    print(owner.IsOwner())
end

実行結果

true

説明
VCIの所有者かどうかを示す値を返します。

GetLocalPosition/GetPosition

GetLocalPosition fun(): Vector3 サンプル

main.lua
function onUse(use)
    local owner = vci.studio.GetOwner()
    print(owner.GetLocalPosition())
    print(owner.GetPosition())
end

実行結果

(1.8, 0.0 , 1.7)
(1.8, 0.0 , 1.7)

説明
それぞれVCI所有者の足元のローカル、ワールド座標を取得します。

GetLocalRotation/GetRotation

GetLocalRotation fun(): Quaternion サンプル

main.lua
function onUse(use)
    local owner = vci.studio.GetOwner()
    print(owner.GetLocalRotation())
    print(owner.GetRotation())
end

実行結果

(0.0, 0.4, 0.0, 0.9)
(0.0, 0.4, 0.0, 0.9)

説明
それぞれVCI所有者のローカル、ワールド回転を取得します。

GetLocalScale

GetLocalScale fun(): Vector3 サンプル

main.lua
function onUse(use)
    local owner = vci.studio.GetOwner()
    print(owner.GetLocalScale())
end

実行結果

(1.0, 1.0, 1.0)

説明
VCI所有者の縮尺を取得します。

GetRight/GetUp/GetForward

サンプル

main.lua
function onUse(use)
    local owner = vci.studio.GetOwner()
    print(owner.GetRight())
    print(owner.GetUp())
    print(owner.GetForward())
end

実行結果

(1.0, 0.0, -0.3)
(0.0, 1.0, 0.1)
(0.3, -0.1, 1.0)

説明
GetRight()は右方向(+X)のベクトル、owner.GetUp()は上方向(+Y)ベクトル、owner.GetForward()は正面(+Z)ベクトルを取得します。 サンプルはそれぞれVCI所有者のベクトルを取得しています。

GetLocalToWorldMatrix

GetLocalToWorldMatrix fun(): Matrix4x4 サンプル

main.lua
function onUse(use)
    local owner = vci.studio.GetOwner()
    print(owner.GetRight())
    print(owner.GetUp())
    print(owner.GetForward())
    print(owner.GetLocalPosition())
    print(owner.GetLocalToWorldMatrix())
end

実行結果

(0.7, 0.0, 0.7)
(0.0, 1.0, 0.0)
(-0.7, 0.0, 0.7)
(2.0, 0.0, 2.3)
 0.68498 -0.02538 -0.72812  1.96983
 0.00523  0.99954 -0.02992  0.00000
 0.72855  0.01669  0.68479  2.26828
 0.00000  0.00000  0.00000  1.00000

説明
3つのベクトルと現在の座標を取得できる。

GetBoneTransform

GetBoneTransformは、UnityHumanoidAvaterのHumanBodyBonesの変数名から、ボーン情報を得るための関数です。無効なボーン名や、対応していないボーンを指定した場合は、nilが返ります。

UnityHumanoidAvaterに関しては、こちらをご覧ください。

使用例

main.lua
    -- VCI所有者情報を取得する。
    local owner = vci.studio.GetOwner()
 
    ---- サブアイテムを取得する
    local subItem = vci.assets.GetTransform("SubItem1")
 
    -- 右手の位置にサブアイテムを動かす。
    local rightHand = owner.GetBoneTransform("RightHand")
    if rightHand then
        subItem.SetPosition(rightHand.position)
        subItem.SetRotation(rightHand.rotation)
    end

ボーン情報(Table型)

キー 説明
position Vector3 ボーンのワールド座標
rotation Quaternion ボーンのワールド回転

メソッド名

サンプル

main.lua
 

実行結果

 

説明

メソッド名

サンプル

main.lua
 

実行結果

 

説明

vci/script/reference/exportavatar.txt · 最終更新: 2021/06/17 19:49 by t-daihisa

ページ用ツール