Slide 1

Slide 1 text

楽しいVR空間を 作る技術と支える技術 2019/06/01 OSC 2019 Hokkaido 株式会社インフィニットループ 後藤 大宗・山岸 大

Slide 2

Slide 2 text

自己紹介 ・後藤大宗 / Taishu Goto ・3Dモデラー ・スマブラはプリン使い 仙台→山形→千葉→北海道 イマココ
 スープカリーがおいしい! https://hagurumaheigen.booth.pm/ BOOTH 歯車平原

Slide 3

Slide 3 text

VCIとVRMとは違うのか?


Slide 4

Slide 4 text

基本的にはどちらも  glTF2.0ベースの3Dフォーマット 人型アバターのフォーマット さまざまなプラットフォーム上で同じデータを 使うことを想定して作られた 人型である必要がない 家具、武器、背景 など プラットフォーム側でなく、 VCI自体にLuaスク リプトを記述して動きを制御することができる VRM VCI

Slide 5

Slide 5 text

VCI Object と VCI Sub Item
 VCIの構造


Slide 6

Slide 6 text

VCI Object
 SubItem SubItem SubItem

Slide 7

Slide 7 text

アメリカンクラッカーVCIの場合
 VCI Object VCI Sub Item

Slide 8

Slide 8 text

SubItemの所有権


Slide 9

Slide 9 text

所有権
 同期の基準になるユーザー


Slide 10

Slide 10 text

SubItem所有権の基本ルール
 2・SubItemを掴んだ人に所有権が移る 3・同じGroupIDはまとめて移る 1・はじめはアイテムを出した人が持つ

Slide 11

Slide 11 text

SubItem所有権の基本ルール1
 ・はじめはアイテムを出した人が持つ

Slide 12

Slide 12 text

SubItem所有権の基本ルール2
 SubItemを掴んだ人に所有権が移る SubItem 現状「掴む」以外で 所有権を移す方法は ありません そのため、 コライダが無いなどで 掴めない場合は 所有権が移せません 注意

Slide 13

Slide 13 text

SubItem所有権の基本ルール3
 同じGroupIDはまとめて移る ただしGroupIDが0のものは掴んだものしか移らない

Slide 14

Slide 14 text

VCIの重要な仕様に関しては
 特にこの「所有権」まわりを
 理解しておけば大丈夫だと思います
 あとはLuaスクリプト次第!

Slide 15

Slide 15 text

VCIの機能について
 なにができるの?


Slide 16

Slide 16 text

・Luaスクリプト無しで できること
 
 ・Luaスクリプト有りで できること
 
 ・(現状)できないこと
 VCIの機能について
 UniVCI v0.17時点

Slide 17

Slide 17 text

Luaスクリプト無しで できること
 ・物理挙動の設定
 ・掴める/掴めないの設定
 ・大きさを変えられるかの設定


Slide 18

Slide 18 text

Luaスクリプト無しで できること
 Unity上のコンポーネント
 で設定
 VCI Sub Itemで 掴み、拡縮の設定 Collider Rigidbodyで 物理挙動を設定

Slide 19

Slide 19 text

Luaスクリプト有りで できること
 ・移動させる
 ・回転させる
 ・拡縮させる
 ・音を鳴らす
 ・衝突検知
 ・アニメーションさせる
 ・マテリアルの色、UVの変更
 ・他のVCIからメッセージを受け取る
 etc できないこと以外はだいたいできる!

Slide 20

Slide 20 text

(現状)できないこと
 ・オブジェクトの表示非表示切り替え
 ・マテリアルを別のものに変更
 ・他のVCIやキャラクターを直接制御
 ・アニメーションのブレンドや同時再生
 
 
 etc

Slide 21

Slide 21 text

Luaスクリプトについて
 イベント関数


Slide 22

Slide 22 text

イベント関数
 update updateAll onUse onUnuse onTriggerEnter onTriggerExit onCollisionEnter onCollisionExit onGrab onUngrab 毎フレーム処理 コントローラのボタン検出 コライダによる衝突判定 アイテムを掴んだ際の処理

Slide 23

Slide 23 text

回転翼のスクリプト onGrab() onUngrab() アニメーションファイル名

Slide 24

Slide 24 text

回転翼のスクリプト コライダ アニメーションコンポーネント 参照

Slide 25

Slide 25 text

ポジションリセットのスクリプト onUse()

Slide 26

Slide 26 text

ポジションリセットのスクリプト

Slide 27

Slide 27 text

ドラムのスクリプト onCollisionEnter()

Slide 28

Slide 28 text

ドラムのスクリプト ドラムとスティックにコライダとrigidbodyをつけておく

Slide 29

Slide 29 text

ドラムのスクリプト イベント関数内に条件文を追記することで どのSubItemとコライダの衝突なのか判別 自動で代入される

Slide 30

Slide 30 text

ドラムのスクリプト コンポーネント VCI Objectにアタッチした Audio Source 、Animation を名称指定する

Slide 31

Slide 31 text

Luaスクリプトについて
 共有変数


Slide 32

Slide 32 text

共有変数
 変数をユーザー間で同期することができる 途中からネットワークに参加したユーザーにもアイ テムの状態を共有できる vci.state.Set("STATE",state)
 
 vci.state.Get("STATE")
 stateの値を”STATE”という 共有変数に保存 共有変数”STATE”から 値を取得

Slide 33

Slide 33 text

共有変数
 ネットワーク上にすでに変数が 保存されてるかのチェック 値があれば取得し、 なければ初期化 現在の状態を共有変数に 代入 ライトのスクリプト

Slide 34

Slide 34 text

Luaスクリプトについて
 メッセージシステム


Slide 35

Slide 35 text

メッセージシステム
 メッセージを送受信することで同じスタジオ内 にある別のVCIと変数のやり取りができる                ↓ 例 スイッチのVCI と 爆弾のVCI データを管理するVCI と 掲示板のVCI vci.message.Emit("MSG_NAME",1)
 
 vci.message.On("MSG_NAME", onMessage)
 送信側 
 受信側

Slide 36

Slide 36 text

メッセージシステム
 vci.message.Emit("MSG_NAME",1) 送信側のスクリプト
 メッセージ格納する名前 string型で”addforce_on”という メッセージの中身になる メッセージは投げっぱなし 過去のログの読み取りなどはできない

Slide 37

Slide 37 text

メッセージシステム
 vci.message.On("MSG_NAME", onMessage)
 
 受信側のスクリプト
 受信側はonMessage関数とセットで使おう 送信側を判定する条件式

Slide 38

Slide 38 text

アップデートで配信のコメントも 取得できるようになりました


Slide 39

Slide 39 text

コメントの取得
 name部分が”comment”でシステムからの コメントメッセージを取得可能 例 「www」で画面に草が生える 「クッキー」でクッキーのカウントが増える

Slide 40

Slide 40 text

VCI学習
 調べ方など


Slide 41

Slide 41 text

VirtualCast Wiki


Slide 42

Slide 42 text

関数別や、用途で別れている VCI取り込みのリンクや Unitypackageファイルもあるので 参考にして作りやすい

Slide 43

Slide 43 text

VCI Developers Discord https://discord.gg/jtsXVVA ↓どなたでも自由に参加できます VCIの質問やバグ報告 作ったVCIの宣伝など THE SEED ONLINEの質問も こちらで受け付けています 公式VCIの開発者コミュニティです

Slide 44

Slide 44 text

THE SEED ONLINE


Slide 45

Slide 45 text

自己紹介 - 山岸 “@akai_inu” Masaru - OSC 2016 Hokkaido, OSC 2016 Tokyo/Fall - THE SEED ONLINE エンジニア ポートフォリオサイト https://il-m-yamagishi.github.io

Slide 46

Slide 46 text

VCI の使い方
 1.VCIを作成 2.アップロード 4.遊ぶ アイテムボックス 3.連携 することで  TSOのアイテムボックスから  VCIを持ってこられる

Slide 47

Slide 47 text

THE SEED ONLINE 構成図

Slide 48

Slide 48 text

Microsoft 製 WebGL フレームワーク

Slide 49

Slide 49 text

個人初 OSS! virtual-cast/babylon-mtoon-material virtual-cast/babylon-vrm-loader

Slide 50

Slide 50 text

Vue.js のフレームワーク - 最新技術の塊 - デザイナー・コーダー責務分離 - TypeScript - Vetur

Slide 51

Slide 51 text

OAuth Login OAuth Provider - Twitter - Facebook - niconico OpenAPI 3 OpenAPI 3

Slide 52

Slide 52 text

ありがとうございました。