Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

楽しいVR空間を作る技術と支える技術 #osc19do

195 views

Published on

オープンソースカンファレンス2019北海道の登壇資料です

Published in: Technology
  • Be the first to comment

  • Be the first to like this

楽しいVR空間を作る技術と支える技術 #osc19do

  1. 1. 楽しいVR空間を 作る技術と支える技術 2019/06/01 OSC 2019 Hokkaido 株式会社インフィニットループ 後藤 大宗・山岸 大
  2. 2. 自己紹介 ・後藤大宗 / Taishu Goto ・3Dモデラー ・スマブラはプリン使い 仙台→山形→千葉→北海道 イマココ
 スープカリーがおいしい! https://hagurumaheigen.booth.pm/ BOOTH 歯車平原
  3. 3. VCIとVRMとは違うのか?

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

  6. 6. VCI Object
 SubItem SubItem SubItem
  7. 7. アメリカンクラッカーVCIの場合
 VCI Object VCI Sub Item
  8. 8. SubItemの所有権

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

  10. 10. SubItem所有権の基本ルール
 2・SubItemを掴んだ人に所有権が移る 3・同じGroupIDはまとめて移る 1・はじめはアイテムを出した人が持つ
  11. 11. SubItem所有権の基本ルール1
 ・はじめはアイテムを出した人が持つ
  12. 12. SubItem所有権の基本ルール2
 SubItemを掴んだ人に所有権が移る SubItem 現状「掴む」以外で 所有権を移す方法は ありません そのため、 コライダが無いなどで 掴めない場合は 所有権が移せません 注意
  13. 13. SubItem所有権の基本ルール3
 同じGroupIDはまとめて移る ただしGroupIDが0のものは掴んだものしか移らない
  14. 14. VCIの重要な仕様に関しては
 特にこの「所有権」まわりを
 理解しておけば大丈夫だと思います
 あとはLuaスクリプト次第!
  15. 15. VCIの機能について
 なにができるの?

  16. 16. ・Luaスクリプト無しで できること
 
 ・Luaスクリプト有りで できること
 
 ・(現状)できないこと
 VCIの機能について
 UniVCI v0.17時点
  17. 17. Luaスクリプト無しで できること
 ・物理挙動の設定
 ・掴める/掴めないの設定
 ・大きさを変えられるかの設定

  18. 18. Luaスクリプト無しで できること
 Unity上のコンポーネント
 で設定
 VCI Sub Itemで 掴み、拡縮の設定 Collider Rigidbodyで 物理挙動を設定
  19. 19. Luaスクリプト有りで できること
 ・移動させる
 ・回転させる
 ・拡縮させる
 ・音を鳴らす
 ・衝突検知
 ・アニメーションさせる
 ・マテリアルの色、UVの変更
 ・他のVCIからメッセージを受け取る
 etc できないこと以外はだいたいできる!
  20. 20. (現状)できないこと
 ・オブジェクトの表示非表示切り替え
 ・マテリアルを別のものに変更
 ・他のVCIやキャラクターを直接制御
 ・アニメーションのブレンドや同時再生
 
 
 etc
  21. 21. Luaスクリプトについて
 イベント関数

  22. 22. イベント関数
 update updateAll onUse onUnuse onTriggerEnter onTriggerExit onCollisionEnter onCollisionExit onGrab onUngrab 毎フレーム処理 コントローラのボタン検出 コライダによる衝突判定 アイテムを掴んだ際の処理
  23. 23. 回転翼のスクリプト onGrab() onUngrab() アニメーションファイル名
  24. 24. 回転翼のスクリプト コライダ アニメーションコンポーネント 参照
  25. 25. ポジションリセットのスクリプト onUse()
  26. 26. ポジションリセットのスクリプト
  27. 27. ドラムのスクリプト onCollisionEnter()
  28. 28. ドラムのスクリプト ドラムとスティックにコライダとrigidbodyをつけておく
  29. 29. ドラムのスクリプト イベント関数内に条件文を追記することで どのSubItemとコライダの衝突なのか判別 自動で代入される
  30. 30. ドラムのスクリプト コンポーネント VCI Objectにアタッチした Audio Source 、Animation を名称指定する
  31. 31. Luaスクリプトについて
 共有変数

  32. 32. 共有変数
 変数をユーザー間で同期することができる 途中からネットワークに参加したユーザーにもアイ テムの状態を共有できる vci.state.Set("STATE",state)
 
 vci.state.Get("STATE")
 stateの値を”STATE”という 共有変数に保存 共有変数”STATE”から 値を取得
  33. 33. 共有変数
 ネットワーク上にすでに変数が 保存されてるかのチェック 値があれば取得し、 なければ初期化 現在の状態を共有変数に 代入 ライトのスクリプト
  34. 34. Luaスクリプトについて
 メッセージシステム

  35. 35. メッセージシステム
 メッセージを送受信することで同じスタジオ内 にある別のVCIと変数のやり取りができる                ↓ 例 スイッチのVCI と 爆弾のVCI データを管理するVCI と 掲示板のVCI vci.message.Emit("MSG_NAME",1)
 
 vci.message.On("MSG_NAME", onMessage)
 送信側 
 受信側
  36. 36. メッセージシステム
 vci.message.Emit("MSG_NAME",1) 送信側のスクリプト
 メッセージ格納する名前 string型で”addforce_on”という メッセージの中身になる メッセージは投げっぱなし 過去のログの読み取りなどはできない
  37. 37. メッセージシステム
 vci.message.On("MSG_NAME", onMessage)
 
 受信側のスクリプト
 受信側はonMessage関数とセットで使おう 送信側を判定する条件式
  38. 38. アップデートで配信のコメントも 取得できるようになりました

  39. 39. コメントの取得
 name部分が”comment”でシステムからの コメントメッセージを取得可能 例 「www」で画面に草が生える 「クッキー」でクッキーのカウントが増える
  40. 40. VCI学習
 調べ方など

  41. 41. VirtualCast Wiki

  42. 42. 関数別や、用途で別れている VCI取り込みのリンクや Unitypackageファイルもあるので 参考にして作りやすい
  43. 43. VCI Developers Discord https://discord.gg/jtsXVVA ↓どなたでも自由に参加できます VCIの質問やバグ報告 作ったVCIの宣伝など THE SEED ONLINEの質問も こちらで受け付けています 公式VCIの開発者コミュニティです
  44. 44. THE SEED ONLINE

  45. 45. 自己紹介 - 山岸 “@akai_inu” Masaru - OSC 2016 Hokkaido, OSC 2016 Tokyo/Fall - THE SEED ONLINE エンジニア ポートフォリオサイト https://il-m-yamagishi.github.io
  46. 46. VCI の使い方
 1.VCIを作成 2.アップロード 4.遊ぶ アイテムボックス 3.連携 することで  TSOのアイテムボックスから  VCIを持ってこられる
  47. 47. THE SEED ONLINE 構成図
  48. 48. Microsoft 製 WebGL フレームワーク
  49. 49. 個人初 OSS! virtual-cast/babylon-mtoon-material virtual-cast/babylon-vrm-loader
  50. 50. Vue.js のフレームワーク - 最新技術の塊 - デザイナー・コーダー責務分離 - TypeScript - Vetur
  51. 51. OAuth Login OAuth Provider - Twitter - Facebook - niconico OpenAPI 3 OpenAPI 3
  52. 52. ありがとうございました。

×