(57)【要約】【課題】サーバ側の負荷を軽減し、ネットワークに流れるデータ量を削減する。【解決手段】サーバ１では、検索登録手段１ｃが、３次元アプリケーション１ｅが作成した描画情報の形状データが形状キャッシュ情報１ｆに登録されているかを検索し、登録されていなければこれを登録する。データ転送手段１ｄは、登録されていれば、描画情報の形状データの領域を形状キャッシュ情報の指示情報に置き換えた描画差分情報を生成し、クライアント２に送信する。クライアント２では、描画差分情報に基づき、登録手段２ｃは新たな形状データを形状キャッシュ情報２ｇに登録し、データ復元手段２ｄは、指示情報に基づき、形状キャッシュ情報２ｇを検索して形状データを抽出し、描画差分情報の指示情報領域と置き換え、描画情報を復元する。【選択図】図１
2006236334.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して接続するサーバとクライアントとの間で、前記サーバのアプリケーションで作成された描画情報を前記クライアントに転送するデータ転送システムにおいて、
所定の形状の描画に用いる形状データが登録される形状キャッシュ情報を記憶するサーバ側キャッシュと、前記アプリケーションによって描画情報が作成されると、作成された前記描画情報に設定された前記形状データが前記サーバ側キャッシュの前記形状キャッシュ情報に登録されているかどうかを検索し、登録されていない場合は前記形状データを前記サーバ側キャッシュの前記形状キャッシュ情報に登録する検索登録手段と、前記形状データが登録されていた場合に前記描画情報の前記形状データの領域を前記形状キャッシュ情報に登録された登録形状データを指示する指示情報に置き換えて描画差分情報を生成し、前記クライアントに送信するデータ転送手段と、を具備するアプリケーションサーバと、
前記形状データが登録される前記形状キャッシュ情報を記憶するクライアント側キャッシュと、前記アプリケーションサーバから前記描画差分情報を取得すると、前記描画差分情報に設定された新たな前記形状データを前記クライアント側キャッシュの前記形状キャッシュ情報に登録する登録手段と、前記描画差分情報に設定された前記指示情報に基づいて前記クライアント側キャッシュの前記形状キャッシュ情報を検索し、前記描画差分情報の前記指示情報の領域を検索された登録形状データに置き換えて前記描画情報を復元するデータ復元手段と、を具備するクライアントと、
を有することを特徴とするデータ転送システム。
【請求項２】
前記アプリケーションサーバの前記検索登録手段及び前記クライアントの前記登録手段は、前記形状データを登録する際に、前記形状データごとに一意の形状番号を付与し、
前記アプリケーションサーバの前記データ転送手段は、前記サーバ側キャッシュの前記形状キャッシュ情報に登録される前記登録形状データに付与された前記形状番号を前記指示情報に設定する、
ことを特徴とする請求項１記載のデータ転送システム。
【請求項３】
前記アプリケーションサーバの前記データ転送手段は、前記検索登録手段によって前記形状データが前記サーバ側キャッシュの前記形状キャッシュ情報に登録された場合に、前記形状データに基づき前記クライアントの表示に必要な座標値の精度を算出し、算出された前記座標値の精度に応じて前記形状データの座標値データの一部を省略した前記形状データと、省略した前記座標値データを基準点の座標値で近似する近似指示情報とを前記クライアントに送信し、
前記クライアントの前記登録手段は、前記近似指示情報に基づき、取得した前記形状データにおいて省略された前記座標値データを前記基準点の座標値で近似して生成し、近似された前記座標値データを含む前記形状データを前記クライアント側キャッシュの前記形状キャッシュ情報に登録する、
ことを特徴とする請求項１記載のデータ転送システム。
【請求項４】
アプリケーションで作成された描画情報を、ネットワークを介して接続するクライアントに転送するデータ転送サーバプログラムにおいて、
コンピュータに、
検索登録手段が、前記アプリケーションによって描画情報が作成されると、作成された前記描画情報に設定された所定の形状の描画に用いる形状データが形状キャッシュ情報に存在するか否かを検索し、前記形状データが登録されていない場合は、前記形状データを新たに前記形状キャッシュ情報に登録してサーバ側キャッシュに格納するステップと、
データ転送手段が、前記形状データが登録されている場合は、前記描画情報の前記形状データの領域を前記形状キャッシュ情報に登録された登録形状データを指示する指示情報に置き換えて描画差分情報を生成し、前記描画差分情報を、クライアント側キャッシュに前記形状キャッシュ情報を格納し、前記描画差分情報に設定された前記指示情報から前記クライアント側キャッシュを検索し、前記指示情報の領域を検索された前記登録形状データに置き換えて前記描画情報を復元する前記クライアントに送信するステップと、
を実行させることを特徴とするデータ転送サーバプログラム。
【請求項５】
ネットワークを介して接続するサーバのアプリケーションで作成された描画情報を受信するデータ受信プログラムにおいて、
コンピュータに、
登録手段が、形状の描画に用いる形状データが登録される形状キャッシュ情報をクライアント側キャッシュに記憶しておき、前記アプリケーションサーバによって作成された描画情報に設定された前記形状データのうち、前記形状キャッシュ情報に登録されている前記形状データの領域を、前記形状キャッシュ情報の登録形状データの領域を指示する指示情報に置き換えて生成され、データ転送された描画差分情報を取得し、前記描画差分情報に設定された新たな前記形状データを前記クライアント側キャッシュの前記形状キャッシュ情報に登録するステップと、
データ復元手段が、前記描画差分情報に設定された前記指示情報に基づいて前記クライアント側キャッシュの前記形状キャッシュ情報を検索し、前記描画差分情報の前記指示情報の領域を検索された前記登録形状データに置き換えて前記描画情報を復元するステップと、
を実行させることを特徴とするデータ受信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ転送システム、データ転送サーバプログラム及びデータ受信プログラムに関し、特にネットワークを介して接続するサーバとクライアントとの間で、サーバのアプリケーションで作成された描画情報をクライアントに転送するデータ転送システム、データ転送サーバプログラム及びデータ受信プログラムに関する。
【背景技術】
【０００２】
従来、サーバで処理を行った結果をリモートクライアントに表示する技術の一つとして、Ｗｉｎｄｏｗｓ（登録商標）に採用されているＲＤＰ（Remote Desktop Protocol）がある。
【０００３】
ＲＤＰでは、サーバ側でクライアント側に表示されるべき画面イメージを保持しておき、クライアント側に表示するための情報を画像データの差分情報として適宜送信する。クライアント側では、送られてきた差分情報を元に現在表示されている画面を更新する。すなわち、画像データを生成する処理は、すべてサーバ側で行われる。このＲＤＰでは、画像イメージが３次元形状になった場合でも同様に、サーバ側が画面イメージを保持し、差分情報をクライアントに適宜送信する画像データ転送方式により処理が行われる。
【０００４】
一方、ＲＤＰの様に画像データの情報を送信するのではなく、画像データを生成するための描画コマンドをそのまま送信する方法もある。しかしながら、描画コマンドは画像データよりデータ量が多く、特に、この方式で３次元画像を取り扱うと、画像データで送る場合に比べてデータ転送量が多くなるという問題がある。そこで、これを解決する一手段として、３次元描画ライブラリの標準であるＯｐｅｎＧＬ（Graphics Library）にはディスプレイリストという仕組みが存在する。
【０００５】
この仕組みでは、何度も繰り返して利用する一連の描画コマンドを予め定義しておき、一度だけサーバ側からクライアント側に送信する。クライアント側では、このディスプレイリストを記憶しておく。その後、サーバ側から送信したディスプレイリストを指定すれば、クライアント側で描画を行うことができる。このように、この仕組みは、１つの形状を何度も再描画する場合（３次元形状を様々な方向から見る操作などはこれに相当する）に効果を発揮する。
【０００６】
また、ネットワークの負荷を軽減するため、サーバ、クライアント双方に中継キャッシュを設け、サーバがクライアントに送信したデータを双方の中継キャッシュに格納しておき、クライアントは、クライアントアプリケーションが要求したデータが自装置の中継キャッシュにあればこれを利用するネットワーク通信システムが提案されている（たとえば、特許文献１参照）。
【特許文献１】特開平９−２５１４１４号公報（段落番号〔００２１〕〜〔００３９〕、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、アプリケーションをサーバで一括管理するＡＳＰ（Application Service Provider）と呼ばれる形態を用いる際、従来のスタンドアロン型のアプリケーションをそのまま使用できれば、アプリケーションの修正を行わずにＡＳＰ運用に切り換えることができる。実際、多くの事務系アプリケーションは、ＲＤＰを用いることでＡＳＰ形態での運用に対応できる。しかしながら、従来の技術を用いて３次元形状を扱うアプリケーションをＡＳＰに適用することを考えた場合、性能面から見てＡＳＰ形態として実用的な運営が行えないという問題がある。
【０００８】
まず、サーバ側ですべての画像処理を行うＲＤＰでは、サーバ側のＣＰＵ（Central Processing Unit）の負荷が大きくなるという問題がある。３次元形状の描画には多くの論理演算が必要であり、スタンドアロン型であれば、高速に処理するため、専用のグラフィックアクセラレータを用意してハードウェアレンダリングとする場合が多い。しかし、サーバでは複数のクライアントに対するアプリケーションが同時に動作し、サーバ側に保持している画面イメージへの描画も並行して行われるため、画面イメージごとの処理を基本とする一般的なグラフィックアクセラレータは使用できない。そのため、３次元形状の描画はすべてＣＰＵによるソフトウェアレンダリングとなり、しかも複数のアプリケーションの描画を並行して処理しなければならず、サーバのＣＰＵの負荷は非常に重くなる。サーバＣＰＵの負荷が重くなればサーバの処理全体が遅くなるので、性能面から見てＡＳＰ形態として実用的な運用が行えない。
【０００９】
一方、サーバ側から描画コマンドを送信する方法では、データ転送量が多大になるという問題点がある。ＯｐｅｎＧＬのディスプレイリストは、アプリケーションプログラムにディスプレイリストの処理を組み込まないと機能せず、ＡＳＰ形態を考慮していない従来のアプリケーションでは、ディスプレイリストを効果的に使用できないものが大多数である。ディスプレイリストを使用していないアプリケーションでは、サーバ側からクライアント側へ大量のデータが流れることになる。このため、性能面ではやはりＡＳＰ形態での実用的な運用が行えない。
【００１０】
以上のように、処理負荷が重く、データ転送量も多い３次元形状の処理を行うクライアント・サーバシステムでは、既存の３次元を扱うアプリケーションに手を加えることなく、ＡＳＰ形態のアプリケーションとして運用することは難しい。
【００１１】
本発明はこのような点に鑑みてなされたものであり、サーバ側の負荷を軽減し、ネットワークに流れるデータ量を削減することが可能なデータ転送システムと、そのデータ転送サーバプログラム及びデータ受信プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明では上記課題を解決するために、図１に示すようなデータ転送システムが提供される。本発明に係るデータ転送システムでは、ネットワーク３を介して接続するアプリケーションサーバ（以下、サーバとする）１とクライアント２との間で、サーバ１のアプリケーションで作成された描画情報がクライアント２に転送され、表示装置２ｆに表示される。サーバ１は、サーバ側キャッシュ（以下、キャッシュ１ａとする）、検索登録手段１ｃ及びデータ転送手段１ｄを具備し、クライアント２は、クライアント側キャッシュ（以下、キャッシュ２ａとする）、登録手段２ｃ及びデータ復元手段２ｄを具備する。
【００１３】
サーバ１では、キャッシュ１ａは、所定の形状の描画に用いる形状データが登録される形状キャッシュ情報１ｆを記憶する。検索登録手段１ｃは、アプリケーション（図では３次元アプリケーション）１ｅによって描画情報が作成されると、描画情報に設定された形状データがキャッシュ１ａの形状キャッシュ情報１ｆに登録されているかどうかを検索し、登録されていない場合はこの形状データを形状キャッシュ情報１ｆに登録する。データ転送手段１ｄは、形状データが形状キャッシュ情報１ｆに登録されていた場合に、登録されている形状データが格納される描画情報の領域を、形状キャッシュ情報１ｆに登録された登録形状データを指示する指示情報に置き換えて描画差分情報を作成し、クライアント２へ送信する。クライアント２では、キャッシュ２ａは、形状キャッシュ情報２ｇを記憶する。登録手段２ｃは、送信された描画差分情報を取得すると、描画差分情報に設定された新たな形状データをキャッシュ２ａの形状キャッシュ情報２ｇに登録する。データ復元手段２ｄは、描画差分情報に指示情報が含まれていた場合、その指示情報に基づいてキャッシュ２ａの形状キャッシュ情報２ｇを検索し、描画差分情報の指示情報の領域を検索された登録形状データで置き換えて描画情報を復元する。
【００１４】
このようなデータ転送システムによれば、サーバ１のキャッシュ１ａには形状キャッシュ情報１ｆ、クライアント２のキャッシュ２ａにも形状キャッシュ情報２ｇが保存されている。サーバ１では、アプリケーション１ｅにより新たに描画情報が作成されると、検索登録手段１ｃは、この描画情報に設定された形状データが形状キャッシュ情報１ｆに登録されているかどうかを検索し、登録されていない場合はこの形状データを形状キャッシュ情報１ｆに登録する。こうして、作成された描画情報に設定された形状データが形状キャッシュ情報１ｆに順次登録される。データ転送手段１ｄは、形状キャッシュ情報１ｆに登録された登録形状データが格納される描画情報の領域を指示情報に置き換え、描画差分情報を作成し、クライアント２に送信する。クライアント２では、登録手段２ｃが描画差分情報に設定された新たな形状データを形状キャッシュ情報２ｇに登録する。これにより、クライアント２の形状キャッシュ情報２ｇの登録形状データと、サーバ１の形状キャッシュ情報１ｆの登録形状データは同じになる。データ復元手段２ｄは、指示情報に基づいてクライアント側のキャッシュ２ａの形状キャッシュ情報２ｇから登録形状データを検索し、描画差分情報の指示情報の領域を対応する登録形状データに置き換えることによって元の描画情報を復元する。この描画情報によって、所定の画像イメージが表示装置２ｆに表示される。このように、サーバ１とクライアント２間のデータ転送を描画情報でなく描画差分情報とすることで、データ転送量を削減する。
【００１５】
また、上記課題を解決するために、アプリケーションで作成された描画情報を、ネットワークを介して接続するクライアントに転送するデータ転送サーバプログラムにおいて、コンピュータに、前記アプリケーションによって描画情報が作成されると、作成された前記描画情報に設定された所定の形状の描画に用いる形状データが形状キャッシュ情報に存在するか否かを検索し、前記形状データが登録されていない場合は、前記形状データを新たに前記形状キャッシュ情報に登録してサーバ側キャッシュに格納し、前記形状データが登録されている場合は、前記描画情報の前記形状データの領域を前記形状キャッシュ情報に登録された登録形状データを指示する指示情報に置き換えて描画差分情報を生成し、前記描画差分情報を、クライアント側キャッシュに前記形状キャッシュ情報を格納し、前記描画差分情報に設定された前記指示情報から前記クライアント側キャッシュを検索し、前記指示情報の領域を検索された前記登録形状データに置き換えて前記描画情報を復元するクライアントに送信する、手順を実行させることを特徴とするデータ転送サーバプログラムが提供される。
【００１６】
このようなデータ転送サーバプログラムがコンピュータで実行されると、コンピュータは、アプリケーションによって描画情報が作成されると、描画情報に設定された形状データがサーバ側キャッシュに格納される形状キャッシュ情報に登録されていない場合は、新たに形状キャッシュ情報に登録する。また、形状データが形状キャッシュ情報に登録されている場合は、この形状データが格納される描画情報の領域を形状キャッシュ情報に登録されている登録形状データを指示する指示情報に置き換え、描画差分情報を生成する。この描画差分情報は、サーバ側の形状キャッシュ情報と同等の形状キャッシュ情報を具備し、指示情報を形状データに復元可能なクライアントに送信する。このように置き換えが行われた描画差分情報は、描画情報に比べてデータ量が削減される。
【００１７】
また、上記課題を解決するために、ネットワークを介して接続するサーバのアプリケーションで作成された描画情報を受信するデータ受信プログラムにおいて、コンピュータに、形状の描画に用いる形状データが登録される形状キャッシュ情報をクライアント側キャッシュに記憶しておき、前記アプリケーションサーバによって作成された描画情報に設定された前記形状データのうち、前記形状キャッシュ情報に登録されている前記形状データの領域を、前記形状キャッシュ情報の登録形状データの領域を指示する指示情報に置き換えて生成され、データ転送された描画差分情報を取得し、前記描画差分情報に設定された新たな前記形状データを前記クライアント側キャッシュの前記形状キャッシュ情報に登録し、前記描画差分情報に設定された前記指示情報に基づいて前記クライアント側キャッシュの前記形状キャッシュ情報を検索し、前記描画差分情報の前記指示情報の領域を検索された前記登録形状データに置き換えて前記描画情報を復元する、手順を実行させることを特徴とするデータ受信プログラムが提供される。
【００１８】
このようなデータ受信プログラムがコンピュータで実行されると、コンピュータは、サーバによって作成された描画差分情報を取得し、描画差分情報に設定された新たな形状データをクライアント側キャッシュの形状キャッシュ情報に登録する。こうして作成される形状キャッシュ情報の内容は、サーバ側キャッシュに格納される形状キャッシュ情報の内容と同等で、同じ形状データが格納される。また、描画差分情報には、既に形状キャッシュ情報に登録されている形状データの領域には、形状データではなく、その形状データを指示する指示情報が設定されている。そこで、指示情報に基づいてクライアント側キャッシュの形状キャッシュ情報を検索し、検索された登録形状データで指示情報の領域を置き換え、描画差分情報から描画情報を復元する。
【発明の効果】
【００１９】
本発明では、サーバとクライアントとで、形状データを形状キャッシュ情報に登録しておき、サーバからクライアントへ描画情報を送信する際に、登録された形状データをそのまま送信するのではなく、対応する形状キャッシュ情報に登録された登録形状データの指示情報として送信する。これにより、新たな形状データのみがそのまま設定される描画差分情報が転送され、データ転送量を削減することができる。また、描画情報として、描画コマンドを送信すれば、サーバ側の画像処理に要する負荷を削減することができる。この結果、ＡＳＰ形態の３次元アプリケーションに適用すれば、既存の３次元を扱うアプリケーションに手を加えることなく、ＡＳＰ形態のアプリケーションとしての運用に適した３次元表示性能を持つアプリケーションとして使用することができる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の実施の形態を図面を参照して説明する。まず、実施の形態に適用される発明の概念について説明し、その後、実施の形態の具体的な内容を説明する。
図１は、実施の形態に適用される発明の概念図である。
【００２１】
本発明に係るデータ転送システムは、サーバ１とクライアント２がネットワーク３を介して接続し、サーバ１で行ったアプリケーション処理の結果をクライアント２で表示するクライアント・サーバシステムに適用される。
【００２２】
サーバ１は、サーバ側キャッシュ１ａ、差分抽出処理部１ｂ及び３次元アプリケーション１ｅを有する。また、差分抽出処理部１ｂは、検索登録手段１ｃとデータ転送手段１ｄを有する。
【００２３】
サーバ側キャッシュ１ａは、サーバ１に設けられ、アプリケーションで設定された形状データが登録される形状キャッシュ情報１ｆを格納する記憶手段である。形状キャッシュ情報１ｆには、３次元アプリケーション１ｅによって作成された描画情報に設定される形状データ部が抽出され、形状データごとに一意の形状番号が付与されて登録される。
【００２４】
検索登録手段１ｃは、３次元アプリケーション１ｅによって描画情報が作成されると、描画情報に設定される形状データが、形状キャッシュ情報１ｆに登録されているかどうかを検索し、登録されていない場合は、この形状データを形状キャッシュ情報１ｆに登録する。登録は、形状キャッシュ情報１ｆへ形状データごとに一意の形状番号を付与して行う。たとえば、形状キャッシュ情報１ｆへの登録順に１から順に番号を付与していく。なお、詳細は後述するが、クライアント２でも同様の手順で形状データの登録が行われ、形状キャッシュ情報１ｆと同じ内容の形状キャッシュ情報２ｇが設定される。
【００２５】
データ転送手段１ｄは、３次元アプリケーション１ｅの作成した描画情報をクライアント２へデータ転送する。このとき、描画情報に設定された形状データ以外のデータは、そのまま送信データに設定する。形状データについては、検索登録手段１ｃによって形状キャッシュ情報１ｆに登録されていることが検索された形状データは、形状データの領域を形状キャッシュ情報１ｆの登録形状データを指示する指示情報に置き換える。たとえば、描画情報の形状データの領域を登録形状データに一意に設定される形状番号に置き換えて送信データに設定する。一般に、形状データは、描画情報の多くの部分を占め、所定の形状を描画するため、一つの形状について頂点や法線の指定などが複数設定される。このため、描画情報に設定された形状データの領域を指示情報（対応する登録形状データの形状番号）に置き換えることで、このデータ領域を削減することができる。また、検索登録手段１ｃによって登録が検索されなかった形状データは、そのまま送信データに設定する。このようにして、一度クライアント２に送信された形状データを指示情報に置き換えた描画差分情報（描画情報の差分情報）を送信データとしてクライアント２に送信する。
【００２６】
また、必要に応じて、座標値データをサーバ１側からクライアント２側に送信する際に、クライアント２側のディスプレイに描画される際にどの程度の精度が必要かを事前に計算し、座標値に高い精度が必要ないと判断できる場合は一部の座標値を近似値とすることで、送信データ量を削減する。その後、形状を拡大表示する操作などが行われ精度が必要になった場合は、その時点で座標値の精度を高めるための座標値差分データを送信する。
【００２７】
３次元アプリケーション１ｅは、アプリケーション処理を行って、所定の画面イメージを描画する描画情報を生成する。
なお、上記の説明のサーバ１の各処理手段は、サーバコンピュータがデータ転送サーバプログラムを実行することにより、その処理機能を実現する。
【００２８】
一方、クライアント２は、クライアント側キャッシュ２ａ、差分復元処理部２ｂ、描画処理手段２ｅ及び表示装置２ｆを有する。また、差分復元処理部２ｂは、登録手段２ｃとデータ復元手段２ｄを有する。
【００２９】
クライアント側キャッシュ２ａは、クライアント２に設けられ、アプリケーションで設定された形状データが登録される形状キャッシュ情報２ｇを格納する記憶手段である。
登録手段２ｃは、描画差分情報を取得すると、描画差分情報に設定された形状データを自装置のクライアント側キャッシュ２ａの形状キャッシュ情報２ｇに登録する。このとき、サーバ１の検索登録手段１ｃと同様に、形状キャッシュ情報２ｇへ形状データごとに一意の形状番号を付与する。たとえば、登録順に１から順に形状番号を付与して登録を行う。描画差分情報に設定されている形状データは、サーバ１側においても形状キャッシュ情報１ｆに登録されるので、サーバ１と同様の順序で登録を行えば、サーバ１の形状キャッシュ情報１ｆと同じ形状番号を付与することができる。また、サーバ１側から形状番号を指示するようにしておき、指示された形状番号で登録することもできる。また、サーバ１から座標値差分データを取得した場合には、座標値差分データを用いて形状キャッシュ情報２ｇ内の座標値を修正し、修正した形状データを登録する。
【００３０】
データ復元手段２ｄは、描画差分情報に設定されている指示情報を読み出し、指示情報に基づいてクライアント側キャッシュ２ａの形状キャッシュ情報２ｇを検索し、検索された登録形状データで指示領域を置き換える。上述のように、サーバ側の形状キャッシュ情報１ｆとクライアント側の形状キャッシュ情報２ｇには、同一の登録形状データについては同じ形状番号が付与されるので、指示情報によって指示された形状番号より、元の形状データを復元することができる。こうして、すべての指示情報を形状データに置き換えて、描画情報を復元する。
【００３１】
描画処理手段２ｅは、データ復元手段２ｄによって復元された描画情報を処理する。描画情報が描画コマンドである場合、描画コマンドを解釈し、画像イメージを生成し、表示装置２ｆにその画像イメージを表示させる。
【００３２】
なお、上記の説明のクライアント２の各処理手段は、クライアントコンピュータがデータ受信プログラムを実行することにより、その処理機能を実現する。
以上の説明のデータ転送システムの動作について説明する。
【００３３】
サーバ１では、３次元アプリケーション１ｅがクライアント２に転送する描画情報を作成したタイミングで、差分抽出処理部１ｂにより描画情報がフックされる。差分抽出処理部１ｂでは、検索登録手段１ｃが、作成された描画情報に設定される形状データが形状キャッシュ情報１ｆに登録されているかどうかを検索し、登録されていない場合は、その形状データに形状番号を付与して形状キャッシュ情報１ｆに登録する。形状データ以外のデータに、座標の精度に関する情報が含まれている場合は、これも含めて登録を行う。データ転送手段１ｄは、描画情報のうち、形状データについて、検索登録手段１ｃによって形状キャッシュ情報１ｆに登録されていることが確認されたものについて、形状データ領域を形状キャッシュ情報１ｆの登録形状データの指示情報に置き換える。また、置き換えを行わない場合についても、必要に応じて、クライアント側での描画に必要な精度を判定し、判定結果に応じて一部の座標値を近似値とすることで送信データ量を削減する。この場合、その後精度が必要になった場合は、置き換えた指示情報とともに座標値の精度を上げるための座標値差分データを送信する。こうして、形状データ以外のデータ及び形状キャッシュ情報１ｆに登録されていなかった形状データはそのままで、登録されていた形状データは指示情報に置き換えられた描画差分情報が生成され、クライアント２に送信される。
【００３４】
クライアント２では、描画差分情報を取得すると、差分復元処理部２ｂは、描画差分情報から描画情報を復元して描画処理手段２ｅへ送る。すなわち、登録手段２ｃは、描画差分情報に設定される形状データをサーバ１と同じ形状番号を付与して形状キャッシュ情報２ｇに登録する。また、座標値の精度を上げるための座標値差分データを取得した場合には、座標値差分データを用いて登録されている形状データの座標値を修正する。データ復元手段２ｄは、描画差分情報に設定された指示情報に基づき形状キャッシュ情報２ｇを検索し、検索された登録形状データで指示情報領域を置き換える。こうして、サーバ１の３次元アプリケーション１ｅが作成した描画情報が復元され、描画処理手段２ｅで処理され、表示装置２ｆにその画面イメージが表示される。
【００３５】
このように、描画情報すべてをデータ転送するのではなく、描画差分情報とすることで、データ転送量を削減することができる。特に３次元アプリケーションでは、視点を少しずらして表示を行うような操作がよく行われており、この場合、大多数の形状データは視点の移動前と移動後で変化がない。形状データはサイズが大きいので、変化のない形状データを、形状番号を指示するだけの指示情報に置き換えることにより、データ転送量を大幅に削減することができる。また、形状データの座標値の精度を考慮して送信データを決めることにより、データ量を削減し、初期表示時の待ち時間を短縮することができる。
【００３６】
なお、クライアントに形状データを確実に形状キャッシュ情報に登録させ、形状番号をサーバ側と一致させるため、サーバ側で送信データにキャッシュの登録指示コマンドと、形状番号を付与するようにしてもよい。クライアント側では、指示に従って形状データを登録し、形状番号を付与する。
【００３７】
以下、実施の形態を、ＯｐｅｎＧＬを用いた３次元アプリケーションシステムに適用した場合を例に、図面を参照して詳細に説明する。
図２は、第１の実施の形態の３次元アプリケーションシステム構成を示した図である。
【００３８】
第１の実施の形態の３次元アプリケーションシステムは、ネットワーク３を介して接続するクライアント１（２０ａ）、クライアント２（２０ｂ）、・・・、クライアントｎ（２０ｃ）からの要求に応じてサーバ１０の３次元アプリケーションが起動される。なお、ｎは任意の整数である。
【００３９】
サーバ１０は、キャッシュ１１、差分抽出処理部１２、３次元アプリケーション（以下、３次元ＡＰとする）１３、キャッシュ管理部１４及び通信処理部１５を有する。
キャッシュ１１は、形状キャッシュ情報１ｆを記憶する記憶手段である。キャッシュテーブル１００は、クライアントごとに設置されるキャッシュテーブル（形状キャッシュ情報の記憶領域）の集合体である。図２では、キャッシュテーブル（１）はクライアント１、キャッシュテーブル（２）はクライアント２、キャッシュテーブル（ｎ）はクライアントｎに対応する。差分抽出処理部１２は、３次元ＡＰの作成した描画情報に基づき、クライアントごとのキャッシュテーブルを登録する検索登録手段と描画差分情報を作成してデータ転送するデータ転送手段を備える。３次元ＡＰ１３は、クライアント側からの起動要求で３次元ＡＰを実行し、描画情報として、３次元画像の形状を描画するための描画コマンド群を作成する。キャッシュ管理部１４は、キャッシュ１１を管理し、各キャッシュテーブルの登録形状データの個数が増え、キャッシュテーブル１００のデータサイズが所定の大きさを超えた場合に登録形状データの削除を行う。キャッシュテーブル１００の管理の詳細については後述する。通信処理部１５は、ネットワーク３を介して接続する各クライアントとの間の通信制御を行う。
【００４０】
クライアント１（２０ａ）、クライアント２（２０ｂ）、・・・、クライアントｎ（２０ｃ）の構成は同様であるので、以下、クライアント１（２０ａ）について説明する。
クライアント１（２０ａ）は、キャッシュ２１、通信処理部２２、差分復元処理部２３、描画処理部２４、表示装置２５及びキャッシュ管理部２６を有する。
【００４１】
キャッシュ２１は、形状キャッシュ情報２ｇを記憶する記憶手段である。キャッシュ２１には、サーバ１０のキャッシュテーブル１００のうち、自装置に対応するキャッシュテーブルのデータが格納される。通信処理部２２は、ネットワーク３を介してサーバ１０との間の通信制御を行う。差分復元処理部２３は、サーバ１０から受信した描画差分情報に基づき、形状データの登録を行う登録手段と描画情報を復元するデータ復元手段を備える。描画処理部２４は、描画情報の描画コマンドを解釈し、表示装置２５に所定の画面を表示する。キャッシュ管理部２６は、サーバ１０のキャッシュ管理部１４と同等のキャッシュ管理処理を行い、キャッシュテーブルの登録形状データの個数が増え、データサイズが所定の大きさを超えた場合に登録形状データの削除を行う。
【００４２】
以上の説明のサーバ１０及びクライアント１（２０ａ）、クライアント２（２０ｂ）、・・・、クライアントｎ（２０ｃ）は、コンピュータがそれぞれデータ転送サーバプログラム及びデータ受信プログラムを実行することによってその処理機能を実現する。以下、クライアントを特定する必要がない場合は、クライアント２０と表記する。
【００４３】
ここで、クライアントコンピュータのハードウェア構成について説明する。図３は、第１の実施の形態のクライアントのハードウェア構成例を示すブロック図である。
クライアント２０は、ＣＰＵ２０１によって装置全体が制御されている。ＣＰＵ２０１には、バス２０７を介してＲＡＭ（Random Access Memory）２０２、ハードディスクドライブ（ＨＤＤ：Hard Disk Drive）２０３、描画処理装置２０４、入力インタフェース２０５、通信インタフェース２０６が接続されている。
【００４４】
ＲＡＭ２０２には、ＣＰＵ２０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ２０２には、ＣＰＵ２０１による処理に必要な各種データが格納される。ＨＤＤ２０３には、ＯＳやアプリケーションのプログラムが格納される。描画処理装置２０４には、モニタ２０８が接続されており、ＣＰＵ２０１からの命令に従って描画コマンドを解釈し、描画コマンドに基づく画像をモニタ２０８の画面に表示させる。入力インタフェース２０５には、キーボード２０９ａやマウス２０９ｂが接続されており、キーボード２０９ａやマウス２０９ｂから送られてくる信号を、バス２０７を介してＣＰＵ２０１に送信する。通信インタフェース２０６は、ネットワーク３に接続されており、ネットワーク３を介しサーバ１０との間でデータの送受信を行う。
【００４５】
このようなハードウェア構成によって、第１の実施の形態の処理機能を実現することができる。なお、図３には、クライアントのハードウェア構成を示したが、サーバのハードウェア構成も同様である。
【００４６】
このような構成のデータ転送システムの動作について説明する。
クライアント１（２０ａ）、クライアント２（２０ｂ）、・・・、クライアントｎ（２０ｃ）からのアプリケーション起動要求が通信処理部２２を介してサーバ１０に送信される。アプリケーション起動要求は、ネットワーク３を介してサーバ１０の通信処理部１５で受信される。起動要求により３次元ＡＰ１３が処理を開始し、描画情報を生成する。
【００４７】
描画情報について説明する。図４は、第１の実施の形態のアプリケーションにより作成される描画情報の一例の構成図である。
３次元ＡＰによって作成される描画情報３００は、形状データ以外のデータ部３１０と、処理単位ごとの形状データを含む形状全体部（図では、形状１の形状全体部３２０、・・・、形状ｎの形状全体部３３０）を有する。
【００４８】
形状データ以外のデータ部３１０は、視点の設定（ｇｌＭａｔｒｉｘ）、光源の設定（ｇｌＬｉｇｈｔ）、色の指定（ｇｌＣｏｌｏｒ）など、形状を表す形状データ以外のデータが設定される。
【００４９】
形状全体部３２０、３３０は、処理単位である形状ごとに、形状を描画するための描画コマンド群である形状データを含む形状に関する情報が設定される。各形状全体部は、形状１の形状全体部３２０を例にとると、形状１の一条列の指定（ｇｌＭａｔｒｉｘ）３２１と、形状１の一部分の形状を描画するための形状コマンド列である部分形状１（３２２）、・・・、部分形状ｎ（３２３）を有する。各部分形状は、部分形状１（３２２）を例にとると、形状定義開始（ｇｌＢｅｇｉｎ）３２２ａで開始され、頂点の指定（ｇｌＶｅｒｔｅｘ）、法線の指定（ｇｌＮｏｒｍａｌ）が繰り返され、形状定義終了（ｇｌＥｎｄ）３２２ｂで終了する。そして、同様に、各部分形状が、形状定義開始（ｇｌＢｅｇｉｎ）から形状定義終了（ｇｌＥｎｄ）の間で定義される。そして、最終の部分形状ｎ（３２３）が、形状定義開始（ｇｌＢｅｇｉｎ）３２３ａで開始され、形状定義終了（ｇｌＥｎｄ）３２３ｂで終了する。
【００５０】
差分抽出処理部１２は、形状データとして、形状１の最初の部分形状１の形状定義開始（ｇｌＢｅｇｉｎ）３２２ａから、最終の部分形状ｎの形状定義終了（ｇｌＥｎｄ）３２３ｂまでのコマンド列が繰り返される部分を１つの形状データ（キャッシュ単位）として認識し、キャッシュテーブル１００の該当するクライアントのキャッシュテーブルに格納する。
【００５１】
次に、クライアントごとに用意されるキャッシュテーブルの構成について説明する。図５は、第１の実施の形態のキャッシュテーブルの一例の構成図である。なお、キャッシュテーブルは、クライアント２０でも同様の構成で作成される。
【００５２】
キャッシュテーブルは、全体キャッシュサイズ４０１と最上位ポインタ４０２及び最下位ポインタ４０３から成る全体情報４００と、各形状キャッシュデータ４１０、４２０、４３０、・・・を有する。
【００５３】
全体情報４００の全体キャッシュサイズ４０１には、使用されているキャッシュメモリの全体キャッシュサイズが設定される。最上位ポインタ４０２には、最新に利用された形状キャッシュデータを指示するポインタ情報が、最下位ポインタ４０３には、最も古くに利用された形状キャッシュデータを指示するポインタ情報が設定される。これらの値は、形状データがキャッシュテーブルに登録されるごとに更新される。
【００５４】
各形状キャッシュデータ４１０、４２０、４３０、・・・は、形状キャッシュデータ４１０を例に取ると、登録時に付与される形状番号４１１と、形状キャッシュデータのデータサイズ４１２、形状データに関する精度情報４１３、自身より上位に設定される形状キャッシュデータを指示する上位ポインタ４１４、自身より下位に設定される形状キャッシュデータを指示する下位ポインタ４１５およびＯｐｅｎＧＬコマンド形式の形状データ４１６を有する。形状データ４１６は、図４で説明した形状定義開始（ｇｌＢｅｇｉｎ）から形状定義終了（ｇｌＥｎｄ）の間で繰り返されるコマンド列である。なお、精度情報４１３は、必要がなければ削除されてもよい。これにより、最上位ポインタ４０２から各形状キャッシュデータの下位ポインタにより、登録される形状キャッシュデータを最新の形状キャッシュデータから順に辿ることができる。また、最下位ポインタ４０３から各形状キャッシュデータの上位ポインタにより、登録される形状キャッシュデータを最も古い形状キャッシュデータから順に辿ることができる。
【００５５】
サーバ１０のキャッシュ管理部１４及びクライアント２０のキャッシュ管理部２６は、登録される形状キャッシュデータの全体サイズが予め用意されたキャッシュメモリの範囲を超えないように、形状キャッシュデータの全体キャッシュサイズが最大値を超えると、最近利用されていない形状キャッシュデータから順に登録を削除し、新たな形状キャッシュデータを登録する領域を確保する。
【００５６】
このため、サーバ１０の差分抽出処理部１２では、形状キャッシュデータの検索・登録処理を行う際に、描画情報を順に調べ、描画情報に設定されている形状データが最上位となるように最上位ポインタ４０２と最下位ポインタ４０３及び各形状キャッシュデータの上位ポインタと下位ポインタを操作する。すなわち、新たに形状キャッシュデータを登録する場合は、最上位ポインタ４０２がこの形状キャッシュデータを指すように変更し、形状キャッシュデータの下位ポインタは、現在最上位の形状キャッシュテーブルを指示するように設定する。同様に、これまで最上位の形状キャッシュデータの上位ポインタは、新たに登録される形状キャッシュデータを指示するように変更する。また、描画情報の形状データが既に登録されていた場合、その形状データが最上位となるように、最上位ポインタ４０２及び最下位ポインタ４０３と関連する形状キャッシュデータの上位ポインタ及び下位ポインタを変更する。こうして、最新に利用された最上位の形状キャッシュデータから順に、形状キャッシュデータがポインタでつながるようにする。図の例では、最上位ポインタ４０２は、最上位として形状キャッシュデータ４１０を指示し、形状キャッシュデータ４１０は形状キャッシュデータ４２０、形状キャッシュデータ４２０は形状キャッシュデータ４３０を指示する。また、形状データが登録されるごとに、全体キャッシュサイズ４０１を更新しておく。なお、クライアント２０の差分復元処理部２３においても、サーバ１０から取得した描画差分情報に基づき、新たに登録する形状データ及び指示情報に設定された既にキャッシュテーブル１０１に登録済みの形状キャッシュデータのポインタ操作を同様に行い、最新に利用された形状キャッシュデータから順につながるようにしておく。
【００５７】
キャッシュ管理部１４は、所定のタイミングで全体キャッシュサイズ４０１を調べ、全体キャッシュサイズが最大値を超えていた場合、最下位ポインタ４０３を参照して、最も古い時刻に利用があった形状キャッシュデータから削除を行う。削除は、所定の空き領域が確保されるまで行う。なお、クライアント２０のキャッシュ管理部２６も同様の処理を行う。
【００５８】
次に、サーバ１０の差分抽出処理部１２が、図４に示した描画情報を取得してから、クライアント２０に送信する描画差分情報を作成するまでの動作について図６と図７を参照して説明する。図６は、第１の実施の形態における形状データを送信する場合の送信データの一例を示した図であり、図７は、形状データを指示情報に置き換えて送信する場合の送信データの一例を示した図である。図６と図７の共通の部については、同じ番号を付す。
【００５９】
送信データ５００ａ、５００ｂは、形状データ以外のデータ５１０と、処理単位ごとの形状データのデータ、図の例では、形状１（５２０）、形状２（５３０）、・・・、の各形状データに関する情報部を有する。
【００６０】
差分抽出処理部１２では、まず、描画情報の形状データ以外のデータ部３１０をそのまま送信用のデータを一時記憶する送信バッファに転送する。こうして、送信バッファの送信データ５００ａ、５００ｂに、視点の設定や光源の設定などの形状データ以外のデータ５１０が設定される。
【００６１】
次に、処理単位である形状全体部ごとに、まず、形状データ以外のデータである位置行列の指定が送信データ５００ａ、５００ｂの形状ごとの領域の先頭の関連データ５２１に設定される。こうして、形状１（５２０）の先頭領域に関連データ５２１が設定され、形状２（５３０）の先頭領域に関連データ５３１が設定される。
【００６２】
続いて、形状データが、該当キャッシュテーブルに登録されているかどうかを検索する。描画情報とキャッシュテーブルの形状データが一致しているかどうかの照合は、一般に知られている照合方法を適宜利用する。たとえば、形状データ全体を逐次比較する方法や、データから所定の照合キーを作成し、キー同士を比較する方法などがある。
【００６３】
検索の結果、キャッシュテーブル内に処理単位の形状データが登録されていない場合、描画情報の形状データ部をそのまま設定する。このとき、形状データの前に、キャッシュの開始を指示する「キャッシュ開始」コマンドを形状番号とともに設定する。たとえば、形状１と形状２が新たにキャッシュ対象となった場合、図６に示したように、形状１（５２０）に、形状番号を引数とするキャッシュ開始指示５２２と、形状データ５２３が設定される。形状データ５２３は、図４に示した形状１に関する形状定義開始３２２ａから形状定義終了３２２ｂまでのコマンド群である。同様に、形状２（５３０）に、キャッシュ開始指示５３２と形状データ５３３が設定される。
【００６４】
一方、検索の結果、キャッシュテーブル内に形状データが登録されていた場合、描画情報の形状データ部を登録された形状情報を指示する情報に置き換える。たとえば、形状１と形状２がキャッシュ登録されている場合、図７に示したように、形状１（５２０）のキャッシュ開始指示５２２と形状データ５２３の領域部分に「キャッシュ利用」コマンドを設定し、キャッシュ利用指示５２４に置き換える。キャッシュ利用指示５２４は、利用する形状キャッシュデータの形状番号など、形状キャッシュデータを特定するための指示情報が設定される。同様に、形状２（５３０）のキャッシュ開始指示５３２と形状データ５３３がキャッシュ利用指示５３４に置き換えられる。
【００６５】
送信データ５００ａを受信したクライアント２０は、キャッシュ開始指示５２２、５３２に従って、キャッシュ開始指示以降の形状データを指示された形状番号でキャッシュテーブル１０１に登録する。以降、送信データ５００ｂを受信したクライアントは、キャッシュ利用指示５２４、５３４に従ってキャッシュテーブル１０１を検索し、指示された形状番号に該当する形状データをキャッシュテーブル１０１から抽出し、キャッシュ利用指示５２４、５３４と置き換える。これにより、サーバ１０のアプリケーションが作成した描画情報が復元される。復元された描画情報は、描画処理部２４で処理され、表示装置２５に表示される。
【００６６】
このように、新たに作成された形状データは、図６に示したように、キャッシュ登録の指示とともに送信するが、一旦キャッシュ登録された形状データは、それを利用する指示情報のみを送信する。たとえば、クライアント２の画面に表示されている３次元形状を回転させるという操作を行った場合、形状データそのものは変化がないので、図６の送信データ５００ａが１回送信され、その後は、図７の送信データ５００ｂが送信される。
【００６７】
これにより、ＡＳＰ形態の３次元ＡＰにおけるサーバ・クライアント間のデータ転送量を大幅に削減することができる。また、データ転送量を削減できることから、画像データを送る場合に比べてデータ量が多くなる描画コマンド群のデータ転送を高速に処理することが可能となる。この結果、サーバのＣＰＵの負荷を軽減し、ＡＳＰ運用に適した３次元表示性能を有するアプリケーションシステムを実現することができる。特に、従来のクライアント・サーバ型のシステムとして、最適化されていない３次元ＡＰについて、このアプリケーションを変更することなく、ＡＳＰ運用に耐えうる３次元表示性能を持つアプリケーションとして使用することが可能となる。
【００６８】
次に、第１の実施の形態におけるサーバ及びクライアントで実行されるデータ転送処理手順について、フローチャートを用いて順次説明する。
まず、データ転送処理全体について説明する。図８は、第１の実施の形態のデータ転送処理手順を示したフローチャートである。
【００６９】
サーバ、クライアント双方でコンピュータが起動され、クライアントでユーザが操作を行ったことで処理が開始される。
まず、クライアント側処理について説明する。
【００７０】
［ステップＳ１１］  クライアントに対し、ユーザが画像処理の操作を行ったので、その操作内容について、ネットワーク経由でサーバに通知する。
［ステップＳ１２］  サーバから描画差分情報が送信されるまで、データ待ちの状態を継続する。サーバから描画差分情報を取得すると、ステップＳ１３へ処理を進める。
【００７１】
次に、クライアントから操作内容を取得した後のサーバ処理について説明する。
［ステップＳ２１］  サーバは、３次元ＡＰを起動し、操作に対する処理を行い、描画情報を作成する。
【００７２】
［ステップＳ２２］  描画情報を形状データ以外のデータと形状データの２種類に区別する。
［ステップＳ２３］  ステップＳ２２のデータ区別に従って、所定の領域が形状データに分離されているかどうかを判定する。形状データでない場合、処理をステップＳ２５へ進める。
【００７３】
［ステップＳ２４］  領域が形状データに分類された場合、形状データのキャッシュへの登録と、送信データの置き換えを行うキャッシュ処理を実行する。キャッシュ処理の詳細は後述する。キャッシュ処理により描画差分情報が送信バッファに設定される。
【００７４】
［ステップＳ２５］  ステップＳ２４で作成された描画差分情報をクライアントにデータ転送する。
［ステップＳ２６］  キャッシュサイズをチェックし、必要に応じて形状キャッシュデータの登録を抹消するキャッシュ管理を実行する。キャッシュ管理処理の詳細は後述する。
【００７５】
［ステップＳ２７］  全データが終了したがどうかを判定し、終了していない場合は、ステップＳ２２に戻って、描画情報の次の領域の処理を実行する。終了した場合は、ステップＳ２１に戻って、次の処理要求を待つ。
【００７６】
説明を描画差分情報を取得したクライアントの処理に戻す。
［ステップＳ１３］  取得した描画差分情報に基づき、処理単位ごとに、形状キャッシュデータの登録、もしくは利用指示がされた形状データを復元するキャッシュ処理を行う。クライアントのキャッシュ処理の詳細は後述する。キャッシュ処理により、描画情報が復元される。
【００７７】
［ステップＳ１４］  描画情報に基づき、処理単位の３次元画像イメージを表示する描画処理を行う。
［ステップＳ１５］  キャッシュサイズをチェックし、必要に応じて形状キャッシュデータの登録を抹消するキャッシュ管理を実行する。キャッシュ管理処理の詳細は後述する。
【００７８】
［ステップＳ１６］  全データが終了したかどうかを判定し、終了していない場合は、ステップＳ１３に戻って次の処理単位の処理を行う。終了した場合は、ステップＳ１１に戻って、次の操作を待つ。
【００７９】
次に、サーバ側のキャッシュ処理について説明する。図９は、第１の実施の形態のサーバのキャッシュ処理手順を示したフローチャートである。
［ステップＳ１０１］  描画情報の形状データについて、今回のデータと一致する形状キャッシュデータがキャッシュテーブル内に存在するかどうか、キャッシュテーブルを検索する。
【００８０】
［ステップＳ１０２］  ステップＳ１０１の処理により検索されたどうか、すなわち形状キャッシュデータであるかどうかを判定する。登録されていた場合、処理をステップＳ１０３へ進め、登録されていなかった場合は処理をステップＳ１０６へ進める。
【００８１】
［ステップＳ１０３］  今回のデータの形状データが登録されていた場合、一致した形状キャッシュデータの形状番号を取得する。
［ステップＳ１０４］  取得した形状番号を引数に設定し、「キャッシュ利用」コマンドを送信データに設定する。
【００８２】
［ステップＳ１０５］  一致した形状キャッシュデータ、すなわち、利用された形状キャッシュデータをキャッシュテーブルの最上位に移動し、関連する情報の書き換えを行う。
【００８３】
［ステップＳ１０６］  今回のデータの形状キャッシュデータが登録されていなかった場合、この形状データをキャッシュテーブルに登録する。一意の形状番号をこの形状データに割り当て、形状番号とともに所定のキャッシュテーブル領域に形状データを格納する。また、この形状キャッシュデータがキャッシュテーブルの最上位となるように関連する情報の書き換えを行う。
【００８４】
［ステップＳ１０７］  全体キャッシュサイズ４０１に、今回設定された形状キャッシュデータのサイズを追加し、全体キャッシュサイズ４０１を更新する。
［ステップＳ１０８］  設定した形状番号を引数に設定し、「キャッシュ開始」コマンドを形状データとともに送信データに設定する。
【００８５】
次に、クライアント側のキャッシュ処理について説明する。図１０は、第１の実施の形態のクライアントのキャッシュ処理手順を示したフローチャートである。
［ステップＳ２０１］  描画差分情報の所定の領域ごとに、この領域に設定されたコマンドを判定する。コマンドが「キャッシュ利用」の場合、処理をステップＳ２０２へ進める。コマンドが「キャッシュ開始」の場合、処理をステップＳ２０５へ進める。そして、それ以外のコマンド、もしくはコマンドが設定されていない場合、処理をステップＳ２０８へ進める。
【００８６】
［ステップＳ２０２］  「キャッシュ利用」コマンドが設定されていた場合、コマンドの引数である形状番号を参照して、自装置のキャッシュテーブルを検索し、一致する形状番号の形状キャッシュデータを抽出する。
【００８７】
［ステップＳ２０３］  抽出された形状キャッシュデータを描画用バッファに設定する。こうして、描画に用いる描画情報が描画用バッファ上に復元される。
［ステップＳ２０４］  この形状キャッシュデータがキャッシュテーブルの最上位になるように関連する情報の書き換えを行う。
【００８８】
［ステップＳ２０５］  「キャッシュ開始」コマンドが設定されていた場合、コマンドに続く形状データの終端までを描画用バッファに転送する。
［ステップＳ２０６］  コマンドに続く形状データを指示された形状番号でキャッシュテーブルに登録する。この形状キャッシュデータがキャッシュテーブルの最上位になるように関連する情報の書き換えを行う。
【００８９】
［ステップＳ２０７］  全体キャッシュサイズ４０１に、今回取得した形状データのサイズを加算し、全体キャッシュサイズ４０１を更新する。
［ステップＳ２０８］  そのほかのコマンドの場合、データは、形状データ以外に分類されるデータなので、そのまま描画用バッファに設定する。
【００９０】
次に、サーバ及びクライアントのキャッシュ管理処理について説明する。図１１は、第１の実施の形態のサーバ及びクライアントのキャッシュ管理手順を示したフローチャートである。
【００９１】
［ステップＳ３０１］  全体キャッシュサイズ４０１と最大値を比較し、全体キャッシュサイズ４０１が最大値を超えたかどうかを判定する。最大値を超えていない場合は、処理を終了する。
【００９２】
［ステップＳ３０２］  全体キャッシュサイズ４０１が最大値を超えた場合、キャッシュテーブルのポインタ情報に従って、形状キャッシュデータを利用された時刻が古いものから順に削除する。削除は、全体のサイズが所定の「削除時規定値」に収まるまで行われる。これにより、次の形状キャッシュデータを登録する領域を確保する。「削除時規定値」は、システムに応じて任意に設定される。たとえば、削除処理を頻繁に実行したくない場合は、「削除時規定値」を小さく設定する。
【００９３】
［ステップＳ３０３］  全体キャッシュサイズ４０１から削除された形状キャッシュデータ分のサイズを減算し、全体キャッシュサイズ４０１を更新する。
以上の処理手順が実行されることにより、第１の実施の形態のデータ転送処理が行われる。
【００９４】
次に、第２の実施の形態について説明する。第１の実施の形態では、同じ形状でも形状データの用いる座標値の精度（解像度）が異なる場合には、新規にキャッシュに登録される形状データを全て送信していたが、第２の実施の形態では、座標値の精度判定を行い、必要がない場合には一部の座標値を近似値とすることで送信データ量を削減するとともに、表示サイズが変更され、精度の高いデータを送る必要が生じた場合には、座標値の精度を上げるための差分情報を送るとする。また、法線データをデータ量を削減できる形式に変換する。
【００９５】
なお、第２の実施の形態における３次元アプリケーションシステムが有する処理機能の構成要素は、図２に示した第１の実施の形態の構成要素と同様である。そこで、図２に示した構成要素の符号を用いて、第２の実施の形態における機能を説明する。また、第２の実施の形態における３次元アプリケーションシステムは、図３に示したものと同様のハードウェア構成のコンピュータで実現することができる。
【００９６】
ここで、第２の実施の形態で用いる座標値の精度判定とデータ量削減の原理について説明する。
図１２は、形状データの座標値の精度判定に用いる精度情報を説明するための図である。図では、クライアントの表示画面６００上に展開されるウィンドウ枠６０１の中に３次元形状６０２ｂが表示されている。
【００９７】
３次元形状が画面に表示される場合、形状はモデルビュー行列で位置や大きさが変換される。その結果得られる３次元形状６０２ａの座標値と視体積６０３を比較し、座標値が視体積６０３内に収まっていれば、その３次元形状６０２ａは表示対象となる。ビューポート６０４は、視体積６０３内の画像を画面上のピクセルに対応させるための値であり、基本的には、ビューポートの幅（ｖｗ）／ビューポートの高さ（ｖｈ）の値は、視体積の幅（ｏｗ）／視体積の高さ（ｏｈ）の値と等しい。したがって、画面上の１ピクセルあたりの座標値は、ｏｗ／ｖｗであらわすことができる。なお、基本的にｏｗ／ｏｈとｖｗ／ｖｈの値は等しいので、ｏｗ／ｖｗの代わりにｏｈ／ｖｈを用いてもよい。このようにして１ピクセルあたりの座標値が算出され、これを用いて３次元形状６０２ａの座標値をピクセル値に変換することができる。
【００９８】
ところで、変換の際、この値より小さい座標値は画面上ではすべて同じピクセル値に変換されることになる。よって、送信しようとする座標値群があった場合、１つめの座標はそのまま送信するとして、２つめ以降の座標値が１つめの座標値のｏｗ／ｖｗ以下の範囲にあれば、１つめの座標値と同じとしてしまうことができる。すなわち、データを送信しなくとも１つめの座標で近似することができる。
【００９９】
第２の実施の形態では、このような原理に従ってモデルビュー行列、視体積及びビューポートを用いた精度判定を行い、他の座標値で近似できる場合には、その座標値の送信をやめてデータ量を削減する。
【０１００】
さらに、第２の実施の形態では、データ量を削減するため、法線データを、水平（以下、ｘとする）、垂直（以下、ｙとする）、奥行き（以下、ｚとする）方向の３次元直交座標系で表現される３次元のベクトル形式から角度×２（θ１、θ２）の表現に変換する。実施の形態で用いるｇｌＮｏｒｍａｌにおける法線は常に単位ベクトルであるので、角度×２の表現に変換しても問題ない。変換方法は、たとえば、
θ１＝  ｙ／ｘのアークタンジェント、
θ２＝  ｚ／ｘのアークタンジェント、                            ・・・（１）
とする。
【０１０１】
法線は、表示上では面のシェーディング処理に関係する。ｘ、ｙ、ｚの形式をθ１、θ２に変換したことでデータ量は２／３となるが、シェーディング表示のためのθということを考えると、θの精度を多少落としても、表示上に見た目の変化が感じられないものであると言える（面の光沢が微妙に変化するレベルである）。特に、ＣＡＤアプリケーションでは、見た目のきれいさ、リアリティを追求するわけではないため、θの精度をかなり落としても実用上の問題は発生しないと考えられる。たとえば、１つの法線値のデータ量は、フローティング形式の場合１２バイト（４バイト×３）である。これをθ１、θ２に変換し、ＣＡＤアプリケーション使用の前提でθの精度を落とすことにすると、θ１つにつき１バイトにまで精度を落とすことができると考えられる。したがって、データ量は２バイトにまで削減できる。
【０１０２】
以上の座標値の精度判定と法線値の変換処理は、図２に示したサーバ１０の差分抽出処理部１２と、クライアント２０の差分復元処理部２３の処理機能に付加される。
サーバ１０の差分抽出処理部１２では、３次元ＡＰ１３が生成した描画情報を「形状データ以外のデータ」と「形状データ」に分類し、さらに、「形状データ以外のデータ」がモデルビュー行列、視体積、ビューポートに関するデータかどうか判断し、そうであればその設定値を記憶しておく。形状データ以外のデータはそのまま送信バッファに設定し、形状データは既に形状キャッシュデータに登録されているかどうかを確認する。同じデータが形状キャッシュデータに存在する場合、その形状キャッシュデータをキャッシュテーブルの中の最上位に位置付ける。さらに、形状キャッシュデータに登録されている送信済みのデータが座標値の精度の低いものである場合、精度判定を行い、送信済みのデータが精度の高いものである場合、または精度が低いものであるが精度の高いデータを送る必要がない場合は、図７に示したような送信データ５００ｂの形式を用いて、形状データを設定する送信データ５００ａの形状データ部を、形状キャッシュ番号を引数とする「キャッシュ利用指示」に置き換える。送信済みのデータの精度が低く、精度の高いデータを送る必要がある場合、送信データ５００ｂの形式、すなわち、形状キャッシュ番号を引数とする「キャッシュ利用指示」が設定される送信データに、座標値差分データを付加する。
【０１０３】
図１３は、第２の実施の形態の座標値の精度を上げるための座標値差分データを送信する場合の送信データの一例を示した図である。図６、図７と同じものには同じ番号を付し、説明は省略する。
【０１０４】
送信済みのデータに対し、精度の高いデータを送る必要がある場合は送信データ５００ｃとして、たとえば形状１（５２０）であれば、キャッシュ利用指示５２４に加え、座標値の精度を上げるための座標値差分データ５２５が設定される。同様に、形状２（５３０）であれば、座標値差分データ５３５が設定される。なお、送信データ５００ｃと、送信データ５００ｂの形式は、形状ごとに混在することができる。
【０１０５】
また、同じデータが存在しない場合は、新規の形状キャッシュデータを作成して記憶するとともに、図６に示したような形式の送信データ５００ａでキャッシュ開始指示と形状データを送信する。このとき、クライアント側のディスプレイに表示される際にどの程度の精度が必要かを事前に計算し、座標値に高い精度が必要ないと判断できる場合は、一部の座標値を近似値とすることにより、送信データ量を削減する。また、法線データは、ｘ、ｙ、ｚのベクトル形式からθ×２の形式に変換することでデータ量を削減する。
【０１０６】
こうして、たとえば、画面に表示されている３次元形状を回転するという操作を行った場合、形状データを含む送信データ５００ａが一回送信され、その後は形状データ部がキャッシュ利用指示に置き換えられた送信データ５００ｂが送信される。そして、３次元形状の拡大操作が行われた場合、拡大された率に応じて座標値の精度が必要になった場合は、座標値差分データを含む送信データ５００ｃが送信される。
【０１０７】
このような送信データ５００ｃを受信したクライアント２０の差分復元処理部２３では、「キャッシュ利用指示」で指定された形状データ番号に一致する形状キャッシュデータを検索し、座標値差分データを用いて検索した形状キャッシュデータ内の座標値を修正し、このデータを本来の形状データとして使用する。
【０１０８】
ここで、座標値の精度判定に応じた近似値置き換えによるデータ量削減について具体例を用いて説明する。図１４は、第２の実施の形態の座標値の近似値設定によるデータ量削減の具体例を示した図である。
【０１０９】
まず、モデルビュー行列、視体積、ビューポートに基づき、クライアント側の表示画面において必要な精度を算出する。ここでは、視体積の幅（ｏｗ）、とビューポートの幅（ｖｗ）を用いて、ｏｗ／ｖｗにより判定することとする。たとえば、ｏｗ＝１００、ｖｗ＝５００とすると、ｏｗ／ｖｗ＝０．２が得られ、基準の座標値との差が０．２の範囲内であれば、基準の座標値で近似することができると判定される。
【０１１０】
これをパターンＡに当てはめてみる。パターンＡ座標値群７０１には、クライアントに送信されるある形状データに関する座標値１、座標値２及び座標値３の３つの座標値が設定されている。座標値１を基準とすると、座標値２のｙ座標値７０２は、基準の座標値１のｙ座標値との差が０．２以内であるので、座標値１で近似することができる。そこで、座標値２のｙ座標値７０２を削除して送信データを設定する。
【０１１１】
送信データ７０３のポリゴンデータとしてパターンＡ座標値群７０１が設定される。座標値１はｇｌＶｅｒｔｅｘ７０４、座標値２はｇｌＶｅｒｔｅｘ７０５、座標値３はｇｌＶｅｒｔｅｘ７０６に設定される。それぞれの座標値は、浮動小数点表現のフローティングフォーマット（４バイト）で構成される。このうち、ｇｌＶｅｒｔｅｘ７０５は、座標値２のｙ座標値は座標値１のｙ座標値で近似させることができるので、ｙ座標値を省略したことを伝える設定情報７０７を設定し、ｙ座標値を削除する。これにより、ｙ座標値を送った場合の４バイトから設定情報を除いた２バイトの削除部分７０８ができ、データ量を２バイト減らすことができる。
【０１１２】
設定情報７０７は、データが省略されていることを示す値であり、一般的なＩＥＥＥ７５４のフローティングフォーマットの場合、指数部７０７ａが２５５（バイナリ表現で１１１１１１１１Ｂ）のときは非数または無限大であるため、通常２５５が設定されることはない。そこで、指数部７０７ａに２５５が設定されている場合は、データが省略されているという特別な意味を持たせる。この場合、データ長は２バイトとし、指数部７０７ａ以降のビットを用いてどの値が省略されているかを示す。たとえば、省略座標設定部７０７ｂのＸＹＺで示されたビットが１であれば省略されていないとする。この例では、ＸＹＺ＝１０１とすることで、ｙ座標が省略されていることを表す。
【０１１３】
他の例を説明する。図１５は、第２の実施の形態の座標値の近似値設定によるデータ量削減の他の具体例を示した図である。図１４のパターンＡよりもさらにデータ量が削減できる場合を示している。必要な精度は、パターンＡと同じ値とする。
【０１１４】
パターンＢ座標値群７１１は、座標値１を基準とすると、点線で囲んだ座標値２及び座標値３の全座標値で基準の座標値１との差が０．２以内であるので、座標値１で近似することができる。そこで、これらの座標値を削除して送信データ７１３を設定する。送信データ７１３は、座標値１に関するｇｌＶｅｒｔｅｘ７１４には全ての座標値が設定され、座標値２に関するｇｌＶｅｒｔｅｘ７１５及び座標値３に関するｇｌＶｅｒｔｅｘ７１６には、ｘ、ｙ、ｚ座標値全てを座標値１で近似させることが設定される。このためパターンＡの場合と同様に、設定情報７１７は、指数部７１７ａに座標値を省略すること、全座標値を省略したことを伝える省略座標設定情報（ＸＹＺ＝０００）７１７ｂが設定される。これにより、座標値を送信する場合の４バイト×３のデータ量を２バイトとすることができ、１座標値につき１０バイトの削減部分７１８が生じる。
【０１１５】
このような送信データを受信したクライアント側では、省略されたデータを既に送信されたデータで置き換える。図１６は、第２の実施の形態におけるクライアント側の座標値の近似値設定処理の例を示した図である。（Ａ）は図１４に示したパターンＡのクライアント側の座標値群を示し、（Ｂ）は図１５に示したパターンＢのクライアント側の座標値群を示す。
【０１１６】
パターンＡは、上記のように座標値２のｙ座標値が省略されて送信されてくる。クライアント側では、クライアント側パターンＡ座標値群７２１に示したように、省略された座標値２のｙ座標値に既に設定がされている座標値１のｙ座標値を設定する。
【０１１７】
パターンＢは、同様に座標値２と座標値３の全座標値が省略されて送信されてくる。クライアント側では、クライアント側パターンＢ座標値群７３１に示したように、省略された座標値に座標値１の値を設定する。
【０１１８】
以上の処理により、送信データに設定される座標値のうち、近似値に置き換え可能なものを省略し、送信されるデータ量を削減することが可能となる。
次に、精度の高いデータが必要となり、図１３に示した座標値差分データを送る場合の処理について説明する。図１７は、第２の実施の形態の座標値差分データ送信処理の具体例を示した図である。
【０１１９】
サーバ１０の差分抽出処理部１２は、上記処理の際に送信対象の座標値について、正確な座標値を送信したかどうかを記録しておく。たとえば、図のように、パターンＡ及びパターンＢに属する座標値各々について、クライアントへ送信したかなどを示す送信情報７４１が設定される。送信情報７４１は、座標名と座標値及び送信したか否かを示す送信７４２を有する。送信７４２は、送信した座標値には「済」、送信していない座標値には「未」が設定される。ただし、ここでは座標値１は必ず送信されるので、送信情報７４１には含まれていない。そして、表示サイズが変更され、精度の高いデータが必要となった場合には、送信情報７４１を参照し、未送信の座標値を送信する。その座標値差分データ７４３、７４４は、差分データを指示する差分データ指示情報７４３ａ、７４４ａと、座標値のデータ７４３ｂ、７４４ｂとから構成される。差分データ指示情報７４３ａ、７４４ａは、どの座標値を送信するかを示す情報で、送信される座標に割り当てられた送信情報７４１のＮｏ．に対応するビットに１がセットされる。たとえば、差分データ指示情報７４３ａに設定される「０１００００１１」は、Ｎｏ．１からＮｏ．８の座標値に対応し、Ｎｏ．２、Ｎｏ．３及びＮｏ．８が送信されることを示し、データ７４３ｂに対応する座標値が設定される。同様に、差分データ指示情報７４４ａに設定される「１１１１００００」は、Ｎｏ．９からＮｏ．１２が送信されることを示し、データ７４４ｂに対応する座標値が設定される。
【０１２０】
このように未送信の座標値のみを送ることで、差分情報のデータ量がなるべく小さくなるようにする。
なお、上記の説明では、座標値コマンド（ｇｌＶｅｒｔｅｘ）が連続している場合を示したが、法線の指定コマンド（ｇｌＮｏｒｍａｌ）とｇｌＶｅｒｔｅｘが交互に現れるなど、ｇｌＶｅｒｔｅｘコマンド列が連続していない場合がある。その場合でも、ｇｌＢｅｇｉｎからｇｌＥｎｄの間のｇｌＶｅｒｔｅｘは一連の座標値列と考える。
【０１２１】
図１８は、第２の実施の形態におけるｇｌＶｅｒｔｅｘコマンドが連続していない場合の処理を示した図である。図で、Ｂ＝ｇｌＢｅｇｉｎ、Ｎ＝ｇｌＮｏｒｍａｌ、Ｖ＝ｇｌＶｅｒｔｅｘ、Ｅ＝ｇｌＥｎｄである。
【０１２２】
サーバ側キャッシュデータ７５１では、ｇｌＶｅｒｔｅｘとｇｌＮｏｒｍａｌが交互に出現しているが、近似値設定では、出現するｇｌＶｅｒｔｅｘ７５２、７５３、７５４を一連の座標値列として処理する。ここでは、ｇｌＶｅｒｔｅｘ７５２を基準とし、上記の精度判定と近似値設定を行う。上記と同様、範囲を０．２以内とすると、ｇｌＶｅｒｔｅｘ７５３のｙ座標値７５３ｙをｇｌＶｅｒｔｅｘ７５２のｙ座標値で近似することができる。そこで、この値を省略し、クライントに送信する。なお、送信時には、ｇｌＮｏｒｍａｌの値は、ｘ、ｙ、ｚの座標系からθ１、θ２に変換される。
【０１２３】
クライアント側では、送信データを処理し、クライアント側キャッシュデータ７６１ａを設定する。送信データで省略されているｇｌＶｅｒｔｅｘ７６３ａのｙ座標値７６３ｙは、ｇｌｖｅｒｔｅｘ７６２ａのｙ座標値が設定される。なお、このとき、ｇｌＮｏｒｍａｌは、元のｘ、ｙ、ｚ形式に変換した後、設定される。
【０１２４】
そして、精度が必要になったとき、座標値差分データとして、未送信のｇｌＶｅｒｔｅｘ７６３ｂのｙ座標値７６３ｙがクライアントに送信され、クライアント側キャッシュデータ７６１ｂのｇｌＶｅｒｔｅｘ７６３ｂのｙ座標値７６３ｙが正確な値に修正される。
【０１２５】
このように、第２の実施の形態では、形状データの精度を考慮して送信データを削減するので、送信に要する時間を短縮することができる。特に、データ量の多い形状データの転送において、一部の座標値を省略することができるため、形状データが特に多く送信される初期表示時の待ち時間を短縮することができる。
【０１２６】
次に、第２の実施の形態における処理手順を説明する。第２の実施の形態における処理の全体的な流れは、図８に示した第１の実施の形態と同じである。ただし、サーバ側のキャッシュ処理（ステップＳ２４）及びクライアント側のキャッシュ処理（ステップＳ１３）については、第１の実施の形態と異なる処理が行われる。
【０１２７】
まず、サーバ側のキャッシュ処理について説明する。図１９は、第２の実施の形態のサーバのキャッシュ処理手順を示したフローチャートである。
図１９に示した処理手順は、図９に示した第１の実施の形態のサーバのキャッシュ処理手順に、座標値差分データ生成処理（ステップＳ４０５）、精度に応じた形状データ生成処理（ステップＳ４０９）及び法線値の変換処理（ステップＳ４１０）を加えたものである。
【０１２８】
すなわち、描画情報の形状データについて、今回のデータと一致する形状データがキャッシュテーブル内に存在するかどうかを検索し（ステップＳ４０１）、検索された場合は処理をステップＳ４０３へ進め、検索されない場合は処理をステップＳ４０７へ進める（ステップＳ４０２）。
【０１２９】
検索された場合、すなわち形状キャッシュデータが既に登録されていた場合、一致した形状キャッシュデータの形状番号を獲得し（ステップＳ４０３）、一致した形状キャッシュデータをキャッシュテーブルの最上位に移動する（ステップＳ４０４）。次に、座標値の精度判定を行い、座標値差分データが必要であれば、座標値差分データを生成して送信データに設定する(ステップＳ４０５)。処理の詳細は後述する。そして、ステップＳ４０３で取得した形状番号を引数に設定し、「キャッシュ利用」コマンドと、ステップＳ４０４で送信データ（座標値差分データ）が生成されていれば送信データとを送信用バッファに追加し、処理を終了する（ステップＳ４０６）。
【０１３０】
一方、検索されなかった場合、すなわち形状キャッシュデータが登録されていない場合、一意の形状番号を割り当て、形状番号とともにキャッシュテーブルの最上位に設定し、登録を行う（ステップＳ４０７）とともに、全体キャッシュサイズ４０１に今回設定された形状データのサイズを追加し、全体キャッシュサイズ４０１を更新する（ステップＳ４０８）。次に、座標値の精度判定を行って、算出された精度に応じて可能であれば一部の座標値を近似値とすることによって形状データ量を削減し、送信データに設定する(ステップＳ４０９)。このとき、算出されたｏｗ／ｖｗなどの精度情報は、キャッシュ形状データの精度情報４１３に登録しておく。また、座標値を送信したか否かを含む送信情報７４１を設定しておく。次に、形状データの法線値データをｘ、ｙ、ｚ座標の形式からθ１、θ２の形式に変換し、送信データに設定する（ステップＳ４１０）。そして、設定した形状番号を引数に設定し、「キャッシュ開始」コマンドと、ステップＳ４０９とステップＳ４１０で生成された送信データを送信用バッファに追加し、処理を終了する（ステップＳ４１１）。
【０１３１】
ここで、座標値差分データ生成処理（ステップＳ４０５）及び精度に応じた形状データ生成処理（ステップＳ４０９）について説明する。
図２０は、第２の実施の形態のサーバの座標値差分データ生成処理手順を示したフローチャートである。
【０１３２】
座標値差分データ処理は、所定の形状に関する形状キャッシュテーブルと今回生成された描画情報が指定されて、処理が開始される。
［ステップＳ５０１］  指定された形状キャッシュデータから精度情報を取り出す。取り出された精度情報（ｏｗ／ｖｗ）をｄとする。ｄは、前回座標値データを送信したときのｏｗ／ｖｗの値である。
【０１３３】
［ステップＳ５０２］  指定された描画情報に基づき、現在のｏｗ／ｖｗの値を求める。これをＤとする。
［ステップＳ５０３］  ステップＳ５０１で取り出されたｄと、ステップＳ５０２で算出されたＤとを比較し、前回と比較して高い精度が必要になったかどうかを判定する。Ｄ≦ｄの場合、すなわち、送信済みの座標値データの精度が今回要求されている精度より高い場合、座標値差分データは必要がないので処理を終了する。Ｄ＞ｄの場合、すなわち、送信済みの座標値データの精度より高い精度が求められている場合、以下の処理を実行する。
【０１３４】
［ステップＳ５０４］  形状キャッシュデータから１つの部分形状の１点目の座標値（ｘ１，ｙ１，ｚ１）の座標値を獲得する。形状データの送信時には、１点目の座標値は必ず送信され、他の座標値を送信するか否かの判定基準となっているので、１点目の座標値を獲得し、同様の判定を行う。
【０１３５】
［ステップＳ５０５］  形状キャッシュデータからこの部分形状のｎ点目の座標値（ｘｎ，ｙｎ，ｚｎ）を獲得する。ｎは、形状キャッシュデータに格納されている１点目を除く任意の点を表す。
【０１３６】
［ステップＳ５０６］  ステップＳ５０５で取得したｘｎとステップＳ５０４で取得した基準のｘ１の大きさを比較し、差が精度ｄの範囲内であるかどうかを判定する。範囲内でない場合は、既にｘｎは送信されたと判断し、ｘｎを送信対象とはせずに、処理をステップＳ５０８へ進める。
【０１３７】
［ステップＳ５０７］  ｘｎとｘ１の大きさの差が範囲内である場合は、ｘｎは未送信であると判断し、ｘｎを送信対象とする。
［ステップＳ５０８］  ステップＳ５０５で取得したｙｎとステップＳ５０４で取得した基準のｙ１の大きさを比較し、差が精度ｄの範囲内であるかどうかを判定する。範囲内でない場合は、既にｙｎは送信されたと判断し、ｙｎを送信対象とはせずに、処理をステップＳ５１０へ進める。
【０１３８】
［ステップＳ５０９］  ｙｎとｙ１の大きさの差が範囲内である場合は、ｙｎは未送信であると判断し、ｙｎを送信対象とする。
［ステップＳ５１０］  ステップＳ５０５で取得したｚｎとステップＳ５０４で取得した基準のｚ１の大きさを比較し、差が精度ｄの範囲内であるかどうかを判定する。範囲内でない場合は、既にｚｎは送信されたと判断し、ｚｎを送信対象とはせずに、処理をステップＳ５１２へ進める。
【０１３９】
［ステップＳ５１１］  ｚｎとｚ１の大きさの差が範囲内である場合は、ｚｎは未送信であると判断し、ｚｎを送信対象とする。
［ステップＳ５１２］  ステップＳ５０６からステップＳ５１１までの処理により、（ｘｎ，ｙｎ，ｚｎ）のうち送信対象となる座標が決定したので、図１７に示したように差分データ指示情報と、送信対象となった座標値のデータとを座標値差分データとして設定する。
【０１４０】
［ステップＳ５１３］  ｎがｇｌＢｅｇｉｎからｇｌＥｎｄによって表される部分形状における最終の点であるかどうかを判定する。最終の点でない場合は、ｎを１つ進め、ステップＳ５０５からの処理を繰り返す。
【０１４１】
［ステップＳ５１４］  １つの部分形状が終了した場合、形状キャッシュデータに設定されるすべての部分形状の処理が終了したかどうかを判定する。終了していない場合は、ステップＳ５０４に戻って次の部分形状に対して処理を繰り返す。
【０１４２】
［ステップＳ５１５］  これまでの処理で、すべての座標値データが送信されたので、精度情報４１３を初期化（＝０）し、処理を終了する。
なお、上記の処理では、ステップＳ５０６からステップＳ５１１までの処理によって、座標値データを既に送信したかどうかを判断しているが、図１７に示した送信情報７４１を参照し、未送信の座標値を送信するようにすることもできる。
【０１４３】
また、上記の処理では、座標値差分データが必要となった場合、省略されている座標値データをすべて送るようになっている。しかしながら、要求される精度によっては、すべての座標値データを送る必要がない場合もある。そこで、一度に送信されるデータ量を少なくするため、今回算出された精度Ｄを用いて送信の要否を判定する。すなわち、ステップＳ５０６の判定条件を、Ｄ＜｜ｘｎ−ｘ１｜＜ｄとし、ステップＳ５０７及びステップＳ５０８の判定条件も同様に変更する。また、この場合には、ステップＳ５１５において精度情報４１３を初期化せず、精度情報４１３にはＤを設定する。このようにして、送信済みの座標値データは、近似された精度の低いものであっても、精度の高い元の座標値データを送る必要がない場合は、送信データから削除し、データ量を削減する。
【０１４４】
次に、形状データ生成処理（ステップＳ４０５）について説明する。
図２１は、第２の実施の形態の形状データ生成処理手順を示したフローチャートである。描画情報に設定される所定の形状データを新たに形状キャッシュデータに登録した場合に処理が開始される。
【０１４５】
［ステップＳ６０１］  形状キャッシュデータに設定される現在のｏｗ／ｖｗを算出し、その値（ｄ）とする。
［ステップＳ６０２］  ステップＳ６０１で算出されたｄを形状キャッシュデータの精度情報４１３に設定する。この値は、図２０に示した座標値差分データ生成処理において使用する。
【０１４６】
［ステップＳ６０３］  形状キャッシュデータの１つの部分形状における１点目の座標値（ｘ１，ｙ１，ｚ１）を獲得し、送信データに設定する。１点目の座標値は必ず送信され、他の座標値を送信するか否かの判定基準となる。
【０１４７】
［ステップＳ６０４］  形状キャッシュデータからこの部分形状のｎ点目の座標値（ｘｎ，ｙｎ，ｚｎ）を獲得する。ｎは、形状キャッシュデータに格納されている１点目を除く任意の点を表す。
【０１４８】
［ステップＳ６０５］  ステップＳ６０４で取得したｘｎとステップＳ６０３で取得した基準のｘ１の大きさを比較し、差が精度ｄの範囲内であるかどうかを判定する。範囲内でない場合は、ｘｎを送信対象とし、処理をステップＳ６０７へ進める。
【０１４９】
［ステップＳ６０６］  ｘｎとｘ１の大きさの差が範囲内である場合は、ｘｎはｘ１で近似できると判断し、ｘｎを省略対象とする。
［ステップＳ６０７］  ステップＳ６０４で取得したｙｎとステップＳ６０５で取得した基準のｙ１の大きさを比較し、差が精度ｄの範囲内であるかどうかを判定する。範囲内でない場合は、ｙｎを送信対象とし、処理をステップＳ６０９へ進める。
【０１５０】
［ステップＳ６０８］  ｙｎとｙ１の大きさの差が範囲内である場合は、ｙｎはｙ１で近似できると判断し、ｙｎを省略対象とする。
［ステップＳ６０９］  ステップＳ６０４で取得したｚｎとステップＳ６０５で取得した基準のｚ１の大きさを比較し、差が精度ｄの範囲内であるかどうかを判定する。範囲内でない場合は、ｚｎを送信対象とし、処理をステップＳ６１１へ進める。
【０１５１】
［ステップＳ６１０］  ｚｎとｚ１の大きさの差が範囲内である場合は、ｚｎはｚ１で近似できると判断し、ｚｎを省略対象とする。
［ステップＳ６１１］  ステップＳ６０５からステップＳ６０６までの処理により、（ｘｎ，ｙｎ，ｚｎ）のうち省略対象となる座標が決定したので、図１４及び図１５に示したように省略対象を削除した座標値データを送信データとして設定する。
【０１５２】
［ステップＳ６１２］  ｎがｇｌＢｅｇｉｎからｇｌＥｎｄによって表される部分形状における最終の点であるかどうかを判定する。最終の点でない場合は、ｎを１つ進め、ステップＳ６０４からの処理を繰り返す。
【０１５３】
［ステップＳ６１３］  １つの部分形状が終了した場合、形状キャッシュデータに設定されるすべての部分形状の処理が終了したかどうかを判定する。終了していない場合は、ステップＳ６０３に戻って次の部分形状に対して処理を繰り返す。
【０１５４】
以上の処理手順が実行されることにより、サーバは、表示のために必要な精度に応じて一部の座標値を近似値とすることによって送信を省略し、送信データ量の削減を実現する。後に、より高い精度が必要となった場合は、送信を省略した座標値データを差分情報として送信する。
【０１５５】
次に、クライアント側のキャッシュ処理について説明する。図２２は、第２の実施の形態のクライアントのキャッシュ処理手順を示したフローチャートである。
図２２に示した処理手順は、図１０に示した第１の実施の形態のクライアントのキャッシュ処理手順に、形状キャッシュデータ設定処理（ステップＳ７０３）と、座標値差分データ処理(ステップＳ７０７)とを加えたものである。
【０１５６】
すなわち、描画差分情報の所定の領域ごとに、この領域に設定されたコマンドを判定し、コマンドが「キャッシュ利用」の場合は処理をステップＳ７０６へ進め、コマンドが「キャッシュ開始」の場合は処理をステップＳ７０２へ進め、それ以外のコマンド、もしくはコマンドが設定されていない場合は処理をステップＳ７１１へ進める（ステップＳ７０１）。
【０１５７】
「キャッシュ開始」コマンドが設定されていた場合、コマンドに続く形状データの終端までを描画用バッファに転送し（ステップＳ７０２）、一部の座標値データが省略され、法線値が変換されている受信データから形状データを復元し、形状キャッシュデータに設定する（ステップＳ７０３）。処理の詳細は後述する。続いて、ステップＳ７０３によって設定された形状キャッシュデータがキャッシュテーブルの最上位になるように関連する情報の書き換えを行い（ステップＳ７０４）、全体キャッシュサイズ４０１に、今回取得した形状データのサイズを加算し、全体キャッシュサイズ４０１を更新して処理を終了する（ステップＳ７０５）。
【０１５８】
「キャッシュ利用」コマンドが設定されていた場合、コマンドの引数である形状番号を参照して、自装置のキャッシュテーブルを検索し、一致する形状番号の形状キャッシュデータを獲得し（ステップＳ７０６）、受信した座標値差分データを用いて形状キャッシュデータを更新する座標値差分データ処理を行う（ステップＳ７０７）。処理の詳細は後述する。そして、更新された形状キャッシュデータを描画用バッファに設定し（ステップＳ７０８）、この形状キャッシュデータがキャッシュテーブルの最上位になるように関連する情報の書き換えを行う（ステップＳ７０９）。
【０１５９】
そのほかのコマンドの場合、データは、形状データ以外に分類されるデータなので、そのまま描画用バッファに設定する(ステップＳ７１１)。
次に、形状キャッシュデータ設定処理（ステップＳ７０３）と、座標値差分データ処理（ステップＳ７０７）について説明する。
【０１６０】
図２３は、第２の実施の形態の形状キャッシュデータ設定処理手順を示したフローチャートである。「キャッシュ開始」コマンドにより、処理が開始される。
［ステップＳ８０１］  描画用バッファに設定される形状データの１つの部分形状について、１点目の座標値（ｘ１，ｙ１，ｚ１）を獲得する。１点目の座標値データは常に送信され、省略された座標値の近似値として用いられる。
【０１６１】
［ステップＳ８０２］  ステップＳ８０１で獲得した１点目の座標値（ｘ１，ｙ１，ｚ１）を形状キャッシュデータに設定する。
［ステップＳ８０３］  描画用バッファからこの部分形状のｎ点目の座標値（ｘｎ，ｙｎ，ｚｎ）を獲得する。ｎは、描画用バッファに格納されている１点目を除く任意の点を表す。
【０１６２】
［ステップＳ８０４］  ｎ点目の座標値（ｘｎ，ｙｎ，ｚｎ）を形式を確認し、通常の座標値のデータ形式であるか、図１４及び図１５に示した座標値の一部を省略した省略形式であるかどうかを判定する。省略形式である場合は、ステップＳ８０２で取得した１点目の座標値（ｘ１，ｙ１，ｚ１）のうち対応する座標値で省略されている座標値を近似する。すなわち、ｘｎが省略されていればｘｎをｘ１で近似する。同様に、ｙｎはｙ１、ｚｎはｚ１で近似する。
【０１６３】
［ステップＳ８０５］  ｎがｇｌＢｅｇｉｎからｇｌＥｎｄによって表される部分形状における最終の点であるかどうかを判定する。最終の点でない場合は、ｎを１つ進め、ステップＳ８０３からの処理を繰り返す。
【０１６４】
［ステップＳ８０６］  １つの部分形状が終了した場合、形状キャッシュデータに設定されるすべての部分形状の処理が完了したかどうかを判定する。完了していない場合は、ステップＳ８０１に戻って次の部分形状に対して処理を繰り返す。
【０１６５】
［ステップＳ８０７］  θ１、θ２の形式に変換されている法線値を（ｘ，ｙ，ｚ）を用いた表現形式に逆変換して形状キャッシュデータに設定し、処理を終了する。
図２４は、第２の実施の形態の座標値差分データ処理手順を示したフローチャートである。「キャッシュ利用」コマンドにより処理が開始される。
【０１６６】
［ステップＳ９０１］  サーバが送信した送信データが、座標値差分データを含まない図７に示した形式の送信データ５００ｂであるか、座標値差分データを含む図１３に示した形式の送信データ５００ｃであるかを判定する。座標値差分データを含まない場合は、処理は必要ないので処理を終了する。
【０１６７】
［ステップＳ９０２］  座標値差分データが含まれる場合は、形状キャッシュデータから座標値差分データによって指定されたｎ点目の座標値（ｘｎ，ｙｎ，ｚｎ）を獲得する。
【０１６８】
［ステップＳ９０３］  座標値差分データから、（ｘｎ，ｙｎ，ｚｎ）を更新するための情報を取得する。
［ステップＳ９０４］  ステップＳ９０３で獲得した更新するための情報を用いて、ｎ点目の座標値（ｘｎ，ｙｎ，ｚｎ）の該当する座標値を送られてきた座標値に更新し、形状キャッシュデータに設定する。
【０１６９】
［ステップＳ９０５］  ｎが部分形状における最終の点であるかどうかを判定する。最終の点でない場合は、ｎを１つ進め、ステップＳ９０２からの処理を繰り返す。
［ステップＳ９０６］  １つの部分形状が終了した場合、形状キャッシュデータに設定されるすべての部分形状の処理が完了したかどうかを判定する。完了していない場合は、ステップＳ９０２に戻って次の部分形状に対して処理を繰り返す。
【０１７０】
以上の処理手順が実行されることにより、第２の実施の形態では、第１の実施の形態よりさらに、一度に送信される送信データ量を削減することができる。
なお、上記の処理機能は、サーバコンピュータとクライアントコンピュータとによって実現することができる。その場合、サーバが有すべきデータ転送機能の処理内容を記述したデータ転送サーバプログラム（サーバプログラム）、及びクライアントが有すべきデータ受信機能の処理内容を記述したデータ受信プログラム（クライアントプログラム）が提供される。サーバプログラムをサーバコンピュータで実行することにより、３次元アプリケーションにより作成された描画コマンドの差分データの転送と、キャッシュデータの登録・管理の処理機能がサーバコンピュータ上で実現される。また、クライアントプログラムをクライアントコンピュータで実行することにより、描画コマンドデータの復元と、キャッシュデータの登録・管理の処理機能がクライアントコンピュータ上で実現される。
【０１７１】
処理内容を記述したサーバプログラムやクライアントプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk)などがある。
【０１７２】
サーバプログラムやクライアントプログラムを流通させる場合には、たとえば、各プログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、クライアントプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータからクライアントコンピュータにクライアントプログラムを転送することもできる。
【０１７３】
サーバプログラムを実行するサーバコンピュータは、たとえば、可搬型記録媒体に記録されたサーバプログラムを、自己の記憶装置に格納する。そして、サーバコンピュータは、自己の記憶装置からサーバプログラムを読み取り、サーバプログラムに従った処理を実行する。なお、サーバコンピュータは、可搬型記録媒体から直接サーバプログラムを読み取り、そのサーバプログラムに従った処理を実行することもできる。
【０１７４】
クライアントプログラムを実行するクライアントコンピュータは、たとえば、可搬型記録媒体に記録されたクライアントプログラムもしくはサーバコンピュータから転送されたクライアントプログラムを、自己の記憶装置に格納する。そして、クライアントコンピュータは、自己の記憶装置からクライアントプログラムを読み取り、クライアントプログラムに従った処理を実行する。なお、クライアントコンピュータは、可搬型記録媒体から直接クライアントプログラムを読み取り、そのクライアントプログラムに従った処理を実行することもできる。また、クライアントコンピュータは、サーバコンピュータからクライアントプログラムが転送されるごとに、逐次、受け取ったクライアントプログラムに従った処理を実行することもできる。
【０１７５】
（付記１）  ネットワークを介して接続するサーバとクライアントとの間で、前記サーバのアプリケーションで作成された描画情報を前記クライアントに転送するデータ転送システムにおいて、
所定の形状の描画に用いる形状データが登録される形状キャッシュ情報を記憶するサーバ側キャッシュと、前記アプリケーションによって描画情報が作成されると、作成された前記描画情報に設定された前記形状データが前記サーバ側キャッシュの前記形状キャッシュ情報に登録されているかどうかを検索し、登録されていない場合は前記形状データを前記サーバ側キャッシュの前記形状キャッシュ情報に登録する検索登録手段と、前記形状データが登録されていた場合に前記描画情報の前記形状データの領域を前記形状キャッシュ情報に登録された登録形状データを指示する指示情報に置き換えて描画差分情報を生成し、前記クライアントに送信するデータ転送手段と、を具備するアプリケーションサーバと、
前記形状データが登録される前記形状キャッシュ情報を記憶するクライアント側キャッシュと、前記アプリケーションサーバから前記描画差分情報を取得すると、前記描画差分情報に設定された新たな前記形状データを前記クライアント側キャッシュの前記形状キャッシュ情報に登録する登録手段と、前記描画差分情報に設定された前記指示情報に基づいて前記クライアント側キャッシュの前記形状キャッシュ情報を検索し、前記描画差分情報の前記指示情報の領域を検索された登録形状データに置き換えて前記描画情報を復元するデータ復元手段と、を具備するクライアントと、
を有することを特徴とするデータ転送システム。
【０１７６】
（付記２）  前記形状データは、３次元画像を処理する３次元アプリケーションによって作成される前記３次元画像の形状を描画するための描画コマンド群であることを特徴とする付記１記載のデータ転送システム。
【０１７７】
（付記３）  前記アプリケーションサーバの前記検索登録手段は、前記描画情報中に表れる所定の一の形状を定義する前記描画コマンドの開始コマンドと終了コマンドを検出し、前記３次元画像の形状を描画するための描画コマンド群として抽出することを特徴とする付記２記載のデータ転送システム。
【０１７８】
（付記４）  前記アプリケーションサーバの前記検索登録手段及び前記クライアントの前記登録手段は、前記形状データを登録する際に、前記形状データごとに一意の形状番号を付与し、
前記アプリケーションサーバの前記データ転送手段は、前記サーバ側キャッシュの前記形状キャッシュ情報に登録される前記登録形状データに付与された前記形状番号を前記指示情報に設定する、
ことを特徴とする付記１記載のデータ転送システム。
【０１７９】
（付記５）  前記データ転送手段は、新たに前記形状キャッシュ情報に登録した前記形状データについて、前記描画差分情報に前記形状データの登録指示と前記形状番号を指示する情報を付加して前記クライアントに送信し、
前記クライアントの前記登録手段は、前記キャッシュ開始指示に従って、前記形状データに前記形状番号を付与し登録する、
ことを特徴とする付記４記載のデータ転送システム。
【０１８０】
（付記６）  前記アプリケーションサーバの前記検索登録手段は、前記描画情報に設定された前記形状データを検出するごとに、対応する前記登録形状データを前記サーバ側キャッシュの前記形状キャッシュ情報の最上位に設定し、
前記クライアントの前記登録手段は、前記描画差分情報に設定された前記形状データまたは前記指示情報に対応する前記形状データを検出するごとに、対応する前記登録形状データを前記クライアント側キャッシュの前記形状キャッシュ情報の最上位に設定し、
最新に設定された前記形状データを最上位として設定順に前記形状キャッシュ情報に並べることを特徴とする付記１記載のデータ転送システム。
【０１８１】
（付記７）  前記アプリケーションサーバ及び前記クライアントは、さらに、
前記形状キャッシュ情報に登録される前記形状データの合計のデータサイズが予め決められた所定の全体キャッシュサイズを超えたかどうかを判定し、超えている場合には、所定の削除時規定値に収まるまで前記形状キャッシュ情報に登録された前記登録形状データを削除するキャッシュ管理手段、
を具備することを特徴とする付記１記載のデータ転送システム。
【０１８２】
（付記８）  前記アプリケーションサーバの前記検索登録手段は、前記描画情報に設定された前記形状データを検出するごとに、対応する前記登録形状データを前記サーバ側キャッシュの前記形状キャッシュ情報の最上位に設定し、前記クライアントの前記登録手段は、前記描画差分情報に設定された前記形状データまたは前記指示情報に対応する前記形状データを検出するごとに、対応する前記登録形状データを前記クライアント側キャッシュの前記形状キャッシュ情報の最上位に設定して前記形状キャッシュ情報を最新に設定された前記形状データを最上位として設定順に並べ、
前記キャッシュ管理手段は、前記形状キャッシュ情報の最下位に設定される前記形状データから順に削除する、
ことを特徴とする付記７記載のデータ転送システム。
【０１８３】
（付記９）  前記アプリケーションサーバの前記データ転送手段は、前記検索登録手段によって前記形状データが前記サーバ側キャッシュの前記形状キャッシュ情報に登録された場合に、前記形状データに基づき前記クライアントの表示に必要な座標値の精度を算出し、算出された前記座標値の精度に応じて前記形状データの座標値データの一部を省略した前記形状データと、省略した前記座標値データを基準点の座標値で近似する近似指示情報とを前記クライアントに送信し、
前記クライアントの前記登録手段は、前記近似指示情報に基づき、取得した前記形状データにおいて省略された前記座標値データを前記基準点の座標値で近似して生成し、近似された前記座標値データを含む前記形状データを前記クライアント側キャッシュの前記形状キャッシュ情報に登録する、
ことを特徴とする付記１記載のデータ転送システム。
【０１８４】
（付記１０）  前記アプリケーションサーバの前記データ転送手段は、前記座標値データの一部を省略して前記クライアントに送信した前記形状データの表示条件が変化し、より高い前記座標値の精度が必要となった場合は、前記クライアントに未送信の前記座標値データのうち必要な前記座標値データと、前記座標値データの指示情報とを含む座標値差分データを送信し、
前記クライアントの前記登録手段は、前記座標値差分データに基づき、前記クライアント側キャッシュの前記形状キャッシュ情報に格納される前記座標値データを更新する、
ことを特徴とする付記９記載のデータ転送システム。
【０１８５】
（付記１１）  前記アプリケーションサーバの前記データ転送手段及び前記クライアントの前記登録手段は、前記形状データの部分形状ごとに設定される前記座標値データの１点目を前記基準点とする、
ことを特徴とする付記９記載のデータ転送システム。
【０１８６】
（付記１２）  前記アプリケーションサーバの前記データ転送手段は、前記座標値の制度を、前記形状データの形状に関する視体積の幅または高さと、ビューポートの幅または高さとの比率に応じて前記座標値の精度を求める、
ことを特徴とする付記９記載のデータ転送システム。
【０１８７】
（付記１３）  前記アプリケーションサーバの前記データ転送手段は、３次元のベクトルで表現される法線値を前記ベクトルのアークタンジェントによって表される形式に変換し、
前記クライアントの前記登録手段は、形式が変換された前記法線値を前記３次元のベクトル形式に逆変換し、前記クライアント側キャッシュの前記形状キャッシュ情報に登録する、
ことを特徴とする付記１記載のデータ転送システム。
【０１８８】
（付記１４）  ネットワークを介して接続するサーバとクライアントとの間で、前記サーバのアプリケーションで作成された描画情報を前記クライアントに転送するデータ転送方法において、
前記サーバの検索登録手段が、前記アプリケーションによって前記描画情報が作成されると、作成された前記描画情報に設定された所定の形状の描画に用いる形状データが形状キャッシュ情報に存在するかどうかを検索し、登録されていない場合は前記形状キャッシュ情報に前記形状データを登録してサーバ側キャッシュに格納し、
前記サーバのデータ転送手段が、前記形状データが前記形状キャッシュ情報に登録されている場合は、前記描画情報の前記形状データの領域を前記形状キャッシュ情報に登録された登録形状データを指示する指示情報に置き換えて描画差分情報を生成して前記ネットワークを介してデータ転送し、
前記クライアントの登録手段が、前記描画差分情報を取得すると、前記描画差分情報に設定された新たな前記形状データを、クライアント側キャッシュに格納される前記形状キャッシュ情報に登録し、
前記クライアントのデータ復元手段が、前記描画差分情報に設定された前記指示情報に基づいて前記クライアント側キャッシュの前記形状キャッシュ情報を検索し、前記描画差分情報の前記指示情報の領域を検索された前記登録形状データに置き換えて前記描画情報を復元する、
ことを特徴とするデータ転送方法。
【０１８９】
（付記１５）  アプリケーションで作成された描画情報を、ネットワークを介して接続するクライアントに転送するデータ転送サーバプログラムにおいて、
コンピュータに、
検索登録手段が、前記アプリケーションによって描画情報が作成されると、作成された前記描画情報に設定された所定の形状の描画に用いる形状データが形状キャッシュ情報に存在するか否かを検索し、前記形状データが登録されていない場合は、前記形状データを新たに前記形状キャッシュ情報に登録してサーバ側キャッシュに格納するステップと、
データ転送手段が、前記形状データが登録されている場合は、前記描画情報の前記形状データの領域を前記形状キャッシュ情報に登録された登録形状データを指示する指示情報に置き換えて描画差分情報を生成し、前記描画差分情報を、クライアント側キャッシュに前記形状キャッシュ情報を格納し、前記描画差分情報に設定された前記指示情報から前記クライアント側キャッシュを検索し、前記指示情報の領域を検索された前記登録形状データに置き換えて前記描画情報を復元する前記クライアントに送信するステップと、
を実行させることを特徴とするデータ転送サーバプログラム。
【０１９０】
（付記１６）  アプリケーションで作成された描画情報を、ネットワークを介して接続するクライアントに転送するデータ転送サーバプログラムを記録したコンピュータ読み取り可能な記録媒体において、
コンピュータに、
検索登録手段が、前記アプリケーションによって描画情報が作成されると、作成された前記描画情報に設定された所定の形状の描画に用いる形状データが形状キャッシュ情報に存在するか否かを検索し、前記形状データが登録されていない場合は、前記形状データを新たに前記形状キャッシュ情報に登録してサーバ側キャッシュに格納するステップと、
データ転送手段が、前記形状データが登録されている場合は、前記描画情報の前記形状データの領域を前記形状キャッシュ情報に登録された登録形状データを指示する指示情報に置き換えて描画差分情報を生成し、前記描画差分情報を、クライアント側キャッシュに前記形状キャッシュ情報を格納し、前記描画差分情報に設定された前記指示情報から前記クライアント側キャッシュを検索し、前記指示情報の領域を検索された前記登録形状データに置き換えて前記描画情報を復元する前記クライアントに送信するステップと、
を実行させるデータ転送サーバプログラムを記録したコンピュータ読み取り可能な記録媒体。
【０１９１】
（付記１７）  ネットワークを介して接続するサーバのアプリケーションで作成された描画情報を受信するデータ受信プログラムにおいて、
コンピュータに、
登録手段が、形状の描画に用いる形状データが登録される形状キャッシュ情報をクライアント側キャッシュに記憶しておき、前記サーバによって作成された描画情報に設定された前記形状データのうち、前記形状キャッシュ情報に登録されている前記形状データの領域を、前記形状キャッシュ情報の登録形状データの領域を指示する指示情報に置き換えて生成され、データ転送された描画差分情報を取得し、前記描画差分情報に設定された新たな前記形状データを前記クライアント側キャッシュの前記形状キャッシュ情報に登録するステップと、
データ復元手段が、前記描画差分情報に設定された前記指示情報に基づいて前記クライアント側キャッシュの前記形状キャッシュ情報を検索し、前記描画差分情報の前記指示情報の領域を検索された前記登録形状データに置き換えて前記描画情報を復元するステップと、
を実行させることを特徴とするデータ受信プログラム。
【０１９２】
(付記１８)  ネットワークを介して接続するサーバのアプリケーションで作成された描画情報を受信するデータ受信プログラムを記録したコンピュータ読み取り可能な記録媒体において、
コンピュータに、
登録手段が、形状の描画に用いる形状データが登録される形状キャッシュ情報をクライアント側キャッシュに記憶しておき、前記サーバによって作成された描画情報に設定された前記形状データのうち、前記形状キャッシュ情報に登録されている前記形状データの領域を、前記形状キャッシュ情報の登録形状データの領域を指示する指示情報に置き換えて生成され、データ転送された描画差分情報を取得し、前記描画差分情報に設定された新たな前記形状データを前記クライアント側キャッシュの前記形状キャッシュ情報に登録するステップと、
データ復元手段が、前記描画差分情報に設定された前記指示情報に基づいて前記クライアント側キャッシュの前記形状キャッシュ情報を検索し、前記描画差分情報の前記指示情報の領域を検索された前記登録形状データに置き換えて前記描画情報を復元するステップと、
を実行させるデータ受信プログラムを記録したコンピュータ読み取り可能な記録媒体。
【図面の簡単な説明】
【０１９３】
【図１】実施の形態に適用される発明の概念図である。
【図２】第１の実施の形態の３次元アプリケーションシステム構成を示した図である。
【図３】第１の実施の形態のクライアントのハードウェア構成例を示すブロック図である。
【図４】第１の実施の形態のアプリケーションにより作成される描画情報の一例の構成図である。
【図５】第１の実施の形態のキャッシュテーブルの一例の構成図である。
【図６】第１の実施の形態における形状データを送信する場合の送信データの一例を示した図である。
【図７】形状データを指示情報に置き換えて送信する場合の送信データの一例を示した図である。
【図８】第１の実施の形態のデータ転送処理手順を示したフローチャートである。
【図９】第１の実施の形態のサーバのキャッシュ処理手順を示したフローチャートである。
【図１０】第１の実施の形態のクライアントのキャッシュ処理手順を示したフローチャートである。
【図１１】第１の実施の形態のサーバ及びクライアントのキャッシュ管理手順を示したフローチャートである。
【図１２】形状データの座標値の精度判定に用いる精度情報を説明するための図である。
【図１３】第２の実施の形態の座標値の精度を上げるための座標値差分データを送信する場合の送信データの一例を示した図である。
【図１４】第２の実施の形態の座標値の近似値設定によるデータ量削減の具体例を示した図である。
【図１５】第２の実施の形態の座標値の近似値設定によるデータ量削減の他の具体例を示した図である。
【図１６】第２の実施の形態におけるクライアント側の座標値の近似値設定処理の例を示した図である。
【図１７】第２の実施の形態の座標値差分データ送信処理の具体例を示した図である。
【図１８】第２の実施の形態におけるｇｌＶｅｒｔｅｘコマンドが連続していない場合の処理を示した図である。
【図１９】第２の実施の形態のサーバのキャッシュ処理手順を示したフローチャートである。
【図２０】第２の実施の形態のサーバの座標値差分データ生成処理手順を示したフローチャートである。
【図２１】第２の実施の形態の形状データ生成処理手順を示したフローチャートである。
【図２２】第２の実施の形態のクライアントのキャッシュ処理手順を示したフローチャートである。
【図２３】第２の実施の形態の形状キャッシュデータ設定処理手順を示したフローチャートである。
【図２４】第２の実施の形態の座標値差分データ処理手順を示したフローチャートである。
【符号の説明】
【０１９４】
１  サーバ（アプリケーションサーバ）
１ａ  （サーバ側）キャッシュ
１ｂ  差分抽出処理部
１ｃ  検索登録手段
１ｄ  データ転送手段
１ｅ  ３次元アプリケーション
１ｆ  （サーバ側）形状キャッシュ情報
２  クライアント
２ａ  （クライアント側）キャッシュ
２ｂ  差分復元処理部
２ｃ  登録手段
２ｄ  データ復元手段
２ｅ  描画処理手段
２ｆ  表示装置
２ｇ  （クライアント側）形状キャッシュ情報
３  ネットワーク
【図１】
2006236334.tif 000003
【図２】
2006236334.tif 000004
【図３】
2006236334.tif 000005
【図４】
2006236334.tif 000006
【図５】
2006236334.tif 000007
【図６】
2006236334.tif 000008
【図７】
2006236334.tif 000009
【図８】
2006236334.tif 000010
【図９】
2006236334.tif 000011
【図１０】
2006236334.tif 000012
【図１１】
2006236334.tif 000013
【図１２】
2006236334.tif 000014
【図１３】
2006236334.tif 000015
【図１４】
2006236334.tif 000016
【図１５】
2006236334.tif 000017
【図１６】
2006236334.tif 000018
【図１７】
2006236334.tif 000019
【図１８】
2006236334.tif 000020
【図１９】
2006236334.tif 000021
【図２０】
2006236334.tif 000022
【図２１】
2006236334.tif 000023
【図２２】
2006236334.tif 000024
【図２３】
2006236334.tif 000025
【図２４】
2006236334.tif 000026