# HG changeset patch # User oc # Date 1424339151 -32400 # Node ID 97acef4f62075747e2db99d725423a801f778d4a # Parent 76cd96c774e0a9a91a7cd935f57b090aa406dabe update presentation and paper diff -r 76cd96c774e0 -r 97acef4f6207 paper/chapter4.tex --- a/paper/chapter4.tex Thu Feb 19 02:43:10 2015 +0900 +++ b/paper/chapter4.tex Thu Feb 19 18:45:51 2015 +0900 @@ -90,7 +90,7 @@ % initDataとはなんなのか root はメッセージを受け取り initData を変更する。 initData は、RFB プロトコルで行われる通信中に VNCServer が送信するServerInit message から生成される。 -画像データが送られてくる前段階で、これから送信されるデータの情報を取得し、描画の準備をする。 +画像データが送られてくる前の段階で、これから送信されるデータの情報を取得し、描画の準備をする。 ServerInit messageに含まれているデータは、 配信先の画面サイズ、pixel format、配信先のPCの名前である。 @@ -111,7 +111,7 @@ \section{Retina のマルチディスプレイ対応} -Retina ディスプレイでシングルディスプレイを配信しようとした場合、 +Retina ディスプレイのPCで、シングルディスプレイをのみを配信しようとした場合に、 originalInitDataが正しく生成されない問題が発生した。 Retina ディスプレイ等の高解像度ディスプレイには、 @@ -119,21 +119,25 @@ HiDPI モードの場合、 PC で設定する解像度に対して縦横2倍の画像データを表示している。 -今までのシングルディスプレイサイズの取得方法では正しいサイズを取得できないことが原因となっていた。 -シングルディスプレイサイズとしてPCで設定している解像度のサイズを取得していた。 -しかし、HiDPIモードの場合、VNCServer から送信される画像データサイズは、 -解像度の2倍のサイズになっており、ズレが生じたためである。 +これまで、PCで設定している解像度のサイズをディスプレイサイズとして取得していた。 +しかしHiDPIモードの場合、VNCServer から送信される画像データサイズは、 +設定している解像度の2倍のサイズになっており、取得してきたサイズとのズレが生じた。 + +このように、今までのシングルディスプレイサイズの取得方法では、 +Retinaディスプレイのシングルサイズを正しく取得できていない。 問題を解決するために、HiDPI モードであるかどうかを検知する必要がある。 以下に、HiDPI モードの取得方法を記述する。 +\newpage + \begin{itemize} \item VNCServer から送信される width は図\ref{fig:singledisplaywidth}の VNCServer Single width である \item VncServer Single width から、図\ref{fig:singledisplaywidth}の 2nd Single width を引く \item 余りのサイズが取得してきた図\ref{fig:singledisplaywidth} Single width の2倍であれば、HiDPI モードである \end{itemize} -HiDPI モードの場合、originaiInitData を取得してきたシングルディスプレイの2倍サイズで生成する。 +HiDPI モードであった場合、取得してきたシングルディスプレイの2倍サイズでoriginaiInitData を生成する。 この方法を用いて、HiDPI モードでもマルチディスプレイ対応ができた。 \begin{figure}[htpd] diff -r 76cd96c774e0 -r 97acef4f6207 paper/thesis-paper.pdf Binary file paper/thesis-paper.pdf has changed diff -r 76cd96c774e0 -r 97acef4f6207 presentation/blank.html --- a/presentation/blank.html Thu Feb 19 02:43:10 2015 +0900 +++ b/presentation/blank.html Thu Feb 19 18:45:51 2015 +0900 @@ -114,37 +114,57 @@
-

PCを用いた多人数でのコミュニケーションの充実

-

ゼミや授業等、ひとりひとりがPCを持っている状況で、
- PCの機能を活かしたコミュニケーションが可能である

-

授業での教授のPC画面をリアルタイムで配信したり、
- ゼミ等で、発表する学生のPC画面を切り替えることを可能にしたい

+

PC端末を用いた多人数でのコミュニケーションを充実させる

+ + + + +
+

+ ゼミや講義のような、それぞれがPCを持っている状況だと、
+ PCの機能を活かしたコミュニケーションが可能である +

-

TreeVNCを用いたコミュニケーションの充実

-

TreeVNCを用いることによって、多人数でのPC端末を用いたコミュニケーションの充実をはかる

+

+ 授業中、教授のPC画面をリアルタイムで配信したり、
+ プレゼンを行う学生のPC画面を切り替えることを可能にしたい +

+ +

+ TreeVNCを用いることによって、多人数でのPC端末を用いたコミュニケーションの充実をはかる +

  • ひとつの画面を多人数で共有する
  • 画面の切り替えをスムーズにする
  • -
  • 綺麗な画質をリアルタイムで配信する
  • +
  • 高解像度をリアルタイムで配信する
  • 遠隔地からでもコミュニケーションに参加できる
+
-

TreeVNCとは

-

今研究室で開発している多人数向けの画面共有システム

-

TreeVNC 画面配信システムは、参加したクライアントをバイナリツリー状に接続し、
- 配信コストをクライアントに バランスさせる仕組みになっている
- なので、多人数が参加しても処理性能が下がらない

-

また、RFB プロトコルを用いているので、
- ケーブルの差し替えなしに共有している画面の切り替えが可能になっている

- +

画面共有システムTreeVNC

+ + + + +
+

TreeVNCとは、本研究室で開発している多人数向けの画面共有システムである

+

TreeVNC は参加したクライアントをバイナリツリー状に接続し、配信コストをクライアントにバランスさせる仕組みになっている
+ 接続するユーザが増えても、処理性能を維持できる

+

また、ケーブルの差し替えなしに共有している画面の切り替えが可能

+
+ +
+
-

機能向上のために行った機能拡張

-

以下のTreeVNCの機能拡張を行った

+

TreeVNCに行った機能拡張

+ + + + +

リファクタリング

  • 動的なport番号の割り当て
  • @@ -153,77 +173,297 @@

    新機能実装

    • マルチディスプレイ対応
    • -
    • 遠隔地からの接続を可能にした
    • +
    • 遠隔地からの接続
    +

動的なport番号の割り当て

+ + + + +
+

以下のリファクタリングを行った

問題点

-

固定port番号の使用をしていたため、1台のPCで複数台のTreeVNCを立ち上げることができなかった

+

TreeVNCは分散アプリケーションなので、デバッグを行う際、複数台のTreeVNCを立ち上げる必要がある
+ メッセージ通信を行う際に固定port番号を使用していた
+ port番号はユニークでなければならないので、1台のPCで複数台のTreeVNCを立ち上げができなかった

解決方法

-

接続してくるnodeに対して、動的にport番号を割り当てる様に変更を行った
- node間のメッセージ通信は、割り当てられたport番号を用いて行う様にした

+

接続してくるnodeに対して、動的にport番号を割り当てる
+ node間のメッセージ通信は、割り当てられたport番号を用いて行う

結果

1台のPCで複数台のTreeVNCの立ち上げが可能となった
メッセージ通信に、どのportが使用されているかを意識する必要がなくなった

+
- -

Treeの構成の変更

-

問題点

-

単一のネットワークインタフェースのみでしか使用できなかった
- 構成される木構造がひとつであった

-

解決方法

-

ネットワークインタフェース毎に木構造を構成する様変更した

-

結果

-

有線・無線、両方でのTreeVNCの使用が可能になった

- + + + + + +
+

以下のリファクタリングを行った

+

問題点

+

単一のネットワークインタフェースのみでしかTreeVNCを使用できなかった
+ 有線を使用しているTreeVNCに、無線で参加することができなかった

+

解決方法

+

ネットワークインタフェース毎に木構造を構成する

+

結果

+

ネットワークインタフェースを限定せず、TreeVNCの使用が可能になった
+ 有線・無線両方でTreeVNCに参加可能となった

+
+ +

マルチディスプレイ対応

-

問題点

-

配信者の画面がマルチディスプレイだった場合、2画面のデータが配信されてしまう
- 2画面の表示はプレゼンテーションには向いていない

- -

解決方法

-

配信側のシングルディスプレイサイズを取得し、画面データのフィルタリングを行った

-

結果

-

シングルディスプレイのみの表示が可能となった

+ + + + + +
+

以下の新機能実装を行った

+

問題点

+

マルチディスプレイの画面を配信する場合、2画面のデータが配信する
+ 2画面の表示はプレゼンテーションには向いていない

+

解決方法

+

画面データのフィルタリングを行った
+ Display2をフィルタリングし、Display1のみを配信する

+

結果

+

シングルディスプレイの表示が可能となった

+
+ +
-

遠隔地から接続を可能にした

-

結果

- +

遠隔地からの接続

+ + + + + +
+ + +
    +
  • + TreeVNCがネットワークAで立ち上がっている状態 +
  • +
+
+
+
+

遠隔地からの接続

+ + + + + +
+ + +
    +
  • + ネットワークBからネットワークAのTreeVNCへと参加しにくる +
  • +
+
+
+
+

遠隔地からの接続

+ + + + + +
+ + +
    +
  • + ネットワークAの子nodeとして、ネットワークBが接続する +
  • +
+
+
+
+

遠隔地からの接続

+ + + + + +
+ + +
    +
  • + ネットワークA内で新しいnodeが接続しに来た場合、ネットワークAの子nodeとして接続する +
  • +
  • + ネットワークB内で新しいnodeが接続しに来た場合も同様に、ネットワークBの子nodeとして接続する +
  • +
+
+
-

遠隔地からの接続の実装方法

+

遠隔地からの接続

+ + + + +
+

以下の新機能実装を行った

実装方法

    -
  • 遠隔地 node から接続したい root に対して接続を要求する WHERE_TO_CONNECT_message を送信する
  • +
  • 遠隔地 node から接続したい root に対して接続を要求する WHERE_TO_CONNECT message を送信する
  • root は、遠隔地 node に対して接続先を含む CONNECT_TO message を送信する
  • 遠隔地 node は指定された接続先に対して接続しに行く
+
+

まとめ

+ + + + +
+

+ TreeVNCの機能拡張を行ったことで、 +

    +
  • + デバッグ環境が整った +
  • +
  • + TreeVNCの使用感がよくなった +
  • +
  • + コミュニケーションの幅が広がった +
  • +
+

+
+
+ +
+

今後の課題

+ + + + +
+

音声機能の追加

+

+ TreeVNCに対して遠隔地から参加した場合、画面の配信だけではなく配信者の音声も取得したい +

+

+ この機能を実装することによって、遠隔地からでもゼミや講義に参加することができる +

+
+
+ +
+

今後の課題

+ + + + +
+

記録機能の追加

+

+ TreeVNCを用いて、ゼミや講義のログを取得したい +

+

+ この機能を実装することによって、授業やゼミ後の復習等に役立てたい +
+ 前回どういった話し合いが行われたという情報があると、スムーズに話し合いが再開できる +

+
+
+ +
+

今後の課題

+ + + + +
+

意見・質問等の共有機能の追加

+

+ 講義中、教授への意見や質問等を学生側から共有できるようにしたい +

+

+ この機能を実装することによって、学生と教授間のコミュニケーションを行うことができる +
+ 教授が学生の意見や疑問とすることを知り、取り入れることによって、講義のクオリティを高めることも可能となる +

+
+
+ + + + + +

その他の問題解決

ビデオフィードバッグを非表示にした

切断時の検知方法の変更

@@ -231,15 +471,42 @@

表示画面サイズ調整機能

- +
+

遠隔地からの画面切り替え

+ + + + + +
+ + +
+
-

今後の課題

-

音声機能の追加

-

記録機能の追加

-

意見・質問等の共有機能の追加

+

遠隔地からの画面切り替え

+ + + + + +
+ + +
- - +
+

遠隔地からの画面切り替え

+ + + + + +
+ + +
+
diff -r 76cd96c774e0 -r 97acef4f6207 presentation/images/20150218/multidisplay.png Binary file presentation/images/20150218/multidisplay.png has changed diff -r 76cd96c774e0 -r 97acef4f6207 presentation/images/20150218/remoteVncConnect.png Binary file presentation/images/20150218/remoteVncConnect.png has changed diff -r 76cd96c774e0 -r 97acef4f6207 presentation/images/20150218/treevncAndVnc.png Binary file presentation/images/20150218/treevncAndVnc.png has changed