説明

ゲーム装置、ゲーム装置の制御方法、ならびに、プログラム

【課題】オブジェクトもしくはそのオブジェクトの断片の質量を、より簡単に求める。
【解決手段】ゲーム装置200において、記憶部201には、仮想空間内に配置される分割可能なオブジェクトの表面に貼り付けられるテクスチャが記憶される。設定部202は、テクスチャ内の複数の位置のそれぞれに重みを設定する。計算部203は、設定された重みの総和に基づいてオブジェクトの質量を計算する。オブジェクトが複数の断片に分割されると、計算部203は、テクスチャのうち断片に貼り付けられる領域に含まれる重みの総和に基づいて断片の質量を計算する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、分割可能なオブジェクトもしくはそのオブジェクトの断片の形状が複雑であっても、より簡単に質量を求めることができるゲーム装置、ゲーム装置の制御方法、ならびに、プログラムに関する。
【背景技術】
【0002】
仮想空間内に配置されるオブジェクトをよりリアルに表現するための手法に、テクスチャマッピングがある。テクスチャマッピングでは、ポリゴンで表されるオブジェクトの表面に、テクスチャと呼ばれる画像データが貼り付けられる。例えば、同じ形状のオブジェクトであっても、木目調のテクスチャを貼り付ければユーザーからはそれが木材に見えるし、石の模様のテクスチャを貼り付ければユーザーからはそれが石材に見える、といったように、テクスチャマッピングによって、オブジェクトに質感を与えることができる。
【0003】
一方で、特許文献1のように、2次元におけるピクセルを3次元に拡張したボクセルを用いることによって、オブジェクトを立体的に表現する手法もある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2010−152771号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、仮想空間におけるオブジェクトに現実感をより持たせるためには、質量を与えることが望ましい。特に、オブジェクトが衝突や爆発等によって複数の断片に分割される様子をよりリアルに表現するためには、オブジェクトあるいはその断片の質量を即座に計算することが要求されるが、オブジェクトやその断片の形状が複雑な場合には、体積を求める処理に時間がかかってしまい、オブジェクトやその断片の質量を計算することが難しいという問題があった。また、オブジェクトをボクセル形式で表したとしても、予め用意すべきボクセル情報が大量に必要であり、そもそもボクセル情報が与えられていない部分については質量が計算できないため現実感を欠いてしまうという問題があった。
【0006】
本発明はこのような課題を解決するものであり、分割可能なオブジェクトもしくはそのオブジェクトの断片の形状が複雑であってもより簡単に質量を求めることができるゲーム装置、ゲーム装置の制御方法、ならびに、プログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【0008】
本発明の第1の観点に係るゲーム装置は、記憶部、設定部、計算部を備える。
記憶部には、仮想空間内に配置される分割可能なオブジェクトの表面に貼り付けられるテクスチャが予め記憶される。
設定部は、記憶されたテクスチャ内の複数の位置のそれぞれに重みを設定する。
計算部は、オブジェクトが
(a)分割されていない場合、設定された重みの総和に基づいて、オブジェクトの質量を計算し、
(b)複数の断片に分割されている場合、複数の断片のそれぞれについて、テクスチャのうち断片に貼り付けられる領域に含まれる重みの総和に基づいて、断片の質量を計算する。
【0009】
本発明では3次元の仮想空間が扱われる。この仮想空間には、立体的形状を持ったオブジェクトが配置される。典型的には、オブジェクトの外形は複数のポリゴンから構成される。オブジェクトは、例えば衝突等により、複数の断片に分割されることがある。オブジェクトの表面には、予め絵が描かれたテクスチャが貼り付けられる。
【0010】
テクスチャ内の複数の位置には、数値で表される重みが設定される。重みが設定される位置は任意であるが、例えば、テクスチャ内に等間隔に並べられてもよいし、あるいはランダムに配置されてもよい。また、設定される値は任意であり、例えば、すべて同じ値でもよいし、あるいはテクスチャに描かれる絵の内容に基づいて異なる値が設定されてもよい。
【0011】
本発明では、オブジェクトの質量は、その表面に貼り付けられるテクスチャ内に設定された重みの総和によって決まる。オブジェクトが分割されていない場合には、オブジェクトの表面にテクスチャ全体が貼り付けられるので、テクスチャ内に設定された重みの総和によって、オブジェクトの質量が決まる。一方、オブジェクトが複数の断片に分割されている場合には、それぞれの断片の表面には、テクスチャの一部分が貼り付けられる。断片の表面には、設定された重みのうちの一部分が配置される。そして、設定されたすべての重みのうち、断片の表面に貼り付けられる領域内にある重みの総和によって、断片の質量が決まる。従って、ゲーム装置は、たとえオブジェクトや断片の形状が複雑であっても、オブジェクトや断片の体積や密度などを正確に計算しなくてもよく、簡単な計算だけで、オブジェクトや断片の質量を得ることが出来る。得られた質量は、厳密な計算による正確な値ではないかもしれないが、比較的良い近似値となり得る。本発明によれば、分割可能なオブジェクトもしくはそのオブジェクトの断片の形状が複雑であっても、より簡単に質量を求めることができる。
【0012】
オブジェクトが複数の断片に分割された後、計算された質量に基づいて、複数の断片のそれぞれの位置を移動させる移動部と、
移動した複数の断片のそれぞれを表す画像を表示する表示部と、
を更に備えてもよい。
【0013】
本発明によれば、より簡単に質量が求まるだけでなく、求まった質量を用いて、オブジェクトやその断片の動きを表す画像をより簡単に生成しユーザーに提供することができる。
【0014】
オブジェクトの表面は、複数の領域に分かれていてもよい。
また、記憶部には、複数の領域のそれぞれに貼り付けられるテクスチャが記憶されていてもよい。
そして、設定部は、複数のテクスチャのそれぞれに重みを設定してもよい。
【0015】
本発明によれば、1つのオブジェクトに複数のテクスチャが貼り付けられる場合であっても、より簡単に質量を求めることができる。
【0016】
設定部は、テクスチャ内の重みが設定される位置の総数を一定とし、且つ、重みが設定される位置をランダムに決定してもよい。
【0017】
本発明によれば、オブジェクトの表面のうち重みが設定される部分が固定されているわけではないので、オブジェクトの分割のしかた(切断面の形状や位置)によって断片の質量が異なるだけでなく、仮にオブジェクトの分割のしかたが同じであったとしても、分割するたびに、断片の質量が異なってくることとなる。従って、分割後の断片の動きが多様化し、ユーザーを飽きさせない画像を提供できる。
【0018】
設定部は、オブジェクトが分割された場合、複数のテクスチャのそれぞれに設定された重みの比を求め、当該求められた比に応じて、複数のテクスチャのそれぞれから、当該分割により新たに生成された面に貼り付けられるテクスチャに、設定された重みを配分してもよい。
【0019】
例えば、ある切断面でオブジェクトが分割されると、その切断面は、生成された断片の表面の一部となる。その生成された断片の表面の一部には、別のテクスチャが貼り付けられることとなる。本発明によれば、分割によって出来た新たな面に貼り付けられるテクスチャに、オブジェクトの分割のされ方に応じて、適切に重みを設定できるようになる。従って、ゲーム装置は、より簡単に質量を求めることができるだけでなく、分割の仕方に応じて適切な“質量の分布”を定めることができる。
【0020】
設定部は、テクスチャのそれぞれと当該分割により新たに生成された面に貼り付けられるテクスチャとに当該分割後に設定される重みの総和を、テクスチャのそれぞれに当該分割前に設定された重みの総和と等しくしてもよい。
【0021】
例えば、オブジェクトが分割されて生成された断片の表面の一部には、別のテクスチャが貼り付けられることとなるが、仮にそのテクスチャに新たに任意の重みを設定すると、オブジェクトの分割前後で全体の質量が増加してしまい、断片が不自然な動きになってしまう恐れがある。そこで、本発明では、全体の質量が変わることなく、分割によって新たに生成された面(切断面)に貼り付けられるテクスチャに、重みを設定することとしている。従って、ゲーム装置は、より簡単に質量を求めることができ、且つ、分割後の断片の動きをより自然に表現できる。
【0022】
設定部は、記憶されたテクスチャ内の複数の位置のそれぞれについて、当該位置に対応付けられた色に応じて、当該位置に設定される重みを決定してもよい。
【0023】
本発明によれば、テクスチャに描かれた絵の内容に合うような適度な重みを設定することができる。
【0024】
記憶部には、テクスチャ内の重みを設定する位置に対応付けて、当該位置に設定される重みが予め記憶されていてもよい。
そして、設定部は、記憶された位置に、記憶された重みを設定してもよい。
【0025】
本発明によれば、オブジェクトあるいはその断片の“質量の分布”を適切に定めることができる。例えば、デザイナーによって描かれた絵の内容に合うように、質量を決めることができる。
【0026】
本発明のその他の観点に係るゲーム装置は、記憶部と計算部を備える。
記憶部には、仮想空間内に配置される分割可能なオブジェクトの表面に貼り付けられるテクスチャが予め記憶される。
計算部は、オブジェクトが
(x)分割されていない場合、テクスチャの面積に基づいて、オブジェクトの質量を計算し、
(y)複数の断片に分割されている場合、複数の断片のそれぞれについて、テクスチャのうち断片に貼り付けられる領域の面積に基づいて、断片の質量を計算する。
【0027】
本発明によれば、分割可能なオブジェクトもしくはそのオブジェクトの断片の形状が複雑であっても、表面に貼り付けられるテクスチャの面積を求めるだけで、より簡単に質量を求めることができる。
【0028】
本発明のその他の観点に係るゲーム装置の制御方法は、記憶部と設定部と計算部を有するゲーム装置にて実行される制御方法であって、設定ステップと計算ステップを備える。
記憶部には、仮想空間内に配置される分割可能なオブジェクトの表面に貼り付けられるテクスチャが予め記憶される。
設定ステップでは、設定部が、記憶されたテクスチャ内の複数の位置のそれぞれに重みを設定する。
計算ステップでは、オブジェクトが
(a)分割されていない場合、計算部が、設定された重みの総和に基づいて、オブジェクトの質量を計算し、
(b)複数の断片に分割されている場合、計算部が、複数の断片のそれぞれについて、テクスチャのうち断片に貼り付けられる領域に含まれる重みの総和に基づいて、断片の質量を計算する。
【0029】
本発明によれば、分割可能なオブジェクトもしくはそのオブジェクトの断片の形状が複雑であっても、より簡単に質量を求めることができる。
【0030】
本発明のその他の観点に係るプログラムは、コンピュータを、記憶部、設定部、計算部として機能させる。
記憶部には、仮想空間内に配置される分割可能なオブジェクトの表面に貼り付けられるテクスチャが予め記憶される。
設定部は、記憶されたテクスチャ内の複数の位置のそれぞれに重みを設定する。
計算部は、オブジェクトが
(a)分割されていない場合、設定された重みの総和に基づいて、オブジェクトの質量を計算し、
(b)複数の断片に分割されている場合、複数の断片のそれぞれについて、テクスチャのうち断片に貼り付けられる領域に含まれる重みの総和に基づいて、断片の質量を計算する。
【0031】
本発明によれば、コンピュータを上述のように動作するゲーム装置として機能させることができる。
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【0032】
本発明によれば、分割可能なオブジェクトもしくはそのオブジェクトの断片の形状が複雑であっても、より簡単に質量を求めることができるゲーム装置、ゲーム装置の制御方法、ならびに、プログラムを提供することができる。
【図面の簡単な説明】
【0033】
【図1】本発明のゲーム装置が実現される典型的な情報処理装置のハードウェア構成を示す図である。
【図2】ゲーム装置の機能的な構成を示す図である。
【図3】(a),(b)は、テクスチャ内に設定される重みを説明するための図である。
【図4】(a)分割される前のオブジェクトを表す図である。(b)オブジェクトの表面にテクスチャを貼り付ける処理を説明するための図である。
【図5】(a)分割された後のオブジェクトを表す図である。(b)第1の断片の表面と第2の断片の表面にテクスチャを貼り付ける処理を説明するための図である。
【図6】(a)分割された後のオブジェクトを表す図である。(b)第1の断片の表面と第2の断片の表面と第3の断片の表面にテクスチャを貼り付ける処理を説明するための図である。
【図7】質量計算処理を説明するためのフローチャートである。
【図8】実施形態2におけるゲーム装置の機能的な構成を示す図である。
【図9】(a)オブジェクトの断片を表す図である。(b)オブジェクトの断片の表面に貼り付けられるテクスチャを示す図である。
【図10】実施形態3において、オブジェクトの表面に複数のテクスチャを貼り付ける様子を示す図である。
【図11】断片の表面に複数のテクスチャを貼り付ける様子を示す図である。
【図12】実施形態4における質量計算処理を説明するためのフローチャートである。
【図13】(a)オブジェクトを表す図である。(b)オブジェクトの表面に貼り付けられるテクスチャを表す図である。(c)断片を表す図である。(d)断片の表面に貼り付けられるテクスチャを表す図である。
【図14】(a)重みが設定される点の配置を示す図である。(b)重みが設定される点と重みとの対応付けを示す図である。
【発明を実施するための形態】
【0034】
以下に本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム用の情報処理装置を利用して本発明が実現される実施形態を説明するが、以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【0035】
(実施形態1)
図1は、プログラムを実行することにより、本発明の実施形態に係るゲーム装置の機能を果たす典型的な情報処理装置100の概要構成を示す模式図である。
【0036】
情報処理装置100は、CPU(Central Processing Unit)101、ROM 102、RAM(Random Access Memory)103、インターフェース104、コントローラ105、外部メモリ106、DVD−ROM(Digital Versatile Disc ROM)ドライブ107、画像処理部108、音声処理部109、NIC(Network Interface Card)110、を備える。
【0037】
ゲーム用のプログラムおよびデータを記憶したDVD−ROMをDVD−ROMドライブ107に装着して、情報処理装置100の電源を投入することにより、当該プログラムが実行され、本実施形態に係るゲーム装置が実現される。
【0038】
CPU 101は、情報処理装置100全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、CPU 101は、レジスタ(図示せず)という高速アクセスが可能な記憶域に対してALU(Arithmetic Logic Unit)(図示せず)を用いて加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などを行うことができる。さらに、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行えるように、CPU 101自身が構成されているものや、コプロセッサを備えて実現するものがある。
【0039】
ROM 102には、電源投入直後に実行されるIPL(Initial Program Loader)が記録され、これが実行されることにより、DVD−ROMに記録されたプログラムをRAM 103に読み出してCPU 101による実行が開始される。また、ROM 102には、情報処理装置100全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。
【0040】
RAM 103は、データやプログラムを一時的に記憶するためのもので、DVD−ROMから読み出したプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータが保持される。また、CPU 101は、RAM 103に変数領域を設け、当該変数に格納された値に対して直接ALUを作用させて演算を行ったり、RAM 103に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻す、などの処理を行う。
【0041】
インターフェース104を介して接続されたコントローラ105は、プレイヤーがゲーム実行の際などに行う操作入力を受け付ける。
【0042】
インターフェース104を介して着脱自在に接続された外部メモリ106には、ゲーム等のプレイ状況(過去の成績等)を示すデータ、ゲームの進行状態を示すデータ、ネットワーク対戦の場合のチャット通信のログ(記録)のデータなどが書き換え可能に記憶される。プレイヤーは、コントローラ105を介して指示入力を行うことにより、これらのデータを適宜外部メモリ106に記録することができる。
【0043】
DVD−ROMドライブ107に装着されるDVD−ROMには、ゲームを行うためのプログラムとゲームに付随する画像データや音声データなどが記録される。CPU 101の制御によって、DVD−ROMドライブ107は、これに装着されたDVD−ROMに対する読み出し処理を行って、必要なプログラムやデータを読み出し、これらはRAM 103等に一時的に記憶される。
【0044】
画像処理部108は、DVD−ROMから読み出されたデータをCPU 101や画像処理部108が備える画像演算プロセッサ(図示せず)によって加工処理した後、これを画像処理部108が備えるフレームメモリ(図示せず)に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部108に接続されるモニター(図示せず)へ出力される。これにより、各種の画像表示が可能となる。
【0045】
画像演算プロセッサは、2次元の画像の重ね合わせ演算やαブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
【0046】
また、仮想空間が3次元にて構成される場合には、当該3次元空間内に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Zバッファ法によりレンダリングして、所定の視点位置から仮想空間に配置されたポリゴンを所定の視線の方向へ見たレンダリング画像を得る演算の高速実行も可能である。
【0047】
さらに、CPU 101と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を2次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。
【0048】
音声処理部109は、DVD−ROMから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカーから出力させる。また、CPU 101の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカーから出力させる。
【0049】
音声処理部109では、DVD−ROMに記録された音声データがMIDIデータである場合には、これが有する音源データを参照して、MIDIデータをPCMデータに変換する。また、ADPCM形式やOgg Vorbis形式等の圧縮済音声データである場合には、これを展開してPCMデータに変換する。PCMデータは、そのサンプリング周波数に応じたタイミングでD/A(Digital/Analog)変換を行って、スピーカーに出力することにより、音声出力が可能となる。
【0050】
さらに、情報処理装置100にはマイクを接続することができる。この場合、マイクからのアナログ信号に対しては、適当なサンプリング周波数でA/D変換を行い、PCM形式のディジタル信号として、音声処理部109でのミキシング等の処理ができるようにする。
【0051】
NIC 110は、情報処理装置100をインターネット等のコンピュータ通信網(図示せず)に接続するためのものであり、LAN(Local Area Network)を構成する際に用いられる10BASE−T/100BASE−T規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ISDN(Integrated Services Digital Network)モデム、ADSL(Asymmetric Digital Subscriber Line)モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとCPU 101との仲立ちを行うインターフェイス(図示せず)により構成される。
【0052】
このほか、情報処理装置100は、ハードディスク等の大容量外部記憶装置を用いて、ROM 102、RAM 103、外部メモリ106、DVD−ROMドライブ107に装着されるDVD−ROM等と同じ機能を果たすように構成してもよい。
【0053】
以上で説明した情報処理装置100は、いわゆる「コンシューマ向けテレビゲーム装置」に相当するものであるが、仮想空間を表示するような画像処理を行うものであれば本発明を実現することができる。したがって、携帯電話、携帯ゲーム機器、カラオケ装置、一般的なビジネス用コンピュータやパーソナルコンピュータなど、種々の計算機上で本発明を実現することが可能である。
【0054】
次に、本実施形態のゲーム装置200の機能的な構成について説明する。図2は、ゲーム装置200の機能的な構成を示す図である。ゲーム装置200は、記憶部201、設定部202、計算部203を備える。
【0055】
記憶部201は、仮想空間内に配置される分割可能なキャラクターオブジェクト(以下、単に「オブジェクト」という。)の表面に貼り付けるテクスチャ画像データ(以下、単に「テクスチャ」という。)を予め記憶する。外部メモリ106が、記憶部201として機能する。
【0056】
本実施形態のゲーム装置200にて扱われる仮想空間は3次元であり、この仮想空間の中には、立体的形状をもったオブジェクトが配置される。オブジェクトの表面は、互いに連結された複数のポリゴンで形成される。したがって、オブジェクトの表面は正確には多面体で表現されるのであるが、ポリゴン数を増やすことによって、より滑らかで曲面に近い外形を表現することが可能になる。
【0057】
CPU 101は、画像処理部108を制御して、このオブジェクトの表面を覆うように、予め用意されたテクスチャを貼り付ける。テクスチャには、貼り付けられるオブジェクトを特徴付ける絵が予め描かれている。例えば、人間の形をしたオブジェクトの表面に、洋服の柄の模様が描かれたテクスチャが貼り付けられると、洋服を着た人間の姿が表現される。
【0058】
例えば、立方体のオブジェクトの6つの面に“一の目”,“二の目”などが描かれたテクスチャが貼り付けられると、ユーザからはこの立方体が“サイコロ”に見える。一方、この同じ立方体のオブジェクトの表面に木目調の模様が描かれたテクスチャが貼り付けられると、ユーザからはこのオブジェクトが“木片”に見える。また、この同じ立方体のオブジェクトの表面に色がグレーもしくは黒のテクスチャが貼り付けられると、ユーザからはこのオブジェクトが“鉄の固まり”に見える。つまり、表面の形状が同じであったとしても、貼り付けられるテクスチャの違いによって、オブジェクトが表現しようとしている質感、重量感、あるいは物自体が異なってくる。
【0059】
また、オブジェクトは、複数の断片に分割されることがある。典型的には、オブジェクト同士が衝突すると、一方もしくは両方のオブジェクトが変形することもあれば、一方もしくは両方のオブジェクトが複数の破片に分かれることもある。例えば、一方のオブジェクトが“刀”であり、他方のオブジェクトが“竹”である場合、竹に刀の刃の部分が当たると、刀は分割されないが、竹は2つに分割される(切られる)。
【0060】
設定部202は、記憶部201に記憶されたテクスチャ内の複数の位置のそれぞれに重みを設定する。CPU 101が、設定部202として機能する。
【0061】
図3(a)は、テクスチャ300内において重みが設定される位置を示す図である。CPU 101は、テクスチャ300内の任意の位置に重みを設定することができる。位置は、テクスチャ300内に定義される座標系(図3(a)ではX−Y座標系)を用いた座標で表される。例えば、CPU 101は、N行・M列(N,Mは1以上の整数)の格子状に、等間隔に、重みを設定する対象となる点P(x,y)を選択する。
【0062】
また、CPU 101は、[数1]に示すように、要素数がN×M個の配列変数Gを定義し、それぞれの配列に、任意の数値で表される重みg(x,y)を設定する。ただし、1≦x≦N、1≦y≦M、である。
【0063】
G = {g(1,1),g(1,2),・・・,g(1,M),
g(2,1),g(2,2),・・・,g(2,M),
・・・
g(N,1),g(N,2),・・・,g(N,M)} ・・・[数1]
【0064】
それぞれの重みg(x,y)は、予め決められた値でもよいし、CPU 101が都度計算することによって得られる可変値であってもよい。
【0065】
そして、CPU 101は、テクスチャ300内で選択した点P(x,y)のそれぞれに、重みg(x,y)を対応付ける。
【0066】
図3(b)は、点P(x,y)と重みg(x,y)との対応関係を簡略化して示した図である。格子内の数字が、重みg(x,y)である。例えば図3(b)では、テクスチャ300の周縁部に重み「1」が設定され、X軸方向にテクスチャ300の真ん中にいくほど大きな重みが設定されている。
【0067】
重みg(x,y)が設定されたテクスチャ300が、オブジェクトの表面に貼り付けられる。ただし、重みg(x,y)は論理的に対応付けられているだけであり、重みg(x,y)はユーザーの目には見えない。また、どの点にいくつの重みが設定されるのかがユーザーへ明示的に提示されることはない。
【0068】
CPU 101は、テクスチャ300に描かれた内容に応じて、設定する重みの大きさを決定してもよい。具体的には、CPU 101は、重みを設定する点をテクスチャ300内から選択した後、選択された点に対応付けられている色を判別する。テクスチャ300は、R(レッド)・G(グリーン)・B(ブルー)の強度の組み合わせが設定された画素(ピクセル)の集合から構成されるデータであり、CPU 101は、RGBの値によって重みを決定する。例えば、R・G・Bがそれぞれ256段階で表される場合に、Rが255、GとBが0(ゼロ)のピクセル(以下、「(R,G,B)=(255,0,0)」のように表す)であれば、その点には所定の重さg1を設定する。同様に、CPU 101は、(R,G,B)=(0,255,0)であれば、その点には所定の重さg2を設定する。つまり、色によって重さが決められる。なお、設定される重さg1,g2や、RGBの各値は、任意である。また、色は、R・G・Bの代わりに、色相(H)・彩度(S)・明度(B)の組み合わせや、シアン(C)・M(マゼンダ)・Y(イエロー)・K(ブラック)の組み合わせなどによって決められてもよい。
【0069】
計算部203は、設定部202によって設定された重みg(x,y)に基づいて、オブジェクトの質量を計算する。CPU 101が、計算部203として機能する。
【0070】
より詳細には、CPU 101は、オブジェクトが分割されていない場合、設定された重みの総和に基づいて、オブジェクトの質量を計算する。重みの総和Σgは、[数2]によって表される。
【0071】
Σg = g(1,1)+g(1,2)+・・・+g(1,M)+
g(2,1)+g(2,2)+・・・+g(2,M)+
・・・
g(N,1)+g(N,2)+・・・+g(N,M) ・・・[数2]
【0072】
一方、オブジェクトが複数の断片に分割されている場合、CPU 101は、分割して生成された複数の断片のそれぞれについて、テクスチャ300のうち断片に貼り付けられる領域に含まれる重みの総和に基づいて、断片の質量を計算する。
【0073】
具体的な例を用いて説明する。図4(a)に、分割可能な、筒状のオブジェクト400を示す。オブジェクト400が分割されていない場合、CPU 101は、図4(b)に示すように、オブジェクト400の表面に、テクスチャ300を貼り付ける。例えば、テクスチャ300の一辺301とその対辺302とが重なるように、テクスチャ300がオブジェクト400の表面に巻き付けられる。
【0074】
テクスチャ300内の重みg(x,y)が設定されたすべての点P(x,y)は、オブジェクト400の表面に配置される。CPU 101は、テクスチャ300内に設定されたすべての重みの和Σgを、分割されていないオブジェクト400の質量とする。例えば、設定されたすべての重みが「1」であり、この重みが設定された点の数が「100」であれば、重みの総和「100」(=1×100)が、オブジェクト400の質量とされる。ただし、質量の単位系は任意である。
【0075】
なお、CPU 101は、求めた重みの総和をオブジェクト400もしくは断片の質量とする代わりに、求めた総和に所定の係数を乗じたり、求めた総和を1つのパラメーターとする任意の関数を用いたりすることにより、オブジェクト400もしくは断片の質量を求めてもよい。
【0076】
図5(a)に、切断面500で2つに切断されたオブジェクト400を示す。CPU 101は、図5(b)に示すように、オブジェクト400を、第1の断片510と第2の断片520に分割する。テクスチャ300の一辺301のうち、一部分551は第1の断片510に、残りの部分552は第2の断片520に、それぞれ対応付けられる。CPU 101は、切断面500から、切り込み線560を求める。CPU 101は、テクスチャ300を切り込み線560に沿って2つに分割する。CPU 101は、第1の断片510の表面にテクスチャ300のうちの一部分581を貼り付け、第2の断片520にテクスチャ300のうちの残りの部分582を貼り付ける。
【0077】
テクスチャ300内の重みg(x,y)が設定されたすべての点P(x,y)のうち、一部分が第1の断片510の表面に配置され、残りが第2の断片520の表面に配置される。CPU 101は、テクスチャ300内に設定された重みのうち、第1の断片510の表面に配置される点に対応する重みの総和を、第1の断片510の質量とする。同様に、CPU 101は、テクスチャ300内に設定された重みのうち、第2の断片520の表面に配置される点に対応する重みの総和を、第2の断片520の質量とする。第1の断片510の質量と第2の断片520の質量の合計は、オブジェクト400の質量に等しい。
【0078】
一般に、オブジェクトの質量を計算する際には、オブジェクトの密度が均一の場合、オブジェクトの体積に密度を掛ければ、オブジェクトの質量が得られる。オブジェクトの密度が不均一の場合、重さが対応付けられた複数のボクセルの集合をオブジェクトとし、ボクセルに対応付けられた重さの総和を求めると、オブジェクトの質量が得られる。ここで、もし、オブジェクトの形状や密度分布が複雑であったり、ボクセルの数が非常に多かったりすると、オブジェクトの体積が求めづらくなって質量を計算する処理が重くなり、ゲーム装置200が行う他の処理が遅延してしまう恐れが出てくる。特に、オブジェクトが複数の断片に分割され、分割後の断片のそれぞれの形状が複雑であったり、断片の数が多かったりすると、質量計算処理がより重くなってしまう。しかしながら、本実施形態では、オブジェクトもしくは断片の表面に貼り付けられるテクスチャ300内に設定された重みの総和をオブジェクトもしくは断片の質量として扱うため、体積を計算する必要がなく、計算量が少なくて済む。また、オブジェクト400の表面に貼り付けられるテクスチャ300には、オブジェクト400の材質、質感、特徴などが反映された絵が描かれるのが一般的であり、描かれた絵の内容が反映されるように設定された重みの総和を質量として扱えば、厳密な計算を行ったときの質量計算結果と遜色のない近似が得られるのである。
【0079】
なお、本実施形態では、オブジェクト400が2つの断片に分割されることを想定しているが、オブジェクト400が3つ以上に断片に分割された場合でも、本発明を適用することができる。図6(a)に、3つの断片に分割されたオブジェクト400を示す。オブジェクト400は、切断面601,602で、第1の断片610と第2の断片620と第3の断片630とに分割されている。テクスチャ300の一辺301のうち、一部分651は第1の断片610に、他の一部分652は第2の断片620に、残りの部分653は第3の断片630に、それぞれ対応付けられる。
【0080】
CPU 101は、第1の断片610の表面にテクスチャ300のうちの一部分681を貼り付け、第2の断片620にテクスチャ300のうちの他の一部分682を貼り付け、第3の断片630にテクスチャ300のうちの残りの部分683を貼り付ける。そして、CPU 101は、テクスチャ300内の重みが設定されたすべての点のうち、第1の断片610に貼り付けられる部分に含まれる点に対応する重みの総和を、第1の断片610の質量とする。同様に、CPU 101は、テクスチャ300内の重みが設定されたすべての点のうち第2の断片620に貼り付けられる部分に含まれる点に対応する重みの総和を第2の断片620の質量とし、テクスチャ300内の重みが設定されたすべての点のうち第3の断片630に貼り付けられる部分に含まれる点に対応する重みの総和を第3の断片630の質量とする。
【0081】
次に、本実施形態の上記各部が実行する質量計算処理について、図7のフローチャートを用いて説明する。オブジェクト400には、少なくとも1つのテクスチャ300が割り当てられている。モニターには、オブジェクト400の表面にテクスチャ300の全部又は一部が貼り付けられた画像が表示される。
【0082】
まず、CPU 101は、外部メモリ106等からテクスチャ300をRAM 103に読み出す(ステップS701)。
【0083】
CPU 101は、重みを設定する対象となる点を選択する(ステップS702)。
【0084】
CPU 101は、ステップS702で選択した点に、重みを設定する(ステップS703)。CPU 101は、選択された点に、予め決められた値を設定してもよいし、オブジェクト400の形状や位置、仮想空間内に定義される重力場などに応じて都度計算した値を設定してもよい。
【0085】
CPU 101は、オブジェクト400が分割されているか否かを判別する(ステップS704)。オブジェクト400は、例えば他のオブジェクトとの衝突により、2つ以上の断片に分割されることがある。
【0086】
オブジェクト400が分割されていないと判別された場合(ステップS704;NO)、CPU 101は、オブジェクト400の表面にテクスチャ300を貼り付ける(ステップS705)。オブジェクト400の表面にはテクスチャ300全体が貼り付けられるので、テクスチャ300内の重みが設定された点はすべてオブジェクト400の表面に配置されることになる。
【0087】
そして、CPU 101は、テクスチャ300内に設定された重みの総和を、オブジェクト400の質量とする(ステップS706)。
【0088】
一方、オブジェクト400が分割されていると判別された場合(ステップS704;YES)、CPU 101は、生成された断片の表面に、テクスチャ300の一部分を貼り付ける(ステップS707)。
【0089】
例えば、CPU 101は、図5(a)に示すように切断面500が決まると、図5(b)に示すようにテクスチャ300内の切り込み線560を求め、切り込み線560によって分割されたテクスチャ300の一部分581,582を、第1の断片510と第2の断片520の表面のそれぞれに貼り付ける。
【0090】
そして、CPU 101は、断片に貼り付けられたテクスチャ300の一部分に含まれる重みの総和を、その断片の質量とする(ステップS708)。
【0091】
重みが設定される点の位置は、オブジェクト400の切断面500の位置や形状と関係なく、オブジェクト400が切断される前に既に決まっている。オブジェクト400が複数の断片に分割されると、各断片には、重みが設定されたすべての点のうちの一部分が割り当てられる。各断片の質量は、重みが設定されたすべての点のうち、切断によって割り当てられた点に対応付けられた重みの、合計値である。したがって、CPU 101は、オブジェクト400や断片の体積を求めることなく、重みの総和を求めるだけで、オブジェクト400や断片の質量を得ることができる。本実施形態によれば、ゲーム装置200は、オブジェクトやその断片の形状が複雑であっても、厳密な質量計算をすることなく、簡単な計算を行うだけで、オブジェクトやその断片の質量を得ることができる。
【0092】
(実施形態2)
次に、本発明のその他の実施形態について説明する。本実施形態は、上記のように求められた質量の利用の一例である。ゲーム装置200は、求められた質量に基づいて分割後の断片がどのように動くかを決め、分割後の各断片を仮想空間内で動かす。
【0093】
図8は、本実施形態のゲーム装置200の機能的な構成を示す図である。ゲーム装置200は、移動部801と表示部802を更に備える。
【0094】
移動部801は、オブジェクト400が複数の断片に分割された後、計算部203によって計算された質量に基づいて、複数の断片のそれぞれの位置を移動させる。CPU 101と画像処理部108が協働して、移動部801として機能する。
【0095】
表示部802は、移動部801によって位置が移動した断片の様子を表す画像をモニターに表示する。CPU 101と画像処理部108が協働して、表示部802として機能する。
【0096】
一般に、物体(オブジェクト)の運動を記述する際には、古典力学の運動方程式が用いられることが多い。そして、運動方程式では、物体の加速度と共に、物体の質量が用いられる。しかし、物体もしくはその物体の断片の形状が複雑な場合には、物体や断片の質量の計算に時間がかかり、衝突後の物体もしくは断片の加速度を簡単に得られず、結果的に、衝突後の物体もしくは断片が動く様子を即座に表示できない恐れが出てくる。そこで、上記実施形態のように求められた物体もしくは断片の質量を用いることにより、物体の衝突過程や分裂過程の様子を簡単に表現できるようになる。
【0097】
例えば図9(a)に示すように、ある1つのオブジェクトが第1の断片910と第2の断片920に分割されたとする。古典力学によれば、第1の断片910に働く外力FAと、第1の断片910の加速度αと、第1の断片910の質量MAとの間には[数3]に示す運動方程式が成り立つ。また、第2の断片920に働く外力FBと、第2の断片920の加速度βと、第2の断片920の質量MBとの間には[数4]に示す運動方程式が成り立つ。
【0098】
FA = MA・α ・・・[数3]
FB = MB・β ・・・[数4]
【0099】
分割後の2つの断片が動く様子を得るには、加速度α,βを求める必要がある。まず、CPU 101は、テクスチャ300内において、重みを設定する点を選択する。そして、CPU 101は、選択した各点に重みを設定する。
【0100】
次に、CPU 101は、テクスチャ300の全領域のうち、第1の断片910の表面に貼り付けられる第1の部分950と、第2の断片920の表面に貼り付けられる第2の部分960と、を求める。
【0101】
さらに、CPU 101は、重みが設定されたすべての点のうち、第1の部分950内に含まれる第1種の点970の総数を求める。同様に、CPU 101は、重みが設定されたすべての点のうち、第2の部分960内に含まれる第2種の点980の総数を求める。図9(a)の場合、第1種の点970の総数は「36」であり、第2種の点980の総数は「24」である。
【0102】
そして、CPU 101は、求めた総数から、第1の断片910の質量MAと、第2の断片920の質量MBを求める。例えば、すべての重みの大きさが「1」である場合には、第1の断片910の質量MAは「36」であり、第2の断片920の質量MBは「24」となる。勿論、設定される重みの大きさは、点ごとに異なる値であってもよい。
【0103】
CPU 101は、外力FAと質量MA、及び[数1]から、第1の断片910の加速度αを得ることができ、外力FBと質量MB、及び[数2]から、第2の断片920の加速度βを得ることができる。従って、CPU 101は、得られた運動方程式から、分割後の各断片の動きを計算することができるようになる。このように、ゲーム装置200は、簡単な計算を行うだけで、各断片の動きを計算でき、更には計算結果を表す画像を素早く生成し表示できるようになる。
【0104】
(実施形態3)
次に、本発明のその他の実施形態について説明する。1つのオブジェクトに貼り付けられるテクスチャは1つだけでなく複数であってもよい。本実施形態では、6面体の各面にテクスチャを1つずつ貼り付けられ、合計6個のテクスチャが用いられる。
【0105】
図10は、いびつな6面体のオブジェクト1000と、6面のそれぞれに対応付けられるテクスチャ1010〜1060を示す図である。頂点P1,P2,P3,P4を有する面にはテクスチャ1010が、頂点P3,P4,P5,P6を有する面にはテクスチャ1020が、頂点P5,P6,P7,P8を有する面にはテクスチャ1030が、頂点P7,P8,P1,P2を有する面にはテクスチャ1040が、頂点P1,P4,P5,P8を有する面にはテクスチャ1050が、頂点P2,P3,P6,P7を有する面にはテクスチャ1060が、それぞれ対応付けられる。
【0106】
テクスチャ1010〜1060上には、所定の重みが設定された点(図10において黒丸の印で示す点)が配置される。重みが設定される点の分布は、テクスチャ1010〜1050のように規則性や対称性をもっていてもよいし、テクスチャ1060のようにランダムであってもよい。また、設定される重みの大きさは任意の値であってもよい。
【0107】
CPU101は、頂点P1,P2,P3,P4を有する面にテクスチャ1010を貼り付ける。同様にして、CPU 101は、オブジェクト1000の各面に、対応するテクスチャ1010〜1060のいずれかを貼り付ける。そして、CPU 101は、各面にテクスチャ1010〜1060が貼り付けられたオブジェクト1000を表す画像をモニターに表示する。
【0108】
オブジェクト1000が分割されていない場合、テクスチャ1010〜1060内に設定された重みの総和が、オブジェクト1000の質量となる。例えば図10の場合、CPU 101は、各面上に配置される重みの総和「192」(=56+30+27+27+42+10)を、オブジェクト1000の質量とする。
【0109】
オブジェクト1000が複数の断片に分割されると、分割後の断片の表面に配置されている重みの総和が、その断片の質量となる。図11に、オブジェクト1000が切断面1100によって2つの断片1150,1160に分割された様子を示す。
【0110】
第1の断片1150については、CPU 101は、頂点P1,P2,P3,P4を有する面にテクスチャ1010の全部を貼り付ける。また、CPU 101は、頂点P3,P4,Q2,Q1を有する面に、テクスチャ1020のうちの一部分(左半分)を貼り付ける。同様にして、CPU 101は、オブジェクト1000の各面に、対応するテクスチャ1010〜1060のいずれかの一部分を貼り付ける。そして、CPU 101は、各面にテクスチャ1010〜1060の一部または全部が貼り付けられたオブジェクト1000を表す画像をモニターに表示する。なお、第1の断片1150には頂点P5,P6,P7,P8を有する面が含まれないため、第1の断片1150については、テクスチャ1030は使用されない。
【0111】
そして、CPU 101は、各面上に配置される重みの総和「118」(=56+18+0+15+24+5)を、第1の断片1150の質量とする。
【0112】
第2の断片1160については、CPU 101は、頂点Q2,Q1,P6,P5を有する面にはテクスチャ1020の一部分(右半分)を貼り付ける。また、CPU 101は、頂点P5,P6,P7,P8を有する面にはテクスチャ1030の全部を貼り付ける。同様にして、CPU 101は、オブジェクト1000の各面に、対応するテクスチャ1010〜1060のいずれかの一部分を貼り付ける。そして、CPU 101は、各面にテクスチャ1010〜1060の一部または全部が貼り付けられたオブジェクト1000を表す画像をモニターに表示する。なお、第2の断片1160には頂点P1,P2,P3,P4を有する面が含まれないため、第2の断片1160については、テクスチャ1010は使用されない。
【0113】
そして、CPU 101は、各面上に配置される重みの総和「74」(=0+12+27+12+18+5)を、第2の断片1150の質量とする。
【0114】
このように、いびつな形状を持ち、その正確な体積を計算することが容易でないオブジェクトあるいはその断片であっても、簡単に質量を見積もることができる。見積もられた質量は正確な値ではないものの、比較的良い近似値であり、且つ、その計算プロセスはとても簡単である。従って、特に迅速かつ大量の演算処理が要求されるゲームにおいて、本発明によって得られる、処理負担の軽減の効果は、大きい。
【0115】
なお、オブジェクト1000の形状は、6面体に限られず、任意の多面体であってもよいし、曲面体であってもよい。また、平面と曲面を組み合わせた立体でもよい。
【0116】
また、オブジェクト1000の各面は、平面でもよいし、曲面でもよい。
【0117】
(実施形態4)
次に、本発明のその他の実施形態について説明する。本実施形態では、オブジェクトの各面は、複数の多角形(ポリゴン)で構成される。ポリゴンで構成される表面は、複数の領域に分けられ、領域ごとに異なるテクスチャが貼り付けられる。テクスチャ内には重みが設定される。また、本実施形態では、分割によって新たに生じた面にも重みが設定される。以下詳述する。
【0118】
図12は、本実施形態における質量計算処理を説明するためのフローチャートである。
【0119】
まず、CPU 101は、外部メモリ106等からオブジェクトの表面に貼り付けるテクスチャをRAM 103に読み出す(ステップS1201)。
【0120】
例えば、図13(a)に球形のオブジェクト1300を、図12(b)にオブジェクト1300の表面に貼り付けられる4枚のテクスチャ1311〜1314を、それぞれ示す。オブジェクト1300の表面全体はポリゴンで覆われており、4つの領域1301〜1304に分けられている。領域1301にはテクスチャ1311が、領域1302にはテクスチャ1312が、領域1303にはテクスチャ1313が、領域1304にはテクスチャ1314が、それぞれ貼り付けられる。
【0121】
CPU 101は、重みを設定する対象となるテクスチャ内の点を選択する(ステップS1202)。例えば図13(b)において、CPU 101は、テクスチャ1311〜1314のそれぞれについて、重みを設定する複数の点を選択する。
【0122】
CPU 101は、ステップS1202で設定した点に、重みを設定する(ステップS1203)。
【0123】
CPU 101は、オブジェクト1300が分割されているか否かを判別する(ステップS1204)。
【0124】
オブジェクト1300が分割されていないと判別された場合(ステップS1204;NO)、CPU 101は、オブジェクト1300の表面にテクスチャを貼り付ける(ステップS1205)。例えば図13(a),(b)に示すように、CPU 101は、領域1301にテクスチャ1311を、領域1302にテクスチャ1312を、領域1303にテクスチャ1313を、領域1304にテクスチャ1314を、それぞれ貼り付ける。
【0125】
そして、CPU 101は、テクスチャ全体に設定された重みの総和をオブジェクト1300の質量とする(ステップS1206)。すなわち、ステップS1203でテクスチャ1311〜1314内に設定された重みの総和が、分割されていないオブジェクト1300の質量となる。
【0126】
一方、オブジェクト1300が分割されていると判別された場合(ステップS1204;YES)、CPU 101は、各領域1301〜1304に、テクスチャ1311〜1314のうちいずれか対応するものの一部分を貼り付ける(ステップS1207)。
【0127】
図13(c)に、オブジェクト1300が切断面1350によって2つの断片1360,1370に分割された様子を示す。第1の断片1360の表面のうち、領域1321にはテクスチャ1311の部分領域1331が、領域1322にはテクスチャ1312の部分領域1332が、領域1323にはテクスチャ1313の部分領域1333が、領域1324にはテクスチャ1314の部分領域1334が、それぞれ貼り付けられる。同様に、第2の断片1370の表面に、テクスチャ1311〜1314の残りの部分が貼り付けられる。
【0128】
CPU 101は、第1の断片1360の切断によって生成された切断面1350に、所定のテクスチャ1315を貼り付ける(ステップS1208)。同様に、CPU 101は、第2の断片1370の切断によって生成された切断面1350に、所定のテクスチャ1315を貼り付ける。切断面1350に貼り付けられるテクスチャ1315は、予め外部メモリ106等に格納されている。
【0129】
さらに、CPU 101は、各テクスチャに設定される重みを再配分する。CPU 101は、切断面1350に貼り付けるテクスチャ内にも重みを設定する。仮に、切断面1350に貼り付けるテクスチャ内に単純に任意に重みが設定されると、オブジェクト1300の分割前後で、全体の質量が増加してしまうことになる。そこで、CPU 101は、分割前後で質量の合計が大きく変動しないように調整しつつ、新たに出来た切断面1350に貼り付けるテクスチャ内に重みを設定する。
【0130】
具体的には、CPU 101は、第1の断片1360の領域1321〜1324に貼り付けられるテクスチャ1311〜1314の部分領域1331〜1334のそれぞれに含まれる重みの総和の比を計算する(ステップS1209)。
【0131】
そして、CPU 101は、計算された比に応じて、各部分領域に含まれていた重みを、各部分領域と切断面1350とに配分する(ステップS1210)。
【0132】
例えば、部分領域1331,1332,1333,1334に含まれる重みの総和が、それぞれ、「10」「20」「20」「10」であったとすると、各部分領域の重みの総和の比は「1:2:2:1」である。CPU 101は、この比に応じた量だけ、各部分領域から切断面1350へ重みを振り分ける。すなわち、切断面1350には総和が「6」の重みが設定され、一方、部分領域1331内の重みの総和は「10」から「9」へ、部分領域1332内の重みの総和は「20」から「18」へ、部分領域1333内の重みの総和は「20」から「18」へ、部分領域1334内の重みの総和は「10」から「9」へ、それぞれ減少する。
【0133】
なお、計算した比に応じた量の重みを振り分けるので、CPU 101は、切断面1350に総和が「12」(6の2倍)の重みを設定する一方、部分領域1331内の重みの総和を「10」から「8」へ、部分領域1332内の重みの総和を「20」から「16」へ、部分領域1333内の重みの総和を「20」から「16」へ、部分領域1334内の重みの総和を「10」から「8」へ、それぞれ減少させてもよい。いずれにしても、分割前後で重みの総量は不変である。このように、分割前後で総量が変わらないように重みを振り分ければ、分割によって全体の質量が大きくなるといった不自然な減少を回避することができる。
【0134】
そして、CPU 101は、ステップS1210で配分された重みの総和を、断片の質量とする(ステップS1211)。
【0135】
ステップS1210では、総和が変化しないように重みが配分されるので、結果的にオブジェクト1300の断片の質量は上記実施形態1のときと変わらない。しかし、本実施形態では、重みの配分を変えているので、分割によって生成された断片がさらに分割された場合には、“断片の断片”の質量は再配分された重みを用いて決定されることになり、2回目以降の分割時における断片の質量をより現実に近い値にすることができるのである。
【0136】
CPU 101は、重みを設定する点の総数を所定値に固定すると共に、重みを設定する点の位置を所定の規則性に基づいて決定してもよいしランダムに決定してもよい。ランダムに決定する場合、仮に切断面の位置と形状が同じであっても、分割するたびに、断片の質量が変わる可能性がある。従って、分割後の断片の挙動が都度異なることになる。例えば仮想空間内のゲームにおいて、プレイヤーが刀で竹を切ると、切るたびに破片の飛び散り方が異なるようになり、ゲームの多様性が生まれ、プレイヤーを飽きさせない工夫を施すことができる。
【0137】
本発明は、上述した実施形態に限定されず、種々の変形及び応用が可能である。また、上述した実施形態の各構成要素を自由に組み合わせることも可能である。
【0138】
上記各実施形態では、CPU 101が重みを設定する点を選択することとしたが、重みが設定される点が予め決められていてもよい。例えば、図14(a)に示すようにテクスチャ1400内には、重みが設定される点の位置PA,PB,PC,PD等が予め決められており、図14(b)に示すように各点に設定される重みGA,GB,GC,GDが予め決められている。重みが設定される点の位置と、設定される重みと、を対応付けるデータは、外部メモリ106等に予め格納されている。そして、CPU 101は、上述のステップS702とS703の処理の代わりに、重みが設定される点の位置と設定される重みとを外部メモリ106等から読み出して、テクスチャ1400内に重みを設定する、という処理を行えばよい。図14(b)に示すような位置と重みとの対応付けは、例えば、テクスチャ1400を作成したデザイナーが、描いた絵の内容に合わせて、予め作成しておけばよい。重みが設定される点の位置、及び、設定される重みは、いずれも本発明によって限定されず任意である。
【0139】
CPU 101は、テクスチャ内の複数の位置に重みを設定し重みの総和に基づいてオブジェクトもしくは断片の質量を計算する代わりに、貼り付けられるテクスチャの面積に基づいてオブジェクトもしくは断片の質量を計算してもよい。例えば図5(b)において、CPU 101は、第1の断片510に貼り付けられるテクスチャの一部分581の面積もしくはこの面積を所定倍した値を第1の断片510の質量とし、第2の断片520に貼り付けられるテクスチャの一部分582の面積もしくはこの面積を所定倍した値を第2の断片520の質量としてもよい。ゲーム装置200は、貼り付けられるテクスチャの部分の面積を求めるだけで、オブジェクトもしくは断片の体積の近似値を得ることができる。
【0140】
上記のゲーム装置200の全部又は一部としてコンピュータを動作させるためのプログラムを、メモリカード、CD−ROM、DVD、MO(Magneto Optical disk)などのコンピュータ読み取り可能な記録媒体に格納して配布し、これを別のコンピュータにインストールし、上述の手段として動作させ、あるいは、上述の工程を実行させてもよい。
【0141】
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等するものとしてもよい。
【0142】
以上説明したように、本発明によれば、分割可能なオブジェクトもしくはそのオブジェクトの断片の形状が複雑であってもより簡単に質量を求めることができるゲーム装置、ゲーム装置の制御方法、ならびに、プログラムを提供することができる。
【符号の説明】
【0143】
100 情報処理装置
101 CPU
102 ROM
103 RAM
104 インターフェイス
105 コントローラ
106 外部メモリ
107 DVD−ROMドライブ
108 画像処理部
109 音声処理部
110 NIC
200 ゲーム装置
201 記憶部
202 設定部
203 計算部
300 テクスチャ
301,302 辺
400 オブジェクト
500,601,602 切断面
510,610,910 第1の断片
520,620,920 第2の断片
581,582 テクスチャの一部分
630 第3の断片
681,682,683 テクスチャの一部分
801 移動部
802 表示部
1000,1300 オブジェクト
1010〜1060,1311〜1315,1400 テクスチャ
1100,1350 切断面
1150,1360 第1の断片
1160,1370 第2の断片

【特許請求の範囲】
【請求項1】
仮想空間内に配置される分割可能なオブジェクトの表面に貼り付けられるテクスチャが予め記憶される記憶部と、
前記記憶されたテクスチャ内の複数の位置のそれぞれに重みを設定する設定部と、
前記オブジェクトが
(a)分割されていない場合、前記設定された重みの総和に基づいて、前記オブジェクトの質量を計算し、
(b)複数の断片に分割されている場合、前記複数の断片のそれぞれについて、前記テクスチャのうち前記断片に貼り付けられる領域に含まれる前記重みの総和に基づいて、前記断片の質量を計算する、
計算部と、
を備えることを特徴とするゲーム装置。
【請求項2】
請求項1に記載のゲーム装置であって、
前記オブジェクトが複数の断片に分割された後、前記計算された質量に基づいて、前記複数の断片のそれぞれの位置を移動させる移動部と、
前記移動した複数の断片のそれぞれを表す画像を表示する表示部と、
を更に備えることを特徴とするゲーム装置。
【請求項3】
請求項1又は2に記載のゲーム装置であって、
前記オブジェクトの表面は、複数の領域に分かれており、
前記記憶部には、前記複数の領域のそれぞれに貼り付けられるテクスチャが記憶され、
前記設定部は、前記複数のテクスチャのそれぞれに重みを設定する、
ことを特徴とするゲーム装置。
【請求項4】
請求項1乃至3のいずれか1項に記載のゲーム装置であって、
前記設定部は、前記テクスチャ内の前記重みが設定される位置の総数を一定とし、且つ、前記重みが設定される位置をランダムに決定する、
ことを特徴とするゲーム装置。
【請求項5】
請求項3に記載のゲーム装置であって、
前記設定部は、前記オブジェクトが分割された場合、前記複数のテクスチャのそれぞれに設定された重みの比を求め、当該求められた比に応じて、前記複数のテクスチャのそれぞれから、当該分割により新たに生成された面に貼り付けられるテクスチャに、前記設定された重みを配分する、
ことを特徴とするゲーム装置。
【請求項6】
請求項5に記載のゲーム装置であって、
前記設定部は、前記テクスチャのそれぞれと当該分割により新たに生成された面に貼り付けられるテクスチャとに当該分割後に設定される重みの総和を、前記テクスチャのそれぞれに当該分割前に設定された重みの総和と等しくする、
ことを特徴とするゲーム装置。
【請求項7】
請求項1乃至6のいずれか1項に記載のゲーム装置であって、
前記設定部は、前記記憶されたテクスチャ内の複数の位置のそれぞれについて、当該位置に対応付けられた色に応じて、当該位置に設定される重みを決定する、
ことを特徴とするゲーム装置。
【請求項8】
請求項1乃至3のいずれか1項に記載のゲーム装置であって、
前記記憶部には、前記テクスチャ内の重みを設定する位置と対応付けて、当該位置に設定される重みが予め記憶され、
前記設定部は、前記記憶された位置に、前記記憶された重みを設定する、
ことを特徴とするゲーム装置。
【請求項9】
仮想空間内に配置される分割可能なオブジェクトの表面に貼り付けられるテクスチャが予め記憶される記憶部と、
前記オブジェクトが
(x)分割されていない場合、前記テクスチャの面積に基づいて、前記オブジェクトの質量を計算し、
(y)複数の断片に分割されている場合、前記複数の断片のそれぞれについて、前記テクスチャのうち前記断片に貼り付けられる領域の面積に基づいて、前記断片の質量を計算する、
計算部と、
を備えることを特徴とするゲーム装置。
【請求項10】
記憶部と設定部と計算部を有するゲーム装置にて実行される制御方法であって、
前記記憶部には、仮想空間内に配置される分割可能なオブジェクトの表面に貼り付けられるテクスチャが予め記憶され、
前記設定部が、前記記憶されたテクスチャ内の複数の位置のそれぞれに重みを設定する設定ステップと、
前記オブジェクトが
(a)分割されていない場合、前記計算部が、前記設定された重みの総和に基づいて、前記オブジェクトの質量を計算し、
(b)複数の断片に分割されている場合、前記計算部が、前記複数の断片のそれぞれについて、前記テクスチャのうち前記断片に貼り付けられる領域に含まれる前記重みの総和に基づいて、前記断片の質量を計算する、
計算ステップと、
を備えることを特徴とするゲーム装置の制御方法。
【請求項11】
コンピュータを、
仮想空間内に配置される分割可能なオブジェクトの表面に貼り付けられるテクスチャが予め記憶される記憶部、
前記記憶されたテクスチャ内の複数の位置のそれぞれに重みを設定する設定部、
前記オブジェクトが
(a)分割されていない場合、前記設定された重みの総和に基づいて、前記オブジェクトの質量を計算し、
(b)複数の断片に分割されている場合、前記複数の断片のそれぞれについて、前記テクスチャのうち前記断片に貼り付けられる領域に含まれる前記重みの総和に基づいて、前記断片の質量を計算する、
計算部、
として機能させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2012−183100(P2012−183100A)
【公開日】平成24年9月27日(2012.9.27)
【国際特許分類】
【出願番号】特願2011−46546(P2011−46546)
【出願日】平成23年3月3日(2011.3.3)
【出願人】(506113602)株式会社コナミデジタルエンタテインメント (1,441)
【Fターム(参考)】