(57)【要約】【課題】オブジェクトの影の表示をより高速に行うこと。【解決手段】画像処理装置に、仮想３次元空間の水平面上の各位置に対応付けられた高さの情報を取得するステップと、前記高さの情報と、前記水平面に対する光線の入射方向とに基づいて、前記水平面における影の範囲を算出するステップと、前記仮想３次元空間上のオブジェクトの表面のうち、前記影の範囲に含まれる領域に影を付して画面に表示するステップと、を実行させるプログラムが提供される。【選択図】図３
2019121238.tif 000002
【特許請求の範囲】
【請求項１】
画像処理装置に、
仮想３次元空間の水平面上の各位置に対応付けられた高さの情報を取得するステップと、
前記高さの情報と、前記水平面に対する光線の入射方向とに基づいて、前記水平面における影の範囲を算出するステップと、
前記仮想３次元空間上のオブジェクトの表面のうち、前記影の範囲に含まれる領域に影を付して画面に表示するステップと、
を実行させるプログラム。
【請求項２】
前記算出するステップは、仮想３次元空間における仮想的な時刻の経過に応じて、前記水平面に対する光線の入射方向を算出し、前記高さの情報と、算出した前記水平面に対する光線の入射方向とに基づいて、前記影の範囲を算出する、
請求項１に記載のプログラム。
【請求項３】
前記算出するステップは、前記水平面上の所定の位置に対応付けられた高さの位置を通り、前記光線の入射方向に平行な直線を算出し、当該直線が前記水平面に交わる位置と、前記所定の位置との間を前記影の範囲として算出する、
請求項１または２に記載のプログラム。
【請求項４】
前記算出するステップは、前記仮想３次元空間上の複数のオブジェクトのうち、前記高さの情報が設定されているオブジェクトについては、前記高さの情報と、前記水平面に対する光線の入射方向とに基づいて、前記影の範囲を算出し、
前記高さの情報が設定されていないオブジェクトについては、当該オブジェクトの３次元モデルの情報と、前記水平面に対する光線の入射方向とに基づいて、当該オブジェクトの影を算出する、
請求項１乃至３のいずれか一項に記載のプログラム。
【請求項５】
画像処理装置が、
仮想３次元空間の水平面上の各位置に対応付けられた高さの情報を取得するステップと、
前記高さの情報と、前記水平面に対する光線の入射方向とに基づいて、前記水平面における影の範囲を算出するステップと、
前記仮想３次元空間上のオブジェクトの表面のうち、前記影の範囲に含まれる領域に影を付して画面に表示するステップと、
を実行する画像処理方法。
【請求項６】
仮想３次元空間の水平面上の各位置に対応付けられた高さの情報を取得する取得部と、
前記高さの情報と、前記水平面に対する光線の入射方向とに基づいて、前記水平面における影の範囲を算出する算出部と、
前記仮想３次元空間上のオブジェクトの表面のうち、前記影の範囲に含まれる領域に影を付して画面に表示する表示制御部と、
を有する画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、画像処理方法、及び画像処理装置に関する。
【背景技術】
【０００２】
従来、コンピュータゲームやシミュレーション等において、３次元コンピュータグラフィックスにより、仮想３次元空間上のオブジェクトに、太陽等の光源に対する影を付けて表示する技術が知られている。
【０００３】
この技術において、例えば、各オブジェクトの３次元のモデルのデータを用い、ある画素の位置から、各オブジェクトの３次元のモデルに妨げられ、光源を見ることができなければ、当該画素の位置を影と判定する技術が知られている（例えば、特許文献１乃至２を参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第４９９５０５４号公報
【特許文献２】特許第４５１３４２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術には、表示するオブジェクトの数が比較的多い等の場合、各画素が影であるか否かを判定する処理に時間がかかるという問題がある。
【０００６】
そこで、一側面では、オブジェクトの影の表示をより高速に行える技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
一つの案では、画像処理装置に、仮想３次元空間の水平面上の各位置に対応付けられた高さの情報を取得するステップと、前記高さの情報と、前記水平面に対する光線の入射方向とに基づいて、前記水平面における影の範囲を算出するステップと、前記仮想３次元空間上のオブジェクトの表面のうち、前記影の範囲に含まれる領域に影を付して画面に表示するステップと、を実行させるプログラムが提供される。
【発明の効果】
【０００８】
一側面によれば、オブジェクトの影の表示をより高速に行うことができる。
【図面の簡単な説明】
【０００９】
【図１】実施形態に係る画像処理装置のハードウェア構成例を示す図である。
【図２】実施形態に係る画像処理装置の機能ブロック図である。
【図３】実施形態に係る画像処理装置の処理の一例を示すフローチャートである。
【図４】実施形態に係る高さマップの一例を示す図である。
【図５】実施形態に係る影の範囲の算出方法の一例について説明する図である。
【図６】実施形態に係る影の範囲の算出結果の一例について説明する図である。
【図７】実施形態に係る影の表示の一例について説明する図である。
【発明を実施するための形態】
【００１０】
以下、図面に基づいて本発明の実施形態を説明する。
【００１１】
＜ハードウェア構成＞
図１は、実施形態に係る画像処理装置１０のハードウェア構成例を示す図である。図１に示す画像処理装置１０は、それぞれバスＢで相互に接続されているドライブ装置１００、補助記憶装置１０２、メモリ装置１０３、ＣＰＵ１０４、インタフェース装置１０５、表示装置１０６、及び入力装置１０７等を有する。
【００１２】
画像処理装置１０での処理を実現するゲームプログラムは、記録媒体１０１によって提供される。ゲームプログラムを記録した記録媒体１０１がドライブ装置１００にセットされると、ゲームプログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、ゲームプログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたゲームプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００１３】
メモリ装置１０３は、例えば、ＤＲＡＭ（Dynamic Random Access Memory）、またはＳＲＡＭ（Static Random Access Memory）等のメモリであり、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従って画像処理装置１０に係る機能を実現する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。表示装置１０６はプログラムによるＧＵＩ（Graphical User Interface）等を表示する。入力装置１０７は、コントローラ等、キーボード及びマウス等、またはタッチパネル及びボタン等で構成され、様々な操作指示を入力させるために用いられる。
【００１４】
なお、記録媒体１０１の一例としては、ＣＤ−ＲＯＭ、ＤＶＤディスク、ブルーレイディスク、又はＵＳＢメモリ等の可搬型の記録媒体が挙げられる。また、補助記憶装置１０２の一例としては、ＨＤＤ（Hard Disk Drive）、ＳＳＤ（Solid State Drive）、又はフラッシュメモリ等が挙げられる。記録媒体１０１及び補助記憶装置１０２のいずれについても、コンピュータ読み取り可能な記録媒体に相当する。
【００１５】
＜機能構成＞
次に、図２を参照し、画像処理装置１０の機能構成について説明する。図２は、実施形態に係る画像処理装置１０の機能ブロック図である。
【００１６】
画像処理装置１０は、記憶部１１を有する。記憶部１１は、例えば、補助記憶装置１０２等を用いて実現される。記憶部１１は、３次元データ１１１、及び高さマップ１１２等を記憶する。３次元データ１１１は、各オブジェクトの３次元モデル（３Ｄモデル）等のデータであり、ポリゴンの集合等により表される３次元モデルのデータ、及びテクスチャ画像のデータ等を含むデータである。高さマップ１１２は、仮想３次元空間の水平面上の各位置に対応付けられた高さのデータである。
【００１７】
また、画像処理装置１０は、取得部１２、制御部１３、及び表示制御部１４を有する。これら各部は、画像処理装置１０にインストールされた１以上のプログラムが、画像処理装置１０のＣＰＵ１０４に実行させる処理により実現される。
【００１８】
取得部１２は、３次元データ１１１、及び高さマップ１１２等のデータを記憶部１１から取得する。
【００１９】
制御部１３は、ゲームの進行等を制御する。また、制御部１３は、ゲームにおける現在日時（「仮想３次元空間における仮想的な時刻」）に基づき、仮想３次元空間上の水平面に対する太陽による平行光線の入射方向（以下で、単に「太陽の入射方向」とも称する。）を算出する。また、制御部１３は、高さマップ１１２と、太陽の入射方向とに基づいて、当該水平面における影の範囲を算出する。
【００２０】
表示制御部１４は、制御部１３からの指示に従い、仮想３次元空間上のオブジェクトの表面のうち、算出した影の範囲に含まれる領域に影を付して、画面に表示する。
ゲームにおける画像を画面に表示させる。
【００２１】
＜処理＞
次に、図３乃至図７を参照して、画像処理装置１０の処理について説明する。図３は、実施形態に係る画像処理装置１０の処理の一例を示すフローチャートである。図４は、実施形態に係る高さマップ１１２の一例を示す図である。図５は、実施形態に係る影の範囲の算出方法の一例について説明する図である。図６は、実施形態に係る影の範囲の算出結果の一例について説明する図である。図７は、実施形態に係る影の表示の一例について説明する図である。
【００２２】
以下では、オープンワールド（サンドボックス、フリーローミング）のゲームを例として説明する。オープンワールドのゲームでは、ユーザにより操作されるプレイヤーキャラクターの移動に応じて、プレイヤーキャラクターの周辺の地形、建造物、草木等の３次元データ等を読み込んで表示する。これにより、ユーザは、プレイヤーキャラクターを、比較的広大な仮想３次元空間上の世界において、マップの切り替え等がなされずにシームレスに動き回ることができる。また、オープンワールドのゲームでは、ゲーム内の現在時刻に応じて、太陽の位置が変わる。すなわち、ゲーム内の現在時刻が日の出の時刻になると太陽が昇り、正午になると太陽が一日のうち最も高い位置となり、日の入りの時刻になると太陽が沈む。また、オープンワールドのゲームでは、時刻に応じて天候も変化する。
【００２３】
ステップＳ１において、制御部１３は、ユーザの操作等によりゲームが起動されると、３次元データ１１１、及び高さマップ１１２等を含むゲームのデータを読み込む。ここで、３次元データ１１１には、例えば、地形、建造物、草木、及びキャラクター等の、仮想３次元空間上の各オブジェクトの３次元モデル等のデータが含まれる。また、高さマップ１１２には、仮想３次元空間の水平面上の各位置に対応付けられた高さのデータが含まれる。
【００２４】
続いて、制御部１３は、ゲームにおける現在日時（「仮想３次元空間における仮想的な時刻」）に基づき、太陽の入射方向を算出する（ステップＳ２）。
【００２５】
続いて、制御部１３は、算出した太陽の入射方向と、高さマップ１１２とに基づき、仮想３次元空間上における各オブジェクトの影の範囲を算出する（ステップＳ３）。
【００２６】
図４に示す高さマップ１１２の例では、仮想３次元空間上の丘のオブジェクトに対するデータが設定されている。図４に示す高さマップ１１２には、仮想３次元空間における水平面をｘ軸、及びｙ軸で表した各座標（ｘ，ｙ）に対してそれぞれ一の高さの値が設定されている。図４の例では、各座標における色が濃い程、高さが高いことを示している。高さマップ１１２は、例えば、地形を表す山、及び丘等、オブジェクトの最も高い位置から水平面の位置までに空間がないオブジェクトに対する影を算出するために用いられる。
【００２７】
なお、制御部１３は、キャラクター、建造物、及び草木等の、オブジェクトの最も高い位置から水平面の位置までに空間があるオブジェクトに対しては、公知の方法により影を算出してもよい。この場合、制御部１３は、例えば、仮想３次元空間上の複数のオブジェクトのうち、高さマップ１１２が設定されているオブジェクトについては、高さマップ１１２と、太陽の入射方向とに基づいて、影の範囲を算出する。
【００２８】
そして、制御部１３は、例えば、仮想３次元空間上の複数のオブジェクトのうち、高さマップ１１２が設定されていないオブジェクトについては、３次元データ１１１に含まれる当該オブジェクトの３次元モデルのデータと、太陽の入射方向とに基づいて、影の範囲を算出する。なお、３次元モデルのデータと、太陽の入射方向とに基づいて、影の範囲を算出する処理は、公知の手法を用いて実行されてもよい。例えば、制御部１３は、レイキャスティング法（ray-casting）のシャドーイング（shadowing）の手法を用い、オブジェクトの表面の一の画素の位置から太陽の入射方向に延びる直線が、他のオブジェクトと交差する場合は、当該一の画素は影の範囲内であると判定する。
【００２９】
図５では、太陽の入射方向を横方向（水平方向）とした鉛直面が示されている。制御部１３は、高さマップ１１２に設定された水平面上の各位置の座標について、以下の処理を行う。以下では、当該各位置に含まれる一の位置５０１を例として説明する。
【００３０】
制御部１３は、図５に示すように、図４及び図５における位置５０１に対する高さの位置５０２を通り、太陽の入射方向５００に平行な直線５０３を算出する。ここで、図５に示すように、仮想３次元空間上の水平面に対する直線５０３の入射角θは、太陽の入射方向５００の入射角θと等しい。
【００３１】
そして、制御部１３は、図６に示すように、仮想３次元空間における水平面をｘ軸、及びｙ軸で表した各座標（ｘ，ｙ）に対して、直線５０３が水平面と交わる位置５０４から位置５０１を結ぶ直線５０５上の座標を影の範囲に含まれる座標とする。
【００３２】
制御部１３は、高さマップ１１２に設定された水平面上の各位置の座標について、これらの処理を行うことにより、オブジェクトに対する影の範囲を決定する。なお、制御部１３は、例えば、近傍比率フィルタリング（ＰＣＦ、Percentage-Closer Filtering）等の方法を用いて、各座標における影の濃さを、当該各座標の周囲の座標における影の濃さに応じて調整してもよい。これにより、高さマップ１１２の水平方向、及び垂直方向の解像度が比較的低く設定されている場合でも、違和感が比較的低い自然な影を表現することができる。
【００３３】
続いて、制御部１３は、３次元コンピュータグラフィックスにより、仮想３次元空間上の各オブジェクトと、各オブジェクトの影を表示制御部１４により画面に表示させる（ステップＳ４）。ここで、制御部１３は、図７に示すように、高さマップ１１２が設定されたオブジェクトの表面のうち、仮想３次元空間上の水平面における影の範囲に含まれる領域に影を付して画面に表示する。図７の例では、山のオブジェクト７０１に対して、影７０２が付されて表示されている。ここで、制御部１３は、図４に示す高さマップ１１２の例では、丘のオブジェクトの表面のうち影の範囲に対して、例えば、テクスチャ画像の輝度等を低下させてテクスチャマッピングを行うようしてもよい。
【００３４】
続いて、制御部１３は、ユーザの操作等により、ゲームを終了するか否かを判定する（ステップＳ５）。ゲームを終了しない場合（ステップＳ５でＮＯ）、ステップＳ２の処理に進む。これにより、仮想３次元空間における仮想的な時刻の経過に応じて、オブジェクトの影がリアルタイムで算出され、算出された影が表示される。
【００３５】
ゲームを終了する場合（ステップＳ５でＹＥＳ）、処理を終了する。
【００３６】
＜効果＞
プレイヤーキャラクターが広大な仮想３次元空間上の世界を自由に移動できるオープンワールドのゲームでは、高い位置から一帯の風景を眺める場合等において、スケールの大きな映像表現が可能である。この場合、周辺の建物や木等のオブジェクトのみならず、遠くに位置するオブジェクトもできる限り表示することが臨場感の点で好ましい。また、この仮想３次元空間は、山、及び丘等で、起伏に富んでいることが好ましい場合がある。
【００３７】
そのため、オープンワールドのゲームでは、個々の空間の端に到達したら別の空間に切り替えるようなオープンワールドではないゲームと比較して、メモリに読み込んでおくべきオブジェクト等のデータ量や、オブジェクトの表示等のための処理の負荷が大きい。
【００３８】
また、オープンワールドのゲームでは、仮想３次元空間における仮想的な時刻に応じて、太陽の位置が変化するため、予め影の範囲を算出して記憶しておくことはメモリの使用量等の観点から困難である。
【００３９】
ゲーム装置のハードウェアの性能により、メモリサイズやＣＰＵ等の演算速度には上限がある。そのため、レイキャスティング法等を用いる従来技術では、例えば、オープンワールドのゲーム等、表示するオブジェクトの数が多いこと等により、リアルタイムで各オブジェクトの影を算出する処理の負荷が比較的高い場合、表示させるオブジェクトの数を減らす等の対応が必要になる。
【００４０】
一方、上述した実施形態によれば、仮想３次元空間の水平面上の各位置に対応付けられた高さの情報と、当該水平面に対する光線の入射方向とに基づいて、当該水平面における影の範囲を算出する。そして、仮想３次元空間上のオブジェクトの表面のうち、当該水平面における影の範囲に含まれる領域に影を付して画面に表示する。これにより、オブジェクトの影の表示をより高速に行うことができる。
【００４１】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【００４２】
画像処理装置１０の各機能部は、例えば１以上のコンピュータにより構成されるクラウドコンピューティングにより実現されていてもよい。また、画像処理装置１０は、ユーザの端末にゲームの画面を表示させる、オンラインゲーム用のサーバであってもよい。
【００４３】
なお、上述した実施形態では、オープンワールドのゲームを例として説明したが、開示の技術は、オープンワールド以外のゲーム、シミュレーション等の３次元コンピュータグラフィックスにおいて、仮想３次元空間上で所定のオブジェクトを他のオブジェクトの上に乗せる場合に適用できる。
【００４４】
なお、制御部１３は、「算出部」の一例である。
【符号の説明】
【００４５】
１０  画像処理装置
１１  記憶部
１１１  ３次元データ
１１２  高さマップ
１２  取得部
１３  制御部
１４  表示制御部
【図１】
2019121238.tif 000003
【図２】
2019121238.tif 000004
【図３】
2019121238.tif 000005
【図４】
2019121238.tif 000006
【図５】
2019121238.tif 000007
【図６】
2019121238.tif 000008
【図７】
2019121238.tif 000009