ユーザ用ツール

サイト用ツール


vci:script:reference:exportassets

vci.assets(ExportAssets)

VCIにアタッチされたコンポーネントを扱う時のメソッドで、下記のような事ができます。
また_ALL_が付いているメソッドはスタジオ内に居るユーザー全員のVCIで実行されます。

  • Audio(音)の再生
  • Animation(アニメーション)の再生
  • MaterialのカラーやUVの変更

メソッド一覧

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

メソッド名 説明
IsMine VCIを出したクライアントであれば true を返し、そうでなければ nil になります。
SetMaterialColorFromIndex Indexnumberで指定したマテリアルの色を変更します
SetMaterialColorFromName 名前で指定したマテリアルの色を変更します
SetMaterialTextureOffsetFromIndex Indexnumberで指定したマテリアルの UVoffset を変更します
SetMaterialTextureOffsetFromName 名前で指定したマテリアルの UVoffset を変更します
PlayAnimationFromIndex Indexnumberで指定したAnimationを再生します
PlayAnimationFromName 名前で指定したAnimationを再生します
StopAnimation
PlayAudioFromIndex Indexnumberで指定したAudioファイルを再生します
PlayAudioFromName 名前で指定したAudioファイルを再生します
PauseAudioFromIndex Indexnumberで指定したAudioファイルを一時停止します
PauseAudioFromName 名前で指定したAudioファイルを一時停止します
StopAudioFromIndex Indexnumberで指定したAudioファイルを停止します
StopAudioFromName 名前で指定したAudioファイルを停止します
HapticPulseOnGrabbingController コントローラーを振動させるのに使用します
HapticPulseOnTouchingController コントローラーを振動させるのに使用します

_ALL_ を含むメソッドは、他のクライアントでも実行され同期します。
全てのクライアントで同じ結果になってほしい場合は _ALL_ を含むメソッドを使用してください。

メソッド名 説明
_ALL_SetMaterialColorFromIndex Indexnumberで指定したマテリアルの色を変更します
_ALL_SetMaterialColorFromName 名前で指定したマテリアルの色を変更します
_ALL_SetMaterialTextureOffsetFromIndex Indexnumberで指定したマテリアルの UVoffset を変更します
_ALL_SetMaterialTextureOffsetFromName 名前で指定したマテリアルの UVoffset を変更します
_ALL_PlayAnimationFromIndex Indexnumberで指定したAnimationを再生します
_ALL_PlayAnimationFromName 名前で指定したAnimationを再生します
_ALL_StopAnimation
_ALL_PlayAudioFromIndex Indexnumberで指定したAudioファイルを再生します
_ALL_PlayAudioFromName 名前で指定したAudioファイルを再生します
_ALL_PauseAudioFromIndex Indexnumberで指定したAudioファイルを一時停止します
_ALL_PauseAudioFromName 名前で指定したAudioファイルを一時停止します
_ALL_StopAudioFromIndex Indexnumberで指定したAudioファイルを停止します
_ALL_StopAudioFromName 名前で指定したAudioファイルを停止します
_ALL_HapticPulseOnGrabbingController コントローラーを振動させるのに使用します
_ALL_HapticPulseOnTouchingController コントローラーを振動させるのに使用します

VCIの同期について

ネットワーク越しに動くものを考える場合、同期を意識する必要があります。
バーチャルキャストのスタジオの中にAさん、Bさん、Cさんと居た時、Aさんが動かした結果をBさん、Cさんに反映させる事を「同期させる」といいます。
一方、動かした人のパソコンでしか動かないような設定は「ローカルのみで動作する」というような言い方になります。
VCIでは主に同期させる方法は以下の通りになります。

  • transformはバーチャルキャストの機能によって同期します。
  • _ALL_ のついたメソッドは同期して実行されます。
  • 共有変数を使用してVCIの状態を同期させます。

つまり vci.assets のメソッドは基本的に _ALL_ が付いたものを使用し、他のユーザーのVCIも動作するように作るという事です。
※音がなる程度のシンプルなVCIであれば、イベント関数で _ALL_ を呼びさえすれば問題ありません。
逆に、それぞれのユーザーでVCIの状態を変えたい時は同期しないようにローカルで動作するように作ります。

transformの同期については VCIアイテムとSubItemについて をご確認ください。


AudioIndex


  • オーディオはオーディオクリップのファイル名で指定する方法と、AudioIndexで指定する方法があります。
  • AudioIndexはhierarchyの上から順に登録されてゆきます。
  • Index番号は0から始まります。
  • 上記の画像ではAudioTest_1のアイテムの場合、index0を指定するとAudio1が再生され、
    AudioTest_2のアイテムの場合、index0を指定するとAudio5が再生されます。

IsMine

VCIの所有者(アイテムを出した人)であるか判定します。

main.lua
function updateAll() -- 所有権に関係なく全ユーザーに来る
    if vci.assets.IsMine then
        print("VCIの所有者です")
    end
end

実行結果

VCIの所有者です
(VCIの所有者(VCIを呼び出したユーザー)のみのConsoleにログが流れます)

SetMaterialColor

サンプル

main.lua
function onUse(self)
    print("onUse")
    local r = math.random()
    local g = math.random()
    local b = math.random()
    vci.assets._ALL_SetMaterialColorFromIndex(0, Color.__new(r,g,b))
end

実行結果

(グリップを押した時に、ランダムに色を変更します)

マテリアルの色を変更します。指定方法は以下の2種類あります。

  • SetMaterialColorFromIndex(マテリアル番号,Color)
  • SetMaterialColorFromName(“マテリアル名”,Color)

また、Colorにはアルファ値(透明度)の指定もでき、Transparentなどのマテリアルの場合は半透明にすることもできます。

main.lua
function onUse(self)
    print("onUse")
    local r = 1.0
    local g = 0.0
    local b = 0.0
    local a = 0.5
    vci.assets._ALL_SetMaterialColorFromIndex(0, Color.__new(r,g,b,a))
end

実行結果

(赤い半透明のマテリアルに変更します)

SetMaterialTextureOffset

サンプル

main.lua
function SetCounterOffset(count)
    local offset = Vector2.zero
 
    -- y shift
    local Yshift = math.floor(count / 4)    
    offset.y = -0.25 * Yshift
 
    -- x shift
    local Xshift = count % 4
    offset.x = 0.25 * Xshift
 
    vci.assets._ALL_SetMaterialTextureOffsetFromName("Counter", offset)
end

実行結果

(countの値に応じて、X方向にシフトすべき回数と、Y方向にシフトすべき回数を求めて、Counterを変化させます)


イメージとしては、4×4のグリッド状(最大16パターン)にUVをシフトさせるサンプルです。
3DモデルのUVの開始位置は左上です。
countの値が1の場合、y方向のシフト回数は0、x方向に1となり、UVが1の場所に変化します。
countの値が8の場合、y方向のシフト回数は2、x方向に0となり、UVが8の場所に変化します。
詳細な作り方はサンプルを確認してください。
→サンプル作成中※


PlayAnimation / StopAnimation

サンプル

main.lua
function onGrab(target)
    -- SubItemの名前毎に、再生するアニメーションを分岐する
    if target == "Subitem1" then
        vci.assets._ALL_PlayAnimationFromName("Subitem1",true) --true/false ループの可否
    end
 
    if target == "Subitem2" then
        vci.assets._ALL_PlayAnimationFromName("Subitem2",true) --true/false ループの可否
    end
end

実行結果

(Subitem1を掴んだ時にSubitem1が、Subitem2を掴んだ時にSubitem2のアニメーションが再生されます)

Subitemで再生するアニメーションを制御するようなサンプルです。
Subitemの名前とanimationのファイル名は一致している必要はありませんが、分かりやすくするためにサンプルではSubitemとanimationの名前を一致させています。
animationの作成や、セットアップの方法などはサンプルを参考にしてください。
→※サンプルページ作成中


PlayAudio

Audioファイルと、アニメーションファイルの名前は“gun”である必要があります。
音量はEditor実行して確認しましょう。
Unity オーディオソース

サンプル

main.lua
function onUse(target)
    if target == "gun" then
        vci.assets._ALL_PlayAudioFromName("gun")
        vci.assets._ALL_PlayAnimationFromName("gun",false) --true/false ループの可否
    end
end

実行結果

(gunという名前のVCIをuseした時に、音と(発火のような)アニメーションを再生させます)

PauseAudio

サンプル

main.lua
 

実行結果

 

説明


StopAudio

サンプル

main.lua
function onGrab()
    -- Grabした時にAudio1を再生する。
    vci.assets._ALL_PlayAudioFromName("Audio1")
end
 
function onUse(use)
    -- StopをUseした時にAudio1を停止する。    
    if use == "Stop" then
        vci.assets._ALL_StopAudioFromName("Audio1")
        print("Stopが押されました。再生を停止します。")
    end
end

実行結果

("Stop"という名前のSubitemをUseすると、"Audio1"の再生が停止します。)

ファイル名で指定してオーディオの再生を停止します。
ファイル名は AudioSourceコンポーネント の AudioClip に割り当てられてるファイルの名前です。


HapticPulseOnGrabbingController

サンプル

main.lua
function onUse(use)
    -- useには掴んだSubItemの名前が格納される
    vci.assets.HapticPulseOnGrabbingController(use, 3000, 1)
    print(use.."をUseしたコントローラーを振動させます")
end

実行結果

(useしたVCIが3000の強さで1秒振動します)

引数には (振動させるSubItem, 振動の強さ, 振動の時間) をとります。
振動させるSubItemはstringで指定し、強さは0~3999までの間をとります。
HapticPulseOnGrabbingController()の実行時に指定したSubItemを持ってるコントローラーが振動します。


メソッド名

サンプル

main.lua
 

実行結果

 

説明


vci/script/reference/exportassets.txt · 最終更新: 2019/10/11 15:26 by navana

ページ用ツール