vci:script:reference:exportavatar

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
vci:script:reference:exportavatar [2019/12/20 18:56]
h-eguchi
vci:script:reference:exportavatar [2023/07/28 14:04] (現在)
Ramen APIリファレンスへリンク修正
ライン 1: ライン 1:
-===== ExportAvatar =====+~~NOTOC~~ 
 +====== ExportAvatar(アバター情報) ====== 
 +<WRAP center round important 80%>
  
 +このページは過去の情報となります。\\
 +新しいスクリプトリファレンスは**[[https://​developer.virtualcast.jp/​vci-docs/​api/​|こちら]]**になります。
 +</​WRAP>​
 アバター情報を取得します。 アバター情報を取得します。
 +[[https://​developer.virtualcast.jp/​vci-docs/​api/​classes/​ExportStudio/​index.html|ExportStudio]]の''​GetOwner'',​ ''​GetAvatars''​から取得できます。\\
  
-[[vci:​script:​reference:​exportstudio|ExportStudio]]の''​GetOwner'',​ ''​GetAvatars''​から取得できます。 
-===== 関数一覧 ===== 
  
-**関数一覧は[EmbeddedScriptWorkspace]フォルダ内の[types.lua]を開くと最新関数一覧確認できます。**\\+^ 名前 ^ 説明 ^ バージョン ^ 
 +| [[vci/​script/​reference/​exportavatar#​GetName]] | ユーザー名を取得 | | 
 +| [[vci/​script/​reference/​exportavatar#​GetId]] | ユーザーIDを取得 | | 
 +| [[vci/​script/​reference/​exportavatar#​IsOwner]]| VCIの所有者かどうか | | 
 +| [[vci/​script/​reference/​exportavatar#​GetLocalPosition / GetPosition]] | 足元の座標を取得 ​**※1 ※2**| | 
 +[[vci/​script/​reference/​exportavatar#​GetLocalRotation / GetRotation]] | 回転を取得 **※1**| | 
 +[[vci/​script/​reference/​exportavatar#​GetLocalScale]| 縮尺取得 **※1**| | 
 +| [[vci/​script/​reference/​exportavatar#​GetRight / GetUp / GetForward]] | (X/Y/Z軸)ベクトル取得 **※1**| | 
 +| [[vci/​script/​reference/​exportavatar#​GetLocalToWorldMatrix ]] | ローカル→ワールド座標に変換した行列を取得 **※1**| | 
 +| [[vci/​script/​reference/​exportavatar#​GetBoneTransform]] | ボーン情報を取得 **※1**| |
  
-==== ExportAvatar ====+**※1**\\ 
 +** アバター情報の読込中や、アバター切替時にnilが返されることがあるので、使用する際はnilチェックを入れてください。 **\\ 
 +**※2**\\ 
 +** ルームではHipボーンの位置を取得します **
  
-^ 関数名 ^ 説明 ^ +==== 概要 ====
-| 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(): Vector3 | ローカル座標からワールド座標に変換した時の行列を取得します。 **※1**| +
-| GetBoneTransform fun(boneName:​ string): usertype | ボーン情報を取得します。 **※1**|+
  
-**※1**\\ +  - [[https://​developer.virtualcast.jp/​vci-docs/​api/​classes/​ExportStudio/​index.html|ExportStudio]]の''​GetOwner'',​ ''​GetAvatars''​を実行してアバター情報を取得する。 
-** アバター情報の読込中や、アバター切替時nilが返されることがあるので、使用する際はnilチェック入れください。 ** +  - 取得したアバター情報対して''​GetBoneTransform'',​ ''​GetName''​実行し詳細な情報を取り出す
-\\ +
-----+
  
-==== GetBoneTransformについて ====+=== 注意点 ​===
  
-GetBoneTransformは、[[https://​docs.unity3d.com/​ja/​current/​ScriptReference/​HumanBodyBones.html|HumanBodyBones]]の変数を入力して、ン情報を得るため関数です。無効なボン名や、対応していないボーンを指定した場合nilがります。+  * GetBoneTransform()**初回実行時**に関してはnilが返されます。\\ またアバタ読み込み時場合、nilが返される場合があります。 
 +  * ''​vci.studio.GetAvatars()''​でアバタを取得た際のIndex番号に割り振られているプレイヤはクライアト毎に異なります。 
 +  * 処理の内容によってboneのnilのチェックを行う必要がります。 
 + 
 +=== 基本サンプル ===
  
-使用例 
 <file lua main.lua>​ <file lua 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 
 +</​file>​ 
 + 
 +=== スタジ内に居るプレイヤの一覧を出力するサンプル === 
 + 
 +<file lua main.lua>​ 
 +-- スタジオ内に居るプレイヤーの一覧を表示する 
 +local _avatars = vci.studio.GetAvatars() 
 +for i = 1, #_avatars do 
 +    print("​avatars["​..tostring(i).."​]:​ "​.._avatars[i].GetName()) 
 +end 
 +</​file>​ 
 + 
 +==== テンプレート ==== 
 + 
 +<file lua 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) 
 +</​file>​ 
 + 
 +_ownerAvaterに関係する処理をVCIの持ち主のクライアントのみで実行する場合のサンプルです。\\ 
 +VCIの持ち主が代表して実行し、リモートのクライアントからは_ownerAvaterにアクセスしないイメージです。\\ 
 +同期変数やメッセージを使って状態を同期させます。 
 + 
 +===== GetName ===== 
 +**GetName ​ fun(): string** 
 + 
 +VCI所有者のユーザー名を表示します。 
 + 
 +=== サンプル === 
 + 
 +<file lua main.lua>​ 
 +function onUse(use) 
 +    local owner = vci.studio.GetOwner() 
 +    print(owner.GetName()) 
 +end 
 +</​file>​ 
 + 
 +=== 実行結果 === 
 + 
 +<code lua> 
 +"​バーチャルキャストちゃん"​ 
 +</​code>​ 
 + 
 + 
 +===== GetId ===== 
 +**GetId fun(): string** 
 + 
 +VCI所有者のユーザーIDを取得します。\\ 
 +スタジオ内のみで有効な値です。スタジオを抜けるとIDが変わります。 
 + 
 +=== サンプル === 
 +<file lua main.lua>​ 
 +function onUse(use) 
 +    local owner = vci.studio.GetOwner() 
 +    print(owner.GetId()) 
 +end 
 +</​file>​ 
 + 
 +=== 実行結果 === 
 +<code lua> 
 +""​79325077""​ 
 +</​code>​ 
 + 
 + 
 + 
 + 
 +===== IsOwner ===== 
 +**IsOwner fun(): bool** 
 + 
 +VCIの所有者かどうかを示す値を返します。 
 + 
 +=== サンプル === 
 +<file lua main.lua>​ 
 +function onUse(use) 
 +    local owner = vci.studio.GetOwner() 
 +    print(owner.IsOwner()) 
 +end 
 +</​file>​ 
 + 
 +=== 実行結果 === 
 +<code lua> 
 +true 
 +</​code>​ 
 + 
 + 
 + 
 + 
 +===== GetLocalPosition / GetPosition ===== 
 +**GetLocalPosition fun(): Vector3**\\ 
 +**GetPosition fun(): Vector3** 
 + 
 +それぞれVCI所有者の足元のローカル、ワールド座標を取得します。 
 + 
 +=== サンプル === 
 +<file lua main.lua>​ 
 +function onUse(use) 
 +    local owner = vci.studio.GetOwner() 
 +    print(owner.GetLocalPosition()) 
 +    print(owner.GetPosition()) 
 +end 
 +</​file>​ 
 + 
 +=== 実行結果 === 
 +<code lua> 
 +(1.8, 0.0 , 1.7) 
 +(1.8, 0.0 , 1.7) 
 +</​code>​ 
 + 
 + 
 + 
 + 
 +===== GetLocalRotation / GetRotation ===== 
 +**GetLocalRotation fun(): Quaternion**\\ 
 +**GetRotation fun(): Quaternion** 
 + 
 +それぞれVCI所有者のローカル、ワールド回転を取得します。 
 + 
 +=== サンプル === 
 +<file lua main.lua>​ 
 +function onUse(use) 
 +    local owner = vci.studio.GetOwner() 
 +    print(owner.GetLocalRotation()) 
 +    print(owner.GetRotation()) 
 +end 
 +</​file>​ 
 + 
 +=== 実行結果 === 
 +<code lua> 
 +(0.0, 0.4, 0.0, 0.9) 
 +(0.0, 0.4, 0.0, 0.9) 
 +</​code>​ 
 + 
 + 
 + 
 + 
 +===== GetLocalScale ===== 
 +**GetLocalScale fun(): Vector3** 
 + 
 +VCI所有者の縮尺を取得します。 
 + 
 +=== サンプル === 
 +<file lua main.lua>​ 
 +function onUse(use) 
 +    local owner = vci.studio.GetOwner() 
 +    print(owner.GetLocalScale()) 
 +end 
 +</​file>​ 
 + 
 +=== 実行結果 === 
 +<code lua> 
 +(1.0, 1.0, 1.0) 
 +</​code>​ 
 + 
 + 
 + 
 +===== GetRight / GetUp / GetForward ===== 
 +**GetRight fun(): Vector3**\\ 
 +**GetUp fun(): Vector3**\\ 
 +**GetForward fun(): Vector3** 
 + 
 +GetRight()は右方向(+X)のベクトル、owner.GetUp()は上方向(+Y)ベクトル、owner.GetForward()は正面(+Z)ベクトルを取得します。\\ 
 +サンプルはそれぞれVCI所有者のベクトルを取得しています。 
 + 
 +=== サンプル === 
 +<file lua main.lua>​ 
 +function onUse(use) 
 +    local owner = vci.studio.GetOwner() 
 +    print(owner.GetRight()) 
 +    print(owner.GetUp()) 
 +    print(owner.GetForward()) 
 +end 
 +</​file>​ 
 + 
 +=== 実行結果 === 
 +<code lua> 
 +(1.0, 0.0, -0.3) 
 +(0.0, 1.0, 0.1) 
 +(0.3, -0.1, 1.0) 
 +</​code>​ 
 + 
 + 
 + 
 + 
 +===== GetLocalToWorldMatrix ===== 
 +**GetLocalToWorldMatrix fun(): Matrix4x4** 
 + 
 +3つのベクトルと現在の座標を取得できる。 
 + 
 +=== サンプル === 
 +<file lua 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 
 +</​file>​ 
 + 
 +=== 実行結果 === 
 +<code lua> 
 +(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 
 +</​code>​ 
 + 
 + 
 + 
 + 
 +===== GetBoneTransform ===== 
 + 
 +GetBoneTransformは、UnityHumanoidAvaterの[[https://​docs.unity3d.com/​ja/​2018.4/​ScriptReference/​HumanBodyBones.html|HumanBodyBones]]の変数名から、ボーン情報を得るための関数です。\\ 
 +無効なボーン名や、対応していないボンを指定した場合は、nilが返ります。 
 + 
 +UnityHumanoidAvaterに関しては、[[unity:​humanoid|こちら]]をご覧ください。 
 + 
 +=== サンプル === 
 +<file lua main.lua>​ 
 +    -- VCI所有者情報を取得する。
     local owner = vci.studio.GetOwner()     local owner = vci.studio.GetOwner()
  
     ---- サブアイテムを取得する     ---- サブアイテムを取得する
-    local subItem = vci.assets.GetSubItem("​SubItem1"​)+    local subItem = vci.assets.GetTransform("​SubItem1"​)
  
     -- 右手の位置にサブアイテムを動かす。     -- 右手の位置にサブアイテムを動かす。
ライン 54: ライン 335:
 | position | Vector3 | ボーンのワールド座標 | | position | Vector3 | ボーンのワールド座標 |
 | rotation| Quaternion| ボーンのワールド回転 | | rotation| Quaternion| ボーンのワールド回転 |
 +
 +
 +
vci/script/reference/exportavatar.1576835787.txt.gz · 最終更新: 2019/12/20 18:56 by h-eguchi

ページ用ツール