(57)【要約】【課題】３Ｄボリュームデータをレンダリングして得られた３Ｄ画像を他の３Ｄ画像に重ねて表示し、レンダリングにより得られた３Ｄ画像と他の３Ｄ画像をともに視認することができる情報処理装置、方法及びプログラムを提供すること。【解決手段】実施形態によれば、３Ｄボリュームデータおよび３Ｄ画像を重畳して２次元表示するための画像を、クライント側のブラウザで作成する情報処理装置は、３Ｄ画像のデプステクスチャを求める手段と、視線方向におけるデプステクスチャまでのデプスをデプスリミットとして３Ｄボリュームデータをレイキャスティングする手段と、レイキャスティングの結果をレンダリングする手段とを具備する。【選択図】図１
2016009374.tif 000002
【特許請求の範囲】
【請求項１】
３Ｄボリュームデータおよび３Ｄ画像を重畳して２次元表示するための画像を、クライント側のブラウザで作成する情報処理装置であって、
前記３Ｄ画像のデプステクスチャを求めるデプスバッファ手段と、
視線方向におけるデプステクスチャまでのデプスをデプスリミットとして前記３Ｄボリュームデータをレイキャスティングするレイキャスティング手段と、
レイキャスティングの結果をレンダリングするレンダリング手段と、
を具備する情報処理装置。
【請求項２】
前記レイキャスティング手段は、
前記３Ｄボリュームデータを囲むバウンディングキューブの各面を構成するポリゴンの頂点をオブジェクト座標系で示す頂点データをカメラ座標系あるいはクリップ座標系の頂点データに変換する第１の手段と、
前記第１の手段から出力されるカメラ座標系あるいはクリップ座標系の頂点データからレイ開始点、レイ方向を決定し、レイ開始点を前記デプスリミットまでインクリメントしながら、レイ開始点の３Ｄボリュームデータを求める第２の手段と、
を具備する請求項１記載の情報処理装置。
【請求項３】
レイキャスティングを行なうためにモデルビュー行列の３ｘ３のサブセット行列の転置行列を用いてカメラ座標系のレイ方向をオブジェクト座標系のレイ方向に変換し、オブジェクト座標系のレイ方向を用いてレイキャスティングを１回行なう請求項２記載の情報処理装置。
【請求項４】
前記第２の手段は、オブジェクト座標系のレイ開始点が前記バウンディングキューブの外部となると、レイ開始点のインクリメントを停止する請求項２記載の情報処理装置。
【請求項５】
前記ポリゴンは三角形であり、前記バウンディングキューブは１２個のポリゴンからなる請求項２記載の情報処理装置。
【請求項６】
前記デプスバッファ手段は、ポリゴンジオメトリデータをレンダリングし、地形図の視線方向におけるクリップ空間上の奥行きを求める請求項１記載の情報処理装置。
【請求項７】
前記レンダリング手段により得れらた画像を前記３Ｄ画像に重ねて表示する手段をさらに具備する請求項１記載の情報処理装置。
【請求項８】
前記情報処理装置は、ネットワークを介してサーバに接続され、
前記サーバは前記３Ｄ画像と前記３Ｄボリュームデータとを格納し、前記情報処理装置からの要求に応じて前記３Ｄ画像と前記３Ｄボリュームデータとを前記情報処理装置へ送信する請求項１記載の情報処理装置。
【請求項９】
３Ｄ画像のデプステクスチャを求めることと、
視線方向におけるデプステクスチャまでのデプスをデプスリミットとして３Ｄボリュームデータをレイキャスティングすることと、
レイキャスティングの結果をレンダリングすることと、
を具備する方法。
【請求項１０】
コンピュータにより実行されるプログラムであって、前記プログラムは、
３Ｄ画像のデプステクスチャを求めることと、
視線方向におけるデプステクスチャまでのデプスをデプスリミットとして３Ｄボリュームデータをレイキャスティングすることと、
レイキャスティングの結果をレンダリングすることと、
を具備するものであるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は３次元画像表示に関する。
【背景技術】
【０００２】
３次元（３Ｄと略称する）画像表示法には、３Ｄ画像を任意断面で表示するＭＰＲ（Multiplanar reconstruction）法と、３Ｄ画像を２次元（２Ｄと略称する）平面上に投影表示するレンダリング法の２種類がある。レンダリング法は、表面を表現するサーフェスレンダリングと、奥行き情報を活用するボリュームレンダリングの２種類がある。ボリュームレンダリングは、３Ｄボリュームデータから２Ｄ画像を作成するためにレイキャスティング技術を用いる。レイキャスティング技術は、カメラと３Ｄボリュームデータとの間に仮想スクリーンを配置し、仮想スクリーン上の２Ｄ画像の画素数と同数の光線（レイ）をカメラから３Ｄボリュームデータに対して照射し、各々のレイが通過する３Ｄボリュームデータの各点（ボクセル）の列であるボクセル列の各輝度値を追跡して、２Ｄ画像上の対応する画素値（色）とするものである。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】モビーン・モバニア（Mobeen Movania）等著、「High-Performance Volume Rendering on the Ubitquitous Web GL Platform(ユビキタスWebGLプラットフォーム上の高性能ボリュームレンダリング)」、2014 IEEE 14th International Conference on High Performance Compuitng and Communications, pages 381-388
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来の３Ｄ表示処理では、３Ｄボリュームデータをレンダリングして得た３Ｄ画像を他の３Ｄ画像に重ねて表示すると、レンダリングにより得た３Ｄ画像が他の３Ｄ画像を隠してしまうという課題があった。
【０００５】
本発明の目的は、３Ｄボリュームデータをレンダリングして得られた３Ｄ画像を他の３Ｄ画像に重ねて表示し、レンダリングにより得られた３Ｄ画像と他の３Ｄ画像をともに視認することができる情報処理装置、方法及びプログラムを提供することである。
【課題を解決するための手段】
【０００６】
実施形態によれば、３Ｄボリュームデータおよび３Ｄ画像を重畳して２次元表示するための画像を、クライント側のブラウザで作成する情報処理装置は、３Ｄ画像のデプステクスチャを求める手段と、視線方向におけるデプステクスチャまでのデプスをデプスリミットとして３Ｄボリュームデータをレイキャスティングする手段と、レイキャスティングの結果をレンダリングする手段とを具備する。
【図面の簡単な説明】
【０００７】
【図１】実施形態のシステム構成の一例を示すブロック図である。
【図２】座標変換の概要を示す流れ図である。
【図３】ウェブブラウザの動作を示すフローチャートである。
【図４】デプスバッファの動作を示すフローチャートである。
【図５】カメラ座標系とオブジェクト座標系の関係を示す図である。
【図６】バーテックシェーダの動作の一例を示すフローチャートである。
【図７】フラグメントシェーダの動作の一例を示すフローチャートである。
【図８】ポリゴンジオメトリデータが示す地形図の一例を示す図である。
【図９】３Ｄボリュームデータが示す雲の一例を示す図である。
【図１０】本実施形態による３Ｄボリュームデータのレンダリング結果をポリゴンジオメトリデータが示す地形図に重ねて表示する一例を示す図である。
【図１１】バーテックシェーダの動作の変形例を示すフローチャートである。
【図１２】フラグメントシェーダの動作の変形例を示すフローチャートである。
【発明を実施するための形態】
【０００８】
以下、図面を参照して実施形態を説明する。
【０００９】
図１は、第１の実施形態に係る情報処理装置の構成を示す。実施形態はネットワーク１２を介してサーバ１４に接続されるクライアント端末１６を例にとり説明する。クライアント端末１６は、デスクトップ型又はノートブック型のパーソナルコンピュータ、携帯型のパーソナルコンピュータ、その他の携帯型の情報機器、タブレット、スマートフォン、その他の情報処理装置など、様々なデバイスによって実現可能である。ここでは、ノートブック型のパーソナルコンピュータとする。図示しないが、ノートブック型のパーソナルコンピュータは、コンピュータ本体と、本体に対してヒンジによって開閉自在に取り付けられているディスプレイユニットとから構成される。コンピュータ本体は、薄い箱形の筐体を有しており、その上面には、キーボード、電源ボタン、タッチパッド等が配置されている。
【００１０】
クライアント端末１６は、キーボード／マウス２２、ディスプレイ２４と、ＧＰＵ（Graphic Processing Unit）２６と、デプスバッファ２８と、ウェブブラウザ３０とを含む。キーボード／マウス２２はディスプレイ２４で表示される３Ｄ画像の視線方向及び位置を指定するためのものである。ウェブブラウザ３０はHTML5ベースの制御アプリケーション３２を含み、グラフィック関連のタグとしてのcanvas上で図形や画像を描画することができる。canvasタグを利用して描画処理を行うためのＡＰＩを実装したオブジェクトしてWeb GLが知られており、本実施形態はWeb GLを利用する。
【００１１】
クライアント端末１６は、ネットワーク１２上のサーバ１４に接続される。サーバ１４は、３Ｄボリュームデータ４６と、ポリゴンジオメトリデータ４８を格納する。本実施形態は、気象情報の表示に関し、雲の３Ｄ画像を３Ｄ地形図上に重ねて表示する。３Ｄボリュームデータ４６は、雲の状態を示す３Ｄ画像データであり、ポリゴンジオメトリデータ４８は地形図を表わす３Ｄデータである。クライアント端末１６は、それぞれのデータをレンダリングして、画面上で重畳する。本実施形態は、３Ｄボリュームデータのレンダリングにおいて、２つの画像の重畳を考慮したレイキャスティングを行なう。
【００１２】
クライアント端末１６のウェブブラウザ３０は、サーバ１４に対して３Ｄ画像表示を要求する。サーバ１４は要求に応じて必要なデータ４４、４６をクライアント端末１６に送信する。サーバ14は３Ｄボリュームデータ４６をテクスチャアトラスに変更してクライント端末１６に送信する。ウェブブラウザ３０は、受信したテクスチャアトラスの形式である３Ｄボリュームデータ４６をＧＰＵ２６に送る。テクスチャアトラスとは、３Ｄボリュームデータに含まれる複数の画像を1枚の画像に纏めたものであり、ＧＰＵ２６が読み込むファイル数が減り、ロード時間が短縮できるとともに、処理速度も向上する。例えば、３Ｄボリュームデータを均一な３Ｄグリッドにサンプルして、スライスして、スライスをイメージに並べることで、テクスチャアトラスが作成される。ウェブブラウザ３０は、サーバ１４から受信したポリゴンジオメトリデータ４４をデプスバッファ２８に送る。
【００１３】
３Ｄ形状を２Ｄ画面上に描画する際に、例えば三角形等の基本図形を用いる。基本図形をポリゴンと称し、ポリゴンは３次元空間内の頂点データにより定義される。
【００１４】
ＧＰＵ２６は、ポリゴンの頂点データを扱うバーテックスシェーダ３６、頂点データに対して走査変換・補間等を行ない、実際に描画に使用される画素を求めるラスタライザ・補間回路３８、描画される際の画素データを扱うフラグメントシェーダ（またはピクセルシェーダとも称される）４０を含む。バーテックスシェーダ３６、フラグメントシェーダ４０はプログラマブルである。バーテックスシェーダ３６は、頂点に関するデータを受け取り、最終的に頂点をどのように処理するのかを決定する。フラグメントシェーダ４０は、画素をどのような色で出力するかを決定する。フラグメントシェーダ４０は、レイキャスティング処理を実行する。レイキャスティング処理は、カメラと３Ｄボリュームデータとの間に仮想スクリーンを配置し、仮想スクリーン上の２Ｄ画像の画素数と同数の光線（レイ）をカメラから３Ｄボリュームデータに対して照射し、各々のレイが通過する３Ｄボリュームデータの各点（ボクセル）の列であるボクセル列の各輝度値を追跡して、２Ｄ画像上の対応する画素値（色）とするものである。
【００１５】
デプスバッファ２８は、ポリゴンジオメトリデータ４４が示す地形図の奥行き（視線方向において最初に存在する地形までの距離）を示すデプステクスチャを作成する。
【００１６】
Web GLでは、３次元画像を表示するために頂点データから画像を生成する一連の流れはレンダリングパイプラインと称される。レンダリングパイプラインは、頂点データと光源情報とを入力するモデリング変換・視野（ビュー）変換と、頂点の陰影計算と、プロジェクション変換と、クリッピングと、走査変換・補間と、合成とを含む。陰影計算には材質情報が使われてもよいし、合成にはテクスチャも使われてもよい。
【００１７】
モデリング変換・ビュー変換と陰影計算は、バーテックスシェーダ３６で実行され、クリッピングと走査変換・補間はラスタライザ・補間回路３８で実行され、走査変換により選ばれた画像の各画素の色を頂点の陰影の補間値やサンプリングしたテクスチャの値を合成（マージ）して決定することはフラグメントシェーダ４０で実行される。バーテックスシェーダ３６は頂点毎に処理し、フラグメントスシェーダ４０は画素毎に処理する。
【００１８】
図２は本実施形態における座標変換を示す。３Ｄボリュームデータを２Ｄの画面上に表示するためには、座標変換が必要である。３Ｄボリュームデータ（３次元空間）のポリゴンの各頂点は、モデリング変換・ビュー変換や、プロジェクション変換等を経て画面上に描画される。
【００１９】
３Ｄボリュームデータの座標系はオブジェクト座標系５２と呼ばれる。３Ｄ表示を行なうには、先ず３Ｄオブジェクトを作成し、それを回転・平行移動させて、２次元画面上に配置する。オブジェクト座標系５２はモデリングの際にオブジェクトの頂点座標や法線を指定するための座標系である。オブジェクト座標系５２は、描画オブジェクト基準の座標系であり、描画オブジェクト毎に座標系がある。オブジェクト座標系５２はモデリング座標系あるいはローカル座標系とも呼ばれる。
【００２０】
オブジェクト座標系５２は、モデルビュー行列５４を用いてカメラ座標系５６に変換される。カメラ座標系５６は、視点の位置が原点となるカメラスペースの座標系であり、カメラが原点にあって、カメラの方向は−ｚ軸方向である。オブジェクト座標系５２をカメラ座標系５６に変換するということは、物体を平行移動することを含む。
【００２１】
なお、実際には、オブジェクト座標系５２からカメラ座標系５６への変換は、モデリング変換とビューイング変換を含むが、実施形態では両変換を纏めてモデルビュー変換と称する。モデリング変換は、オブジェクト座標系から世界座標系への変換であり、ビューイング変換は、世界座標系からカメラ座標系への変換である。
【００２２】
世界座標系は空間内に配置される複数のオブジェクト座標系間を結び付けるための共通の座標系である。オブジェクトの配置（位置と姿勢）は世界座標系に対するオブジェクト座標系の座標変換（モデリング変換と称する）として表される。世界座標系の原点は取り扱うシーンを包含する静的な物体上に置かれることが一般的である。世界座標系はグローバル座標系とも呼称される。モデリング変換行列は、描画したい３Ｄオブジェクトの位置や、拡大縮小（スケーリング）の有無、そして回転しているかどうかを定義する。ビューイング変換行列は、三次元空間を撮影するカメラを定義するために、カメラの位置やカメラの向き等を定義する。
【００２３】
モデリング変換とビューイング変換はそれぞれ４×４の行列演算が必要であるが、これらはまとめてモデルビュー行列５４により演算される。
【００２４】
モデルビュー行列５４は次のような４×４の座標変換行列である。
【数１】
2016009374.tif 000003
【００２５】
行列の要素ｍ１１〜ｍ４４は３Ｄ画像の視線方向及び位置を決めるカメラの向きや位置に応じてウェブブラウザ３０により決定される。もし、拡大縮小が無しであれば、上記のモデルビュー行列５４のｍ１１〜ｍ１３、ｍ２１〜ｍ２３、ｍ３１〜ｍ３３までの３ｘ３のサブセット行列が３次元での回転(rotation)を行なう回転行列である。そして、回転行列の逆行列(inverse)は転置行列(transpose)と同じである。回転行列の場合は、逆行列と転置行列が同じなので、逆回転のためには転置の行列が使われる。
【００２６】
下記のモデルビュー行列はｘ軸を中心に９０度回転させる。
【数２】
2016009374.tif 000004
【００２７】
例えば、[０１０]Ｔの３Ｄの点を上記の行列で回転させると、下記のようになる。
【数３】
2016009374.tif 000005
【００２８】
そして、行列転置と[００１]Ｔを掛け算すると、[０１０]Ｔは戻ってくる。
【数４】
2016009374.tif 000006
【００２９】
カメラ座標系５６は、プロジェクション行列５８を用いてクリップ座標系６０に変換される。クリップ座標系６０は、レンダリングパイプラインで使われる座標系であり、いわゆる表示画面であるクリップ空間に３Ｄデータが投影された後の同次の座標系である。プロジェクション行列５８はプロジェクション変換とも呼ばれるものであり、４×４の行列演算である。
【００３０】
この座標変換により、３次元空間内のオブジェクトを構成する各ポリゴンの頂点の２Ｄディスプレイ上の描画位置が決定される。
【００３１】
図３はウェブブラウザ３０の動作を示す。ブロック１０２で、キーボード／マウス２２からレイ方向がウェブブラウザ３０に入力される。レイ方向はカメラ座標系のカメラの向きと位置から定義される。ブロック１０４で、ウェブブラウザ３０は、レイ方向に基づいて数１のモデルビュー行列の各要素ｍ１１〜ｍ４４を決定し、モデルビュー行列を生成する。ブロック１０６で、ウェブブラウザ３０は、レイ方向に基づいてプロジェクション行列を生成する。ウェブブラウザ３０は、モデルビュー行列、プロジェクション行列をデプスバッファ２８に送る。
【００３２】
デプスバッファ２８は、ウェブブラウザ３０からモデルビュー行列、プロジェクション行列を受け取ると、図４に示すように、先ず、ブロック１１２で、空のデプステクスチャを初期化する。ブロックＢ１１４で、デプスバッファ２８は、デプステクスチャをフレームバッファにセットする。ポリゴンジオメトリデータ４４は、サーバ４４からウェブブラウザ３０を介してデプスバッファ２８に渡される。ブロックＢ１１６で、デプスバッファ２８は、ＧＰＵ２６を用いてポリゴンジオメトリデータ４４をフレームバッファ上にレンダリングする。これにより、クリップ空間上の地形図のｚ値（カメラから見た奥行き）が求められる。求められたｚ値はデプステクスチャ画像として出力される。
【００３３】
図５は、カメラ座標系とオブジェクト座標系の関係を示す。カメラから出たレイはディスプレイスクリーンを通過し、さらに３Ｄボリュームデータが示すオブジェクト（例えば、気象情報としての雲）を囲むバウンディングキューブを通過する。バウンディングキューブは６面体であり、各面の正方形は２つの三角形（ポリゴンと称される）からなる。そのため、バウンディングキューブは１２個のポリゴンからなる。各ポリゴンは３つの頂点からなり、次のような頂点座標で定義される。
【００３４】
ポリゴン１    （0.0,  0.0,  0.0），（0.0,  1.0,  0.0），（1.0,  1.0,  0.0）  
ポリゴン２    （1.0,  1.0,  0.0），（1.0,  0.0,  0.0），（0.0,  0.0,  0.0）  
ポリゴン３    （0.0,  0.0,  1.0），（1.0,  0.0,  1.0），（1.0,  1.0,  1.0）  
ポリゴン４    （1.0,  1.0,  1.0），（0.0,  1.0,  1.0），（0.0,  0.0,  1.0）  
ポリゴン５    （0.0,  1.0,  0.0），（0.0,  1.0,  1.0），（1.0,  1.0,  1.0）  
ポリゴン６    （1.0,  1.0,  1.0），（1.0,  1.0,  0.0），（0.0,  1.0,  0.0）  
ポリゴン７    （0.0,  0.0,  0.0），（1.0,  0.0,  0.0），（1.0,  0.0,  1.0）  
ポリゴン８    （1.0,  0.0,  1.0），（0.0,  0.0,  1.0），（0.0,  0.0,  0.0）  
ポリゴン９    （0.0,  0.0,  0.0），（0.0,  0.0,  1.0），（0.0,  1.0,  1.0）  
ポリゴン１０  （0.0,  1.0,  1.0），（0.0,  1.0,  0.0），（0.0,  0.0,  0.0）  
ポリゴン１１  （1.0,  0.0,  0.0），（1.0,  1.0,  0.0），（1.0,  1.0,  1.0）  
ポリゴン１２  （1.0,  1.0,  1.0），（1.0,  0.0,  1.0），（1.0,  0.0,  0.0）
レイがバウンディングキューブのフロントフェイスと交差する点がレイ開始点（ｘｓ，ｙｓ，ｚｓ）であり、レイがバウンディングキューブのバックフェイスと交差する点がレイ終端（ｘｅ，ｙｅ，ｚｅ）である。レイ開始点（ｘｓ，ｙｓ，ｚｓ）はカメラ座標系である。カメラ座標系のレイ開始点（ｘｓ，ｙｓ，ｚｓ）は、（５）式に示すように、プロジェクション行列との演算によりクリップ座標系のレイ開始点に変換される。
【００３５】
レイ開始点（クリップ座標系）  
＝プロジェクション行列×（ｘｓ，ｙｓ，ｚｓ）    （５）式
カメラはカメラ座標系の原点に位置するので、カメラ座標系のレイ開始点（ｘｓ，ｙｓ，ｚｓ）の情報があれば、レイ方向はレイ開始点の情報のみから求めることができる。オブジェクト座標系でレイ方向を求めるためには、レイ開始点（ｘｓ，ｙｓ，ｚｓ）とレイ終端（ｘｅ，ｙｅ，ｚｅ）が必要である（両者の差分がレイ方向となる）のに対して、本実施形態では、レイ方向を簡単に求めることができる。すなわち、カメラ座標系のレイ方向は、（６）式に示すように、レイ開始点（ｘｓ，ｙｓ，ｚｓ）の正規化により求められる。
【００３６】
レイ方向（カメラ座標系）＝normalize（ｘｓ，ｙｓ，ｚｓ）    （６）式
オブジェクト座標系のレイ方向は、（７）式に示すように、カメラ座標系のレイ方向normalize（ｘｓ，ｙｓ，ｚｓ）にモデルビュー行列の３ｘ３のサブセット行列の転置行列を演算することにより求められる。
【００３７】
レイ方向（オブジェクト座標系）  
＝モデルビュー行列の３ｘ３のサブセット行列の転置行列  
ｘnormalize（ｘｓ，ｙｓ，ｚｓ）    （７）式
カメラ座標系のレイの深さ（レイデプス）は、（８）式に示すように、カメラ座標系のレイ開始点（ｘｓ，ｙｓ，ｚｓ）の位置から演算することができる。
【００３８】
レイデプス（カメラ座標系）  
＝（tmp.z／tmp.w＋１．０）／２．０    （８）式  
ここで、tmp＝プロジェクション行列×レイの位置（カメラ座標系）である。そのため、tmpは（ｘ，ｙ，ｚ，ｗ）の４ｘ１の行列であり、tmp.zとtmp.wはtmpのｚ、ｗのコンポーネントである。 
図６はバーテックスシェーダ３６の動作を示す。バーテックスシェーダ３６は、ブロックＢ１２２で、制御アプリケーション３２からバウンディングキューブを構成する１２個のポリゴンの計３６個の頂点データＶｐ（オブジェクト座標系）を受け取り、ブロック１２４で、モデルビュー行列とプロジェクション行列とを受け取る。モデルビュー行列とプロジェクション行列は全ての頂点に対して一律に適用される。
【００３９】
ブロック１２６で、バーテックスシェーダ３６は、（９）式に示すように、オブジェクト座標系の頂点データＶｐをクリップ座標系の頂点データに変換する。
【００４０】
頂点データ（クリップ座標系）  
＝プロジェクション行列ｘモデルビュー行列ｘ頂点データＶｐ（オブジェクト座標系）  
（９）式
ブロック１２８で、バーテックスシェーダ３６は、（１０）式に示すように、オブジェクト座標系の頂点データＶｐをカメラ座標系の頂点データに変換する。
【００４１】
頂点データ（カメラ座標系）  
＝モデルビュー行列ｘ頂点データＶｐ（オブジェクト座標系）    （１０）式
ブロック１３０で、バーテックスシェーダ３６は、オブジェクト座標系の頂点データＶｐと、カメラ座標系の頂点データを出力する。これにより、バウンディングキューブを構成する１２個のポリゴンの計３６個の頂点データ（カメラ座標系とオブジェクト座標系）が得られる。これらの頂点データは、バーテックスシェーダ３６からフラグメントシェーダ４０に渡される。
【００４２】
図７は、フラグメントシェーダ４０の動作を示す。
【００４３】
ブロック１４２で、フラグメントシェーダ４０は、バーテックスシェーダ３６の出力の１２個のポリゴンの計３６個の頂点データ（カメラ座標系とオブジェクト座標系）をラスタライザ・補間回路３８で処理した結果のフラグメントの頂点データを受け取る。
【００４４】
ブロック１４４で、フラグメントシェーダ４０は、デプステクスチャ画像ｄｔｅｘをデプスバッファ２８から受け取る。
【００４５】
ブロック１４６で、フラグメントシェーダ４０は、モデルビュー行列の３ｘ３のサブセット行列の転置行列、３Ｄボリュームデータ、レイのステップサイズ、プロジェクション行列の逆行列を制御アプリケーション３２から受け取る。モデルビュー行列の３ｘ３のサブセット行列の転置行列、レイのステップサイズは全ての頂点に対して一律に適用される。
【００４６】
ブロック１４８で、フラグメントシェーダ４０は、カメラ座標系の頂点データをカメラ座標系のレイ開始点（ｘｓ，ｙｓ，ｚｓ）として設定する。
【００４７】
ブロック１５０で、フラグメントシェーダ４０は、オブジェクト座標系の頂点データをオブジェクト座標系のレイ開始点として設定する。
【００４８】
ブロック１５２で、フラグメントシェーダ４０は、（１１）式に示すように、カメラ座標系のレイ開始点を正規化し、カメラ座標系のレイ方向として設定する。
【００４９】
レイ方向（カメラ座標系）＝normalize（ｘｓ，ｙｓ，ｚｓ）    （１１）式
ブロック１５４で、フラグメントシェーダ４０は、（１２）式に示すように、オブジェクト座標系のレイ方向を求める。
【００５０】
レイ方向（オブジェクト座標系）  
＝モデルビュー行列の３ｘ３のサブセットの転置行列ｘレイ方向（カメラ座標系）  
（１２）式
フラグメントシェーダ４０は、ブロック１５６で、レイデプス、ボリュームデータを初期化し、ブロック１５８で、デプステクスチャ画像からレイの方向にあるデプスを読み、読み取ったデプスをデプスリミットとして設定する。
【００５１】
ブロック１６０で、フラグメントシェーダ４０は、オブジェクト座標系のレイ開始点の３Ｄボリュームデータの強度を求める。
【００５２】
ブロック１６２で、フラグメントシェーダ４０は、上記した（８）式に示すように、カメラ座標系のレイデプスを求める。
【００５３】
フラグメントシェーダ４０は、ブロック１６４で、(１３)式に示すように、オブジェクト座標系のレイ開始点を、ブロック１４６で読み込んだステップサイズだけインクリメントし、ブロック１６６で、(１４)式に示すように、カメラ座標系のレイ開始点をステップサイズだけインクリメントする。
【００５４】
レイ開始点（オブジェクト座標系）  
＝レイ開始点（オブジェクト座標系）  
＋レイ方向（オブジェクト座標系）ｘステップサイズ      （１３）式
レイ開始点（カメラ座標系）  
＝レイ開始点（カメラ座標系）＋レイ方向（カメラ座標系）ｘステップサイズ  
（１４）式
以上により、オブジェクト座標系とカメラ座標系とのレイ開始点と、クリップ座標系のレイデプスを求めることができる。ブロック１６８で、フラグメントシェーダ４０は、レイ開始点（オブジェクト座標系）＜（１，１，１）であるか否か、及びレイデプス＜デプスリミットであるか否かを判定する。これらの判定は、３Ｄボリュームデータをレンダリングするためのレイキャスティングの上限を判定するものである。オブジェクト座標系でのレイの位置（ｘ、ｙ、ｚ）が全て１．０以下であることは、レイの位置がバウンディングキューブ内にあることを示す。カメラ座標系でのレイデプスがデプスリミット以下であることは、レイデプスがデプステクスチャ画像の手前であることを示す。そのため、ブロック１６８の２つの条件のいずれかが成立しない場合は、レイキャスティングを続けると、３Ｄボリュームデータのレンダリング画像である雲の画像がポリゴンジオメトリデータ４４のデプステクスチャ画像である地形図を隠してしまうので、ブロック１７０に進む。ブロック１６８の２つの条件がともに成立する場合は、レイキャスティングを続けても、３Ｄボリュームデータの雲画像がポリゴンジオメトリデータ４４の地形図を隠してしまうことがないので、ブロック１６０に戻り、レイキャスティングを続ける。
【００５５】
レイキャスティングが終了すると、フラグメントシェーダ４０は、ブロック１７０で、３Ｄボリュームデータをレンダリング（視覚化）する。レンダリングの手法は、例えば最大投影（MIP）法、平均値投影法等があるが、これらに限定されず、何でも良い。
【００５６】
この実施形態によれば、図４に示すように、デプスバッファ２８は、３Ｄボリュームデータのレイキャスティング前にポリコンジオメトリデータのデプスバッファを計算しておく。デプスバッファはフラグメントシェーダ４０にテクスチャ引数として渡される。フラグメントシェーダ４０は、このテクスチャ引数に基づいて、レイの方向にある物体（例えば、山、丘等）の位置に対応する距離をレイデプスが越えることを判定すると、レンダリングは行なわない。そのため、山の手前の雲はレンダリングされるが、山の後の雲はレンダリングされない。従って、山の後に位置する雲がレンダリングされて、山を隠してしまうことが防止され、地形図の３Ｄ画像に雲の３Ｄ画像を重畳して表示しても、後に位置する雲の３Ｄ画像が手前に位置する地形図の３Ｄ画像を隠すことが無い。
【００５７】
バーテックスシェーダ３６、フラグメントシェーダ４０の変形例を説明する。図１１はバーテックスシェーダ３６の動作の変形例を示し、図１２はフラグメントシェーダ４０の動作の変形例を示す。図１１、図１２において、図６、図７と同一部分は同一参照数字を付してその詳細な説明は省略する。図６のバーテックスシェーダ３６は、カメラ座標系の頂点データを求めているが、変形例では、バーテックスシェーダ３６ではなくフラグメントシェーダ４０がカメラ座標系の頂点データを求める。
【００５８】
図１１に示すように、バーテックスシェーダ３６はカメラ座標系の頂点データを求めるブロック１２８を省略する。そのため、ブロック１３０Ｂで、バーテックスシェーダ３６は、オブジェクト座標系の頂点データＶｐと、クリップ座標系の頂点データを出力する。これにより、バウンディングキューブを構成する１２個のポリゴンの計３６個の頂点データ（クリップ座標系とオブジェクト座標系）が得られる。
【００５９】
図１２に示すように、フラグメントシェーダ４０は、ブロック１４２Ｂで、バーテックスシェーダ３６の出力の１２個のポリゴンの計３６個の頂点データ（クリップ座標系とオブジェクト座標系）をラスタライザ・補間回路３８で処理した結果のフラグメントの頂点データを受け取る。
【００６０】
レイ開始点はカメラ座標系で設定することが好ましいので、ブロック１４８Ｂで、フラグメントシェーダ４０は、（１５）式に示すように、クリップ座標系の頂点データをカメラ座標系の頂点データに変換して、カメラ座標系の頂点データをカメラ座標系のレイ開始点（ｘｓ，ｙｓ，ｚｓ）として設定する。
【００６１】
頂点データ（カメラ座標系）  
＝プロジェクション行列の逆行列ｘ頂点データ（クリップ座標系）    （１５）式
変形例によれば、バーテックスシェーダ３６はカメラ座標系の頂点データを求めることを省略することができる。その代わり、フラグメントシェーダ４０がクリップ座標系の頂点データをカメラ座標系の頂点データに変換する。他は、図６、図７の動作と同じであるので、上述した実施形態と同じ作用効果を得ることができる。
【００６２】
なお、本実施形態の処理はコンピュータプログラムによって実現することができるので、このコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのコンピュータプログラムをコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
【００６３】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。例えば、３Ｄボリュームデータと一緒に表示する３Ｄ画像は地形図に限らず、他の３Ｄボリュームデータをレンダリングした画像でもよい。
【符号の説明】
【００６４】
１４…サーバ、１６…クライアント端末、２２…キーボード／マウス、２４…ディスプレイ、２６…ＧＰＵ、２８…デプスバッファ、３０…ウェブブラウザ、３６…バーテックスシェーダ、４０…フラグメントシェーダ、４４…ポリゴンジオメトリデータ、４６…３Ｄボリュームデータ
【図１】
2016009374.tif 000007
【図２】
2016009374.tif 000008
【図３】
2016009374.tif 000009
【図４】
2016009374.tif 000010
【図５】
2016009374.tif 000011
【図６】
2016009374.tif 000012
【図７】
2016009374.tif 000013
【図８】
2016009374.tif 000014
【図９】
2016009374.tif 000015
【図１０】
2016009374.tif 000016
【図１１】
2016009374.tif 000017
【図１２】
2016009374.tif 000018