Skip to content

Latest commit

 

History

History
73 lines (52 loc) · 5.29 KB

README.ja.md

File metadata and controls

73 lines (52 loc) · 5.29 KB

VCP

WebSocket/JSON・MessagePack ベースのVRライクアプリケーションにおける各種制御情報(モーションキャプチャ,表情,リップシンク,つかみなどの動作)をやり取りするためのプロトコル.

VCP は Virtual Communication Protocol または Virtual Control Protocol の略です(未定).

他の言語: en

リファレンス実装

  • C# (このレポジトリ). doc/README_cs.md (リンク)に詳しい実装の情報があります.
  • TypeScript vcp-ts

プロトコル概要(ドラフト,未完)

プロトコルの詳細はこちら(未完)

特記事項

VCP では API という単語を「特定のデータをやり取りする際に用いるコンテナの仕様」という意味で用いています.

この言い回しは一般的な API が指すものと大きく異なり混乱することを承知しております.そして,よりもっともらしい単語に置き換える予定です(たとえばスキーマなど). しかしながら,すでにプロトコルやリファレンス実装全体に渡りすでに利用されているキーワードであるため,修正には時間がかかります.

これらの事情から,バージョン1 系列のリリースでは引き続き API という単語を上で述べたような意味で用います.

通信方式

WebSocket を利用して通信を行います. 通信フォーマットには JSON や MessagePack を用い,各種用途のための API が用意されています.JSON スキーマの章をご覧ください.

JSON スキーマ

JSON スキーマは /schema ディレクトリ以下に置いてあります.(yaml 形式)

以下は特に重要な API の一覧です.

GitHub スタイルの表(GitHub でレンダリングできる)

API名 役割
handshake サーバーにクライアントの役割を通告する.(Sink, Source, Control)
headPose 顔認識などでキャプチャした頭部の姿勢をやり取りする.
fullBody 全身モーキャプ(またはその一部)をやり取りする.
bust 上半身(腕,腰,頭など)のキャプチャーをやり取りする.
interact つかみや投げなどのインタラクション情報をやり取りする.
controlAPI suite 一般的な制御情報を取り扱う.
(インタラクション,収録,放送,カメラ・ライティングなど)

Pandoc スタイルの表(テキストエディタで読みやすい)

+------------------+-----------------------------------------------------------------+ | API名 | 役割 | +==================+=================================================================+ | handshake | サーバーにクライアントの役割を通告する.(Sink, Source, Control) | +------------------+-----------------------------------------------------------------+ | headPose | 顔認識などでキャプチャした頭部の姿勢をやり取りする. | +------------------+-----------------------------------------------------------------+ | fullBody | 全身モーキャプ(またはその一部)をやり取りする. | +------------------+-----------------------------------------------------------------+ | bust | 上半身(腕,腰,頭など)のキャプチャーをやり取りする. | +------------------+-----------------------------------------------------------------+ | interact | つかみや投げなどのインタラクション情報をやり取りする. | +------------------+-----------------------------------------------------------------+ | controlAPI suite | 一般的な制御情報を取り扱う. | | | (インタラクション,収録,放送,カメラ・ライティングなど) | +------------------+-----------------------------------------------------------------+

MessagePack Support

VCP は MessagePack をサポートしています.

C# のリファレンス実装(このレポジトリ)は MessagePack の情報を JSON と同等に取り扱う機能(Direct Communication)が含まれています.

この機能により,事前のハンドシェイクなしに最初から MessagePack でのやり取りを行うことができます.

(実装としては,メッセージの種類(テキスト,バイナリ)を判別し,それぞれ C# ネイティブのデータ構造に変換することで実現しています.)

ただし,Direct Communication はオプションで,あなたの実装では必ずしも実装する必要はありません.