Mercurial > hg > Papers > 2015 > oc-thesis
changeset 34:97acef4f6207 default tip
update presentation and paper
author | oc |
---|---|
date | Thu, 19 Feb 2015 18:45:51 +0900 |
parents | 76cd96c774e0 |
children | |
files | paper/chapter4.tex paper/thesis-paper.pdf presentation/blank.html presentation/images/20150218/multidisplay.png presentation/images/20150218/remoteVncConnect.png presentation/images/20150218/treevncAndVnc.png |
diffstat | 6 files changed, 339 insertions(+), 68 deletions(-) [+] |
line wrap: on
line diff
--- 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]
--- 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 @@ </div> <div class='slide'> - <h2>PCを用いた多人数でのコミュニケーションの充実</h2> - <p>ゼミや授業等、ひとりひとりがPCを持っている状況で、<br> - PCの機能を活かしたコミュニケーションが可能である </p> - <p>授業での教授のPC画面をリアルタイムで配信したり、<br> - ゼミ等で、発表する学生のPC画面を切り替えることを可能にしたい</p> + <h2>PC端末を用いた多人数でのコミュニケーションを充実させる</h2> + <table> + <tr> + <td> + <p> + ゼミや講義のような、それぞれがPCを持っている状況だと、<br> + PCの機能を活かしたコミュニケーションが可能である + </p> - <h3>TreeVNCを用いたコミュニケーションの充実</h3> - <p>TreeVNCを用いることによって、多人数でのPC端末を用いたコミュニケーションの充実をはかる</p> + <p> + 授業中、教授のPC画面をリアルタイムで配信したり、<br> + プレゼンを行う学生のPC画面を切り替えることを可能にしたい + </p> + + <p> + TreeVNCを用いることによって、多人数でのPC端末を用いたコミュニケーションの充実をはかる + </p> <ul> <li>ひとつの画面を多人数で共有する</li> <li>画面の切り替えをスムーズにする</li> - <li>綺麗な画質をリアルタイムで配信する</li> + <li>高解像度をリアルタイムで配信する</li> <li>遠隔地からでもコミュニケーションに参加できる</li> </ul> + </td> + </tr> + </table> </div> <div class='slide'> - <h2>TreeVNCとは</h2> - <p>今研究室で開発している多人数向けの画面共有システム</p> - <p>TreeVNC 画面配信システムは、参加したクライアントをバイナリツリー状に接続し、<br> - 配信コストをクライアントに バランスさせる仕組みになっている<br> - なので、多人数が参加しても処理性能が下がらない</p> - <p>また、RFB プロトコルを用いているので、<br> - ケーブルの差し替えなしに共有している画面の切り替えが可能になっている</p> - <img src="images/20150218/treevncAndVnc.png"> + <h2>画面共有システムTreeVNC</h2> + <table> + <tr> + <td> + <p>TreeVNCとは、本研究室で開発している多人数向けの画面共有システムである</p> + <p>TreeVNC は参加したクライアントをバイナリツリー状に接続し、配信コストをクライアントにバランスさせる仕組みになっている<br> + 接続するユーザが増えても、処理性能を維持できる</p> + <p>また、ケーブルの差し替えなしに共有している画面の切り替えが可能</p> + <center> + <img src="images/20150218/treevncAndVnc.png", width='900'> + </center> + </td> + </tr> + </table> </div> <div class='slide'> - <h2>機能向上のために行った機能拡張</h2> - <p>以下のTreeVNCの機能拡張を行った</p> + <h2>TreeVNCに行った機能拡張</h2> + <table> + <tr> + <td> <h3>リファクタリング</h3> <ul> <li>動的なport番号の割り当て</li> @@ -153,77 +173,297 @@ <h3>新機能実装</h3> <ul> <li>マルチディスプレイ対応</li> - <li>遠隔地からの接続を可能にした</li> + <li>遠隔地からの接続</li> </ul> + </td> + </tr> + </table> </div> <div class='slide'> <h2>動的なport番号の割り当て</h2> + <table> + <tr> + <td> + <p>以下のリファクタリングを行った</p> <h3>問題点</h3> - <p>固定port番号の使用をしていたため、1台のPCで複数台のTreeVNCを立ち上げることができなかった</p> + <p>TreeVNCは分散アプリケーションなので、デバッグを行う際、複数台のTreeVNCを立ち上げる必要がある<br> + メッセージ通信を行う際に固定port番号を使用していた<br> + port番号はユニークでなければならないので、1台のPCで複数台のTreeVNCを立ち上げができなかった</p> <h3>解決方法</h3> - <p>接続してくるnodeに対して、動的にport番号を割り当てる様に変更を行った<br> - node間のメッセージ通信は、割り当てられたport番号を用いて行う様にした</p> + <p>接続してくるnodeに対して、動的にport番号を割り当てる<br> + node間のメッセージ通信は、割り当てられたport番号を用いて行う</p> <h3>結果</h3> <p>1台のPCで複数台のTreeVNCの立ち上げが可能となった<br> メッセージ通信に、どのportが使用されているかを意識する必要がなくなった</p> + </td> + </tr> + </table> </div> - <!-- - <div class='slide'> - <h2>ホスト切替時の挙動の変更</h2> - <h3>問題点</h3> - <p>画面配信側にもviewerが表示されてしまい、ビデオフィードバッグが配信されてしまっていた。</p> - <h3>解決方法と結果</h3> - <p>配信側になった場合、viewerを閉じる様にし、配信者が切り替わると立ち上がるように変更した。<br> - </p> - </div> - --> - <div class='slide'> <h2>Treeの構成の変更</h2> - <h3>問題点</h3> - <p>単一のネットワークインタフェースのみでしか使用できなかった<br> - 構成される木構造がひとつであった</p> - <h3>解決方法</h3> - <p>ネットワークインタフェース毎に木構造を構成する様変更した</p> - <h3>結果</h3> - <p>有線・無線、両方でのTreeVNCの使用が可能になった</p> - <img src="images/20150218/MultiNetworkTree.png"> + <table> + <tr> + <td> + <p>以下のリファクタリングを行った</p> + <h3>問題点</h3> + <p>単一のネットワークインタフェースのみでしかTreeVNCを使用できなかった<br> + 有線を使用しているTreeVNCに、無線で参加することができなかった</p> + <h3>解決方法</h3> + <p>ネットワークインタフェース毎に木構造を構成する</p> + <h3>結果</h3> + <p>ネットワークインタフェースを限定せず、TreeVNCの使用が可能になった<br> + 有線・無線両方でTreeVNCに参加可能となった</p> + </td> + <td> + <img src="images/20150218/MultiNetworkTree.png"> + </td> + </tr> + </table> </div> <div class='slide'> <h2>マルチディスプレイ対応</h2> - <h3>問題点</h3> - <p>配信者の画面がマルチディスプレイだった場合、2画面のデータが配信されてしまう<br> - 2画面の表示はプレゼンテーションには向いていない</p> - <img src="images/20150218/multidisplay.png"> - <h3>解決方法</h3> - <p>配信側のシングルディスプレイサイズを取得し、画面データのフィルタリングを行った</p> - <h3>結果</h3> - <p>シングルディスプレイのみの表示が可能となった</p> + <table> + <tr> + <td> + <p>以下の新機能実装を行った</p> + <h3>問題点</h3> + <p>マルチディスプレイの画面を配信する場合、2画面のデータが配信する<br> + 2画面の表示はプレゼンテーションには向いていない</p> + <h3>解決方法</h3> + <p>画面データのフィルタリングを行った<br> + Display2をフィルタリングし、Display1のみを配信する</p> + <h3>結果</h3> + <p>シングルディスプレイの表示が可能となった</p> + </td> + <td> + <img src="images/20150218/multidisplay.png"> + </td> + </tr> + </table> </div> <div class='slide'> - <h2>遠隔地から接続を可能にした</h2> - <h3>結果</h3> - <img src="images/20150218/remoteTreeVnc.png"> + <h2>遠隔地からの接続</h2> + <table> + <tr> + <td> + <img src="images/20150218/remote1.png"> + </td> + <td> + <ul> + <li> + TreeVNCがネットワークAで立ち上がっている状態 + </li> + </ul> + </td> + </tr> + </table> + </div> + <div class='slide'> + <h2>遠隔地からの接続</h2> + <table> + <tr> + <td> + <img src="images/20150218/remote2.png"> + </td> + <td> + <ul> + <li> + ネットワークBからネットワークAのTreeVNCへと参加しにくる + </li> + </ul> + </td> + </tr> + </table> + </div> + <div class='slide'> + <h2>遠隔地からの接続</h2> + <table> + <tr> + <td> + <img src="images/20150218/remote3.png"> + </td> + <td> + <ul> + <li> + ネットワークAの子nodeとして、ネットワークBが接続する + </li> + </ul> + </td> + </tr> + </table> + </div> + <div class='slide'> + <h2>遠隔地からの接続</h2> + <table> + <tr> + <td> + <img src="images/20150218/remote4.png"> + </td> + <td> + <ul> + <li> + ネットワークA内で新しいnodeが接続しに来た場合、ネットワークAの子nodeとして接続する + </li> + <li> + ネットワークB内で新しいnodeが接続しに来た場合も同様に、ネットワークBの子nodeとして接続する + </li> + </ul> + </td> + </tr> + </table> </div> + <div class='slide'> - <h2>遠隔地からの接続の実装方法</h2> + <h2>遠隔地からの接続</h2> + <table> + <tr> + <td> + <p>以下の新機能実装を行った</p> <h3>実装方法</h3> <ul> - <li>遠隔地 node から接続したい root に対して接続を要求する WHERE_TO_CONNECT_message を送信する</li> + <li>遠隔地 node から接続したい root に対して接続を要求する WHERE_TO_CONNECT message を送信する</li> <li>root は、遠隔地 node に対して接続先を含む CONNECT_TO message を送信する</li> <li> 遠隔地 node は指定された接続先に対して接続しに行く </li> </ul> <img src="images/20150218/remoteVncConnect.png"> + </td> + </tr> + </table> </div> <div class='slide'> + <h2>まとめ</h2> + <table> + <tr> + <td> + <p> + TreeVNCの機能拡張を行ったことで、 + <ul> + <li> + デバッグ環境が整った + </li> + <li> + TreeVNCの使用感がよくなった + </li> + <li> + コミュニケーションの幅が広がった + </li> + </ul> + </p> + </td> + </tr> + </table> + </div> + + <div class='slide'> + <h2>今後の課題</h2> + <table> + <tr> + <td> + <h3>音声機能の追加</h3> + <p> + TreeVNCに対して遠隔地から参加した場合、画面の配信だけではなく配信者の音声も取得したい + </p> + <p> + この機能を実装することによって、遠隔地からでもゼミや講義に参加することができる + </p> + </td> + </tr> + </table> + </div> + + <div class='slide'> + <h2>今後の課題</h2> + <table> + <tr> + <td> + <h3>記録機能の追加</h3> + <p> + TreeVNCを用いて、ゼミや講義のログを取得したい + </p> + <p> + この機能を実装することによって、授業やゼミ後の復習等に役立てたい + <br> + 前回どういった話し合いが行われたという情報があると、スムーズに話し合いが再開できる + </p> + </td> + </tr> + </table> + </div> + + <div class='slide'> + <h2>今後の課題</h2> + <table> + <tr> + <td> + <h3>意見・質問等の共有機能の追加</h3> + <p> + 講義中、教授への意見や質問等を学生側から共有できるようにしたい + </p> + <p> + この機能を実装することによって、学生と教授間のコミュニケーションを行うことができる + <br> + 教授が学生の意見や疑問とすることを知り、取り入れることによって、講義のクオリティを高めることも可能となる + </p> + </td> + </tr> + </table> + </div> + + + <!-- + <div class='slide'> + <h2>改良点のまとめ</h2> + <table> + <tr> + <td> + <p> + TreeVNCの機能拡張を行ったことで、以下のことができるようになった。 + <ul> + <li> + 1台のPCでTreeVNCを複数台立ち上げることが可能になり、デバッグしやすくなった + </li> + <li> + 共有された画面の描画モードの切り替え(QUALITYモード・SPEEDモード)が可能になった + </li> + <li> + 画面を切り替え時のビデオフィードバックを失くした + </li> + <li> + 複数のネットワークインタフェースでTreeVNCが使用可能となった + </li> + <li> + 切断されたnodeの検知を正しく行えるようになった + </li> + <li> + 画面表示サイズをボタンで簡単に切り替えることが可能になった + </li> + <li> + 配信画面サイズを指定することが可能になった + </li> + <li> + シングルディスプレイのみの配信を可能にし、マルチディスプレイに対応できるようになった + </li> + <li> + 遠隔地からの TreeVNC への参加ができるようになった + </li> + </ul> + </p> + </td> + </tr> + </table> + </div> + --> + + + <div class='slide'> <h2>その他の問題解決</h2> <h3>ビデオフィードバッグを非表示にした</h3> <h3>切断時の検知方法の変更</h3> @@ -231,15 +471,42 @@ <h3>表示画面サイズ調整機能</h3> </div> - + <div class='slide'> + <h2>遠隔地からの画面切り替え</h2> + <table> + <tr> + <td> + <img src="images/20150218/remote5.png"> + </td> + <td> + </td> + </tr> + </table> + </div> <div class='slide'> - <h2>今後の課題</h2> - <h3>音声機能の追加</h3> - <h3>記録機能の追加</h3> - <h3>意見・質問等の共有機能の追加</h3> + <h2>遠隔地からの画面切り替え</h2> + <table> + <tr> + <td> + <img src="images/20150218/remote6.png"> + </td> + <td> + </td> + </tr> + </table> </div> - - + <div class='slide'> + <h2>遠隔地からの画面切り替え</h2> + <table> + <tr> + <td> + <img src="images/20150218/remote7.png"> + </td> + <td> + </td> + </tr> + </table> + </div> </div> <!-- presentation -->