(57)【要約】      （修正有）【課題】シャドウマップを更新するための行列式の更新を出来る限り低減することにより、影のエッジ部分における画面のちらつきを出来る限り低減する。【解決手段】画像処理装置として機能する情報処理装置１０は、ＣＰＵ１２を含み、ＣＰＵ１２は画像データの生成および表示処理に並行して、シャドウマップを生成するための行列式の更新処理を実行する。行列式の更新処理では、仮想カメラの撮影範囲が変化されたり、光源からの光の向きが変化されたりした場合であっても、前回行列式を計算（更新）したときからの仮想カメラの撮影範囲の変化量が所定量未満であり、かつそのときからの光源からの光の向きの変化量が所定量未満である場合には、行列式を更新しない。【選択図】図１
2015018294.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータで実行される画像処理プログラムであって、
前記コンピュータを、
シャドウマップを生成するための行列式を繰り返し計算して前記記憶手段に記憶する計算部と、
前記計算部において計算した行列式を用いて前記シャドウマップを生成する生成部と、
前記生成部において生成したシャドウマップを用いて仮想カメラから見た画像を描画する描画部として機能させ、
前記計算部は、前記仮想カメラの撮影範囲の変化量が第１所定量未満であるとき、前記行列式を計算しない、画像処理プログラム。
【請求項２】
前記撮影範囲の変化量は前記計算部によって前回行列式を計算したときからの変化量の累積値である、請求項１記載の画像処理プログラム。
【請求項３】
前記シャドウマップは前記撮影範囲よりも広い範囲について生成される、請求項１または２記載の画像処理プログラム。
【請求項４】
前記仮想カメラの位置、向きおよび画角の少なくとも１つを変化させることにより、前記撮影範囲は変化される、請求項１ないし３のいずれかに記載の画像処理プログラム。
【請求項５】
前記計算部は、前記仮想カメラの撮影範囲の変化量が第１所定量未満であり、かつ、前記光源からの光の向きの変化量が第２所定量未満であるとき、前記行列式を計算しない、請求項１ないし４のいずれかに記載の画像処理プログラム。
【請求項６】
前記計算部は、前記仮想カメラの撮影範囲の変化量が第１所定量未満であり、かつ、前記光源の照射範囲の変化量が第３所定量未満であるとき、前記行列式を計算しない、請求項１ないし４のいずれかに記載の画像処理プログラム。
【請求項７】
前記光源の位置、当該光源からの光の向きおよび当該光源からの光の広がりの少なくとも１つを変化させることにより、前記照射範囲は変化される、請求項６記載の画像処理プログラム。
【請求項８】
シャドウマップを生成するための行列式を繰り返し計算する計算部と、
前記計算部によって計算された行列式を用いて前記シャドウマップを生成する生成部と、
前記生成部によって生成されたシャドウマップを用いて仮想カメラから見た画像を描画する描画部を備え、
前記計算部は、前記仮想カメラの撮影範囲の変化量が所定量未満であるとき、前記行列式を計算しない、画像処理装置。
【請求項９】
シャドウマップを生成するための行列式を繰り返し計算する計算部と、
前記計算部によって計算された行列式を用いて前記シャドウマップを生成する生成部と、
前記生成部によって生成されたシャドウマップを用いて仮想カメラから見た画像を描画する描画部を備え、
前記計算部は、前記仮想カメラの撮影範囲の変化量が所定量未満であるとき、前記行列式を計算しない、画像処理システム。
【請求項１０】
コンピュータの画像処理方法であって、
前記コンピュータは、
（ａ）シャドウマップを生成するための行列式を繰り返し計算して前記記憶手段に記憶し、
（ｂ）前記ステップ（ａ）において計算した行列式を用いて前記シャドウマップを生成し、そして
（ｃ）前記ステップ（ｂ）において生成したシャドウマップを用いて仮想カメラから見た画像を描画し、
前記ステップ（ａ）は、前記仮想カメラの撮影範囲の変化量が所定量未満であるとき、前記行列式を計算しない、画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は画像処理プログラム、画像処理装置、画像処理システムおよび画像処理方法に関し、特にたとえば、仮想空間を視点から見た画像を生成する、画像処理プログラム、画像処理装置、画像処理システムおよび画像処理方法に関する。
【背景技術】
【０００２】
この種の画像処理装置の一例が特許文献１に開示されている。この特許文献１の画像処理装置では、ＧＰＵが射影空間での深度情報をグラフィックメモリに出力することにより、シャドウマップが生成される。このシャドウマップを用いて、各ピクセルのシャドウ成分（影部）が求められる。
【特許文献１】特開２００７−３２８４５８［G06T 15/50］
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかし、この背景技術では、たとえば、少し仮想カメラが移動された場合にも、シャドウマップが更新されるため、影のエッジ部分の形に微妙な変化が生じ、そのエッジ部分において画面がちらつく場合がある。このような現象は、シャドウマップの解像度が低いほど、顕著に現れる。
【０００４】
それゆえに、この発明の主たる目的は、新規な、画像処理プログラム、画像処理装置、画像処理システムおよび画像処理方法を提供することである。
【０００５】
また、この発明の他の目的は、影のエッジ部分における画面のちらつきを出来る限り低減できる、画像処理プログラム、画像処理装置、画像処理システムおよび画像処理方法を提供することである。
【課題を解決するための手段】
【０００６】
第１の発明は、コンピュータで実行される画像処理プログラムであって、コンピュータを、計算部と、生成部と、描画部として機能させる。計算部は、シャドウマップを生成するための行列式を繰り返し計算して記憶手段に記憶する。生成部は、計算部において計算した行列式を用いてシャドウマップを生成する。描画部は、生成部において生成したシャドウマップを用いて仮想カメラから見た画像を描画する。ただし、計算部は、仮想カメラの撮影範囲の変化量が第１所定量未満であるとき、行列式を計算（更新）しない。
【０００７】
第１の発明によれば、仮想カメラの撮影範囲の変化量が第１所定量未満である場合には、シャドウマップを生成するための行列式を更新しないので、影のエッジ部分の形が微妙に変化することがない。したがって、影のエッジ部分における画面のちらつきを出来る限り低減することができる。
【０００８】
第２の発明は第１の発明に従属し、撮影範囲の変化量は計算部によって前回行列式を計算したときからの変化量の累積値である。つまり、前回行列式を更新してからの撮影範囲の変化量の累積値が第１所定量未満であるには、行列式を更新しない。ただし、その累積値が第１所定量以上になると、行列式は更新される。
【０００９】
第２の発明によれば、前回行列式を更新してからの撮影範囲の変化量の累積値が第１所定量未満かどうかに応じて行列式を更新するかどうかが決定されるため、第１所定量未満ずつ撮影範囲を変化させることにより、前回行列式を更新してから撮影範囲が大幅に変化されているにも拘わらず、行列式が更新されないという不都合を回避することができる。
【００１０】
第３の発明は、第１または第２の発明に従属し、シャドウマップは撮影範囲よりも広い範囲について生成される。
【００１１】
第３の発明によれば、行列式が更新されない場合にも撮影範囲の変化に対応することができる。
【００１２】
第４の発明は、第１ないし第３の発明に従属し、仮想カメラの位置、向きおよび画角の少なくとも１つを変化させることにより、撮影範囲は変化される。ただし、仮想カメラの位置、向きおよび画角の少なくとも１つが変化されても、撮影範囲の変化量が第１所定量未満であれば、行列式は更新されない。
【００１３】
第４の発明によれば、第１の発明と同様に、影のエッジ部分において画面がちらつくのを出来る限り低減することができる。
【００１４】
第５の発明は、第１ないし第４の発明のいずれかに従属し、計算部は、仮想カメラの撮影範囲の変化量が第１所定量未満であり、かつ、光源からの光の向きの変化量が第２所定量未満であるとき、行列式を計算しない。仮想カメラの撮影範囲のみならず、光源からの光の向きの変化量も考慮される。たとえば、並行光（無限光）のような光源からの光の向きが変化される。
【００１５】
第５の発明によれば、仮想カメラの撮影範囲の変化量が第１所定未満である場合には、光源からの光の向きの変化量に応じて行列式を更新するかどうかを決定することができる。かかる場合にも、第１の発明と同様に、影のエッジ部分において画面がちらつくのを出来る限り低減することができる。
【００１６】
第６の発明は、第１ないし第４の発明に従属し、計算部は、仮想カメラの撮影範囲の変化量が第１所定量未満であり、かつ、光源の照射範囲の変化量が第３所定量未満であるとき、行列式を計算しない。仮想カメラの撮影範囲のみならず、光源からの光の照射範囲の変化量も考慮される。
【００１７】
第６の発明によれば、仮想カメラの撮影範囲の変化量が第１所定未満である場合には、光源からの光の照射範囲の変化量に応じて行列式を更新するかどうかを決定することができる。かかる場合にも、第１の発明と同様に、影のエッジ部分において画面がちらつくのを出来る限り低減することができる。
【００１８】
第７の発明は、第６の発明に従属し、光源の位置、当該光源からの光の向きおよび当該光源からの光の広がりの少なくとも１つを変化させることにより、照射範囲は変化される。たとえば、点光源、面光源およびスポットライトのような光源を適用することもできる。
【００１９】
第８の発明は、シャドウマップを生成するための行列式を繰り返し計算する計算部と、計算部によって計算された行列式を用いてシャドウマップを生成する生成部と、生成部によって生成されたシャドウマップを用いて仮想カメラから見た画像を描画する描画部を備え、計算部は、仮想カメラの撮影範囲の変化量が所定量未満であるとき、行列式を計算しない、画像処理装置である。
【００２０】
第９の発明は、シャドウマップを生成するための行列式を繰り返し計算する計算部と、計算部によって計算された行列式を用いてシャドウマップを生成する生成部と、生成部によって生成されたシャドウマップを用いて仮想カメラから見た画像を描画する描画部を備え、計算部は、仮想カメラの撮影範囲の変化量が所定量未満であるとき、行列式を計算しない、画像処理システムである。
【００２１】
第１０の発明は、コンピュータの画像処理方法であって、コンピュータは、（ａ）シャドウマップを生成するための行列式を繰り返し計算して記憶手段に記憶し、（ｂ）ステップ（ａ）において計算した行列式を用いてシャドウマップを生成し、そして（ｃ）ステップ（ｂ）において生成したシャドウマップを用いて仮想カメラから見た画像を描画し、ステップ（ａ）は、仮想カメラの撮影範囲の変化量が所定量未満であるとき、行列式を計算しない、画像処理方法である。
【００２２】
第８ないし第１０の発明においても、第１の発明と同様に、影のエッジ部分における画面のちらつきを出来る限り低減することができる。
【発明の効果】
【００２３】
この発明によれば、仮想カメラの撮影範囲の変化量が所定量未満である場合には、シャドウマップを生成するための行列式を更新しないため、影のエッジ部分における画面のちらつきを出来る限り低減することができる。
【００２４】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【００２５】
【図１】図１はこの発明の一実施例である情報処理装置の電気的な構成の一例を示すブロック図である。
【図２】図２は仮想空間に生成されるシーンの一例およびそのシーンについてのシャドウマップの一例を示す図解図である。
【図３】図３は図１に示すＲＡＭのメモリマップの一例を示す図解図である。
【図４】図４は図１に示すＣＰＵの行列式更新処理の一例の一部を示すフロー図である。
【図５】図５は図１に示すＣＰＵの行列式更新処理の他の一部であって、図４に後続するフロー図である。
【図６】図６は光源の他の例を示す図解図である。
【図７】図７は図１に示すＣＰＵの行列式更新処理の他の例の一部であって、図５に後続するフロー図である。
【発明を実施するための形態】
【００２６】
図１を参照して、この実施例の情報処理装置１０はＣＰＵ１２を含み、このＣＰＵ１２には、ＲＡＭ１４、入力装置１６およびＧＰＵ１８が接続される。また、ＧＰＵ１８には、ＶＲＡＭ（Video RAM）２０が接続されるとともに、インターフェイス２２を介してディスプレイ２４が接続される。このような情報処理装置１０としては、汎用のコンピュータを用いることができる。
【００２７】
情報処理装置１０は、画像処理装置としても機能し、画像データを生成および出力（表示）する。具体的に説明すると、ＧＰＵ１８は、ＣＰＵ１２の指示の下、３次元の仮想空間にオブジェクトをモデリングする。つまり、仮想空間に或る情景（シーン）が生成される。このシーンを仮想カメラで撮影した（視点から見た）画像がディスプレイ２４に表示される。具体的な処理について説明すると、まず、仮想空間に生成されたシーンが仮想カメラから捉えた座標（カメラ座標）系に変換（透視変換）される。たとえば、視点から見た画像が仮想のスクリーン上に透視投影される。次に、クリッピングおよび陰面消去処理が施される。続いて、シェーディングが施されることにより、オブジェクト表面の明るさ（陰影）が表現される。さらに、シャドーイング（影付け）が施されることにより、オブジェクトによって生じる影が表現される。そして、テクスチャマッピングが施される。このようにして２次元画像が生成（描画）され、生成された２次元画像に対応する２次元画像データがインターフェイス２２を介してディスプレイ２４に出力される。なお、３次元のデータから２次元画像データを生成することをレンダリングという。
【００２８】
たとえば、図２（Ａ）に示すように、仮想空間にオブジェクト１０２およびオブジェクト１０４がモデリングされる。オブジェクト１０２は、地面ないし床面のオブジェクトであり、オブジェクト１０４は、球のオブジェクトである。図２（Ａ）からも分かるように、オブジェクト１０４はオブジェクト１０２上に配置される。そして、オブジェクト１０２およびオブジェクト１０４に、光源からの光が照射される。図２（Ａ）に示す例では、並行光（無限光）が、オブジェクト１０２およびオブジェクト１０４の左斜め上方から照射される。このようなシーン１００を仮想カメラ１１０で撮影した画像が、上述したような処理を施すことにより、ディスプレイ２４に表示されるのである。
【００２９】
なお、図２（Ａ）に示すシーン１００は、単なる一例であり、限定されるべきでない。たとえば、オブジェクトの種類や個数は任意に変更することができる。
【００３０】
この実施例では、影付けの計算には、シャドウマップ技法（デプスバッファシャドウ技法）が適用される。このシャドウマップ技法では、光源からオブジェクト（遮蔽物）までの距離の情報が用いられる。具体的には、光源の場所（位置）を仮想的な視点として、そのシーンの深度値を求めるＺバッファレンダリングを行うことにより、光源からオブジェクトまでの距離の情報が得られる。この光源からオブジェクトまでの距離の情報が、シャドウマップと呼ばれる（デプスマップまたはシャドウデプスマップとも呼ばれる）内部画像に記憶される。ただし、シャドウマップの解像度は、予め決定されており、ピクセル毎に光源からの距離の情報が記憶される。
【００３１】
なお、シャドウマップ２００の生成処理は、ＣＰＵ１２によって、上記の画像データを生成および出力する処理に並行して実行される。
【００３２】
そして、仮想カメラ１１０の撮影範囲をレンダリングする場合に、生成される２次元画像のピクセル毎に、仮想空間における光源からオブジェクトまでの距離（デプス値）を計測（計算）し、各ピクセルに対応する距離の情報（深度値）をシャドウマップから取得する。取得した深度値が計算したデプス値よりも小さい場合には、そのピクセルには光が当たっていないと判断する。つまり、そのピクセルは影になっていると判断される。一方、取得した深度値が計算したデプス値と一致する場合には、そのピクセルには光が当たっていると判断される。
【００３３】
ただし、この実施例では、並行光を照射するようにしており、光源は無限遠の位置に設定されるため、シャドウマップを生成する場合に想定される光源の位置は、生成される（レンダリングされる）シャドウマップが仮想カメラ１１０の撮影範囲を含むように、計算により求められる。
【００３４】
図２（Ｂ）には、図２（Ａ）に示すシーン１００について生成されたシャドウマップ２００のイメージ（テクスチャ画像）の一例が示される。このシャドウマップ２００では、距離の情報がモノクロで表現され、光源からの距離が近い程、ピクセルの輝度が低く（暗く）される。また、図２（Ｂ）に示すように、シャドウマップ２００の大きさ（範囲）は、仮想カメラ１１０の撮影範囲よりも大きく設定される。シャドウマップ２００の大きさは、予め設定しておいてもよいし、仮想カメラ１１０の撮影範囲に応じて計算してもよい。
【００３５】
このように、シャドウマップ２００の大きさを仮想カメラ１１０の撮影範囲よりも大きく設定するのは、仮想カメラ１１０の撮影範囲が変化した場合であっても、その変化量が所定量に満たない場合に、シャドウマップ２００をレンダリングするための行列式を再計算（更新）しないようにするためである。つまり、仮想カメラ１１０の撮影範囲が少し変化された場合に、行列式を更新しなくても、変化した撮影範囲についての影を表現（描画）するためである。
【００３６】
このようにするのは、仮想カメラ１１０の撮影範囲が少し変化する度に、シャドウマップ２００をレンダリングする行列式を再計算すると、つまりシャドウマップ２００を生成する範囲を更新すると、影のエッジ部分の形に微妙な変化が生じ、そのエッジ部分において画面がちらつく場合があるからである。
【００３７】
ただし、仮想カメラ１１０の撮影範囲は、仮想カメラ１１０の位置、向きおよび画角が変化することにより、変化する。したがって、実際には、仮想カメラ１１０の撮影範囲の変化量が所定量未満であるかどうかの判断は、次のように行われる。仮想カメラ１１０の位置の変位量（移動距離）が第１所定距離未満であるかどうかを判断するとともに、仮想カメラ１１０の向きの変化量（角度の変化）が第１所定角度未満であるかどうかを判断し、さらに、仮想カメラ１１０の画角の変化量（角度の変化）が第２所定角度未満であるかどうかを判断する。ただし、変位量や変化量は、前回行列式を計算（更新）したときからの変位量や変化量の累積値である。このようにするのは、ディスプレイ２４に表示される画像を更新する度に検出される仮想カメラ１１０の撮影範囲の変化量が所定量未満である場合に、シャドウマップ２００を生成するための行列式を更新しないようにすると、前回行列式を更新してから仮想カメラ１１０の撮影範囲が大きく変化しているにも拘わらず、シャドウマップ２００を生成する範囲が変化されないため、正しく影を表現（描画）することができないからである。
【００３８】
たとえば、ユーザが入力装置１６を操作することにより、仮想カメラ１１０の位置、向きおよび画角が変化される。より具体的には、縦または横に画面をスクロールすることが指示されると、仮想カメラ１１０の位置が変化される。ただし、仮想カメラ１１０（視点）は３次元の仮想空間に設けられるため、奥行き方向や斜め方向にも移動可能である。また、仮想カメラ１１０をパン、チルトまたはロールすることが指示されると、仮想カメラ１１０の向きが変化される。さらに、仮想カメラ１１０をズームインまたはズームアウトすることが指示されると、仮想カメラ１１０の画角が変化される。
【００３９】
これは単なる一例であり、たとえば、ゲーム装置のような情報処理装置１０では、仮想カメラ１１０はプレイヤキャラクタに追従し、したがって、プレイヤキャラクタの移動に従って仮想カメラ１１０の位置が変化される。また、たとえば、プレイヤキャラクタが仮想空間内で双眼鏡を覗き、双眼鏡を通して見える画像がディスプレイ２４に表示される場合には、双眼鏡の向きを変えたり、倍率を変えたりすることにより、仮想カメラ１１０の向きや画角が変化される。
【００４０】
ただし、仮想カメラ１１０の位置、向きおよび画角は、ユーザの操作によらずに、プログラム（情報処理プログラム）に従って自動的に変化されてもよい。
【００４１】
また、この実施例では、プログラム（情報処理プログラム）に従って自動的に、光源からの光の向き（光線の角度）を変更することができる。たとえば、仮想空間内の時間の変化に応じて太陽が移動するように、光源からの光の向きを変更することができる。したがって、仮想カメラ１１０の位置、向きおよび画角が変化されない場合であっても、光源からの光の向きの変化量（光線の角度の変化）が所定量（第３所定角度）以上である場合には、シャドウマップ２００を生成するための行列式を更新する必要がある。言い換えると、仮想カメラ１１０の撮影範囲の変位量が所定量未満であり、かつ、光源からの光の向きの変化量が所定角度未満である場合には、シャドウマップ２００を生成するための行列式を更新する必要がない。
【００４２】
なお、詳細な説明は省略するが、第１所定距離、第１所定角度、第２所定角度および第３所定角度は、それぞれ、開発者やプログラマがシミュレーション等によって経験的に得た値である。たとえば、第１所定距離、第１所定角度、第２所定角度および第３所定角度のような閾値は、シャドウマップ２００を生成するための行列式を更新しなくても、表示される画像において違和感を覚えない程度に決定される。以下、閾値を決定する場合について同じである。ただし、第１所定角度は、パン、チルト、ロールのそれぞれについて異なる値が設定されてもよいし、すべて同じ値が設定されてもよい。
【００４３】
また、上記の各閾値は、ユーザの操作入力の履歴から動的に変化させてもよい。たとえば、仮想カメラ１１０の撮影範囲を変化させるための操作が頻繁に行われる場合には、各閾値を大きくし、逆に、仮想カメラ１１０の撮影範囲を変化させるための操作があまり行われない場合には、各閾値を小さくしてもよい。また、仮想カメラ１１０の撮影範囲が変化される場合であってもその変化が一定である場合には、各閾値を小さくしてもよい。撮影範囲の変化が一定である場合とは、撮影範囲の移動方向が一定方向である場合や撮影範囲が拡大し続けたり、縮小し続けたりする場合を意味する。このような場合には、影のエッジ部分における画面のちらつきがあまり気にならないと考えられるからである。
【００４４】
図３は、図１に示したＲＡＭ１４のメモリマップ３００の一例を示す。図３に示すように、ＲＡＭ１４は、プログラム記憶領域３０２およびデータ記憶領域３０４を含む。プログラム記憶領域３０２には、情報処理プログラムが記憶され、情報処理プログラムは、入力検出プログラム３０２ａ、仮想カメラ制御プログラム３０２ｂ、画像生成プログラム３０２ｃおよび画像表示プログラム３０２ｄなどを含む。ただし、画像生成プログラム３０２ｃを画像処理プログラムと呼んだり、画像生成プログラム３０２ｃおよび画像表示プログラム３０２ｄをまとめて画像処理プログラムと呼んだりすることがある。
【００４５】
詳細な説明は省略するが、情報処理プログラムは、情報処理装置１０に着脱可能な外部記憶媒体から読み出したり、外部のコンピュータからダウンロードしたりして、ＲＡＭ１４に記憶することができる。外部記憶媒体としては、ＳＤカード、ＣＤまたはＤＶＤなどが該当する。また、情報処理プログラムを情報処理装置１０の不揮発性のメモリ（図示せず）に予め記憶しておき、この不揮発性のメモリから読み出して、ＲＡＭ１４に記憶するようにしてもよい。
【００４６】
入力検出プログラム３０２ａは、入力装置１６からの入力データを検出するためのプログラムである。ＣＰＵ１２は、入力検出プログラム３０２ａに従って、入力装置１６からの入力データを取得し、ＲＡＭ１４に記憶する。仮想カメラ制御プログラム３０２ｂは、ユーザの指示に従って、または、自動的に、仮想カメラ１１０の位置、向きおよび画角を制御するためのプログラムである。
【００４７】
画像生成プログラム３０２ｃは、ポリゴンデータやテクスチャデータなどを用いて画像データを生成するためのプログラムである。この画像生成プログラム３０２ｃは、行列式更新プログラム３０２０およびシャドウマップ生成プログラム３０２２などを含む。行列式更新プログラム３０２０は、シャドウマップ２００を生成するための行列式を計算（更新）するか否かを判断し、更新することが判断された場合に、その行列式を計算（更新）するためのプログラムである。上述したように、光源から見たシーン１００の深度値をレンダリングするように、行列式は求められる。シャドウマップ生成プログラム３０２２は、行列式更新プログラム３０２０に従って計算された行列式を用いてシーン１００についてのシャドウマップ２００を生成するためのプログラムである。
【００４８】
なお、図示は省略するが、画像生成プログラム３０２ｃには、仮想空間にオブジェクトをモデリングしたり、カメラ座標に変換したり、クリッピングおよび陰面消去したり、シェーディングしたり、シャドウイングしたり、テクスチャマッピングしたりなどするためのプログラムも含まれる。
【００４９】
画像表示プログラム３０２ｄは、画像生成プログラム３０２ｃに従って生成された画面データをディスプレイ２４に表示するためのプログラムである。
【００５０】
なお、図示は省略するが、プログラム記憶領域３０２には、情報処理に必要な他のプログラムも記憶される。
【００５１】
また、データ記憶領域３０４には、画像データ３０４ａ、入力データ３０４ｂ、現在仮想カメラデータ３０４ｃ、現在光源データ３０４ｄ、更新時仮想カメラデータ３０４ｅ、更新時光源データ３０４ｆ、行列式データ３０４ｇおよびシャドウマップデータ３０４ｈなどが記憶される。
【００５２】
画像データ３０４ａは、上述したポリゴンデータやテクスチャデータなどである。入力データ３０４ｂは、ユーザの操作に従う入力装置１６からの入力データである。
【００５３】
現在仮想カメラデータ３０４ｃは、現在の仮想カメラ１１０の位置（３次元位置）、向きおよび画角についてのデータである。現在光源データ３０４ｄは、現在の光源からの光の向きについてのデータである。
【００５４】
更新時仮想カメラデータ３０４ｅは、シャドウマップ２００を生成するための行列式が前回計算（更新）されたときの仮想カメラ１１０の位置（３次元座標）、向きおよび画角についてのデータである。したがって、次回行列式が更新されるまで、更新時仮想カメラデータ３０４ｅは更新されない。このことは、更新時光源データ３０４ｆについても同様である。
【００５５】
更新時光源データ３０４ｆは、シャドウマップ２００を生成するための行列式が前回計算（更新）されたときの光源からの光の向きについてのデータである。
【００５６】
行列式データ３０４ｇは、シャドウマップ２００（シャドウマップデータ３０４ｈ）を生成するための行列式についてのデータである。この行列式は、上述の行列式更新プログラム３０２０に従って計算（更新）される。シャドウマップデータ３０４ｈは、シャドウマップ生成プログラム３０２２に従って生成されたシャドウマップ２００についてのデータである。
【００５７】
図示は省略するが、データ記憶領域３０４には、他のデータが記憶されたり、フラグやカウンタ（タイマ）が設けられたりする。
【００５８】
図４および図５は、図１に示したＣＰＵ１２の行列式更新処理を示すフロー図である。この行列式更新処理は、画面データの生成および表示処理（図示せず）が実行される度に、この画面データの生成および表示処理に並行して実行される。
【００５９】
この画面データの生成および表示処理において、ユーザが入力装置１６を操作することにより、または、プログラムに従って自動的に、仮想カメラ１１０の位置、向きおよび画角が変化される。つまり、現在仮想カメラデータ３０４ｃが更新される。したがって、画面データの生成および表示処理において、ユーザの操作入力（入力装置１６からの入力データ）が検出される。また、この画面データの生成および表示処理において、プログラムに従って自動的に、光源からの光の向き（光線の角度）が変化される。つまり、現在光源データ３０４ｄが更新される。さらに、この画面データの生成および表示処理において、シャドウマップデータ３０４ｈが生成（更新）される。
【００６０】
また、たとえば、画面データの生成および表示処理は、１フレーム毎に実行されるため、行列式更新処理も１フレーム毎に繰り返し実行される。ただし、フレームは画面更新単位時間であり、たとえば、１フレームは１／６０秒である。なお、画像データの生成および表示処理が最初に実行されるときに、仮想カメラ１１０の位置、向きおよび画角（現在仮想カメラデータ３０４ｃ）の初期値が設定されるとともに、光源の向き（現在光源データ３０４ｄ）の初期値が設定される。
【００６１】
図４に示すように、ＣＰＵ１２は、行列式更新処理を開始すると、ステップＳ１で、仮想カメラ１１０が移動されたかどうかを判断する。ここでは、ＣＰＵ１２は、画面データの生成および表示処理において、仮想カメラ１１０の位置（３次元座標）が変化したかどうかを判断するのである。
【００６２】
ステップＳ１で“ＮＯ”であれば、つまり仮想カメラ１１０が移動されていなければ、ステップＳ１１に進む。一方、ステップＳ１で“ＹＥＳ”であれば、つまり仮想カメラ１１０が移動されれば、ステップＳ３で、前回行列式を計算したときからの移動距離を算出する。ここでは、ＣＰＵ１２は、現在仮想カメラデータ３０４ｃが示す仮想カメラ１１０の現在の位置と、更新時仮想カメラデータ３０４ｅが示す前回行列式を計算したときの仮想カメラ１１０の位置との差分（移動距離）を算出する。
【００６３】
続いて、ステップＳ５では、移動距離が第１所定距離未満かどうかを判断する。ステップＳ５で“ＹＥＳ”であれば、つまり移動距離が第１所定距離未満であれば、ステップＳ１１に進む。一方、ステップＳ５で“ＮＯ”であれば、つまり移動距離が第１所定距離以上であれば、ステップＳ７で、行列式を計算および記憶する。つまり、現在のシーン１００についてのシャドウマップ２００を生成するための行列式が計算され、計算された行列式に対応する行列式データ３０４ｇがデータ記憶領域３０４に記憶（上書き）される。そして、ステップＳ９で、更新時仮想カメラデータ３０４ｅおよび更新時光源データ３０４ｆを更新して、行列式更新処理を終了する。つまり、ステップＳ９では、シャドウマップ２００を生成するための行列式を更新したときの仮想カメラ１１０の位置、向きおよび画角が更新されるとともに、シャドウマップ２００を生成するための行列式を更新したときの光源からの光の向きが更新される。
【００６４】
また、ステップＳ１１では、仮想カメラ１１０の向きが変化されたかどうかを判断する。ここでは、ＣＰＵ１２は、画面データの生成および表示処理において、仮想カメラ１１０がパン、チルトまたはロールされたかどうかを判断する。ステップＳ１１で“ＮＯ”であれば、つまり仮想カメラ１１０の向きが変化されていなければ、図５に示すステップＳ１７に進む。一方、ステップＳ１１で“ＹＥＳ”であれば、つまり仮想カメラ１１０の向きが変化されていれば、ステップＳ１３で、前回行列式を計算したときからの向きの変化量を算出する。ここでは、ＣＰＵ１２は、現在仮想カメラデータ３０４ｃが示す仮想カメラ１１０の現在の向きと、更新時仮想カメラデータ３０４ｅが示す前回行列式を計算したときの仮想カメラ１１０の向きとを比較し、パン、チルトまたはロールにより変化した角度（差分）を算出する。
【００６５】
そして、ステップＳ１５で、仮想カメラ１１０の向きの変化量が第１所定角度以上かどうかを判断する。ステップＳ１５で“ＮＯ”であれば、つまり仮想カメラ１１０の向きの変化量が第１所定角度以上であれば、ステップＳ７に進む。一方、ステップＳ１５で“ＹＥＳ”であれば、つまり仮想カメラ１１０の向きの変化量が第１所定角度未満であれば、図５に示すステップＳ１７に進む。
【００６６】
図５に示すように、ステップＳ１７では、仮想カメラ１１０の画角が変化されたかどうかを判断する。ここでは、ＣＰＵ１２は、画面データの生成および表示処理において、仮想カメラ１１０の画角が変化されたかどうかを判断する。ステップＳ１７で“ＮＯ”であれば、つまり仮想カメラ１１０の画角が変化されていなければ、ステップＳ２７に進む。一方、ステップＳ１７で“ＹＥＳ”であれば、つまり仮想カメラ１１０の画角が変化されていれば、ステップＳ１９で、前回行列式を計算したときからの画角の変化量を算出する。ここでは、ＣＰＵ１２は、仮想カメラデータ３０４ｃを参照して、現在仮想カメラデータ３０４ｃが示す仮想カメラ１１０の現在の画角と、更新時仮想カメラデータ３０４ｅが示す前回行列式を計算したときの仮想カメラ１１０の画角との差分（角度の変化）を算出する。
【００６７】
そして、ステップＳ２１で、仮想カメラ１１０の画角の変化量が第２所定角度未満であるかどうかを判断する。ステップＳ２１で“ＹＥＳ”であれば、つまり仮想カメラ１１０の画角の変化量が第２所定角度未満であれば、ステップＳ２７に進む。一方、ステップＳ２１で“ＮＯ”であれば、つまり仮想カメラ１１０の画角の変化量が第２所定角度以上であれば、ステップＳ２３で、行列式を計算および記憶し、ステップＳ２５で、更新時仮想カメラデータ３０４ｅおよび更新時光源データ３０４ｆを更新して、行列式更新処理を終了する。
【００６８】
ただし、ステップＳ２３の処理は、ステップＳ７の処理と同じであり、ステップＳ２５の処理は、ステップＳ９の処理と同じである。
【００６９】
また、ステップＳ２７では、光源からの光の向きが変化されたかどうかを判断する。ここでは、ＣＰＵ１２は、画面データの生成および表示処理において、光源からの光の向きが変化されたかどうかを判断する。ステップＳ２７で“ＮＯ”であれば、つまり光源からの光の向きが変化されていなければ、そのまま行列式更新処理を終了する。一方、ステップＳ２７で“ＹＥＳ”であれば、つまり光源からの光の向きが変化されていれば、ステップＳ２９で、前回行列式を計算したときからの光源の光の向きの変化量を算出する。ここでは、ＣＰＵ１２は、現在光源データ３０４ｄが示す光源の現在の向き（光線の角度）と、更新時光源データ３０４ｆが示す前回行列式を計算したときの光線の角度との差分（角度の変化）を算出する。
【００７０】
そして、ステップＳ３１で、光源からの光の向きの変化量が第３所定角度未満であるかどうかを判断する。ステップＳ３１で“ＮＯ”であれば、つまり光源からの光の向きの変化量が第３所定角度以上であれば、ステップＳ２３に進む。一方、ステップＳ３１で“ＹＥＳ”であれば、つまり光源からの光の向きの変化量が第３所定角度未満であれば、そのまま行列式更新処理を終了する。
【００７１】
この実施例によれば、仮想カメラの撮影範囲や光源からの光の向きが変化された場合であっても、変化量が所定量に満たない場合には、シャドウマップを生成するための行列式を更新しないので、影のエッジ部分における画面のちらつきを出来る限り低減することができる。
【００７２】
また、この実施例では、シャドウマップを更新する回数を低減するので、ＣＰＵの処理負荷を低減することができる。
【００７３】
なお、この実施例では、光源からの光の向きが変化される場合について説明したが、光の向きは固定されていてもよい。かかる場合には、光源からの光の向きに応じて行列式を計算する必要がない。したがって、図５に示したステップＳ２７、Ｓ２９、Ｓ３１を削除するとともに、ステップＳ１７で“ＮＯ”またはステップＳ２１で“ＹＥＳ”の場合に、そのまま行列式更新処理を終了するようにすればよい。つまり、仮想カメラの撮影範囲の変化量が所定量未満である場合には、行列式が計算（更新）されない。
【００７４】
また、この実施例では、並行光（無限光）を照射する光源を無限遠の位置に設定するようにしたが他の光源を設定するようにしてもよい。たとえば、点光源（ポイントライト）、面光源（エリアライト）およびスポットライトのような光源を配置することができる。
【００７５】
点光源、面光源またはスポットライトを設ける場合には、並行光とは異なり、光を照射する範囲（照射範囲）が変化されるため、照射範囲の変化量が所定量未満である場合に、行列式を更新しないようにしてある。ただし、仮想カメラの撮影範囲の変化量が所定量未満であることが前提である。また、照射範囲は、光源の位置、向きおよび広がりの少なくとも１つに応じて変化される。
【００７６】
たとえば、点光源を配置した場合には、その位置の変化量が所定量未満であれば、行列式を更新しない。点光源は、上下および側面（全方向）に光を照射するが、光が減衰することにより光の届く範囲が決定されるため、その位置によって光の照射範囲が決定されるためである。
【００７７】
また、面光源を配置した場合には、その位置および向きの変化量が所定量未満であれば、行列式を更新しない。面光源は、長方形の面から長方形状の光が照射されるため、その位置および向きによって光の照射範囲が決定されるためである。
【００７８】
さらに、スポットライトを配置した場合には、その位置、向きおよび広がりの変化量が所定量未満である場合には、行列式を更新しない。スポットライトは、円錐体状に光を照射するため、その位置、向きおよび円錐の頂角（広がり）によって光の照射範囲が決定されるからである。
【００７９】
なお、点光源、面光源またはスポットライトを設けた場合における所定量は、それぞれ、プログラマないし開発者がシミュレーションすることにより、適宜設定される。
【００８０】
また、複数の光源を配置する場合には、複数の光源の各々の照射範囲の変化量が所定量未満である場合に、行列式を更新しない。
【００８１】
図６には、スポットライトおよびスポットライトからの光が照射される範囲の一例が示される。スポットライトからの光（光線）は円錐体状に照射され、スポットライトの位置、向きおよび広がり（円錐体の頂角）の変化に応じて、スポットライトからの光が照射される範囲が変化する。
【００８２】
たとえば、上述の実施例の並行光を照射する光源に代えて、このスポットライトを配置した場合には、図４および図５の行列式更新処理の一部が変更される。簡単に説明すると、図５のステップＳ２７で“ＮＯ”と判断された場合に、図７に示すフロー図に従う処理が実行される。
【００８３】
なお、かかる場合には、現在光源データ３０４ｄは、現在の光源の向きのデータのみならず、現在の光源の位置および現在の光源からの光の広がり（光の照射範囲を規定する円錐体の頂角）のデータも含む。同様に、更新時光源データ３０４ｆは、シャドウマップ２００を生成するための行列式の更新時の光源の向きのデータのみならず、その更新時の光源の位置およびその更新時の光源からの光の広がりのデータも含む。また、画面データの生成および表示処理において、光源からの光の向き（光線の角度）のみならず、プログラムに従って自動的に、光源の位置や光源からの光の広がりも変化される。
【００８４】
図７に示すように、ステップＳ２７で“ＮＯ”であれば、ステップＳ４１で、光源の位置が変化したかどうかを判断する。ここでは、ＣＰＵ１２は、画面データの生成および表示処理において、光源の位置が変化されたかどうかを判断する。ステップＳ４１で“ＮＯ”であれば、つまり光源の位置が変化していなければ、ステップＳ５１に進む。一方、ステップＳ４１で“ＹＥＳ”であれば、つまり光源の位置が変化していれば、ステップＳ４３で、前回行列式を更新したときからの光源の移動距離を算出する。ここでは、ＣＰＵ１２は、現在光源データ３０４ｄが示す光源の現在の位置（３次元位置）と、更新時光源データ３０４ｆが示す前回行列式を計算したときの光線の位置との差分を算出する。
【００８５】
そして、ステップＳ４５で、光源の移動距離が第２所定距離未満であるかどうかを判断する。ステップＳ４５で“ＹＥＳ”であれば、つまり光源の移動距離が第２所定距離未満であれば、ステップＳ５１に進む。一方、ステップＳ４５で“ＮＯ”であれば、つまり光源の移動距離が第２所定距離以上であれば、ステップＳ４７で、行列式を計算し、ステップＳ４９で、更新時仮想カメラデータ３０４ｅおよび更新時光源データ３０４ｆを更新して、行列式更新処理を終了する。
【００８６】
ただし、ステップＳ４７の処理は、ステップＳ７の処理と同じであり、ステップＳ４９の処理は、ステップＳ９の処理と同じである。また、スポットライトを設定した場合には、ステップＳ９、Ｓ２５およびＳ４９において、更新時光源データ３０４ｆを更新するとき、光源の向きのデータのみならず、位置および広がりのデータも更新される。
【００８７】
また、ステップＳ５１では、光源からの光の広がりが変化したかどうかを判断する。ここでは、ＣＰＵ１２は、画面データの生成および表示処理において、光源からの光の広がりが変化されたかどうかを判断する。つまり、光の照射範囲を規定する円錐体の頂角が変化されたかどうかを判断する。
【００８８】
ステップＳ５１で“ＮＯ”であれば、つまり光源からの光の広がりが変化していなければ、そのまま行列式更新処理を終了する。一方、ステップＳ５１で“ＹＥＳ”であれば、つまり光源からの光の広がりが変化されていれば、ステップＳ５３で、前回行列式を計算したときからの光の広がりの変化量を算出する。ここでは、ＣＰＵ１２は、現在光源データ３０４ｄが示す光源からの光の照射範囲を規定する円錐体の頂角と、更新時光源データ３０４ｆが示す前回行列式を計算したときの光源からの光の照射範囲を規定する円錐体の頂角との差分（角度の変化）を算出する。
【００８９】
そして、ステップＳ５５では、光源からの光の広がりの変化量が第４所定角度未満であるかどうかを判断する。ステップＳ５５で“ＮＯ”であれば、つまり光源からの光の広がりの変化量が第４所定角度以上であれば、ステップＳ４７に進む。一方、ステップＳ５５で“ＹＥＳ”であれば、つまり光源からの光の広がりの変化量が第４所定角度未満であれば、そのまま行列式更新処理を終了する。
【００９０】
なお、詳細な説明は省略するが、第２所定距離および第４所定角度のような閾値は、上述したように、それぞれ、開発者やプログラマがシミュレーション等によって経験的に得た値である。
【００９１】
また、上述したように、点光源を設定した場合には、図４および図５に示した行列式更新処理において、ステップＳ２７、Ｓ２９およびＳ３１に代えて、図７に示したステップＳ４１、Ｓ４３およびＳ４５を実行すればよい。かかる場合には、ステップＳＳ４１またはステップＳ４５で“ＮＯ”であれば、行列式更新処理を終了し、ステップＳ４５で“ＹＥＳ”であれば、ステップＳ２５に進むようにすればよい。ただし、第２所定距離は、点光源を設けた場合に設定される値である。
【００９２】
さらに、この実施例では、デプスシャドウ技法を適用した場合について説明したが、シャドウマップを用いる手法であれば、他の技法を適用することができる。具体的には、パースペクティブ・シャドウ（ＰＳＭ）技法、ライトスペース・パースペクティブ・シャドウマップ（ＬＳＰＳＭ）技法またはカスケードＬＳＰＳＭ技法を適用することができる。
【００９３】
ただし、ＰＳＭ技法、ＬＳＰＳＭ技法またはカスケードＬＳＰＳＭ技法を適用する場合には、光源の位置を計算するのではなく、仮想カメラの撮影範囲からシャドウマップを生成するための行列式（Ｚバッファレンダリングを行う行列式）が直接的に計算される。
【００９４】
また、この実施例では、距離や角度についての閾値未満であるかどうかを判断するようにしたが、これに限定される必要はなく、閾値以下であるかどうかを判断するようにしてもよい。
【００９５】
さらに、情報処理装置は、一部の処理を実行する複数のコンピュータが互いに通信可能に接続された情報処理システムとして構成されてもよい。
【符号の説明】
【００９６】
１０  …情報処理装置
１２  …ＣＰＵ
１４  …ＲＡＭ
１６  …入力装置
１８  …ＧＰＵ
２０  …ＶＲＡＭ
２２  …インターフェイス
２４  …ディスプレイ
【図１】
2015018294.tif 000003
【図３】
2015018294.tif 000004
【図４】
2015018294.tif 000005
【図５】
2015018294.tif 000006
【図６】
2015018294.tif 000007
【図７】
2015018294.tif 000008
【図２】
2015018294.tif 000009
【手続補正書】
【提出日】平成25年10月15日(2013.10.15)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００４９
【補正方法】変更
【補正の内容】
【００４９】
画像表示プログラム３０２ｄは、画像生成プログラム３０２ｃに従って生成された画像データをディスプレイ２４に表示するためのプログラムである。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００５１
【補正方法】変更
【補正の内容】
【００５１】
また、データ記憶領域３０４には、画像生成データ３０４ａ、入力データ３０４ｂ、現在仮想カメラデータ３０４ｃ、現在光源データ３０４ｄ、更新時仮想カメラデータ３０４ｅ、更新時光源データ３０４ｆ、行列式データ３０４ｇおよびシャドウマップデータ３０４ｈなどが記憶される。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００５２
【補正方法】変更
【補正の内容】
【００５２】
画像生成データ３０４ａは、上述したポリゴンデータやテクスチャデータなどである。入力データ３０４ｂは、ユーザの操作に従う入力装置１６からの入力データである。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００５８
【補正方法】変更
【補正の内容】
【００５８】
図４および図５は、図１に示したＣＰＵ１２の行列式更新処理を示すフロー図である。この行列式更新処理は、画像データの生成および表示処理（図示せず）が実行される度に、この画像データの生成および表示処理に並行して実行される。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００５９
【補正方法】変更
【補正の内容】
【００５９】
この画像データの生成および表示処理において、ユーザが入力装置１６を操作することにより、または、プログラムに従って自動的に、仮想カメラ１１０の位置、向きおよび画角が変化される。つまり、現在仮想カメラデータ３０４ｃが更新される。したがって、画像データの生成および表示処理において、ユーザの操作入力（入力装置１６からの入力データ）が検出される。また、この画像データの生成および表示処理において、プログラムに従って自動的に、光源からの光の向き（光線の角度）が変化される。つまり、現在光源データ３０４ｄが更新される。さらに、この画像データの生成および表示処理において、シャドウマップデータ３０４ｈが生成（更新）される。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００６０
【補正方法】変更
【補正の内容】
【００６０】
また、たとえば、画像データの生成および表示処理は、１フレーム毎に実行されるため、行列式更新処理も１フレーム毎に繰り返し実行される。ただし、フレームは画面更新単位時間であり、たとえば、１フレームは１／６０秒である。なお、画像データの生成および表示処理が最初に実行されるときに、仮想カメラ１１０の位置、向きおよび画角（現在仮想カメラデータ３０４ｃ）の初期値が設定されるとともに、光源の向き（現在光源データ３０４ｄ）の初期値が設定される。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００６１
【補正方法】変更
【補正の内容】
【００６１】
図４に示すように、ＣＰＵ１２は、行列式更新処理を開始すると、ステップＳ１で、仮想カメラ１１０が移動されたかどうかを判断する。ここでは、ＣＰＵ１２は、画像データの生成および表示処理において、仮想カメラ１１０の位置（３次元座標）が変化したかどうかを判断するのである。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００６４
【補正方法】変更
【補正の内容】
【００６４】
また、ステップＳ１１では、仮想カメラ１１０の向きが変化されたかどうかを判断する。ここでは、ＣＰＵ１２は、画像データの生成および表示処理において、仮想カメラ１１０がパン、チルトまたはロールされたかどうかを判断する。ステップＳ１１で“ＮＯ”であれば、つまり仮想カメラ１１０の向きが変化されていなければ、図５に示すステップＳ１７に進む。一方、ステップＳ１１で“ＹＥＳ”であれば、つまり仮想カメラ１１０の向きが変化されていれば、ステップＳ１３で、前回行列式を計算したときからの向きの変化量を算出する。ここでは、ＣＰＵ１２は、現在仮想カメラデータ３０４ｃが示す仮想カメラ１１０の現在の向きと、更新時仮想カメラデータ３０４ｅが示す前回行列式を計算したときの仮想カメラ１１０の向きとを比較し、パン、チルトまたはロールにより変化した角度（差分）を算出する。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００６６
【補正方法】変更
【補正の内容】
【００６６】
図５に示すように、ステップＳ１７では、仮想カメラ１１０の画角が変化されたかどうかを判断する。ここでは、ＣＰＵ１２は、画像データの生成および表示処理において、仮想カメラ１１０の画角が変化されたかどうかを判断する。ステップＳ１７で“ＮＯ”であれば、つまり仮想カメラ１１０の画角が変化されていなければ、ステップＳ２７に進む。一方、ステップＳ１７で“ＹＥＳ”であれば、つまり仮想カメラ１１０の画角が変化されていれば、ステップＳ１９で、前回行列式を計算したときからの画角の変化量を算出する。ここでは、ＣＰＵ１２は、仮想カメラデータ３０４ｃを参照して、現在仮想カメラデータ３０４ｃが示す仮想カメラ１１０の現在の画角と、更新時仮想カメラデータ３０４ｅが示す前回行列式を計算したときの仮想カメラ１１０の画角との差分（角度の変化）を算出する。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００６９
【補正方法】変更
【補正の内容】
【００６９】
また、ステップＳ２７では、光源からの光の向きが変化されたかどうかを判断する。ここでは、ＣＰＵ１２は、画像データの生成および表示処理において、光源からの光の向きが変化されたかどうかを判断する。ステップＳ２７で“ＮＯ”であれば、つまり光源からの光の向きが変化されていなければ、そのまま行列式更新処理を終了する。一方、ステップＳ２７で“ＹＥＳ”であれば、つまり光源からの光の向きが変化されていれば、ステップＳ２９で、前回行列式を計算したときからの光源の光の向きの変化量を算出する。ここでは、ＣＰＵ１２は、現在光源データ３０４ｄが示す光源の現在の向き（光線の角度）と、更新時光源データ３０４ｆが示す前回行列式を計算したときの光線の角度との差分（角度の変化）を算出する。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００８３
【補正方法】変更
【補正の内容】
【００８３】
なお、かかる場合には、現在光源データ３０４ｄは、現在の光源の向きのデータのみならず、現在の光源の位置および現在の光源からの光の広がり（光の照射範囲を規定する円錐体の頂角）のデータも含む。同様に、更新時光源データ３０４ｆは、シャドウマップ２００を生成するための行列式の更新時の光源の向きのデータのみならず、その更新時の光源の位置およびその更新時の光源からの光の広がりのデータも含む。また、画像データの生成および表示処理において、光源からの光の向き（光線の角度）のみならず、プログラムに従って自動的に、光源の位置や光源からの光の広がりも変化される。
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】００８４
【補正方法】変更
【補正の内容】
【００８４】
図７に示すように、ステップＳ２７で“ＮＯ”であれば、ステップＳ４１で、光源の位置が変化したかどうかを判断する。ここでは、ＣＰＵ１２は、画像データの生成および表示処理において、光源の位置が変化されたかどうかを判断する。ステップＳ４１で“ＮＯ”であれば、つまり光源の位置が変化していなければ、ステップＳ５１に進む。一方、ステップＳ４１で“ＹＥＳ”であれば、つまり光源の位置が変化していれば、ステップＳ４３で、前回行列式を更新したときからの光源の移動距離を算出する。ここでは、ＣＰＵ１２は、現在光源データ３０４ｄが示す光源の現在の位置（３次元位置）と、更新時光源データ３０４ｆが示す前回行列式を計算したときの光線の位置との差分を算出する。
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】００８７
【補正方法】変更
【補正の内容】
【００８７】
また、ステップＳ５１では、光源からの光の広がりが変化したかどうかを判断する。ここでは、ＣＰＵ１２は、画像データの生成および表示処理において、光源からの光の広がりが変化されたかどうかを判断する。つまり、光の照射範囲を規定する円錐体の頂角が変化されたかどうかを判断する。
【手続補正１４】
【補正対象書類名】図面
【補正対象項目名】図３
【補正方法】変更
【補正の内容】
【図３】
2015018294.tif 000010