(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-04-22
(45)【発行日】2022-05-06
(54)【発明の名称】プログラム、情報処理装置、及び移動領域生成方法
(51)【国際特許分類】
A63F 13/60 20140101AFI20220425BHJP
【FI】
A63F13/60
(21)【出願番号】P 2018059198
(22)【出願日】2018-03-27
【審査請求日】2021-02-01
(73)【特許権者】
【識別番号】595000427
【氏名又は名称】株式会社コーエーテクモゲームス
(74)【代理人】
【識別番号】110000198
【氏名又は名称】特許業務法人湘洋内外特許事務所
(72)【発明者】
【氏名】上原 一寿
【審査官】宮本 昭彦
(56)【参考文献】
【文献】特開2017-217481(JP,A)
【文献】特開2012-213485(JP,A)
【文献】特開2010-068872(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
A63F 13/00 - 13/98
(57)【特許請求の範囲】
【請求項1】
情報処理装置に実行させるプログラムであって、
探索領域を示すオブジェクトの指定を受け付ける探索領域設定部と、
前記探索領域及び該探索領域内のオブジェクトの表層の高さに関する情報を抽出する高さ情報抽出部と、
前記高さの差が所定範囲内にある領域を用いて、キャラクターオブジェクトが移動可能な領域を示す移動領域情報を生成する移動領域情報生成部として、前記情報処理装置を機能させることを特徴とする、プログラム。
【請求項2】
請求項1に記載のプログラムであって、
前記高さ情報抽出部は、前記探索領域内の所定の方向に進行する複数の光線の各々と、前記各オブジェクトの表層との交点を抽出し、
前記移動領域情報生成部は、隣り合う交点との前記高さの差が所定範囲内にある複数の前記交点を含む領域に前記移動領域情報を生成することを特徴とする、プログラム。
【請求項3】
請求項1に記載のプログラムであって、
前記探索領域内の特定のオブジェクトを含むよう通過除外領域を示すオブジェクトを生成する通過除外領域生成部を備え、
前記高さ情報抽出部は、前記探索領域内の所定の方向に進行する複数の光線の各々と、前記各オブジェクトの表層との交点を抽出し、
前記移動領域情報生成部は、前記通過除外領域と前記複数の光線との交点を除く他の前記交点を含む領域に前記移動領域情報を生成することを特徴とする、プログラム。
【請求項4】
請求項2又は3に記載のプログラムであって、
前記探索領域設定部は、前記光線の密度の設定を受け付けることを特徴とする、プログラム。
【請求項5】
請求項3に記載のプログラムであって、
前記移動領域情報生成部は、前記探索領域と前記複数の光線との交点を含む領域に前記移動領域情報を生成することを特徴とする、プログラム。
【請求項6】
請求項3に記載のプログラムであって、
前記移動領域情報生成部は、複数の前記交点から所定の方法で抽出した前記交点を結ぶ線を輪郭とする前記領域に前記移動領域情報を生成することを特徴とする、プログラム。
【請求項7】
請求項1に記載のプログラムであって、
前記高さ情報抽出部は、前記探索領域に前記オブジェクトの一部が含まれる場合、前記探索領域に含まれる前記オブジェクトの一部の高さに関する情報を抽出し、前記探索領域に含まれない前記オブジェクトの部分の高さに関する情報を抽出しないことを特徴とする、プログラム。
【請求項8】
探索領域を示すオブジェクトの指定を受け付ける探索領域設定部と、
前記探索領域及び前記探索領域内のオブジェクトの表層の高さに関する情報を抽出する高さ情報抽出部と、
前記高さの差が所定範囲内にある領域を用いて、キャラクターオブジェクトが移動可能な領域を示す移動領域情報を生成する移動領域情報生成部と、を備えることを特徴とする、情報処理装置。
【請求項9】
情報処理装置において実行される移動領域生成方法であって、
前記情報処理装置は、探索領域設定部と、高さ情報抽出部と、移動領域情報生成部と、を備え、
前記探索領域設定部は、探索領域を示すオブジェクトの指定を受け付ける探索領域設定手順を実行し、
前記高さ情報抽出部は、前記探索領域及び前記探索領域内のオブジェクトの表層の高さに関する情報を抽出する高さ情報抽出実行手順を実行し、
前記移動領域情報生成部は、前記高さの差が所定範囲内にある領域を用いて、キャラクターオブジェクトが移動可能な領域を示す移動領域情報を生成する移動領域情報生成手順を実行することを特徴とする、移動領域生成方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、情報処理装置、及び移動領域生成方法に関する。
【背景技術】
【0002】
ゲームに表示されるノンプレイヤーキャラクターが移動することのできる移動可能領域を設定する技術が知られている。
【0003】
特許文献1には、「「ナビゲーションメッシュ」の概念について述べる必要がある。ナビゲーションメッシュはキャラクタの原型(例えば、ヒーロ、悪役、傍観者、……)に対して規定され、及び/又はキャラクタの大きさ(例えば、小さい、中くらい、大きい、……)にも依存する。ナビゲーションメッシュはキャラクタが移動又は操縦されることが許容されるゲーム環境内の領域又はパスの集合体を指定している。」と記載されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
制作者は、コンピューターグラフィックスの編集用ソフトウェアを用いて、ゲーム内の背景を含む地図情報を参照しながら、移動可能領域を定め、該移動可能領域を示す情報を生成する。地図情報が広大であれば、移動可能領域の決定には多大な労力が必要となる。
【0006】
特許文献1に開示された技術は、移動可能領域の生成に関するものではなく、製作者の労力を削減しうるものではない。
【0007】
そこで、本発明は、移動可能領域を示す情報の生成を効率的に行うことを目的とする。
【課題を解決するための手段】
【0008】
上記課題を解決するために、本発明の一態様に係るプログラムは、情報処理装置に実行させるプログラムであって、探索領域を示すオブジェクトの指定を受け付ける探索領域設定部と、前記探索領域及び該探索領域内のオブジェクトの表層の高さに関する情報を抽出する高さ情報抽出部と、前記高さの差が所定範囲内にある領域を用いて、キャラクターオブジェクトが移動可能な領域を示す移動領域情報を生成する移動領域情報生成部として、前記情報処理装置を機能させることを特徴とする。
【0009】
上記のプログラムにおいて、前記高さ情報抽出部は、前記探索領域内の所定の方向に進行する複数の光線の各々と、前記各オブジェクトの表層との交点を抽出し、前記移動領域情報生成部は、隣り合う交点との前記高さの差が所定範囲内にある複数の前記交点を含む領域に前記移動領域情報を生成することを特徴としてもよい。
【0010】
上記のプログラムにおいて、前記探索領域内の特定のオブジェクトを含むよう通過除外領域を示すオブジェクトを生成する通過除外領域生成部を備え、前記高さ情報抽出部は、前記探索領域内の所定の方向に進行する複数の光線の各々と、前記各オブジェクトの表層との交点を抽出し、前記移動領域情報生成部は、前記通過除外領域と前記複数の光線との交点を除く他の前記交点を含む領域に前記移動領域情報を生成することを特徴としてもよい。
【0011】
上記のプログラムにおいて、前記探索領域設定部は、前記光線の密度の設定を受け付けることを特徴としてもよい。
【0012】
上記のプログラムにおいて、前記移動領域情報生成部は、前記探索領域と前記複数の光線との交点を含む領域に前記移動領域情報を生成することを特徴としてもよい。
【0013】
上記のプログラムにおいて、前記移動領域情報生成部は、複数の前記交点から所定の方法で抽出した前記交点を結ぶ線を輪郭とする前記領域に前記移動領域情報を生成することを特徴としてもよい。
【0014】
上記のプログラムにおいて、前記高さ情報抽出部は、前記探索領域に前記オブジェクトの一部が含まれる場合、前記探索領域に含まれる前記オブジェクトの一部の高さに関する情報を抽出し、前記探索領域に含まれない前記オブジェクトの部分の高さに関する情報を抽出しないことを特徴してもよい。
【0015】
上記の課題を解決する本発明の他の態様は、情報処理装置であって、探索領域を示すオブジェクトの指定を受け付ける探索領域設定部と、前記探索領域及び前記探索領域内のオブジェクトの表層の高さに関する情報を抽出する高さ情報抽出部と、前記高さの差が所定範囲内にある領域を用いて、キャラクターオブジェクトが移動可能な領域を示す移動領域情報を生成する移動領域情報生成部と、を備えることを特徴とする。
【0016】
上記の課題を解決する本発明の他の態様は、情報処理装置において実行される移動領域生成方法であって、前記情報処理装置は、探索領域設定部と、高さ情報抽出部と、移動領域情報生成部と、を備え、前記探索領域設定部は、探索領域を示すオブジェクトの指定を受け付ける探索領域設定手順を実行し、前記高さ情報抽出部は、前記探索領域及び前記探索領域内のオブジェクトの表層の高さに関する情報を抽出する高さ情報抽出実行手順を実行し、前記移動領域情報生成部は、前記高さの差が所定範囲内にある領域を用いて、キャラクターオブジェクトが移動可能な領域を示す移動領域情報を生成する移動領域情報生成手順を実行することを特徴とする。
【発明の効果】
【0017】
本発明の一態様によれば、移動可能領域を示す情報の生成を効率的に行うことができる。
【図面の簡単な説明】
【0018】
【
図1】情報処理装置の機能ブロック構成の一例を示す図である。
【
図2】移動領域情報生成処理の概要を示す図である。
【
図3】情報処理装置のハードウェア構成の一例を示す図である。
【
図4】移動領域情報生成処理の一例を示すフローチャートである。
【
図5】シーンデータの表示例を示す図(その1)である。
【
図6】シーンデータの表示例を示す図(その2)である。
【
図7】シーンデータの表示例を示す図(その3)である。
【
図8】シーンデータの表示例を示す図(その4)である。
【
図9】シーンデータの表示例を示す図(その5)である。
【
図10】変形例における移動領域情報生成処理の概要を示す図である。
【
図11】変形例における移動領域情報生成処理の一例を示すフローチャートである。
【
図12】変形例におけるシーンデータの表示例を示す図である。
【発明を実施するための形態】
【0019】
以下、図面に基づいて本発明の実施の形態を説明する。
図1は、情報処理装置100の機能ブロック構成の一例を示す図である。情報処理装置100は、例えばPC(Personal Computer)等の装置である。一例として、情報処理装置100は、ゲームの制作者により操作される。
【0020】
また、本実施形態において、オブジェクトとは、3Dコンピューターグラフィックスの編集用ソフトウェアを用いて表示される各種物体である。オブジェクトは、3本以上の線(エッジ)に囲われた領域に、描画用の面情報(ポリゴン)を有するものであってもよく、例えばドットやワイヤーフレームなど、面情報を有さないものであってもよい。
【0021】
情報処理装置100は、制御部110と、入力部120と、出力部130とを備える。制御部110は、情報処理装置100の全体を統括的に制御する。入力部120は、入力装置を用いて制作者からの入力操作を受け付ける。出力部130は、出力装置を介して情報処理装置100の有する情報を出力する。
【0022】
制御部110は、探索領域設定部111と、高さ情報抽出部112と、通過除外領域生成部113と、移動領域情報生成部114と、を備える。探索領域設定部111は、移動領域情報の生成の対象となる探索領域の設定を受け付ける。
【0023】
一例として、制作者は、編集用ソフトウェアを操作し、幅情報、奥行き情報、及び高さ情報を有する3D空間上で、背景のオブジェクトに対して、机や椅子、縁石等の配置物であるオブジェクトが設置されたシーンデータを表示する。制作者は、シーンデータに対して探索領域となるオブジェクトを配置して表示させる。探索領域となるオブジェクトは、幅情報、奥行き情報、及び高さ情報を有する立体形状である。制作者は、探索領域の位置や大きさ、及び形状等を設定可能である。
【0024】
探索領域設定部111は、探索領域となるオブジェクトを指定した探索領域決定指示を受け付けると、該オブジェクトを探索領域として設定する。また、探索領域設定部111は、探索領域内に仮想的に走査される複数の光線の密度の設定を受け付ける。
【0025】
高さ情報抽出部112は、探索領域を示すオブジェクト、及び探索領域内のオブジェクトの表層の高さに関する情報を抽出する。例えば、高さ情報抽出部112は、探索領域内の所定の方向に複数の光線を仮想的に走査する、いわゆるレイキャスト処理を実行する。レイキャスト処理は、探索領域の一面(例えば上面)上の複数の点をそれぞれ始点とし、該一面に対向する他面(例えば下面)に向けて、他面に対して各々の始点から垂直に光線を進行させることにより実行される。
【0026】
高さ情報抽出部112は、所定の方向に進行する複数の光線の各々と、探索領域自身及び探索領域内のオブジェクトの表層との交点を抽出する。交点の高さ情報を参照することにより、オブジェクトの表層の高さに関する情報を抽出可能である。
【0027】
なお、高さ情報抽出部112は、探索領域内にオブジェクトの一部が含まれ、他の一部が探索領域からはみ出す場合に、探索領域に含まれるオブジェクトの一部の高さに関する情報を抽出し、探索領域に含まれないオブジェクトの部分の高さに関する情報を抽出しない。
【0028】
通過除外領域生成部113は、キャラクターオブジェクトの移動の障害となるオブジェクトである障害オブジェクトを含むよう通過除外領域を生成する。通過除外領域は、高さ情報抽出部112が探索領域内の障害オブジェクトの表層の高さ情報を抽出するために用いられる。即ち、先述の高さ情報抽出部112は、複数の光線と通過除外領域との交点を抽出することにより、障害オブジェクトの表層の高さに関する情報を得る。
【0029】
通過除外領域は、例えば面情報を有するオブジェクトである。通過除外領域は、障害オブジェクトのコピーであってもよいが、処理をより高速に行うため、障害オブジェクトをより単純化したオブジェクトであることが望ましい。例えば、後述のレイキャストによる衝突判定を効率的に行うため、通過除外領域生成部113は、AABBTree(axis-aligned bounding box tree)と呼ばれる構造を利用した通過除外領域を生成することができる。
【0030】
この場合、通過除外領域は、3D空間におけるXYZ軸に各辺が平行な立方体を通過除外領域とすることができる。また、探索領域に複数の障害オブジェクトが存在する場合、各障害オブジェクトに対して生成される通過除外領域は任意の探索処理高速化のためのデータ構造とすることができる。
【0031】
又は、例えば通過除外領域生成部113は、障害オブジェクトのコピーに対し、公知のポリゴンリダクション処理を行うことにより、データ容量の軽い通過除外領域を得てもよい。なお、通過除外領域生成部113は、例えば探索領域の基準面(例えば下面)との高さの差が所定範囲の値を超える障害オブジェクトに対して、通過除外領域を生成するよう設定されていてもよい。
【0032】
移動領域情報生成部114は、探索領域内のオブジェクトの表層の高さの差が所定範囲内にある領域を用いて、キャラクターオブジェクトが移動可能な領域を示す移動領域情報を生成する。
【0033】
図2は、移動領域情報生成処理の概要を示す図である。
図2には、探索領域Bと、オブジェクトAとが示されている。本実施形態の一例として、移動領域情報生成部114は、探索領域Bの下面と、複数の光線との交点を含む領域に、移動領域情報を生成する。
【0034】
先述したように、高さ情報抽出部112は、探索領域内に光線を走査することにより、探索領域Bのオブジェクトの下面、及び探索領域内のオブジェクト(即ち通過除外領域)の表層の高さに関する情報を抽出する。光線と通過除外領域とが交わった場合、光線は通過除外領域に遮られ、探索領域Bの下面には届かないため、光線と探索領域Bの下面との交点は形成されない。即ち、移動領域情報生成部114は、通過除外領域と光線との交点を除く他の交点(即ち光線と探索領域Bの下面との交点)を含む領域に、移動領域情報を生成する。
【0035】
通過除外領域生成部113が、探索領域Bの下面との高さの差が所定範囲の値を超える障害オブジェクトに対して、通過除外領域を生成する場合について説明する。通過除外領域生成部113が、
図2に示す高さsを超える障害オブジェクトに対して通過除外領域を生成する場合、オブジェクトAは高さsを超えるため、オブジェクトAに対し通過除外領域が生成される。
【0036】
レイキャスト処理を行う結果、探索領域Bの上面から下面に向かって進行する光線が、オブジェクトAに対して生成された通過除外領域と衝突する場合、光線は通過除外領域に遮られ、探索領域Bの下面とは交わらない。即ち、領域b内において、光線と探索領域Bの下面との交点は形成されない。その一方で、領域a及び領域cについては、光線と探索領域Bの下面との交点が形成される。移動領域情報生成部114は、領域a及び領域cについて、移動領域情報を生成する。
【0037】
通過除外領域生成部113が、
図2に示す高さtを超える障害オブジェクトに対して通過除外領域を生成する場合、オブジェクトAは高さtを超えないため、オブジェクトAに対し通過除外領域が生成されない。
【0038】
レイキャスト処理を行う結果、探索領域Bの上面から下面に向かって進行する光線が、オブジェクトAを通過し、探索領域Bの下面に衝突する。即ち、領域a、領域b、及び領域cにおいて、光線と探索領域Bの下面との交点が形成される。移動領域情報生成部114は、領域a、領域b、及び領域cについて、移動領域情報を生成する。
【0039】
換言すれば、探索領域の基準面との高さの差が所定範囲の値を超える障害オブジェクトに対して通過除外領域を生成する場合、移動領域情報生成部114は、高さの差が所定範囲内にある領域に対して、移動領域情報を生成するといえる。
【0040】
なお、基準面は探索領域Bの下面に限定されない。例えば、探索領域Bの下面よりも上に床面を構成するオブジェクトがある場合、光線が床面のオブジェクトに遮られ、探索領域Bの下面に到達しないことが考えられる。その場合、移動領域情報生成部114は、床面のオブジェクトを基準面とし、床面のオブジェクトと光線との交点を含む領域に、移動領域情報を生成することができる。
【0041】
図3は、情報処理装置100のハードウェア構成の一例を示す図である。情報処理装置100は、演算処理装置141と、主記憶装置142と、記録装置143と、入力装置144と、出力装置145とを有し、各構成要素はバスにより接続されている。
【0042】
演算処理装置141は、例えば、CPU(Central Processing Unit)などの演算ユニットであって、主記憶装置142又は記録装置143に記録されたプログラムに従って処理を実行する。制御部110を構成する各処理部は、演算処理装置141がプログラムを実行することにより各々の機能を実現する。主記憶装置142は、例えば、RAM(Random Access Memory)などの記憶装置である。記録装置143は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、フラッシュROM(Read Only Memory)などの記録装置である。
【0043】
入力装置144は、制作者からの入力操作を受け付ける装置であって、タッチパネルやキーボード等の入力デバイスである。出力装置145は、情報処理装置100に格納されたデータの出力処理を行う装置であって、例えばLCD(Liquid Crystal Display)等の表示装置である。
【0044】
例えば、演算処理装置141は、記録装置143に記憶されているコンピューターグラフィックスソフトウェアのプログラムを読み込み、主記憶装置142に展開する。なお、情報処理装置100には、該コンピューターグラフィックスソフトウェアが予めダウンロードされている。演算処理装置141は、プログラムを実行することで、例えば情報処理装置100からの入力操作の信号に従ってコンピューターグラフィックスソフトウェアの表示画面上に所望の情報を出力する。
【0045】
なお、情報処理装置100の各構成要素の処理は、1つのハードウェアで実行されてもよいし、複数のハードウェアで実行されてもよい。また、情報処理装置100の各構成要素の処理は、1つのプログラムで実現されてもよいし、複数のプログラムで実現されてもよい。
【0046】
図4は、移動領域情報生成処理の一例を示すフローチャートである。本処理開始前に、制作者は、シーンデータを出力装置145であるディスプレイに表示させる。
【0047】
図5は、シーンデータの表示例を示す図(その1)である。出力装置145に表示されたシーンデータには、例えば床及び壁の背景オブジェクトと、机とが配置されている。机のオブジェクトをオブジェクトAとする。
【0048】
説明を
図4に戻す。探索領域設定部111は、探索領域を配置する(ステップS11)。具体的には、探索領域設定部111は、探索領域を示すオブジェクトの生成指示を示す入力操作を受け付ける。探索領域を示すオブジェクトは、任意の形状及び大きさに設定することができる。探索領域設定部111は、当該オブジェクトを指定した探索領域決定指示を受け付けると、該オブジェクトを探索領域として取り扱う。
【0049】
次に、探索領域設定部111は、レイキャストの密度を決定する(ステップS12)。具体的には、探索領域設定部111は、探索領域内を進行する光線の密度の指定の入力操作を受け付ける。光線の密度は、探索領域内の単位面積当たりの光線の数と同義である。
【0050】
図6は、シーンデータの表示例を示す図(その2)である。
図6は、
図5に示すシーンデータに探索領域Bを配置した状態を示している。
図6では、探索領域Bの内部に、オブジェクトAの全体が含まれるよう配置されている。上述のステップS11において、制作者は立方体のオブジェクトをシーンデータに配置し、オブジェクトを指定して探索領域決定指示を入力する。オブジェクトは探索領域Bとして取り扱われる。
【0051】
また、
図6に示す探索領域Bの下面は、シーンデータの床面に一致している。本実施形態において、光線は探索領域Bの上面から下面に向けて、Y軸-方向に進行するが、光線の進行方向については設定による変更が可能である。
【0052】
図6に示す探索領域Bの下面には、格子(グリッド)が表示されている。グリッドの交点に向かって、下面に対して垂直に光線が進行する。即ち、上述のステップS12で決定した光線の密度により、探索領域Bの下面のグリッドの細かさが定まる。
【0053】
説明を
図4に戻す。次に、通過除外領域生成部113は、探索領域の範囲内の通過除外領域を生成する(ステップS13)。具体的には、通過除外領域生成部113は、探索領域B内に少なくとも1つの頂点を有する1又は複数のオブジェクトを抽出する。通過除外領域生成部113は、抽出したオブジェクトを障害オブジェクトとして特定し、障害オブジェクトの各々について通過除外領域を生成する。
【0054】
なお、通過除外領域生成部113は、探索領域の下面を基準として所定範囲の値を超えた高さを有する頂点をもつオブジェクトを、障害オブジェクトとして抽出してもよい。また、通過除外領域生成部113は、制作者の入力により障害オブジェクトを特定し、通過除外領域を生成してもよい。
【0055】
図7は、シーンデータの表示例を示す図(その3)である。
図7は、
図6に示すシーンデータのオブジェクトAに対し、通過除外領域Mを生成した状態を示している。障害オブジェクトAの全体を含むように、通過除外領域Mが設定されている。
【0056】
説明を
図4に戻す。次に、高さ情報抽出部112が、レイキャストを実行する(ステップS14)。具体的には、高さ情報抽出部112は、設定された密度の光線を用いて、探索領域の上面から下面へと探索領域B内を走査する。高さ情報抽出部112は、光線と通過除外領域M との交点を抽出する。また、高さ情報抽出部112は、探索領域Bの下面と通過除外領域Mとの交点を抽出する。
【0057】
次に、移動領域情報生成部114は、通過除外領域に衝突した点を除去する(ステップS15)。具体的には、移動領域情報生成部114は、光線と通過除外領域Mとの交点に関する情報を削除する。その結果、高さ情報抽出部112の抽出した交点のうち、探索領域Bの下面と通過除外領域Mとの交点が除去されずに残る。その後、移動領域情報生成部114は、探索領域と通過除外領域とを削除する。
【0058】
図8は、シーンデータの表示例を示す図(その4)である。
図8には、削除されずに残った、探索領域Bの下面と光線との交点により構成されるグリッドCが表示されている。本実施形態において、グリッドは、各点を結ぶことにより得られる格子状の情報である。グリッドCは、探索領域Bの下面に該当する領域のうち、障害オブジェクトAの真下に当たる部分をくりぬいた領域であるといえる。
【0059】
説明を
図4に戻す。次に、移動領域情報生成部114は、交点をグループ化し、移動領域情報を生成する(ステップS16)。具体的には、移動領域情報生成部114は、ステップS15において除去されずに残った交点を、所定の方法を用いて1又は複数のグループに分ける。
【0060】
例えば移動領域情報生成部114は、除去されずに残った交点により構成されるグリッドを定義する。移動領域情報生成部114は、グリッドのうち3以上の交点により囲われる複数の多角形領域を、所定の方法を用いて併合する。一例として、移動領域情報生成部114は、併合してできた領域が閉じた多角形であり、かつ穴や自己交差のないよう、多角形領域を併合する。穴とは、併合した多角形領域により構成される面の内部に含まれる、面のない部分である。
【0061】
なお、移動領域情報生成部114は、併合してできた領域の角の数が予め設定された上限値以下となるよう多角形領域を併合してもよい。多角形領域を併合した結果、同じ領域を構成する複数の交点は同じグループに属するものとして、交点が1又は複数のグループに分割される。なお、併合後の複数の領域の境界に位置する交点は、各々の領域を構成する点として、両グループに属するよう設定される。
【0062】
その後、移動領域情報生成部114は、同じグループに属する交点を含む領域の輪郭にあたる部分の点を抽出し、抽出した点を結ぶ線を輪郭とするポリゴンデータを生成する。より具体的には、移動領域情報生成部114は、同じグループに属する交点を含む領域を定義し、領域の輪郭にあたる部分の点を残し、それ以外の点、即ち領域内部に位置する点を削除する。
【0063】
移動領域情報生成部114は、残った点に対し、例えば輪郭追跡アルゴリズム等の公知の方法を用いてポリゴンデータを生成する。その後、移動領域情報生成部114は、生成したポリゴンデータを移動領域情報として図示しない記憶部に記憶させ、本フローチャートの処理を終了する。
【0064】
図9は、シーンデータの表示例を示す図(その5)である。
図9は、
図8に示すグリッドCを構成する多角形領域を併合して輪郭にあたる部分の点を抽出し、抽出した点を結ぶ線を輪郭とするポリゴンデータにより構成される移動領域情報Dを表している。移動領域情報Dは、グリッドCに比べて交点が減少していることが分かる。なお、
図7に示すグリッドCから生成される移動領域情報Dは、
図9に示す態様に限られない。
【0065】
その後、本処理により生成された移動領域情報の示す領域を、ノンプレイヤーオブジェクトが移動するよう設定することができる。
【0066】
なお、本実施形態では、通過除外領域との間で交点を形成しない光線は、探索領域の下面との交点を形成するものと説明した。しかしながら、通過除外領域との間で交点を形成しない光線は、床面のオブジェクトとの交点を形成してもよい。その場合、床面のオブジェクトと光線との交点を含む領域に、移動領域情報が形成される。
【0067】
本実施形態により、障害オブジェクトの位置を反映させた移動領域情報を効率的に生成することができる。また、探索領域の配置を調整することにより、移動領域情報を生成させる位置を調整することができるため、例えば広大な地図情報の一部をノンプレイヤーオブジェクトの移動可能な領域としたい場合等に、制作者の意図を反映させた移動領域情報の設置を柔軟に行うことができる。
【0068】
また、本実施形態では、レイキャスト処理を行う光線の密度を調整することができるため、移動領域情報がどの程度通過除外領域の形状に追随するかを調整できるといえる。例えば通過除外領域を探索領域の下面に投影した際に円形を構成する場合、光線の密度が高ければ、移動領域情報は円形に近い形がくり抜かれた形状となる。また、光線の密度が低ければ、移動領域情報は円形を含む多角形(例えば四角形)がくり抜かれた形状となり、光線の密度が高い場合に比べデータ容量の低減が可能となる。
【0069】
なお、障害オブジェクトの一部が探索領域からはみ出す場合においても、
図4に示す処理と同様の処理が行われる。障害オブジェクトのうち、探索領域内の一部を部分X、探索領域からはみ出る部分を部分Yとする。高さ情報抽出部112は、探索領域内に光線を進行させるため、レイキャストを実行することにより、部分Xに対して生成された通過除外領域の高さ情報を抽出することができる。
【0070】
その後、移動領域情報生成部114は、探索領域の下面に該当する領域のうち、部分Xの真下に当たる部分をくりぬいた領域を示す移動領域情報を生成する。従って、本実施形態によれば、障害オブジェクトの一部が探索領域からはみ出す場合であっても、探索領域及び障害オブジェクトの位置に従った移動領域情報を生成することができる。
【0071】
付言すると、本実施形態において、探索領域内に存在するオブジェクトであっても、障害オブジェクトと取り扱わないよう設定することができる。その場合、例えば探索領域の配置後に、障害オブジェクトとして取り扱わないオブジェクト(以下、「例外オブジェクト」とする)の指定を、入力装置144を介して受け付ける。
【0072】
その後、通過除外領域生成部113は、探索領域内のオブジェクトの通過除外領域を生成する際に、例外オブジェクトの通過除外領域の生成を回避する。これにより、探索領域内の光線は例外オブジェクトを透過し、例外オブジェクトが配置された探索領域の下面に衝突して交点を形成する。従って、例外オブジェクトが配置された下面に対しても移動可能領域が生成され、キャラクターオブジェクトの移動が可能となる。
【0073】
<変形例>
【0074】
次に、本実施形態の変形例について説明する。本変形例では、移動領域情報の生成の際に、隣り合う交点の高さの比較を行う点が、上述の実施形態と異なる。以下、上述の実施形態と異なる点について説明する。
【0075】
図10は、変形例における移動領域情報生成処理の概要を示す図である。
図10の領域aにおいて、光線と探索領域Bの下面との交点が点e1群であって、領域bにおいて、光線と通過除外領域Mとの交点が点e2群であって、領域cにおいて、光線と探索領域Bの下面との交点が点e3群である。
【0076】
本変形例における移動領域情報生成部114は、探索領域内の所定の方向に進行する複数の光線の各々と、探索領域自身及び探索領域内のオブジェクトとの交点のうち、隣り合う交点の高さの差が所定範囲内にある複数の交点を含む領域に、移動領域情報を生成する。そのため、移動領域情報生成部114は、レイキャスト処理の後に形成された複数の交点について、隣り合う交点との高さの差が所定範囲内の値であるか否かを各々判定する。
【0077】
図10に示す例において、前述の所定範囲の上限を示す値がsであるとする。隣り合う交点の高さの差を判定した結果、点e1群を構成する各点の高さの差は、上限sを超えないため、同じグループに分類される。同様に、点e2群を構成する各点は同じグループに分類され、点e3群を構成する各店は同じグループに分類される。点e1群と点e2群は異なるグループであって、点e2群と点e3群は異なるグループである。点e1群と点e3群は、
図10の図示しない奥行方向において穴を有さないよう連結していれば、同じグループに分類されていてもよいが、ここでは異なるグループに分類されたものとして説明する。
【0078】
移動領域情報生成部114は、点e1群を含む移動領域情報を生成する。同様に、移動領域情報生成部114は、点e2群を含む移動領域情報、及び点e3群を含む移動領域情報を、各々生成する。
【0079】
図11は、変形例における移動領域情報生成処理の一例を示すフローチャートである。ステップS21~ステップS24において行われる処理は、
図4に示すステップS11~ステップS14において行われる処理と同様であるため、説明を省略する。
【0080】
次に、移動領域情報生成部114は、隣り合う交点の高さの差が所定範囲内の交点をグループ化する(ステップS25)。具体的には、移動領域情報生成部114は、探索領域の下面と光線との交点、及び通過除外領域と光線との交点について、隣り合う交点の高さを比較する。移動領域情報生成部114は、比較の結果、隣り合う交点の高さの差が所定範囲内の交点をグループ化する。
【0081】
なお、移動領域情報生成部114は、上述の実施形態と同様に、同じグループの交点により形成される領域に穴や自己交差がないか否かを判定し、穴や自己交差がある場合にグループをより細かく分割する。
【0082】
次に、移動領域情報生成部114は、グループ化した交点から移動領域情報を生成する(ステップS26)。具体的には、移動領域情報生成部114は、同じグループに属する交点を含む領域の輪郭に当たる部分の点を抽出し、抽出した点を結ぶ線を輪郭とするポリゴンデータを生成する。その際、移動領域情報生成部114は、上述の実施形態と同様に、同じグループに属する交点を含む領域を定義し、領域の輪郭にあたる部分の点を残し、それ以外の点、即ち領域内部に位置する点を削除する。
【0083】
移動領域情報生成部114は、残った点に対し、例えば輪郭追跡アルゴリズム等の公知の方法を用いてポリゴンデータを生成する。その後、移動領域情報生成部114は、生成したポリゴンデータを移動領域情報として図示しない記憶部に記憶させ、本フローチャートの処理を終了する。
【0084】
図12は、変形例におけるシーンデータの表示例を示す図である。本変形例では、高さの差が所定範囲内の交点を用いて移動領域情報を生成するため、探索領域の下面に該当する部分のほか、机のオブジェクトAの天面にも移動領域情報が生成される。
【0085】
本変形例により、オブジェクトの天面等にも移動可能領域が生成される。これは、探索領域の下面とオブジェクトの天面等、異なる高さの複数の領域にキャラクターオブジェクトを移動させたい場合に特に有用である。
【0086】
以上、本発明に係る各実施形態及び変形例の説明を行ってきたが、本発明は、上記した実施形態の一例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施形態の一例は、本発明を分かり易くするために詳細に説明したものであり、本発明は、ここで説明した全ての構成を備えるものに限定されない。また、ある実施形態の一例の構成の一部を他の一例の構成に置き換えることが可能である。また、ある実施形態の一例の構成に他の一例の構成を加えることも可能である。また、各実施形態の一例の構成の一部について、他の構成の追加・削除・置換をすることもできる。また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、図中の制御線や情報線は、説明上必要と考えられるものを示しており、全てを示しているとは限らない。ほとんど全ての構成が相互に接続されていると考えてもよい。
【0087】
また、上記の情報処理装置100の機能構成は、理解を容易にするために、主な処理内容に基づいて分類したものである。構成要素の分類の仕方や名称によって、本発明が制限されることはない。上述に示す通り、情報処理装置100の構成は、処理内容に基づいて、さらに多くの構成要素に分類することもできる。また、1つの構成要素がさらに多くの処理を実行するように分類することもできる。
【0088】
また、本発明は、プログラムだけでなく、当該プログラムを記録したコンピューター読み取り可能な記録媒体、当該プログラムを実行する情報処理装置あるいはコンピューター、移動領域生成方法、などの様々な態様で提供することができる。
【符号の説明】
【0089】
100:情報処理装置、110:制御部、111:探索領域設定部、112:高さ情報抽出部、113:通過除外領域生成部、114:移動領域情報生成部、120:入力部、130:出力部、141:演算処理装置、142:主記憶装置、143:記録装置、144:入力装置、145:出力装置、A:オブジェクト、B:探索領域、C:グリッド、D:移動領域情報、M:通過除外領域、a・b・c:領域、e1・e2・e3:点、s・t:高さ