(57)【要約】【課題】  状況に応じて適当なデータ転送方式によって画像データを転送できるようにする。【解決手段】  ３次元モデル作成手段１ａにより３次元モデルの描画命令が出力されると、データ転送方式決定手段１ｂにより、描画命令に応じて、コマンド方式と差分画像方式それぞれにおける描画までの処理時間が計算され処理時間の短いデータ転送方式が判定される。コマンド方式の方が処理時間が短い場合、コマンド方式転送手段１ｃにより、描画命令に従った３次元モデルを定義するデータ及び、３次元モデルの表示方法を定義するデータがコマンド方式によってクライアント２に送信される。また、差分画像方式の方が処理時間が短い場合、差分画像方式転送手段１ｄにより、描画命令に従って３次元モデルから２次元の投影画像が生成され、生成した投影画像と前回の投影画像との差分画像が送信される。【選択図】  図１
2005284694.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して接続されたクライアントに対してコンピュータが３次元モデルの描画データを提供するときに用いられる３次元モデル転送プログラムにおいて、
前記コンピュータを、
前記クライアントからの要求に基づいて前記３次元モデルを作成し、前記３次元モデルの描画命令を出力する３次元モデル作成手段、
前記描画命令に応じて、コマンド方式と差分画像方式それぞれにおける描画までの処理時間を計算して、処理効率の良いデータ転送方式を決定するデータ転送方式決定手段、
処理効率の良いデータ転送方式が前記コマンド方式に決定した場合、前記描画命令に従った前記３次元モデルを定義するデータ及び、前記３次元モデルの表示方法を定義するデータを前記コマンド方式によって前記クライアントに送信するコマンド方式転送手段、
処理効率の良いデータ転送方式が前記差分画像方式に決定した場合、前記描画命令に従って前記３次元モデルから２次元の投影画像を生成し、生成した前記投影画像と前回の投影画像との差分画像を前記クライアントに送信する差分画像方式転送手段、
として機能させることを特徴とする３次元モデル転送プログラム。
【請求項２】
前記データ転送方式決定手段は、前記３次元モデル作成手段からの前記描画命令で示される処理が、前記投影画像を格納する画像バッファ内のデータのクリアを伴うとき、データ転送方式の決定処理を行うことを特徴とする請求項１記載の３次元モデル転送プログラム。
【請求項３】
前記データ転送方式決定手段は、前記コマンド方式において前記３次元モデルを定義するデータを前記クライアントで繰り返し利用できる場合、そのデータの使用回数が所定値以上であれば、データ転送方式を前記コマンド方式に決定することを特徴とする請求項１記載の３次元モデル転送プログラム。
【請求項４】
ネットワークを介して接続されたクライアントに対して３次元モデルの描画データを提供する３次元モデル転送サーバにおいて、
前記クライアントからの要求に基づいて前記３次元モデルを作成し、前記３次元モデルの描画命令を出力する３次元モデル作成手段と、
前記描画命令に応じて、コマンド方式と差分画像方式それぞれにおける描画までの処理時間を計算して、処理効率の良いデータ転送方式を決定するデータ転送方式決定手段と、
処理効率の良いデータ転送方式が前記コマンド方式に決定した場合、前記描画命令に従った前記３次元モデルを定義するデータ及び、前記３次元モデルの表示方法を定義するデータを前記コマンド方式によって前記クライアントに送信するコマンド方式転送手段と、
処理効率の良いデータ転送方式が前記差分画像方式に決定した場合、前記描画命令に従って前記３次元モデルから２次元の投影画像を生成し、生成した前記投影画像と前回の投影画像との差分画像を前記クライアントに送信する差分画像方式転送手段と、
を有することを特徴とする３次元モデル転送サーバ。
【請求項５】
ネットワークを介して接続されたクライアントに対して３次元モデルの描画データを提供する３次元モデルデータ転送方法において、
３次元モデル作成手段が、前記クライアントからの要求に基づいて前記３次元モデルを作成し、前記３次元モデルの描画命令を出力し、
データ転送方式決定手段が、前記描画命令に応じて、コマンド方式と差分画像方式それぞれにおける描画までの処理時間を計算して、処理効率の良いデータ転送方式を決定し、
処理効率の良いデータ転送方式が前記コマンド方式に決定した場合、コマンド方式転送手段が、前記描画命令に従った前記３次元モデルを定義するデータ及び、前記３次元モデルの表示方法を定義するデータを前記コマンド方式によって前記クライアントに送信し、
処理効率の良いデータ転送方式が前記差分画像方式に決定した場合、差分画像方式転送手段が、前記描画命令に従って前記３次元モデルから２次元の投影画像を生成し、生成した前記投影画像と前回の投影画像との差分画像を前記クライアントに送信する、
ことを特徴とする３次元モデルデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はネットワーク経由で画像データを転送する３次元モデルデータ提供プログラム、３次元モデルデータ提供サーバ、及び３次元モデルデータ転送方法に関し、特に複数のデータ転送方式によるデータ転送機能を備えた３次元モデルデータ提供プログラム、３次元モデルデータ提供サーバ、及び３次元モデルデータ転送方法に関する。
【背景技術】
【０００２】
最近の多くのコンピュータでは、３次元仮想空間内の立体モデルをリアルタイムに描画することができる。たとえば、３次元ＣＡＤ（Computer-Aided Design）によって作成された立体モデルを観察する仮想空間内の仮想カメラを、ユーザからの操作入力に応じて移動し、仮想カメラの位置や向きに応じた３次元モデルをリアルタイムに画面に表示させることができる。
【０００３】
ところで、大規模な３次元モデルの設計になると、そのモデルのデータ量も膨大となる。しかも、そのモデルが複数の部分モデルで構成されていれば、複数の作業者の共同作業によって３次元モデルが作成される。このような場合、３次元モデルデータをサーバ上に格納しておき、各作業者がその３次元モデルデータを共有することが考えられる。
【０００４】
さらに、３次元モデル作成用の多機能なアプリケーションソフトウェアを用いて３次元モデルを作成する場合、そのアプリケーションソフトウェアをサーバのみに実装しておくこともできる。その場合、クライアントでは、サーバに対してリモートアクセスすることで、アプリケーションソフトウェアの機能を利用する。このように、サーバ上で３次元モデルデータやアプリケーションソフトウェアが管理されていれば、システムの管理者にとって、システムの保守管理の手間が少なくて済むという利点がある。以下、サーバ上の３次元処理のアプリケーションソフトウェアを利用するクライアントを、リモートクライアントと呼ぶこととする。
【０００５】
リモートクライアントでは、サーバ上のアプリケーションソフトウェアの機能に対して、処理要求を送信すると共に、アプリケーションによる処理結果を受け取り画面表示を行う。サーバで処理を行った結果をリモートクライアントに表示する技術には、大きく分けて２つの異なる技術が存在する。
【０００６】
第１の技術は、Ｕｎｉｘ（商標）やＬｉｎｕｘ（商標）に採用されているＸプロトコルという技術である。
第２の技術は、Windows（登録商標）に採用されているＲＤＰ（Remote Desktop Protocol）という技術である。
【０００７】
Ｘプロトコルでは、表示するための情報を描画コマンドとして送信する。リモートクライアント側では、送られてきた描画コマンドを解釈し、画面に描画する（たとえば、非特許文献１参照）。このような方式を、以下では「コマンド方式」と呼ぶ。
【０００８】
ＲＤＰでは、表示するための情報を画像データの差分情報として送信する。リモートクライアント側では、送られてきた差分情報を元に現在表示されている画面を更新する（たとえば、非特許文献２参照）。このような方式を、以下では「差分画像方式」と呼ぶ。
【０００９】
これらの技術は画面に表示される画像全てにおいて適用されるため、３次元画像を描画する場合も、それぞれの方式に沿った処理が行われている。
【非特許文献１】X.org、"The X Protocol"、[online]、［平成１６年３月５日検索］、インターネット＜ＵＲＬ：http://www.x.org/X11＿protocol.html＞
【非特許文献２】Microsoft、"Windows 2000 Solution Guide"、[online]、［平成１６年３月５日検索］、インターネット＜ＵＲＬ：http://download.microsoft.com/download/6/1/e/61e83440-a701-4a39-803b-df83837fbf2d/1204-UZ1.pdf＞
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかし、従来の技術はそれぞれ以下のような長所及び短所を有している。
［ネットワーク上のデータ転送量］
・コマンド方式は、大きな領域の変更でも少ないデータ転送量で対応できる可能性が高い。たとえば、画面全体を一定のパターンで塗りつぶす処理などは、少ないデータをサーバからリモートクライアントに転送することで、処理結果をリモートクライアントに表示させることができる。ところが、コマンド方式では、小さい領域で多くの描画を行った結果を表示する場合に、差分画像方式よりもデータ転送量が多くなるという欠点がある。
【００１１】
・差分画像方式は、変更される領域が大きい場合に、データの転送量が増大し、性能が悪化する。また、差分画像方式は、小さい領域で多くの描画を行った結果を表示する場合は、コマンド方式よりもデータ転送量が少なくなる。
【００１２】
［描画速度］
・コマンド方式は、リモートクライアント側で画像の描画処理を行うため、クライアントコンピュータの性能に描画速度が左右される（ただし３次元描画の場合は、３次元描画アクセラレータを活かすことができる）。
【００１３】
・差分画像方式は、リモートクライアント側では差分画像の表示を行う処理のみなので、クライアントコンピュータの性能にあまり左右されない（ただし３次元描画の場合は、３次元描画アクセラレータを活かすことができない）。
【００１４】
［サーバの負荷］
・コマンド方式は、サーバ側での描画の負荷が少ない。
・差分画像方式は、サーバ側での描画の負荷が大きい。
【００１５】
このように、状況によって効率的に処理することができるデータ転送方式が異なっている。すなわち、両方式とも、特定の環境に対しては良好な性能を発揮できる技術であるが、何れの方式であっても、状況によってはデータ転送量が過大となってしまう。しかも、差分画像方式ではサーバ側での描画の負荷が大きい場合がある。このことから、従来の技術をそのまま用いただけでは性能面（特に処理速度）で満足できるものではなかった。
【００１６】
そこで、環境に左右されずに３次元画像の表示速度を向上させることが求められている。特に３次元画像の場合、３次元形状を回転したり移動したりした結果を表示するということがよく行われる。そのため、これらの操作の処理性能がアプリケーション全体の体感的な性能に大きく影響する。よって、これらの操作の処理性能を向上させることが重要となる。
【００１７】
本発明はこのような点に鑑みてなされたものであり、状況に応じて適当なデータ転送方式によって画像データを転送できる３次元モデルデータ提供プログラム、３次元モデルデータ提供サーバ、及び３次元モデルデータ転送方法を提供することを目的とする。
【課題を解決するための手段】
【００１８】
本発明では上記課題を解決するために、図１に示すような３次元モデル転送プログラムが提供される。本発明に係る３次元モデル転送プログラムでは、コンピュータを用いて、ネットワークを介して接続されたクライアント２に対して３次元モデルの描画データを提供する。すなわち、３次元モデル転送プログラムを実行するコンピュータが以下の機能を実現する。
【００１９】
３次元モデル作成手段１ａは、クライアント２からの要求に基づいて３次元モデルを作成し、３次元モデルの描画命令を出力する。データ転送方式決定手段１ｂは、描画命令に応じて、コマンド方式と差分画像方式それぞれにおける描画までの処理時間を計算し、処理効率の良いデータ転送方式を決定する。コマンド方式転送手段１ｃは、処理効率の良いデータ転送方式がコマンド方式に決定した場合、描画命令に従った３次元モデルを定義するデータ及び、３次元モデルの表示方法を定義するデータをコマンド方式によってクライアント２に送信する。差分画像方式転送手段１ｄは、処理効率の良いデータ転送方式が差分画像方式に決定した場合、描画命令に従って３次元モデルから２次元の投影画像を生成し、生成した投影画像と前回の投影画像との差分画像をクライアント２に送信する。
【００２０】
このような３次元モデル転送プログラムによれば、３次元モデル作成手段１ａにより、クライアント２からの要求に基づいて３次元モデルが作成され、３次元モデルの描画命令が出力される。すると、データ転送方式決定手段１ｂにより、描画命令に応じて、コマンド方式と差分画像方式それぞれにおける描画までの処理時間が計算され、処理効率の良いデータ転送方式が決定される。処理効率の良いデータ転送方式がコマンド方式に決定した場合、コマンド方式転送手段１ｃにより、描画命令に従った３次元モデルを定義するデータ及び、３次元モデルの表示方法を定義するデータがコマンド方式によってクライアント２に送信される。また、処理効率の良いデータ転送方式が差分画像方式に決定した場合、差分画像方式転送手段１ｄにより、描画命令に従って３次元モデルから２次元の投影画像が生成され、生成した投影画像と前回の投影画像との差分画像がクライアント２に送信される。
【００２１】
また、上記課題を解決するために、ネットワークを介して接続されたクライアントに対して３次元モデルの描画データを提供する３次元モデル転送サーバにおいて、前記クライアントからの要求に基づいて前記３次元モデルを作成し、前記３次元モデルの描画命令を出力する３次元モデル作成手段と、前記描画命令に応じて、コマンド方式と差分画像方式それぞれにおける描画までの処理時間を計算して、処理効率の良いデータ転送方式を決定するデータ転送方式決定手段と、処理効率の良いデータ転送方式が前記コマンド方式に決定した場合、前記描画命令に従った前記３次元モデルを定義するデータ及び、前記３次元モデルの表示方法を定義するデータをコマンド方式によって前記クライアントに送信するコマンド方式転送手段と、処理効率の良いデータ転送方式が前記差分画像方式に決定した場合、描画命令に従って前記３次元モデルから２次元の投影画像を生成し、生成した前記投影画像と前回の投影画像との差分画像を前記クライアントに送信する差分画像方式転送手段と、を有することを特徴とする３次元モデル転送サーバが提供される。
【００２２】
このような３次元モデル転送サーバによれば、３次元モデル作成手段により、クライアントからの要求に基づいて３次元モデルが作成され、３次元モデルの描画命令が出力される。すると、データ転送方式決定手段により、描画命令に応じて、コマンド方式と差分画像方式それぞれにおける描画までの処理時間が計算され、処理効率の良いデータ転送方式が決定される。処理効率の良いデータ転送方式がコマンド方式に決定した場合、コマンド方式転送手段により、描画命令に従った３次元モデルを定義するデータ及び、３次元モデルの表示方法を定義するデータがコマンド方式によってクライアントに送信される。また、処理効率の良いデータ転送方式が差分画像方式に決定した場合、差分画像方式転送手段により、描画命令に従って３次元モデルから２次元の投影画像が生成され、生成した投影画像と前回の投影画像との差分画像がクライアントに送信される。
【００２３】
また、上記課題を解決するために、ネットワークを介して接続されたクライアントに対して３次元モデルの描画データを提供する３次元モデルデータ転送方法において、３次元モデル作成手段が、前記クライアントからの要求に基づいて前記３次元モデルを作成し、前記３次元モデルの描画命令を出力し、データ転送方式決定手段が、前記描画命令に応じて、コマンド方式と差分画像方式それぞれにおける描画までの処理時間を計算して、処理効率の良いデータ転送方式を決定し、処理効率の良いデータ転送方式が前記コマンド方式に決定した場合、コマンド方式転送手段が、前記描画命令に従った前記３次元モデルを定義するデータ及び、前記３次元モデルの表示方法を定義するデータをコマンド方式によって前記クライアントに送信し、処理効率の良いデータ転送方式が前記差分画像方式に決定した場合、差分画像方式転送手段が、前記描画命令に従って前記３次元モデルから２次元の投影画像を生成し、生成した前記投影画像と前回の投影画像との差分画像を前記クライアントに送信する、ことを特徴とする３次元モデルデータ転送方法。
【００２４】
このような３次元モデル転送方法によれば、３次元モデル作成手段により、クライアントからの要求に基づいて３次元モデルが作成され、３次元モデルの描画命令が出力される。すると、データ転送方式決定手段により、描画命令に応じて、コマンド方式と差分画像方式それぞれにおける描画までの処理時間が計算され、処理効率の良いデータ転送方式が決定される。処理効率の良いデータ転送方式がコマンド方式に決定した場合、コマンド方式転送手段により、描画命令に従った３次元モデルを定義するデータ及び、３次元モデルの表示方法を定義するデータがコマンド方式によってクライアントに送信される。また、処理効率の良いデータ転送方式が差分画像方式に決定した場合、差分画像方式転送手段により、描画命令に従って３次元モデルから２次元の投影画像が生成され、生成した投影画像と前回の投影画像との差分画像がクライアントに送信される。
【発明の効果】
【００２５】
以上説明したように本発明では、コマンド方式と差分画像方式それぞれにおける描画までの処理時間を計算し、処理時間の短いデータ転送方式によって画像データを転送するようにした。そのため、状況に応じて効率的なデータ転送方式により画像データを転送することができる。
【発明を実施するための最良の形態】
【００２６】
以下、本発明の実施の形態を図面を参照して説明する。
まず、実施の形態に適用される発明の概要について説明し、その後、実施の形態の具体的な内容を説明する。
【００２７】
図１は、実施の形態に適用される発明の概念図である。図１に示すように、３次元モデル転送サーバ１は、コマンド方式転送手段１ｃ、差分画像方式転送手段１ｄ、３次元モデル作成手段１ａ、及びデータ転送方式決定手段１ｂを有している。
【００２８】
３次元モデル作成手段１ａは、クライアント２からの要求に基づいて３次元モデルを作成し、３次元モデルの描画命令を出力する。たとえば、３次元モデル作成手段１ａは、３次元ＣＡＤのような仮想３次元空間内での描画編集機能を備えている。
【００２９】
データ転送方式決定手段１ｂは、描画命令に応じて、コマンド方式と差分画像方式それぞれにおける描画までの処理時間を計算して処理時間の短いデータ転送方式を判定する。たとえば、データ転送方式決定手段１ｂは、３次元描画のＡＰＩをフックし、描画命令の流れを監視する。そして、データ転送方式決定手段１ｂは、ディスプレイリストの使用状況を観察し、一連の操作時にパフォーマンスが向上するようなデータ転送方式を選択する。データ転送方式を選択するタイミングは、たとえば、３次元画像が一旦クリアされるタイミングである。
【００３０】
データ転送方式決定手段１ｂは、判定の結果、コマンド方式の方が処理時間が短い場合、コマンド方式転送手段１ｃに描画命令を渡し、差分画像方式の方が処理時間が短い場合、差分画像方式転送手段１ｄに描画命令を渡す。
【００３１】
コマンド方式転送手段１ｃは、描画命令に従った３次元モデルを定義するデータ及び、３次元モデルの表示方法を定義するデータをコマンド方式によってクライアント２に送信する。たとえば、クライアント２が、一度転送したデータを次回以降も繰り返し利用することができる機構（以下、この機構をOpenGL（登録商標）の用語を用いて「ディスプレイリスト」と呼ぶ）を備えている場合、コマンド方式転送手段１ｃは、先ず３次元モデルを定義するデータとして、ディスプレイリスト３を送信する。その後、コマンド方式転送手段１ｃは、表示方法を定義するデータとして、描画命令で指示される仮想カメラの位置等に応じた変換行列４を順次送信する。クライアント２では、ディスプレイリスト３により３次元モデルの形状を認識する。そして、クライアント２は、３次元モデルを構成する頂点の座標を変換行列４によって変換し、２次元の投影画像を生成する。これにより、任意の方向から見たときの３次元モデルを表した画像が生成される。
【００３２】
差分画像方式転送手段１ｄは、描画命令に従って３次元モデルから２次元の投影画像を生成し、生成した投影画像と前回の投影画像との差分画像をクライアントに送信する。たとえば、全体画像５を最初に送信し、その後、差分画像６を順次送信する。クライアント２では、全体画像５を表示した後、差分画像６が送られる毎に、該当部分を差分画像６に置き換える。
【００３３】
このような３次元モデル転送プログラムによれば、３次元モデル作成手段１ａにより、クライアント２からの要求に基づいて３次元モデルが作成され、３次元モデルの描画命令が出力される。すると、データ転送方式決定手段１ｂにより、描画命令に応じて、コマンド方式と差分画像方式それぞれにおける描画までの処理時間を計算して処理時間の短いデータ転送方式が判定される。
【００３４】
コマンド方式の方が処理時間が短い場合、コマンド方式転送手段１ｃに描画命令が渡される。すると、コマンド方式転送手段１ｃにより、描画命令に従った３次元モデルを定義するデータ及び、３次元モデルの表示方法を定義するデータ（たとえば、変換行列４）がコマンド方式によってクライアント２に送信される。クライアント２では、コマンド方式に応じて、３次元モデルから２次元の投影画像を生成し、その投影画像を表示する。
【００３５】
また、差分画像方式の方が処理時間が短い場合、データ転送方式決定手段１ｂから差分画像方式転送手段１ｄに描画命令が渡される。すると、差分画像方式転送手段１ｄにより、描画命令に従って３次元モデルから２次元の投影画像が生成され、生成した投影画像と前回の投影画像との差分画像６が送信される。クライアント２では、差分画像６を受け取る毎に、全体画像５中の該当部分を差分画像６に置き換え、画面に表示する。
【００３６】
このように、描画命令の内容に応じてデータ転送方式毎の処理時間を計算し、処理時間が短い方のデータ転送方式によって画像データを転送するようにしたため、動作環境に応じた最適な方式による効率的なデータ転送が可能となる。
【００３７】
このような本発明は、既存のスタンドアロン型アプリケーションをそのままサーバに置き、ネットワークを介して遠隔のクライアントコンピュータ（リモートクライアント）でサーバ側アプリケーションの入出力処理を行うシステムに適用できる。
【００３８】
なお、多数のリモートクライアントが接続される場合、リモートクライアント毎に３次元モデルの表示能力が異なる。また、サーバとの間のネットワークの通信速度も、リモートクライアント毎に異なる。そのため、不特定多数のクライアントがサーバに接続される場合、クライアントの性能を予めサーバに通知しておく機能が必要である。たとえば、クライアントとサーバの接続確立時に、クライアント側の描画処理性能とネットワークの性能をサーバに送信し、データ転送方式の選択のための情報とする。
【００３９】
以下、不特定多数のリモートクライアントに対して、サーバから３次元モデルデータを転送する場合を例に採り、本発明の実施の形態を具体的に説明する。
図２は、本発明の実施の形態のシステム構成例を示す図である。本実施の形態に係るサーバ１００はネットワーク１０を介してリモートクライアント２１０，２２０，・・・に接続されている。サーバ１００は、ネットワーク１０経由で、リモートクライアント２１０，２２０，・・・に対して、３次元画像データの編集等の機能を提供する。
【００４０】
ここで、サーバ１００は、表示状態の更新方法を、コマンド方式と差分画像方式のどちらでも送信可能である。リモートクライアント２１０，２２０，・・・も、コマンド方式と差分画像方式のどちらでも受信及び描画が可能である。
【００４１】
また、サーバ１００は、リモートクライアント２１０，２２０，・・・の性能やネットワーク１０の性能、データ転送量、ディスプレイリストの使用有無などを考慮し、データ転送方式を自動的に切り換え、常に最適なパフォーマンスが得られるようにする。
【００４２】
図３は、サーバのハードウェア構成例を示す図である。サーバ１００は、ＣＰＵ(Central Processing Unit)１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０７を介してＲＡＭ(Random Access Memory)１０２、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、および通信インタフェース１０６が接続されている。
【００４３】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳやアプリケーションプログラムが格納される。
【００４４】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号を、バス１０７を介してＣＰＵ１０１に送信する。
【００４５】
通信インタフェース１０６は、ネットワーク１０に接続されている。通信インタフェース１０６は、ネットワーク１０を介して、他のコンピュータとの間でデータの送受信を行う。
【００４６】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図３には、サーバ１００のハードウェア構成例を示したが、リモートクライアント２１０，２２０，・・・も同様のハードウェアで実現することができる。
【００４７】
ただし、リモートクライアント２１０，２２０，・・・のグラフィック処理装置としては、３次元画像のリアルタイムの描画可能なものが使用される。具体的には、リモートクライアント２１０，２２０，・・・のグラフィック処理装置は、３次元座標で示されるオブジェクトをスクリーンに投影して２次元画像を生成できる。また、グラフィック処理装置は、２個の画像用バッファを有しており、２次元画像を画像用バッファに交互に書き込むことにより、動画像をリアルタイムに表示できる。
【００４８】
以下、リモートクライアント２１０を用いてサーバ１００による３次元画像処理機能を利用する場合を例に採り、本実施の形態の処理機能を詳細に説明する。
図４は、サーバの処理機能を示すブロック図である。サーバ１００は、データ記憶部１１０、ネットワーク通信処理部１２１、３次元アプリケーション１２２、描画ＡＰＩ監視部１２３、データ転送方式決定部１２４、性能テスト部１２５、コマンド方式処理部１３０、及び差分画像方式処理部１４０を有している。また、リモートクライアント２１０は、ネットワーク通信処理部２１１、性能テスト部２１２、入力情報送信処理部２１３、及び受信データ表示処理部２１４を有している。
【００４９】
データ記憶部１１０は、リモートクライアント２１０に対する画像転送に必要な情報が格納される。
ネットワーク通信処理部１２１は、リモートクライアント２１０との間の通信を行う。具体的には、ネットワーク通信処理部１２１は、リモートクライアント２１０に対してユーザが行った操作入力の内容を示す入力情報を受信すると、その入力情報を３次元アプリケーション１２２に渡す。また、ネットワーク通信処理部１２１は、コマンド方式処理部１３０または差分画像方式処理部１４０から受け取った情報を、リモートクライアント２１０に送信する。
【００５０】
３次元アプリケーション１２２は、３次元画像処理を行う。たとえば、３次元ＣＡＤ（Computer-Aided Design）用のアプリケーションである。具体的には、３次元アプリケーション１２２は、ネットワーク通信処理部１２１から受け取った入力情報に従って画像処理等を行う。そして、３次元アプリケーション１２２は、画像処理結果を描画ＡＰＩ（Application Program Interface）を用いて出力する。
【００５１】
描画ＡＰＩ監視部１２３は、３次元データの描画を行う描画ＡＰＩデータをフック（出力データを取得する処理）し、コマンドデータの流れを監視と共にその描画コマンドをデータ記憶部１１０にキャッシュする。また、描画ＡＰＩ監視部１２３は、描画コマンドに基づいて、３次元モデルを構成するポリゴン数を計算する。計算結果は、データ記憶部１１０に格納される。さらに、描画ＡＰＩ監視部１２３は、描画コマンドより、ディスプレイリストのデータ量を計算する。計算結果は、データ記憶部１１０に格納される。描画ＡＰＩ監視部１２３は、以上の処理を３次元アプリケーション１２２から描画バッファの切り換えコマンドが出力されるまで行う。また、描画ＡＰＩ監視部１２３は、描画バッファの切り換えコマンドを検出した際には、データ転送方式決定部１２４に対してデータ転送方式の判定を指示する。
【００５２】
データ転送方式決定部１２４は、コマンド方式または差分画像方式のどちらの方式でデータを転送するのかを決定する。具体的には、データ転送方式決定部１２４は、描画ＡＰＩ監視部１２３からデータ送信方式の判定の指示を受けた際に、判定処理を開始する。判定処理では、データ記憶部１１０に格納されている情報を参照し、コマンド方式と差分画像方式とのそれぞれにおける処理効率（画像が表示されるまでの時間等）を計算する。そして、データ転送方式決定部１２４は、処理効率の良い方式を、以後のデータ転送方式として決定する。決定されたデータ転送方式を示す情報は、データ記憶部１１０に格納される。以後、データ転送方式決定部１２４は、決定されたデータ転送方式に対応する処理部（コマンド方式処理部１３０または差分画像方式処理部１４０）に対して、コマンドデータを渡す。
【００５３】
性能テスト部１２５は、サーバ１００のパフォーマンステストを行う。性能テスト部１２５が測定した性能値は、データ記憶部１１０に格納される。
コマンド方式処理部１３０は、コマンド方式でのデータ転送を行う。この際、コマンド方式処理部１３０は、キャッシュデータがある場合、キャッシュされていた描画コマンドを含む描画データをリモートクライアント２１０に送信する。たとえば、ディスプレイリストを利用している場合、コマンド方式処理部１３０は、３次元モデルの形状を示すディスプレイリストと、画像に対する編集等の表示方法を示す描画コマンドを含む描画データを送信する。その後、表示方法を示す描画コマンドを受け取る度に、その描画コマンドを含む描画データが随時送信される。表示方法を示す描画コマンドには、たとえばオブジェクトを回転させる描画コマンドがある。この回転用の描画コマンドには、回転行列が含まれる。
【００５４】
差分画像方式処理部１４０は、差分画像方式でのデータ転送を行う。具体的には、差分画像方式処理部１４０は、キャッシュデータがある場合、キャッシュされていた描画コマンドに従ってサーバ１００側の描画バッファに画像を描画する。さらに、差分画像方式処理部１４０は、後続の描画コマンドに従って、順次描画バッファに画像を描画する。そして、差分画像方式処理部１４０は、描画バッファに描画された画像情報を含む描画データをリモートクライアント２１０に送信する。この際、色指定や光源の指定等の表示態様を指定する描画コマンドが含まれていれば、その描画コマンドも描画データに含まれる。
【００５５】
差分画像方式処理部１４０では、送信した画像データを保持している。そして、差分画像方式処理部１４０は、その後、画像コマンドを受け取ると、その画像コマンドに応じた画像を描画し、次に表示すべき画像データと直前の画像データとの差分（変更された画像領域）を検出する。そして、差分画像方式処理部１４０は、差分画像を送信する。
【００５６】
リモートクライアント２１０は、ネットワーク通信処理部２１１、性能テスト部２１２、入力情報送信処理部２１３、及び受信データ表示処理部２１４を有している。
ネットワーク通信処理部２１１は、サーバ１００との通信を行う。具体的には、ネットワーク通信処理部２１１は、性能テスト部２１２が実行した性能テストの結果や入力情報送信処理部２１３が出力した入力情報をサーバ１００に送信する。また、ネットワーク通信処理部２１１は、サーバ１００から送られた画像情報を受信データ表示処理部２１４に渡す。性能テスト部２１２は、リモートクライアント２１０の描画性能とネットワーク性能のパフォーマンステストを行い、結果をサーバ１００に通知する。入力情報送信処理部２１３は、ユーザによる操作入力の内容を示す入力情報を、サーバ１００に通知する。受信データ表示処理部２１４は、サーバ１００から受信したデータを元に、画面への表示処理を行う。
【００５７】
図５は、データ記憶部に格納される情報を示す図である。データ記憶部１１０には、クライアントパフォーマンス値、サーバパフォーマンス値、コマンドキャッシ群、ポリゴン数カウンタ、ディスプレイリストデータ量、ディスプレイリスト作成回数、ディスプレイリスト使用回数、及び現在の転送方式が格納されている。
【００５８】
クライアントパフォーマンス値は、リモートクライアント２１０の処理能力を示す情報である。この例では、データ転送速度、描画可能ポリゴン数、描画時間が登録されている。データ転送速度には、リモートクライアント２１０とサーバ１００との間のネットワークの単位時間（秒）当たりに転送可能なデータ量（Byte/sec）が示されている。描画可能ポリゴン数には、リモートクライアント２１０が単位時間（秒）当たりに描画可能なポリゴン数（num/sec）が示されている。描画時間には、リモートクライアント２１０が１フレーム分の画像全体の描画に要する時間（sec）が示されている。
【００５９】
サーバパフォーマンス値は、サーバ１００の処理能力を示す情報である。この例では、描画可能ポリゴン数、描画時間が登録されている。描画可能ポリゴン数には、サーバ１００が単位時間（秒）当たりに描画可能なポリゴン数（num/sec）が示されている。描画時間には、サーバ１００が１フレーム分の画像全体の描画に要する時間（sec）が示されている。
【００６０】
コマンドキャッシュ群は、画像処理を指示する複数のコマンドをキャッシュデータとして格納したものである。ポリゴン数カウンタには、描画対象のポリゴン数を示す値が設定される。ディスプレイリストデータ量には、ディスプレイリストを送信する際のデータ量が設定される。ディスプレイリスト作成回数には、ディスプレイリストの作成処理を実行した回数が設定される。ディスプレイリスト使用回数には、ディスプレイリストを使用した回数が設定される。現在の転送方式には、現在、コマンド方式と差分画像方式との何れで画像データを転送しているのかを示す情報が設定される。
【００６１】
このような構成のシステムにより、以下のような処理が行われる。なお、以下に説明する処理のうち図４に示す構成要素以外の要素（ＯＳ等）が実行する処理については、サーバ１００またはリモートクライアント２１０を処理主体として説明する。
【００６２】
図６は、画像データ転送処理の手順を示すフローチャートである。以下、図６に示す処理をステップ番号に沿って説明する。
［ステップＳ１１］リモートクライアント２１０が起動されると、リモートクライアント２１０からサーバ１００に対して起動依頼が送信される。
【００６３】
［ステップＳ１２］サーバ１００が起動されると、リモートクライアント２１０からの起動依頼の待ち状態となる。そして、リモートクライアント２１０からの起動依頼を受け取ると、処理がステップＳ１３に進められる。
【００６４】
［ステップＳ１３］サーバ１００は、リモートクライアント２１０との間の接続処理を行う。
［ステップＳ１４］リモートクライアント２１０は、起動依頼を送信後、返答待ちの状態となる。そして、サーバ１００から接続処理を示す返答を受け取ると、処理がステップＳ１５に進められる。
【００６５】
［ステップＳ１５］リモートクライアント２１０の性能テスト部２１２はパフォーマンステストを行う。この際のパフォーマンステストにより、単位時間当たりにネットワークに転送可能なデータ量（データ転送速度）が測定される。
【００６６】
［ステップＳ１６］リモートクライアント２１０は、パフォーマンステストの結果をサーバ１００に対して通知する。
［ステップＳ１７］サーバ１００は、リモートクライアント２１０から通知されたデータ転送速度を、クライアントパフォーマンス値のデータ転送速度としてデータ記憶部１１０に格納する。
【００６７】
なお、クライアントパフォーマンス値における描画可能ポリゴン数と描画時間との値は、予め性能テスト部２１２によって測定され、データ記憶部１１０に格納されている。また、サーバパフォーマンス値における描画可能ポリゴン数と描画時間との値も、予めサーバ１００の性能テスト部１２５によって予め測定され、データ記憶部１１０に格納されている。
【００６８】
［ステップＳ１８］リモートクライアント２１０の入力情報送信処理部２１３が、ユーザから３次元アプリケーション１２２に対する操作入力を受け取る。すると、入力情報送信処理部２１３は、操作入力の内容を示す入力情報をサーバ１００に送信する。
【００６９】
［ステップＳ１９］サーバ１００の３次元アプリケーション１２２は、リモートクライアント２１０からの入力情報に従って３次元画像処理を実行し、３次元画像データを生成する。そして、３次元アプリケーション１２２は、描画コマンドにより、生成した３次元画像データの描画指示を出力する。
【００７０】
［ステップＳ２０］サーバ１００の描画ＡＰＩ監視部１２３は、描画バッファのクリア処理を伴う描画指示か否かを判断する。描画バッファのクリア処理を伴わない場合、処理がステップＳ２３に進められる。描画バッファのクリア処理を伴う場合、処理がステップＳ２１に進められる。
【００７１】
たとえば、描画バッファが前面（Front）と背面（Back）とに分けられ、オブジェクトを編集する際には常に前面が使用されるような仕様の場合、描画対象のバッファが前面であれば描画バッファのクリア無しと判断する。また、描画対象のバッファが背面となったとき、描画バッファのクリア有りと判断する。
【００７２】
［ステップＳ２１］描画ＡＰＩ監視部１２３は、描画コマンドのキャッシュを開始する。即ち、描画ＡＰＩ監視部１２３は、３次元アプリケーション１２２から出力された描画コマンドをデータ記憶部１１０に格納する。
【００７３】
また、描画ＡＰＩ監視部１２３は、３次元データの描画の監視を開始する。３次元の描画ライブラリとしてOpenGLを使用した例では、ここでディスプレイリストの生成(glNewList/glEndList)、ディスプレイリストの使用(glCallList)コマンドをチェックし、生成したディスプレイリストの使用回数をカウントする。カウントした値は、データ記憶部１１０に格納される。
【００７４】
［ステップＳ２２］データ転送方式決定部１２４は、データ記憶部１１０に格納されている情報に基づいて、転送方式を決定する。具体的には、データ転送方式決定部１２４は、コマンド方式と差分画像転送方式とのそれぞれにおける画像表示速度を計算する。そして、データ転送方式決定部１２４は、より早く画像を表示できる方式を、画像情報の転送方式として決定する。
【００７５】
［ステップＳ２３］サーバ１００からリモートクライアント２１０に対して、決定された転送方式により画像情報が転送される。具体的には、データ転送方式決定部１２４は、決定した転送方式に対応する処理機能に対して画像情報の転送を指示する。たとえば、コマンド方式で転送することが決定された場合、データ転送方式決定部１２４からコマンド方式処理部１３０に対して、キャッシュされていた描画コマンドが渡される。すると、コマンド方式処理部１３０がコマンド方式による画像の描画を指示する描画コマンドをリモートクライアント２１０に対して送信する。また、差分画像方式で転送することが決定された場合、データ転送方式決定部１２４から差分画像方式処理部１４０に対して、キャッシュされていた描画コマンドが渡される。すると、差分画像方式処理部１４０が画像を描画し、差分画像をリモートクライアント２１０に対して送信する。
【００７６】
［ステップＳ２４］サーバ１００は、処理が終了か否かを判断し、終了であれば処理がステップＳ２５に進められ、終了でなければ処理がステップＳ１９に進められる。ステップＳ１９に処理が進んだ場合、サーバ１００が操作情報の待ち状態となり、リモートクライアント２１０から操作情報を受け取ると、ステップＳ１９以降の処理が実行される。
【００７７】
［ステップＳ２５］サーバ１００は、終了処理（リモートクライアント２１０との間の通信の遮断等）を行い、処理を終了させる。
［ステップＳ２６］リモートクライアント２１０は、操作情報を送信後、データ待ち状態となっている。そして、サーバ１００から描画データを受け取ると、処理をステップＳ２７に進める。
【００７８】
［ステップＳ２７］リモートクライアント２１０の受信データ表示処理部２１４は、受け取った描画データに従って画像を描画し、描画した画像を表示する。
［ステップＳ２８］リモートクライアント２１０は、処理が終了か否かを判断する。終了であれば処理がステップＳ２９に進められ、終了でなければ処理がステップＳ１８に進められる。ステップＳ１８に処理が進められた場合、リモートクライアント２１０の入力情報送信処理部２１３が操作入力待ちの状態となり、ユーザによって操作入力が行われるとステップＳ１８以降の処理が実行される。
【００７９】
［ステップＳ２９］リモートクライアント２１０は、終了処理（サーバ１００との間の通信の遮断等）を行い、処理を終了させる。
このようにリモートクライアント２１０とサーバ１００との性能やネットワークの性能を取得して、描画バッファのクリア処理発生時に、より短時間で画像表示可能な転送方式を決定することができる。すなわち、３次元データが一旦クリアされるタイミング（または最初に３次元描画が行われるタイミング）に転送方式の決定処理が実行される。その際、これから描画する予定のコマンドと描画される結果の差分画像のデータ量（予測値）を比較し、予め獲得した性能を加味してどちらの方式でクライアント側にデータを転送するかが決められる。
【００８０】
図７は、描画データを送信するまでの処理の概念図である。３次元アプリケーション１２２によって３次元データが編集されると、描画コマンドが出力される（ステップＳ３１）。出力された描画コマンドは描画ＡＰＩ監視部１２３でフックされる（ステップＳ３２）。そして、データ転送方式決定部１２４によって転送方式が決定される（ステップＳ３３）。
【００８１】
転送方式がコマンド方式に決定されると、描画コマンドがコマンド方式処理部１３０に渡され、コマンド方式処理部１３０によって描画コマンドがエンコードされる（ステップＳ３４）。エンコードによって生成された描画データは、ネットワーク通信処理部１２１によってリモートクライアント２１０に送信される。
【００８２】
転送方式が差分画像方式に決定されると、描画コマンドが差分画像方式処理部１４０に渡され、差分画像方式処理部１４０によって画像１４１が描画される（ステップＳ３６）。さらに、差分画像方式処理部１４０により、生成された画像１４１と前回の画像との差分が抽出される（ステップＳ３７）。そして、画像１４１を複数に分割したときの各領域のうち、画像が更新された領域が差分画像方式処理部１４０により特定され、その領域の画像（差分画像）が、ネットワーク通信処理部１２１によってリモートクライアント２１０に送信される（ステップＳ３８）。その後、３次元データが一旦クリアされるタイミングが来るまでは、同一の方式でデータ転送が行われる。クリアされるタイミングが来たら、同様にデータ転送方式の判定処理が行われる。
【００８３】
次に、データ転送方式毎の処理時間の計算方法を具体的に説明する。以下、３次元の描画ライブラリとしてOpenGLを使用した場合を例に採って説明する。OpenGLでは、３次元データが一旦クリアされるタイミングは、glClearコマンドが呼ばれる時である。また、OpenGLにおいて、glClearコマンド以後、画面への描画データが一通り終わるタイミングは、glFlushやSwapBuffersコマンドが呼ばれる時である。ここまでの描画コマンドをフックすることにより一旦全てキャッシュされる。また、描画するポリゴン数と、ディスプレイリストを使用している場合はそのデータ量がカウントされる。
【００８４】
そして、以下の式で処理にかかる時間を算出する。
・コマンド方式：処理時間（sec）＝（キャッシュしたデータ量（byte）／データ転送速度（byte/sec））＋（ポリゴン数（num）／リモートクライアント側の描画可能ポリゴン数（num/sec））
なお、現在のデータ転送方式が差分画像方式の場合、コマンド方式の処理時間として、上記の値に対してディスプレイリストデータ量（byte）が加算される。
【００８５】
・差分画像方式：処理時間（sec）＝（ポリゴン数（num）／サーバ側の描画可能ポリゴン数（num/sec））＋（ウィンドウ全体を転送するのに必要なデータ量（byte）×係数Ｐ／データ転送速度（byte/sec））＋（ディスプレイリストデータ量（byte）／データ転送速度（byte/sec））＋クライアント側の描画時間（sec）×係数Ｐ
なお、差分画像方式ではウィンドウのどの範囲が更新されるかは正確にはわからないため、ここでは簡易的な手法を採り、ウィンドウ全体を転送するデータ量に、いつも同一の値である係数Ｐを掛けることとする。係数Ｐは、０より大きく１以下の値（例えば、０．７）である。
【００８６】
また、「データ転送速度（byte/sec）」、「クライアント側の描画可能ポリゴン数（num/sec）」、「クライアント側の描画時間（sec）」は、データ記憶部１１０に予め登録された値である。
【００８７】
データ転送方式決定部１２４は、この計算を行った結果、処理時間が短くなる方を採用する。ただし、ディスプレイリストを使用している場合は、描画ＡＰＩ監視部１２３による使用回数のカウントによりディスプレイリストが効果的に使用されている（たとえば、１つのディスプレイリスト当たりの使用回数が所定の値以上の場合）と判断できるときはコマンド方式を選択する。
【００８８】
決定されたデータ転送方式がコマンド方式の場合は、キャッシュした描画時の描画コマンドがエンコードされリモートクライアント２１０に転送される。この際、サーバ１００側では画像の描画は行わない。
【００８９】
決定されたデータ転送方式が差分画像方式の場合は、サーバ１００側で３次元モデルが描画され、差分画像がリモートクライアント２１０に転送される。ただし、３次元データの形状描画以外の表示態様を指定する描画コマンドがある場合、その描画コマンドもリモートクライアント２１０に送信しておく。これは、差分画像方式で描画している最中に形状の色変更処理や光源の処理などが行われると、コマンド処理方式に切り替わった際に変更となった情報をクライアント側で認識できない可能性があるためである。
【００９０】
図８は、転送されるデータの違いを示す図である。この例では、リモートクライアント２１０からの操作入力により、３次元モデルの編集作業をする場合を想定している。３次元モデルの編集中は、編集操作が行われた部分の画像だけが更新されればよい。そこで、差分画像方式によりデータ転送が行われる。
【００９１】
差分画像方式では、サーバ１００とリモートクライアント２１０との双方に、同じ画像２１，２２が保持される。そして、リモートクライアント２１０においてオブジェクト追加の操作があると、その操作内容を示す操作情報がリモートクライアント２１０からサーバ１００に対して送信される（ステップＳ４１）。
【００９２】
サーバ１００では、操作情報に応じて、オブジェクトを追加した画像２３を生成する。そして、元の画像２１と新たに生成した画像２３との差分を検出する。具体的には、画像２１，２３を複数の領域に分割する。そして、分割された画像毎に、画像２１から変更されたか否かを判断する。そして、サーバ１００は、変更のあった画像を差分画像２４として、リモートクライアント２１０に送信する（ステップＳ４２）。
【００９３】
リモートクライアント２１０では、差分画像２４を受け取って、元の画像２２の該当する部分を差分画像２４に置き換える。これにより、更新後の画像２５が生成され、リモートクライアント２１０で表示される。
【００９４】
その後、ユーザが３次元モデルの回転を指示したものとする。回転を指示する操作入力を受け取ったリモートクライアント２１０は、３次元モデルの回転を示す操作情報をサーバ１００に送信する（ステップＳ４３）。なお、３次元モデルを回転させる処理を開始する際には、画像バッファのクリア処理を伴う。そこで、サーバ１００では、データ転送方式の判定処理が行われる。
【００９５】
ここで、コマンド方式が選択されたものとすると、サーバ１００からリモートクライアント２１０に、コマンドによる描画データが送信される（ステップＳ４４）。コマンド方式による最初の描画データには、ディスプレイリスト２６や変換行列２７が含まれる。ディスプレイリスト２６は、描画される３次元モデルの形状等を３次元仮想空間上で定義したデータである。変換行列２７は、３次元モデルの表示方向（仮想カメラで３次元モデルを観察したときの仮想カメラの位置及び向き）に応じた３次元座標値の変換行列である（たとえば、回転行列）。
【００９６】
リモートクライアント２１０では、受け取ったディスプレイリスト２６で示される３次元モデルの座標を変換行列２７で変換して、２次元の平面に投影する。そして、投影された画像２８を表示する。
【００９７】
次に、データ転送方式毎の描画データ形式について説明する。
図９は、コマンド方式の描画データ形式を示す図である。コマンド方式の描画データ３１には、方式フラグ、全体のデータ長、コマンド数、glClearコマンド、glLoadMatrixdコマンド、glCallListコマンド、およびglFlushコマンドが含まれる。
【００９８】
方式フラグは、データ転送方式を示す情報である。この例では、「１」がコマンド方式を示している。全体のデータ長は、描画データ３１全体のデータ長をバイト単位で示している。コマンド数は、描画データ３１に含まれるコマンド数を示している。glClearコマンドは、画像バッファのクリアを示すコマンドである。このコマンドにはパラメタが設定されない。glLoadMatrixdコマンドは、変換行列を指定するコマンドである。このコマンドには、１６個（座標変換に用いられる４×４行列の各値）のパラメタが設定される。glCallListコマンドは、ディスプレイリストの実行を指示するコマンドである。このコマンドには、ディスプレイリストを指定するパラメタが設定される。glFlushコマンドは、コマンドの実行を強制するコマンドである。このコマンドにはパラメタは設定されない。
【００９９】
図１０は、ディスプレイリストの例を示す図である。ディスプレイリスト３２には、ポリゴン毎の頂点の位置やポリゴンの色が定義されている。図１０には、平面の４角形を定義したディスプレイリスト３２の例が示されている。図１０において、「glNewList(1, GL＿COMPILE);」は、番号１のリストの作成開始を意味する。「glColor3f( 1.0, 1.0, 1.0 ) ;」は、白色で描画することを示している。「glBegin(GL＿POLYGON);」は、面の定義開始を意味する。「glVertex3f( -1, -1,  1 ) ;」、「glVertex3f( -1,  1,  1 ) ;」、「glVertex3f(  1,  1,  1 ) ;」、「glVertex3f(  1, -1,  1 ) ;」は、それぞれ頂点の座標を示している。「glEnd();」は、面の定義終了を意味する。「glEndList(1);」は、番号１のリストの作成終了を意味する。
【０１００】
図１１は、差分画像方式の描画データ形式を示す図である。差分画像方式の描画データ３３には、方式フラグ、全体のデータ長、領域数、領域の位置、領域の大きさ、及び画像データが含まれる。
【０１０１】
方式フラグは、データ転送方式を示す情報である。この例では、「２」が差分画像方式を示している。全体のデータ長は、描画データ３３全体のデータ長をバイト単位で示している。領域数は、差分画像として含まれる領域の数である。領域の位置は、差分画像の領域の位置をｘ座標値とｙ座標値によって示している。領域の大きさは、差分画像の領域の大きさを横方向の大きさ（width）と縦方向の大きさ（height）によって示している。画像データは、差分画像の画像情報である。なお、領域の位置、領域の大きさ、及び画像データは、領域の数分存在する。
【０１０２】
ところで、コマンド方式と差分画像方式とのうち、どちらの方式が効率的なのかは、変更された領域のサイズやシステム環境によって決まる。システム環境のうち、データ転送方式の決定に影響を与える要素として、以下の要素がある。
・リモートクライアントの性能（特に３Ｄグラフィックアクセラレータの性能）
・ネットワークの帯域の太さ（データ転送速度）
・アプリケーションがディスプレイリストを使用しているか否か
・３次元モデルの規模
図１２は、３Ｄモデルの規模と処理性能に応じて選択されるデータ方式の概略を示す図である。３次元アプリケーション１２２がディスプレイリストを使用しているか否かによって、方式を切り分けるポイントは若干変動するが、傾向としてはこの図１２の通りとなる。
【０１０３】
図１２に示すように、モデルの規模が小さいほどコマンド方式の方が効率的であり、モデルの規模が大きいほど差分画像方式の方が効率的である。
また、リモートクライアントの性能が低いほど差分画像方式の方が効率的であり、リモートクライアントの性能が高いほどコマンド方式の方が効率的である。さらに、データ転送速度が低い（帯域が遅い）ほど差分画像方式の方が効率的であり、データ転送速度が高い（帯域が速い）ほどコマンド方式の方が効率的である。
【０１０４】
例えば、性能の低いリモートクライアントを使っているユーザの場合、小規模なモデルを操作する際はコマンド方式で、大規模なモデルを操作する際は差分画像方式となる。また、高性能なリモートクライアントで、ネットワークの帯域が太い環境のユーザの場合、小規模でも大規模でもコマンド方式となる。
【０１０５】
このように本発明の実施の形態によれば、リモートクライアントの性能やネットワークの性能に応じて、３次元データを扱うアプリケーションをリモートクライアント上で最適なスピードで使用できるようになる。すなわち、リモートクライアント（特に３次元描画アクセラレータ）やネットワークの性能を最大限に活かすことができる。
【０１０６】
ここで、「方式を自動的に切り換えるタイミング」と「一連の操作時におけるパフォーマンス考慮」とについて、本実施の形態に示したような機能を適用したことによる効果を詳しく説明する。
【０１０７】
＜方式を自動的に切り換えるタイミング＞
一般的な画像の描画で、転送方法をコマンド方式または差分画像方式に任意に切り換える仕組みを取り入れようとした場合、サーバ１００側にはクライアント側に描画されている画像と同じ画像を保持していなければならない。これは、任意に切り換えた時でも画像の欠落なくリモートクライアント側に表示させるために必要だからである。よって、画像はサーバ１００側とリモートクライアント側とのそれぞれにおいて描画されることになり、速度の面で不利である。
【０１０８】
本実施の形態では、データ転送方式を自動的に切り換えるタイミングを一旦画面上のデータが全てクリアされるタイミングに合わせている。これにより、コマンド方式を選んだ場合のサーバ１００側での３次元画像の描画処理を省くことができる。特に性能を向上させたいのは３次元形状の回転／移動時であるが、このような操作が行われる際にはサーバ１００の内部処理としては一旦画面上のデータは全てクリアされ、新たに３次元データを全て転送し直すか、回転／移動の行列を送信するという処理が行われる。データ転送方式を自動的に切り換えるタイミングを、この一旦画面上のデータがクリアされるタイミングに合わせることで、コマンド方式を選んだ場合にサーバ１００側で３次元画像の描画処理を省くことができる。その結果、大幅な高速化を図ることが可能となる。
【０１０９】
＜一連の操作時におけるパフォーマンス考慮＞
データ転送方式を選択する際には、サーバ１００、リモートクライアント２１０及びネットワーク１０の性能を考慮してどちらの方式で転送した方がデータ量が少なくなるのかを判断する。しかし３次元形状データの場合、ディスプレイリストを持つため、一時期のタイミングでのデータ量の大小だけでは判断できない。そこで、本実施の形態では、これから転送しようとしている３次元形状データのみに注目して方式を決定するのではなく、その後予想される操作を含めて、最も高速に動作すると思われる方式を選択している。そのために、サーバ１００の描画ＡＰＩ監視部１２３は、ディスプレイリストの使用状況を観察する処理を持つ。データ転送方式決定部１２４は、ディスプレイリストが効果的に使用されると判断した場合（たとえば、生成されたディスプレイリスト１つ当たりの使用回数が所定値以上の場合）は、ディスプレイリスト定義時のデータ転送量が多くなってもコマンド方式を選択する。これにより、移動／回転操作時のパフォーマンスがアップし、一連の操作で見れば差分画像方式よりも高速に動作させることができる。
【０１１０】
なお、上記の処理機能は、サーバとリモートクライアントとに、所定のプログラムを実行させることで実現することができる。その場合、サーバが有すべき機能の処理内容を記述したサーバプログラム、およびリモートクライアントが有すべき機能の処理内容を記述したクライアントプログラムが提供される。サーバプログラムをサーバコンピュータで実行することにより、サーバ１００の処理機能がサーバコンピュータ上で実現される。また、クライアントプログラムをクライアントコンピュータで実行することにより、リモートクライアント２１０の処理機能がクライアントコンピュータ上で実現される。
【０１１１】
処理内容を記述したサーバプログラムやクライアントプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ(Digital Versatile Disc)、ＤＶＤ−ＲＡＭ(Random Access Memory)、ＣＤ−ＲＯＭ(Compact Disc Read Only Memory)、ＣＤ−Ｒ(Recordable)／ＲＷ(ReWritable)などがある。光磁気記録媒体には、ＭＯ(Magneto-Optical disk)などがある。
【０１１２】
サーバプログラムやクライアントプログラムを流通させる場合には、たとえば、各プログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、クライアントプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータからクライアントコンピュータにクライアントプログラムを転送することもできる。
【０１１３】
サーバプログラムを実行するサーバコンピュータは、たとえば、可搬型記録媒体に記録されたサーバプログラムを、自己の記憶装置に格納する。そして、サーバコンピュータは、自己の記憶装置からサーバプログラムを読み取り、サーバプログラムに従った処理を実行する。なお、サーバコンピュータは、可搬型記録媒体から直接サーバプログラムを読み取り、そのサーバプログラムに従った処理を実行することもできる。
【０１１４】
クライアントプログラムを実行するクライアントコンピュータは、たとえば、可搬型記録媒体に記録されたクライアントプログラムもしくはサーバコンピュータから転送されたクライアントプログラムを、自己の記憶装置に格納する。そして、クライアントコンピュータは、自己の記憶装置からクライアントプログラムを読み取り、クライアントプログラムに従った処理を実行する。なお、クライアントコンピュータは、可搬型記録媒体から直接クライアントプログラムを読み取り、そのクライアントプログラムに従った処理を実行することもできる。また、クライアントコンピュータは、サーバコンピュータからクライアントプログラムが転送される毎に、逐次、受け取ったクライアントプログラムに従った処理を実行することもできる。
【０１１５】
（付記１）  ネットワークを介して接続されたクライアントに対してコンピュータが３次元モデルの描画データを提供するときに用いられる３次元モデル転送プログラムにおいて、
コンピュータを、
前記クライアントからの要求に基づいて前記３次元モデルを作成し、前記３次元モデルの描画命令を出力する３次元モデル作成手段、
前記描画命令に応じて、コマンド方式と差分画像方式それぞれにおける描画までの処理時間を計算して、処理効率の良いデータ転送方式を決定するデータ転送方式決定手段、
処理効率の良いデータ転送方式が前記コマンド方式に決定した場合、前記描画命令に従った前記３次元モデルを定義するデータ及び、前記３次元モデルの表示方法を定義するデータを前記コマンド方式によって前記クライアントに送信するコマンド方式転送手段、
処理効率の良いデータ転送方式が前記差分画像方式に決定した場合、前記描画命令に従って前記３次元モデルから２次元の投影画像を生成し、生成した前記投影画像と前回の投影画像との差分画像を前記クライアントに送信する差分画像方式転送手段、
として機能させることを特徴とする３次元モデル転送プログラム。
【０１１６】
（付記２）  前記データ転送方式決定手段は、前記３次元モデル作成手段からの前記描画命令で示される処理が、前記投影画像を格納する画像バッファ内のデータのクリアを伴うとき、データ転送方式の決定処理を行うことを特徴とする付記１記載の３次元モデル転送プログラム。
【０１１７】
（付記３）  前記データ転送方式決定手段は、描画までの処理時間として、前記ネットワークを介したデータの伝送時間と、前記クライアントにおける描画時間を加算した値を計算することを特徴とする付記１記載の３次元モデル転送プログラム。
【０１１８】
（付記４）  前記差分画像方式転送手段は、前記コマンド方式による描画時に必要となる表示態様を指定するコマンドを、前記差分画像と共に予め送信することを特徴とする付記１記載の３次元モデル転送プログラム。
【０１１９】
（付記５）  前記データ転送方式決定手段は、前記コマンド方式において前記３次元モデルを定義するデータを前記クライアントで繰り返し利用できる場合、そのデータの使用回数が所定値以上であれば、データ転送方式を前記コマンド方式に決定することを特徴とする付記１記載の３次元モデル転送プログラム。
【０１２０】
（付記６）  ネットワークを介して接続されたクライアントに対して３次元モデルの描画データを提供する３次元モデル転送サーバにおいて、
前記クライアントからの要求に基づいて前記３次元モデルを作成し、前記３次元モデルの描画命令を出力する３次元モデル作成手段と、
前記描画命令に応じて、コマンド方式と差分画像方式それぞれにおける描画までの処理時間を計算して、処理効率の良いデータ転送方式を決定するデータ転送方式決定手段と、
処理効率の良いデータ転送方式が前記コマンド方式に決定した場合、前記描画命令に従った前記３次元モデルを定義するデータ及び、前記３次元モデルの表示方法を定義するデータを前記コマンド方式によって前記クライアントに送信するコマンド方式転送手段と、
処理効率の良いデータ転送方式が前記差分画像方式に決定した場合、前記描画命令に従って前記３次元モデルから２次元の投影画像を生成し、生成した前記投影画像と前回の投影画像との差分画像を前記クライアントに送信する差分画像方式転送手段と、
を有することを特徴とする３次元モデル転送サーバ。
【０１２１】
（付記７）  ネットワークを介して接続されたクライアントに対して３次元モデルの描画データを提供する３次元モデルデータ転送方法において、
３次元モデル作成手段が、前記クライアントからの要求に基づいて前記３次元モデルを作成し、前記３次元モデルの描画命令を出力し、
データ転送方式決定手段が、前記描画命令に応じて、コマンド方式と差分画像方式それぞれにおける描画までの処理時間を計算して、処理効率の良いデータ転送方式を決定し、
処理効率の良いデータ転送方式が前記コマンド方式に決定した場合、コマンド方式転送手段が、前記描画命令に従った前記３次元モデルを定義するデータ及び、前記３次元モデルの表示方法を定義するデータを前記コマンド方式によって前記クライアントに送信し、
処理効率の良いデータ転送方式が前記差分画像方式に決定した場合、差分画像方式転送手段が、前記描画命令に従って前記３次元モデルから２次元の投影画像を生成し、生成した前記投影画像と前回の投影画像との差分画像を前記クライアントに送信する、
ことを特徴とする３次元モデルデータ転送方法。
【０１２２】
（付記８）  ネットワークを介して接続されたクライアントに対してコンピュータが３次元モデルの描画データを提供するときに用いられる３次元モデル転送プログラムを記録したコンピュータ読み取り可能な記録媒体において、
コンピュータを、
前記クライアントからの要求に基づいて前記３次元モデルを作成し、前記３次元モデルの描画命令を出力する３次元モデル作成手段、
前記描画命令に応じて、コマンド方式と差分画像方式それぞれにおける描画までの処理時間を計算して、処理効率の良いデータ転送方式を決定するデータ転送方式決定手段、
処理効率の良いデータ転送方式が前記コマンド方式に決定した場合、前記描画命令に従った前記３次元モデルを定義するデータ及び、前記３次元モデルの表示方法を定義するデータを前記コマンド方式によって前記クライアントに送信するコマンド方式転送手段、
処理効率の良いデータ転送方式が前記差分画像方式に決定した場合、前記描画命令に従って前記３次元モデルから２次元の投影画像を生成し、生成した前記投影画像と前回の投影画像との差分画像を前記クライアントに送信する差分画像方式転送手段、
として機能させることを特徴とする３次元モデル転送プログラムを記録したコンピュータ読み取り可能な記録媒体。
【図面の簡単な説明】
【０１２３】
【図１】実施の形態に適用される発明の概念図である。
【図２】本発明の実施の形態のシステム構成例を示す図である。
【図３】サーバのハードウェア構成例を示す図である。
【図４】サーバの処理機能を示すブロック図である。
【図５】データ記憶部に格納される情報を示す図である。
【図６】画像データ転送処理の手順を示すフローチャートである。
【図７】描画データを送信するまでの処理の概念図である。
【図８】転送されるデータの違いを示す図である。
【図９】コマンド方式の描画データ形式を示す図である。
【図１０】ディスプレイリストの例を示す図である。
【図１１】差分画像方式の描画データ形式を示す図である。
【図１２】３Ｄモデルの規模と処理性能に応じて選択されるデータ方式の概略を示す図である。
【符号の説明】
【０１２４】
１  ３次元モデル転送サーバ
１ａ  ３次元モデル作成手段
１ｂ  データ転送方式決定手段
１ｃ  コマンド方式転送手段
１ｄ  差分画像方式転送手段
２  クライアント
３  ディスプレイリスト
４  変換行列
５  全体画像
６  差分画像
【図１】
2005284694.tif 000003
【図２】
2005284694.tif 000004
【図３】
2005284694.tif 000005
【図４】
2005284694.tif 000006
【図５】
2005284694.tif 000007
【図６】
2005284694.tif 000008
【図７】
2005284694.tif 000009
【図８】
2005284694.tif 000010
【図９】
2005284694.tif 000011
【図１０】
2005284694.tif 000012
【図１１】
2005284694.tif 000013
【図１２】
2005284694.tif 000014