JP4719579B2 - 画像処理プログラムおよび画像処理装置 - Google Patents

画像処理プログラムおよび画像処理装置 Download PDF

Info

Publication number
JP4719579B2
JP4719579B2 JP2006017715A JP2006017715A JP4719579B2 JP 4719579 B2 JP4719579 B2 JP 4719579B2 JP 2006017715 A JP2006017715 A JP 2006017715A JP 2006017715 A JP2006017715 A JP 2006017715A JP 4719579 B2 JP4719579 B2 JP 4719579B2
Authority
JP
Japan
Prior art keywords
contact
contact determination
game
area
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2006017715A
Other languages
English (en)
Other versions
JP2007200011A (ja
Inventor
茂 宮本
健太 臼井
和明 森田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nintendo Co Ltd
Original Assignee
Nintendo Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nintendo Co Ltd filed Critical Nintendo Co Ltd
Priority to JP2006017715A priority Critical patent/JP4719579B2/ja
Priority to US11/482,751 priority patent/US7679623B2/en
Publication of JP2007200011A publication Critical patent/JP2007200011A/ja
Application granted granted Critical
Publication of JP4719579B2 publication Critical patent/JP4719579B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • G06T13/603D [Three Dimensional] animation of natural phenomena, e.g. rain, snow, water or plants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/21Collision detection, intersection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/20Indexing scheme for editing of 3D models
    • G06T2219/2016Rotation, translation, scaling

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Architecture (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Processing Or Creating Images (AREA)

Description

本発明は、画像処理プログラムおよび画像処理装置に関し、より特定的には、仮想の3次元空間内に登場するオブジェクトについて接触判定を行うための画像処理プログラムおよび画像処理装置に関する。
従来、仮想の3次元空間内に複数のオブジェクト(プレイヤキャラクタ等)が登場するゲームにおいてオブジェクト同士の接触判定(衝突判定、当たり判定とも言う。)を行う技術として、特許文献1に記載の技術がある。この技術は、接触判定を行うためにオブジェクトに設定される領域(接触判定領域)として複数の球形領域を用いるものである。すなわち、特許文献1に記載の画像処理装置は、各オブジェクトにそれぞれ複数の球形領域を設定し、各球形の中心座標と半径とを用いて、オブジェクト同士に設定される球形領域同士のめり込み値を算出する。そして、めり込み値が所定の値より大きい場合にオブジェクト同士が接触したと判定する。このように、オブジェクトを複数の球体として近似することによって接触判定を行うことが可能であり、これによって、オブジェクトを四角柱として近似する場合に比べて、接触判定に要するメモリ量が減少させることができ、処理速度の高速化および接触判定の正確化を図ることができる。
特開平7−230559号公報
上述した従来の技術では、オブジェクトに設定される接触判定領域の大きさは一定である。そのため、従来の技術では、オブジェクト同士が接触した際に行われる動作の結果が、自然に(リアルに)表現できない場合があった。図17は、従来の技術を用いて表示される仮想空間の画像の一例を示す図である。図17では、たくさんの落ち葉111が落ちている地面上を竜巻が移動する様子を表現する場合を例として説明する。この例では、落ち葉111および竜巻に接触判定領域が設定され、落ち葉111と竜巻との接触判定が行われる。そして、接触すれば、落ち葉111が竜巻によって巻き上げられるように動作させる。ここで、竜巻の接触判定領域の大きさが一定である場合、竜巻の接触判定領域の幅と同じ一定の幅で落ち葉111が巻き上げられるので、竜巻の通過後においては、一定の幅の帯状領域A2(図18参照)上の落ち葉111が吹き飛んでなくなっている。しかし、一定の幅の領域のみについて落ち葉111が吹き飛び、その領域外については落ち葉111が全く吹き飛んでいないという状態は、現実には起こりえず不自然である。このように、従来においては、オブジェクト同士の接触によって起こる動作結果が自然に表現することができないことがあった。
それ故、本発明の目的は、オブジェクト同士の接触によって行われる動作結果がより自然になるようにオブジェクトを動作させることができる画像処理プログラムおよび画像処理装置を提供することである。
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
第1の発明は、接触判定領域を設定された複数のオブジェクト(竜巻オブジェクト72および落ち葉オブジェクト73等)が配置される仮想の3次元空間を表示装置(テレビ2)に表示させる画像処理装置(ゲーム装置3)のコンピュータ(CPU31)において実行される画像処理プログラム(ゲームプログラム80)である。画像処理プログラムは、変化ステップ(ステップS5)と、接触判定ステップ(ステップS6)と、表示制御ステップ(ステップS9)とをコンピュータに実行させる。変化ステップにおいて、コンピュータは、所定のオブジェクト(竜巻オブジェクト72)が移動している間、当該所定のオブジェクトに設定される接触判定領域(75)の大きさを、増減を繰り返すように時間に応じて変化させる。接触判定ステップにおいて、所定のオブジェクトと他のオブジェクト(落ち葉オブジェクト73)とが接触しているか否かをそれぞれの接触判定領域(75および76)を用いて判定する。表示制御ステップにおいて、所定のオブジェクトに接触していると判定されるオブジェクトに対して所定の影響(吹き飛ばされる等)を与えた様子を表示装置に表示させる。
第2の発明においては、前記所定のオブジェクトには、接触判定領域とは異なる予備領域(77)が設定されてもよい。このとき、画像処理プログラムは、予備判定ステップ(ステップS3およびS4)をさらにコンピュータに実行させる。コンピュータは、予備判定ステップにおいて、他のオブジェクトに設定される接触判定領域と予備領域とが接触しているか否かを判定する。このとき、変化ステップおよび接触判定ステップは、前記予備判定ステップにて他のオブジェクトに設定される接触判定領域と予備領域とが接触していると判定されたときにのみ実行される。
第3の発明においては、変化ステップにおいて、コンピュータは、所定時間間隔(例えば1フレーム時間間隔)で接触判定領域の大きさを変化させるようにしてもよい。
第4の発明においては、変化ステップにおいて、コンピュータは、接触判定領域の大きさを所定の範囲内でランダムに変化させるようにしてもよい。
第5の発明においては、表示制御ステップにおいて、コンピュータは、所定のオブジェクトに接触していると判定されるオブジェクトが所定のオブジェクトに接触しない位置に移動する動作を表示するか、または、当該オブジェクトの表示態様を変化させて表示するようにしてもよい。
また、本発明は、上記画像処理プログラムを実行することによって実現される機能と同等の機能を有する画像処理装置の形態で提供されてもよい。
第1の発明によれば、所定のオブジェクトが移動している間は、変化ステップにおいて接触判定領域の大きさが変化する。このとき、所定のオブジェクトが滑らかに移動しても、当該所定のオブジェクトに他のオブジェクトが接触したと判定される範囲の外縁は、所定のオブジェクトの移動軌跡に沿った滑らかな形状とはならず、凹凸を有する形状となる。これによって、当該範囲が不自然に整った外縁とならないので、接触によって行われる動作結果をより自然に表現することができる。
第2の発明によれば、所定のオブジェクトに予備領域を設定し、予備領域が他のオブジェクトの接触判定領域に接触している場合のみ、所定のオブジェクトの接触判定領域の大きさを決定して接触判定処理を行う。したがって、接触判定領域の大きさを決定する処理が不要な場合(例えば、所定のオブジェクトの周囲に他のオブジェクトが存在しない場合)には当該処理を省略することができるので、コンピュータの処理負担を軽減することができる。
第3の発明によれば、所定時間間隔で接触判定領域の大きさを変化させることによって、第2の発明のように予備領域を設定する必要がないので、画像処理装置で用意する記憶容量を低減することができる。
第4の発明によれば、接触判定領域の大きさをランダムに変化させることによって、規則性を持たせて変化させる場合よりも、接触によって行われる動作結果をより自然に表現することができる。
第5の発明によれば、所定のオブジェクトに接触していると判定される他のオブジェクトを移動させたり(例えば、後述する実施形態のように吹き飛ばされたかのように移動させる)、当該他のオブジェクトの表示態様を変化させたり(例えば、後述する変形例のように形状を変化させる)する。これによって、所定のオブジェクトに接触する範囲と接触しない範囲とのゲーム空間における状態の違いを、ユーザにわかりやすく見せることができる。
以下、本発明の一実施形態に係る画像処理装置の一例であるゲーム装置および当該ゲーム装置を含むゲームシステムについて説明する。図1は、当該ゲームシステム1の外観図である。なお、本実施形態では、本発明に係る画像処理装置の一例として据置型ゲーム装置を例に挙げて説明するが、画像処理装置はこれに限定されるものではない。例えば携帯型ゲーム装置、アーケードゲーム装置、携帯端末、携帯電話またはパーソナルコンピュータなどのように、ゲームプログラム(画像処理プログラム)を実行するコンピュータを搭載する機器に適用することができる。
図1において、ゲームシステム1は、据置型ゲーム装置(以下、単にゲーム装置と記載する)3と、当該ゲーム装置3に接続コードを介して接続される表示装置の一例であるテレビジョン受像機(以下、単にテレビと記載する)2とを含む。ゲーム装置3には、プレイヤによって操作可能な複数の操作スイッチを有するコントローラ6が接続される。また、ゲーム装置3には、本実施形態に係るゲームプログラムを記憶した情報記憶媒体の一例である光ディスク4が着脱自在に装着される。さらに、ゲーム装置3には、ゲームのセーブデータ等を記憶するフラッシュメモリ等を搭載するカートリッジ5が必要に応じて着脱自在に装着される。ゲーム装置3は、光ディスク4に記憶されたゲームプログラムを実行することによって得られるゲーム画像をテレビ2に表示する。さらに、ゲーム装置3は、カートリッジ5に記憶されたセーブデータを用いて、過去に実行されたゲームの続きを実行したり、過去に実行されたゲーム状態を再現して、ゲーム画像をテレビ2に表示することもできる。そして、ゲーム装置3のプレイヤは、テレビ2に表示されたゲーム画像を見ながらコントローラ6を操作することによってゲームを楽しむことができる。
コントローラ6は、上述したように接続コードを介してゲーム装置3に着脱自在に接続される。コントローラ6は、テレビ2に表示されるゲーム空間に登場するプレイヤオブジェクト(プレイヤの操作対象であるオブジェクト(キャラクタ))を主に操作するための操作手段であり、複数の操作スイッチとして、操作ボタン、キー、およびスティック等の入力部を備えている。具体的には、コントローラ6には、プレイヤによって把持されるグリップ部が形成される。また、コントローラ6は、プレイヤの左手の親指等によって操作可能なメインスティック61および十字キー62と、右手の親指等によって操作可能なCスティック67およびAボタン63等を含む。なお、コントローラ6は、上記ボタンの他、Bボタン64、Xボタン65、Yボタン66、およびスタート−ポーズボタンや、プレイヤの右手の人差し指等によって操作可能なRボタンおよびZボタン、プレイヤの左手の人差し指等によって操作可能なLボタンを含む。また、ゲームシステム1は、ゲーム装置3に複数のコントローラ6を接続することによって、複数のプレイヤが同時にゲームをプレイすることができる。
次に、図2を参照して、本発明に係るゲーム装置3の構成について説明する。図2は、ゲームシステム1の機能ブロック図である。図2において、ゲーム装置3は、各種プログラムを実行するCPU(セントラルプロセッシングユニット)31を備える。CPU31は、図示しないブートROMに記憶された起動プログラムを実行し、ワークメモリ32等のメモリの初期化等を行った後、光ディスク4に記憶されているゲームプログラムをワークメモリ32に一旦読み込んだ後に当該ゲームプログラムを実行し、そのゲームプログラムに応じたゲーム処理を行うものである。なお、他の実施形態においては、ゲームプログラムはネットワークを介して通信によってゲーム装置3の外部から取得される形態であっても構わない。CPU31には、ワークメモリ32、ビデオRAM(VRAM)33、外部メモリインターフェース(I/F)34、コントローラインターフェース(I/F)35、GPU(Graphics ProceSing Unit)36、および光ディスクドライブ37がバスを介して接続される。
ワークメモリ32は、CPU31で使用される記憶領域であって、CPU31の処理に必要なゲームプログラム等を適宜記憶する。例えば、ワークメモリ32は、CPU31によって光ディスク4から読み出されたゲームプログラムや各種データ等を記憶する。このワークメモリ32に記憶されたゲームプログラムや各種データ等がCPU31によって実行される。VRAM33は、テレビ2にゲーム画像を表示するためのゲーム画像データを格納する。外部メモリI/F34は、図示しないコネクタにカートリッジ5を嵌合させることによってゲーム装置3とカートリッジ5とを通信可能に接続する。CPU31は、カートリッジ5に設けられたバックアップメモリに外部メモリI/F34を介してアクセスする。コントローラI/F35は、図示しないコネクタによって外部機器とゲーム装置3とを通信可能に接続する。例えば、コントローラ6は、接続コードを介して当該コネクタと嵌合し、コントローラI/F35を介してゲーム装置3と接続される。コントローラ6は、プレイヤによるメインスティック61およびCスティック67の操作や各操作ボタン62〜66等の押圧操作に応じて、操作内容を示す操作データをゲーム装置3に出力する。GPU36は、例えば、3Dグラフィックスの表示に必要なベクトル演算やレンダリング処理等の処理をCPU31からの指示に応じて行う半導体チップで構成され、当該GPU36によってレンダリングされたゲーム画像はテレビ2に表示される。光ディスクドライブ37は、CPU31からの指示に応じて、光ディスク4に記憶されたゲームプログラム、画像データ、サウンドデータなどの各種のデータを読み出す。
以下、光ディスク4に格納されたゲームプログラムによってゲーム装置3において実行されるゲーム処理について説明する。まず、本実施形態におけるゲームの概要を説明する。本ゲームは、3次元の仮想のゲーム空間において複数のオブジェクトが登場するアクションゲームである。このゲームでは、プレイヤによって操作されるプレイヤオブジェクトや、ゲーム装置3によって動作が制御される敵オブジェクト等が登場する。さらに、このゲームでは、ゲーム空間には、地面に複数の落ち葉オブジェクト(単に落ち葉と記載することもある。)が配置されたり、例えばプレイヤオブジェクトによって発生される竜巻オブジェクト(単に竜巻と記載することもある。)が登場したりする。ゲーム装置3は、ゲーム処理中において、これらのオブジェクト同士が接触したか否かの判定(接触判定)を行う。以下では、落ち葉と竜巻との接触判定を例として説明する。
図3は、ゲーム装置3によってテレビ2に表示されるゲーム画面の一例を示す図である。図3に示すゲーム画面は、プレイヤオブジェクト(図示せず)が魔法のブーメラン71を用いて竜巻72を発生させた様子を表している。竜巻72は、地面74に沿って(ここでは、ブーメラン71と一緒に)移動する。このとき、竜巻72が通過する地面上の落ち葉73は、竜巻72によって巻き上げられて吹き飛ばされる。その結果、竜巻72の通過した場所については落ち葉73が吹き飛ばされ、竜巻72の通過した跡が残る。なお、図3は、画面の手前から奥に向かって竜巻72が移動している場合のゲーム画面である。
竜巻72と落ち葉73との接触判定は、それぞれのオブジェクトに設定される接触判定領域を用いて行われる。つまり、ゲーム装置3は、接触判定領域同士が接触した場合、接触した接触判定領域に対応するオブジェクト同士が接触したと判定する。そして、例えば竜巻72と落ち葉73とが接触したと判定される場合、ゲーム装置3は、竜巻72によって巻き上げられるように落ち葉73を移動させる。なお、本実施形態では、ゲーム空間に登場する各オブジェクトには、円柱形の接触判定領域がそれぞれ設定される。この円柱形の接触判定領域は、その中心軸が地面に垂直となるような向きにそれぞれ配置される。なお、接触判定領域の形状はどのような形状であってもよく、例えば球形であってもよいし四角柱であってもよい。
次に、竜巻72が落ち葉73を吹き飛ばす様子の詳細を図4および図5を用いて説明する。図4は、図3に示す地面を真上から見たときの図である。図4に示す矢印は、竜巻72(および接触判定領域)の中心が通過する軌跡を示している。つまり、竜巻72は、図4に示す矢印に沿って移動する。また、図4に示す領域A1は、竜巻72が通過した際に落ち葉73が吹き飛ばされる領域である。図4に示すように、本実施形態では、領域A1の幅は一定ではない。すなわち、ゲーム装置3は、竜巻72の移動中に竜巻72の接触判定領域の大きさ(具体的には円柱の半径)を変化させることによって、領域A1の幅が変化するようにしている。このとき、領域A1上の落ち葉73が竜巻72によって吹き飛ばされる。図5は、竜巻72が通った後の地面74の様子を示す図である。図5に示すように、本実施形態では、落ち葉73が吹き飛ばされた領域A1については、幅が大きい場所や小さい場所があって幅はばらばらである。そのため、図5では、落ち葉73の吹き飛ばされる領域の幅が一定である場合(図17参照)に比べて、竜巻72が通った後の落ち葉73の様子がよりリアルで自然に近いものとなっている。
次に、竜巻72と落ち葉73との接触判定処理の概要を図6および図7を用いて説明する。図6は、竜巻72および落ち葉73に設定される接触判定領域を示す図である。図6に示すように、落ち葉73には円柱形の接触判定領域76が設定され、竜巻72には円柱形の接触判定領域75が設定される。接触判定領域の配置位置は、それに対応するオブジェクトの位置に基づいて決定され、当該オブジェクトが移動すればその移動に応じて移動する。また、本実施形態では、ゲーム空間の位置を示すためのワールド座標系(xyz座標系)は、xz平面が地面74と平行になるように設定される。各接触判定領域75および76は、その中心軸がy軸と平行になるように設定される。なお、本実施形態において、接触判定領域はオブジェクトに対して仮想的に設定される。つまり、接触判定領域は、ポリゴンによって構築されてゲーム空間に配置されるものではなく、接触判定領域がテレビ2に表示されることはない。
また、竜巻72には円柱形の予備領域77が設定される。予備領域77とは、接触判定領域75を用いた接触判定を行うか否かを判定するために用いられる領域である。つまり、ゲーム装置3は、竜巻72の予備領域77が他のオブジェクトの接触判定領域に接触した場合にのみ、竜巻72の接触判定領域75と当該他のオブジェクトの接触判定領域とが接触したか否かを判定する。予備領域77の大きさは一定である。以上のように、接触判定領域75は、大きさが変化する領域であり、落ち葉を吹き飛ばすか否かを判定するための領域であるのに対して、予備領域77は、大きさが不変の領域であり、接触判定を行うか否かを判定するための領域である点で両者は異なる。また、図6では、接触判定領域75の半径は予備領域77の半径よりも大きい状態を示しているが、接触判定領域の半径が変化する際、接触判定領域75の半径は予備領域77の半径よりも大きく変化してもよいし、予備領域77の半径と同じになってもよい。また、予備領域77は、各接触判定領域と同様、その中心軸がy軸と平行になるように設定される。予備領域77の配置位置は、それに対応するオブジェクト(竜巻72)の位置に基づいて決定され、当該オブジェクトが移動すればその移動に応じて移動する。予備領域77は、接触判定領域と同様、オブジェクトに対して仮想的に設定されるものであり、画面に表示されない。
図7は、接触判定処理を説明するための図である。ここでは、3つの落ち葉73a〜73cと竜巻(図7では図示せず)との接触判定を例として説明する。図7では、落ち葉73aには接触判定領域76aが設定され、落ち葉73bには接触判定領域76bが設定され、落ち葉73cには接触判定領域76cが設定される。なお、図7は、仮想のゲーム空間における上側(y軸正方向から負方向への向き)から地面74を見た図である。
ゲーム装置3は、ゲーム空間に竜巻72が登場している場合、まず、落ち葉73a〜73cの接触判定領域76a〜76cと竜巻の予備領域77との接触を判定する。図7においては、落ち葉73aの接触判定領域76aと予備領域77とが接触していると判定される。少なくとも1つの接触判定領域と予備領域77とが接触していると判定される場合、ゲーム装置3は、竜巻の接触判定領域75の半径の長さを決定する。本実施形態では、接触判定領域75の半径は、時間の経過に応じて増減を繰り返すように決定される。なお、接触判定領域75の高さは予め決められている。接触判定領域75の大きさが決定されると、ゲーム装置3は、接触判定領域75と各接触判定領域76a〜76cとが接触しているか否かを判定する。図7では、落ち葉73aの接触判定領域76aおよび落ち葉73bの接触判定領域76bが接触判定領域75と接触していると判定されるので、ゲーム装置3は、落ち葉73aおよび73bが竜巻に接触していると判断する。その結果、落ち葉73aおよび73bは竜巻によって吹き飛ばされる。ゲーム装置3は、以上に示した処理を所定時間毎(例えば1フレーム毎)に実行する。このとき、接触判定領域75の大きさは時間の経過に応じて変化するように決定されるので、接触判定領域75の大きさは毎回異なる大きさとなる。そのため、竜巻が移動する間に接触判定領域75が通過する領域は、図4に示すようにその幅が一定とならない。これによって、竜巻が通った後の落ち葉の様子をリアルに表現することができる。
以下、ゲーム装置3において実行されるゲーム処理の詳細を説明する。まず、ゲーム処理において用いられる主なデータについて図8を用いて説明する。図8は、ゲーム装置3のワークメモリ32に記憶される主なデータを示す図である。図8に示すように、ワークメモリ32には、ゲームプログラム80およびゲームデータ81が記憶される。ゲームプログラム80は、後述するゲーム処理(図9参照)をゲーム装置3に実行させるためのゲームプログラムである。
ゲームデータ81には、第1および第2オブジェクトデータ82aおよび82b、ならびに、予備判定フラグデータ94等が含まれる。本実施形態では、第1オブジェクトデータ82aは、予備領域が設定されるオブジェクト、すなわち、上記竜巻オブジェクト72に関するデータであり、第2オブジェクトデータ82bは、予備領域が設定されないオブジェクト、すなわち、落ち葉オブジェクト73に関するデータである。図8では、第1オブジェクトデータ82aおよび第2オブジェクトデータ82bという2つのオブジェクトに関するデータのみを示しているが、ワークメモリ32には、ゲーム空間に登場する各オブジェクトに関するデータが記憶される。第2オブジェクトデータ82bは、1つの落ち葉に関するデータであり、複数の落ち葉が登場する場合には各落ち葉についてそれぞれ、第2オブジェクトデータ82bと同様のオブジェクトデータが記憶される。なお、ワークメモリ32には、図8に示すデータの他、各オブジェクト(竜巻や落ち葉やプレイヤオブジェクトや敵オブジェクト等)の画像データや、ゲーム空間に関するデータ(地形データ等)等、ゲーム処理に必要なデータが記憶される。
第1オブジェクトデータ82aには、オブジェクト位置データ83a、姿勢データ84a、予備領域データ85a、接触判定領域データ89a、および接触オブジェクトデータ93aが含まれる。オブジェクト位置データ83aは、ゲーム空間における第1オブジェクトの位置を示す。当該位置は、上記ワールド座標系における3次元の座標値によって表される。また、姿勢データ84aは、ゲーム空間における第1オブジェクトの姿勢(向き)を示す。当該姿勢は、ゲーム空間における方向を示す3次元のベクトルによって表される。
予備領域データ85aは、第1オブジェクトに設定される予備領域に関する情報を示す。具体的には、予備領域データ85aには、基準位置データ86a、半径データ87a、および高さデータ88aが含まれる。基準位置データ86aは、予備領域を設定すべき位置を示す。ここでは、基準位置データ86aは、円柱形の予備領域の下側底面の中心位置を設定すべき位置を示す。当該位置は、第1オブジェクトを基準とした座標系、すなわち、第1オブジェクトの所定位置を原点とし、第1オブジェクトの位置に対する相対位置を表すための座標系(キャラクタ座標系)における3次元の座標値によって表されてもよいし、上記ワールド座標系における座標値によって表されてもよい。また、半径データ87aは、円柱形の予備領域の半径を示す。また、高さデータ88aは、円柱形の予備領域の高さを示す。予備領域の半径および高さの値は一定であるので、半径データ87aおよび高さデータ88aの内容は予め決められている。
接触判定領域データ89aは、第1オブジェクトに設定される接触判定領域に関する情報を示す。具体的には、接触判定領域データ89aには、基準位置データ90a、半径データ91a、および高さデータ92aが含まれる。基準位置データ90aは、第1オブジェクトの位置を基準として接触判定領域を設定すべき位置を示す。具体的には、基準位置データ90aは、円柱形の接触判定領域の下側底面の中心位置を設定すべき位置を示す。当該位置は、上記キャラクタ座標系における座標値によって表されてもよいし、上記ワールド座標系における座標値によって表されてもよい。また、半径データ91aは、円柱形の接触判定領域の半径を示す。上述したように接触判定領域の半径の値は可変であるので、ゲーム処理中において半径データ91aの内容はCPU31によって適宜更新されて書き換えられる。また、高さデータ92aは、円柱形の接触判定領域の高さを示す。接触判定領域の高さの値は一定であり、高さデータ92aの内容は予め決められている。
接触オブジェクトデータ93aは、第1オブジェクトに接触中の他のオブジェクトを示す。すなわち、第1オブジェクトに他のオブジェクトが接触している時点では接触オブジェクトデータ93aは当該他のオブジェクトを示し、第1オブジェクトに他のオブジェクトが接触していない時点では接触オブジェクトデータ93aは、接触しているオブジェクトが存在しないことを示す。ゲーム処理中において接触オブジェクトデータ93aの内容はCPU31によって適宜更新されて書き換えられる。
一方、第2オブジェクトデータ82bには、オブジェクト位置データ83b、姿勢データ84b、接触判定領域データ89b、および接触オブジェクトデータ93bが含まれる。オブジェクト位置データ83bは、ゲーム空間における第2オブジェクトの位置を示す。当該位置は、上記ワールド座標系における3次元の座標値によって表される。また、姿勢データ84bは、ゲーム空間における第2オブジェクトの姿勢(向き)を示す。当該姿勢は、ゲーム空間における方向を示す3次元のベクトルによって表される。また、接触判定領域データ89bは、第2オブジェクトに設定される接触判定領域に関する情報を示す。図示していないが、接触判定領域データ89bには、接触判定領域データ89aと同様、基準位置データ、半径データ、および高さデータが含まれる。接触オブジェクトデータ93bは、第1オブジェクトに関する接触オブジェクトデータ93aと同様、第2オブジェクトに接触中の他のオブジェクトを示す。
予備判定フラグデータ94は、予備判定フラグの値を示す。予備判定フラグは、後述する予備判定処理の判定結果を表す。すなわち、予備判定処理において、予備領域と接触する接触判定領域が存在すると判定された場合、予備判定フラグの値は“1”に設定され、予備領域と接触する接触判定領域が存在しないと判定された場合、予備判定フラグの値は“0”に設定される。
次に、ゲームプログラム80を実行することによってゲーム装置3において行われるゲーム処理の詳細を、図9〜図11を用いて説明する。図9は、ゲーム装置3において実行されるゲーム処理の流れを示すメインフローチャートである。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU31は、図示しないブートROMに記憶されている起動プログラムを実行し、ワークメモリ32等の各ユニットが初期化される。そして、カートリッジ5に格納されたゲームプログラム80がワークメモリ32に読み込まれ、CPU31によってゲームプログラム80の実行が開始される。図9に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。なお、図9〜図11においては、ゲーム処理のうち、第1オブジェクト(すなわち、竜巻72)と他のオブジェクト(すなわち、落ち葉73)とがゲーム中に接触したか否かを判定する処理について詳細に示し、本願発明と関連しない他のゲーム処理については詳細な説明を省略する。また、図9〜図11に示すゲーム処理では、第1オブジェクト以外のオブジェクトについては予備領域は設定されないものとする。
ステップS1において、仮想の3次元のゲーム空間が構築され、ゲーム空間の一部を表示するための仮想カメラの初期状態における位置および向き(視線方向)が決定される。また、構築されたゲーム空間の初期位置に所定の姿勢で各オブジェクトが配置される。つまり、CPU31は、各オブジェクトの初期位置を示すデータをオブジェクト位置データとしてワークメモリ32に記憶し、各オブジェクトの姿勢を示すデータを姿勢データとしてワークメモリ32に記憶する。本実施形態では、ゲームの初期状態において複数の落ち葉オブジェクトが地面の上に配置される。以上のステップS1の後のステップS2以降の処理において、コントローラ6を用いたゲーム操作が受け付けられ、ゲームが進行する。なお、ステップS2〜S10の処理ループは、1回の処理ループが1フレームの間に実行される。
ステップS2において、各オブジェクトの動作の制御が行われる。例えば、プレイヤオブジェクトの動作は、プレイヤによるコントローラ6の操作に従って制御される。また、敵オブジェクトの動作は、ゲームプログラム80に含まれている所定のアルゴリズムに従ってCPU31によって制御される。また、ゲーム空間において竜巻オブジェクトが出現している場合には、竜巻オブジェクトの移動はゲームプログラム80に含まれている所定のアルゴリズムに従ってCPU31によって制御される。なお、上述したように、例えばプレイヤオブジェクトが魔法のブーメランを投げることによって竜巻オブジェクトが出現し、竜巻オブジェクトはブーメランとともに移動する。ステップS2の処理によって、オブジェクトが動作することによってオブジェクトのゲーム空間における位置や姿勢が変化する場合、CPU31は、当該オブジェクトのオブジェクトデータ(第1オブジェクトデータ82a等)に含まれるオブジェクト位置データの内容を、変化後の位置を示すデータに更新し、当該オブジェクトデータに含まれる姿勢データの内容を、変化後の姿勢を示すデータに更新する。例えば、第1オブジェクト(竜巻オブジェクト)の位置および姿勢が変更された場合、第1オブジェクトデータ82aのオブジェクト位置データ83aおよび姿勢データ84aの内容が更新される。
続くステップS3において、予備判定処理が実行される。予備判定処理は、竜巻オブジェクトの接触判定領域と落ち葉オブジェクトの接触判定領域との接触判定を行うか否か、すなわち、竜巻オブジェクトの予備領域と落ち葉オブジェクトの接触判定領域とが接触しているか否かを判定するための処理である。以下、予備判定処理の詳細について図10を用いて説明する。
図10は、図9に示すステップS3の詳細な処理の流れを示すフローチャートである。なお、図10では竜巻オブジェクトと落ち葉オブジェクトとについての予備判定処理を例として説明するが、他のオブジェクト同士について行われる予備判定処理も図10と同様に行うことができる。
予備判定処理においてはまずステップS21において、地面に配置されている全ての落ち葉オブジェクトを後述するステップS22で選択したか否かが判定される。まだ選択していない落ち葉オブジェクトが存在する場合、ステップS22の処理が再度実行される。ステップS21の処理は、竜巻オブジェクトと地面に配置されている落ち葉オブジェクトとの予備判定が全て完了したか否かを判定するために実行される。以降、ステップS21における判定結果が肯定となるまで、ステップS22〜S28の処理ループが繰り返される。一方、すでに全ての落ち葉オブジェクトを選択している場合、または、地面に落ち葉が配置されていない状態である場合、CPU31は予備判定処理を終了する。
ステップS22において、CPU31は、地面に配置されている複数の落ち葉オブジェクトから1つを選択する。なお、ステップS22の処理は、ステップS21〜S28の処理ループが繰り返される間に繰り返し実行される。この間におけるステップS22では、CPU31は、地面に配置されている落ち葉オブジェクトのうちで、まだ選択されていない落ち葉オブジェクトを選択する。なお、ステップS22では、竜巻によって巻き上げられている落ち葉は選択されない。
ステップS23では、竜巻オブジェクトに設定される予備領域と、ステップS22で選択された落ち葉オブジェクトに設定される接触判定領域とのxz平面に関する距離が算出される。ここで算出される距離は、当該予備領域と当該接触判定領域との中心間距離である。具体的には、予備領域の位置を示す座標を(x1,y1,z1)とし、接触判定領域の位置を示す座標を(x2,y2,z2)としたとき、上記距離dは、次の式に従って算出される。
d=((x1−x2)2 +(z1−z2)2 )1/2
なお、ここでは、予備領域の位置とは、円柱形である予備領域の下底面の中心位置である。竜巻オブジェクトの予備領域のゲーム空間における位置は、ゲーム空間における竜巻オブジェクトの位置を示すオブジェクト位置データ83a、および、竜巻オブジェクトに対して予備領域を設定すべき位置を示す基準位置データ86aから算出することができる。一方、接触判定領域の位置とは、円柱形である接触判定領域の下底面の中心位置である。落ち葉オブジェクトの接触判定領域のゲーム空間における位置は、ゲーム空間における落ち葉オブジェクトの位置を示すオブジェクト位置データ(例えばオブジェクト位置データ83b)、および、落ち葉オブジェクトに対して接触判定領域を設定すべき位置を示す基準位置データから算出することができる。
ステップS24においては、竜巻オブジェクトの予備領域と、ステップS22で選択された落ち葉オブジェクトの接触判定領域とがxz平面に関して重なっているか否かが判定される。この判定処理は、ステップS23で算出された距離dと、上記予備領域の半径r1と、上記接触判定領域の半径r2とを用いて行うことができる。なお、半径r1は、ワークメモリ32に記憶されている半径データ87aにより示され、半径r2は、ワークメモリ32に記憶されている、上記落ち葉オブジェクトの接触判定領域データに含まれる半径データにより示される。具体的には、CPU31は、次の式が満たされるか否かによって、予備領域と接触判定領域とがxz平面に関して重なっているか否かを判定する。
r1+r2≧d
すなわち、r1+r2≧dとなる場合、2つの領域(予備領域および接触判定領域)はxz平面に関して重なっていると判定され、r1+r2<dとなる場合、2つの領域はxz平面に関して重なっていないと判定される。ステップS24の判定において、2つの領域はxz平面に関して重なっていると判定される場合、ステップS25の処理が実行される。一方、2つの領域はxz平面に関して重なっていないと判定される場合、ステップS28の処理が実行される。
ステップS25において、竜巻オブジェクトの予備領域と、ステップS22で選択された落ち葉オブジェクトの接触判定領域とについて、それぞれ、円柱の高さ方向の幅が算出される。予備領域の幅は、ワールド座標系におけるy座標値の範囲として表され、予備領域の高さと、当該予備領域のゲーム空間における位置(上記ステップS23を参照)とに基づいて算出することができる。例えば、予備領域のゲーム空間における位置を示す座標値を(x3,y3,z3)とし、予備領域の高さをhとする。このとき、上記幅は、y3≦y≦y3+hとなる。また、接触判定領域の幅は、予備領域の幅と同様、ワールド座標系におけるy座標値の範囲として表され、接触判定領域の高さと、当該接触判定領域のゲーム空間における位置(上記ステップS23を参照)とに基づいて算出することができる。以上のようにして、2つの領域についてy座標値の取り得る範囲が算出される。ステップS25の次にステップS26の処理が実行される。
ステップS26において、竜巻オブジェクトの予備領域と、ステップS22で選択された落ち葉オブジェクトの接触判定領域とがy軸方向に関して重なっているか否かが判定される。この判定処理は、ステップS25で算出された幅の範囲値を用いて行うことができる。具体的には、CPU31は、ステップS25で算出された2つの範囲が重複するか否かによって、予備領域と接触判定領域とがy軸方向に関して重なっているか否かを判定する。例えば、2つの範囲が“1≦y≦5”と“4≦y≦6”であった場合、当該2つの範囲は重複するので、2つの領域がy軸方向に関して重なっていると判定される。一方、2つの範囲が“1≦y≦5”と“7≦y≦9”であった場合、当該2つの範囲は重複しないので、2つの領域がy軸方向に関して重なっていないと判定される。ステップS26において、2つの領域がy軸方向に関して重なっていると判定される場合、ステップS27の処理が実行される。一方、ステップS26において、2つの領域がy軸方向に関して重なっていないと判定される場合、ステップS28の処理が実行される。
ステップS27においては、竜巻オブジェクトの予備領域と、ステップS22で選択された落ち葉オブジェクトの接触判定領域とが接触していると判断される。このとき、CPU31は、予備領域と接触する接触判定領域が存在することを示す内容に予備判定フラグを変更する。すなわち、“1”を示すデータを予備判定フラグデータ94としてワークメモリ32に記憶する。ステップS27の後、CPU31は予備判定処理を終了する。
一方、ステップS28においては、竜巻オブジェクトの予備領域と、ステップS22で選択された落ち葉オブジェクトの接触判定領域とが接触していないと判断される。このとき、CPU31は、予備領域と接触する接触判定領域が存在しないことを示す内容に予備判定フラグを変更する。すなわち、“0”を示すデータを予備判定フラグデータ94としてワークメモリ32に記憶する。ステップS28の後、CPU31はステップS21の処理を再度実行する。以上で予備判定処理の説明を終了する。
図9の説明に戻り、ステップS4において、竜巻オブジェクトの予備領域に接触判定領域が接触している落ち葉オブジェクトが存在するか否かが判定される。この判定は、予備判定フラグの内容に基づいて行うことができる。すなわち、CPU31は、予備判定フラグが“1”を示すとき、竜巻オブジェクトの予備領域に接触している落ち葉オブジェクトが存在すると判定し、予備判定フラグが“0”を示すとき、竜巻オブジェクトの予備領域に接触している落ち葉オブジェクトが存在しないと判定する。ステップS4の判定において、竜巻オブジェクトの予備領域に接触判定領域が接触している落ち葉オブジェクトが存在する場合、ステップS5の処理が実行される。一方、竜巻オブジェクトの予備領域に接触判定領域が接触している落ち葉オブジェクトが存在しない場合、ステップS5〜S8の処理がスキップされてステップS9の処理が実行される。
ステップS5においては、竜巻オブジェクトの接触判定領域の大きさが決定される。本実施形態では、円柱形の接触判定領域の半径の長さがステップS5において決定され、接触判定領域の高さは予め定められている。CPU31は、所定の範囲内で、乱数を用いて半径の長さをランダムに決定する。決定した半径の長さは、半径データ91aとしてワークメモリ32に記憶される。なお、本実施形態では、ステップS5で円柱領域の半径の長さを変化させるようにしたが、接触判定領域が設定されるオブジェクトの移動方向に垂直な長さの幅を少なくとも変化させるようにすればよい。
続くステップS6において、接触判定処理が実行される。接触判定処理は、竜巻オブジェクトの接触判定領域と落ち葉オブジェクトの接触判定領域との接触判定を行う処理である。以下、接触判定処理の詳細について図11を用いて説明する。
図11は、図9に示すステップS6の詳細な処理の流れを示すフローチャートである。なお、図11では図10と同様、竜巻オブジェクトと落ち葉オブジェクトとについての接触判定処理を例として説明するが、他のオブジェクト同士について行われる接触判定処理も図11と同様に行うことができる。
接触判定処理においてはまずステップS31において、地面に配置されている複数の落ち葉オブジェクトから1つを選択する。ステップS31の処理は上記ステップS22の処理と同様である。
続くステップS32において、CPU31は、竜巻オブジェクトに設定される接触判定領域と、ステップS31で選択された落ち葉オブジェクトに設定される接触判定領域とのxz平面に関する距離が算出される。ステップS32の処理は、竜巻オブジェクトの予備領域に代えて接触判定領域となっている点を除いて、ステップS23の処理と同様である。なお、竜巻オブジェクトの接触判定領域の位置とは、円柱形である接触判定領域の下底面の中心位置である。竜巻オブジェクトの接触判定領域のゲーム空間における位置は、ゲーム空間における竜巻オブジェクトの位置を示すオブジェクト位置データ83a、および、竜巻オブジェクトに対して接触判定領域を設定すべき位置を示す基準位置データ90aから算出することができる。
ステップS33においては、竜巻オブジェクトの接触判定領域と、ステップS31で選択された落ち葉オブジェクトの接触判定領域とがxz平面に関して重なっているか否かが判定される。ステップS33の処理は、竜巻オブジェクトの予備領域に代えて接触判定領域となっている点を除いて、ステップS24の処理と同様である。ステップS33の判定において、2つの領域はxz平面に関して重なっていると判定される場合、ステップS34の処理が実行される。一方、2つの領域はxz平面に関して重なっていないと判定される場合、ステップS37の処理が実行される。
ステップS34において、竜巻オブジェクトの接触判定領域と、ステップS31で選択された落ち葉オブジェクトの接触判定領域とについて、それぞれ、円柱の高さ方向の幅が算出される。続くステップS35において、竜巻オブジェクトの接触判定領域と、ステップS31で選択された落ち葉オブジェクトの接触判定領域とがy軸方向に関して重なっているか否かが判定される。ステップS34およびS35の処理は、竜巻オブジェクトの予備領域に代えて接触判定領域となっている点を除いて、ステップS25およびS26の処理と同様である。ステップS35において、2つの領域がy軸方向に関して重なっていると判定される場合、ステップS36の処理が実行される。一方、ステップS35において、2つの領域がy軸方向に関して重なっていないと判定される場合、ステップS37の処理が実行される。
ステップS36においては、2つのオブジェクト同士(竜巻オブジェクトとステップS31で選択された落ち葉オブジェクト)が接触していると判断される。具体的には、CPU31は、ワークメモリ32に記憶されている第1オブジェクトデータ82aに含まれる接触オブジェクトデータ93aの内容を更新する。より具体的には、ステップS31で選択された落ち葉オブジェクトを示すデータを、上記接触オブジェクトデータ93aとして追加する。ステップS36の次にステップS38の処理が実行される。
一方、ステップS37においては、上記2つのオブジェクト同士(竜巻オブジェクトとステップS31で選択された落ち葉オブジェクト)が接触していると判断される。具体的には、CPU31は、ステップS31で選択された落ち葉オブジェクトを示すデータが上記接触オブジェクトデータ93aに含まれている場合、当該オブジェクトを示すデータを削除する。ステップS37の次にステップS39の処理が実行される。
続くステップS38において、地面に配置されている全ての落ち葉オブジェクトを上記ステップS31で選択したか否かが判定される。まだ選択していない落ち葉オブジェクトが存在する場合、ステップS31の処理が再度実行される。ステップS38の処理は、竜巻オブジェクトと地面に配置されている落ち葉オブジェクトとの接触判定が全て完了したか否かを判定するために実行される。以降、ステップS38における判定結果が肯定となるまで、ステップS31〜S38の処理ループが繰り返される。一方、すでに全ての落ち葉オブジェクトを選択している場合、CPU31は接触判定処理を終了する。
図9の説明に戻り、ステップS6の接触判定処理の次のステップS7において、地面に配置されている落ち葉オブジェクトのいずれかと竜巻オブジェクトとが接触しているか否かが判定される。この判定は、ワークメモリ32に記憶されている第1オブジェクトデータ82aの接触オブジェクトデータ93aに基づいて行うことができる。すなわち、CPU31は、落ち葉オブジェクトを示すデータが接触オブジェクトデータ93aに含まれているか否かを判定する。そして、落ち葉オブジェクトを示すデータが接触オブジェクトデータ93aに含まれている場合、落ち葉オブジェクトのいずれかと竜巻オブジェクトとが接触していると判定する。逆に、落ち葉オブジェクトを示すデータが接触オブジェクトデータ93aに含まれていない場合、落ち葉オブジェクトと竜巻オブジェクトとが接触していないと判定する。ステップS7の判定において、落ち葉オブジェクトのいずれかと竜巻オブジェクトとが接触していると判定される場合、ステップS8の処理が実行される。一方、落ち葉オブジェクトと竜巻オブジェクトとが接触していないと判定される場合、ステップS8の処理がスキップされてステップS9の処理が実行される。
ステップS8においては、接触に応じた動作の制御が行われる。具体的には、竜巻オブジェクトに接触している落ち葉オブジェクトが地面から巻き上げられるように移動される。ステップS8の処理によって落ち葉オブジェクトのゲーム空間における位置や姿勢が変化する場合、CPU31は、当該落ち葉オブジェクトのオブジェクト位置データの内容を、変化後の位置を示すデータに更新し、当該落ち葉オブジェクトの姿勢データの内容を、変化後の姿勢を示すデータに更新する。なお、ステップS8においては、地面に配置されていた落ち葉を移動させることに加えて、新たに落ち葉オブジェクトを追加して竜巻の周囲を移動させること等によって、竜巻の周囲を舞う落ち葉の数を増やすような表現を行うようにしてもよい。これによって、竜巻によって巻き上げられている落ち葉をより強調して表現することができる。
ステップS9においては、ゲーム空間内において各オブジェクトが動作する様子がテレビ2に表示される。CPU31は、ステップS2およびS8において決定された位置および姿勢となった各オブジェクトを仮想カメラから見たゲーム画像を生成し、生成したゲーム画像をテレビ2に表示させる。続くステップS10において、ゲームを終了するか否かが判定される。ステップS10の判定は、例えば、プレイヤオブジェクトの体力が0になったか否かや、プレイヤオブジェクトが全ての敵オブジェクトを倒したか否か等によって行われる。ステップS10の判定において、ゲームを終了すると判定された場合、CPU31は、図9に示すゲーム処理を終了する。一方、ゲームを終了しないと判定された場合、ステップS2の処理が行われ、以降、ステップS10においてゲームを終了すると判定されるまでステップS2〜S10の一連の処理が繰り返される。以上で、ゲーム処理の詳細な説明を終了する。
以上に説明した、図9〜図11に示すゲーム処理によれば、竜巻の接触判定領域の大きさは1フレーム毎に変化するので、竜巻が落ち葉を巻き上げる範囲は時間に応じて変化することになる。したがって、竜巻によって落ち葉が吹き飛ばされる領域の幅は一定ではなくなり(図4に示す領域A1参照)、竜巻が通った後の落ち葉の様子をよりリアルで自然に近いものとして表現することができる。
さらに、上記ゲーム処理によれば、ゲーム装置3は、竜巻に予備領域を設定し、予備領域と落ち葉の接触判定領域とが接触する場合(上記ステップS4の判定結果が肯定の場合)にのみ、竜巻の接触判定領域の大きさを決定し(ステップS5)、竜巻と落ち葉との接触判定処理(上記ステップS6)を実行する。したがって、予備領域と落ち葉の接触判定領域とが接触しない場合には、ステップS5およびS6の処理を省略することができるので、ゲーム装置3の処理負担を軽減することができる。なお、他の実施形態においては、ステップS3およびS4の処理を実行せず、ステップS5およびS6の処理を毎フレーム実行するようにしてもよい。
次に、本発明の変形例に係るゲーム処理について、図12〜図16を用いて説明する。本変形例では、地面に配置される草のオブジェクト(単に草と記載することもある。)が、例えばプレイヤオブジェクトが持つ剣のオブジェクト(単に剣と記載することもある。)の影響を受けて動作する場合を例として説明する。
図12は、変形例におけるゲーム画面の一例を示す図である。図12に示すゲーム画面では、図示しないプレイヤオブジェクトが持つ剣101と、ゲーム空間の地面上に配置された複数の草102とが表示されている。図12に示す矢印のように剣101が草を通過すると、図12に示すように、草は剣101によって切断されて表示される。つまり、剣101と草とが接触したと判定される場合、当該草は通常の草のオブジェクト102から切断された草のオブジェクト102’に変化する。
次に、変形例において剣によって草が切られる処理の概要を説明する。図13および図14は、ゲーム空間における地面を真上から見たときの図である。なお、図13および14では、図面を見やすくする目的で、剣オブジェクト101を点線で示すとともに、草オブジェクトの記載を省略している。変形例においても上記実施形態と同様、各オブジェクトに設定される接触判定領域は、円柱形であり、その中心軸が地面に垂直に配置される。図13に示すように、剣オブジェクト101には、5つの接触判定領域103a〜103dおよび104が設定される。剣オブジェクト101の最も先端の位置に設定される接触判定領域104は、増減を繰り返すように時間に応じて大きさ(具体的には、円柱の半径)が変化する接触判定領域である。他の接触判定領域103a〜103dは、大きさが一定の接触判定領域である。このように、1つのオブジェクトに対して複数の接触判定領域が設定されてもよく、また、当該複数の接触判定領域の一部または全部が、大きさの変化する接触判定領域であってもよい。一方、各草オブジェクトには大きさが一定の接触判定領域105がそれぞれ設定される。なお、本変形例においては、剣オブジェクトおよび草オブジェクトに予備領域は設定されない。
ここで、剣オブジェクト101に設定される接触判定領域104は、大きさが時間に応じて変化するので、剣オブジェクト101がゲーム空間中を移動すると、剣オブジェクト101が草オブジェクトに影響を与える範囲の外縁は、図13に示す実線L1のようになる。一方、もし接触判定領域104の大きさが変化しないとすれば、上記範囲の外縁は図13に示す点線L2のようになる。実線L1および点線L2から明らかなように、接触判定領域104の大きさが変化しない場合、上記範囲の外縁は円弧状になるのに対して、接触判定領域104の大きさが変化する場合、上記範囲の外縁は正確な円弧状にはならない。図14において点線で示される接触判定領域は、剣オブジェクト101が移動する際に接触判定領域104に接触する草の接触判定領域である。図14に示すように、本変形例によれば、剣によって切られた草の跡は正確な円弧状にはならないので、上記実施形態と同様、草の切られた跡をより自然に表現することができる。なお、本変形例では、草オブジェクトの接触判定領域の直径は、剣オブジェクトの接触判定領域の隙間の間隔よりも十分に大きいものとし、剣オブジェクトの接触判定領域の間を草オブジェクトの接触判定領域が通り抜けてしまうことはないものとする。つまり、接触判定領域104と接触判定領域103dとの間隔よりも草オブジェクトの接触判定領域が大きくなる範囲で接触判定領域104の大きさは変化する。このように、1つのオブジェクトに複数の接触判定領域が設定される場合、当該複数の接触判定領域のうちで大きさの変化する接触判定領域は、当該接触判定領域とその接触判定領域に最も近い位置に配置される接触判定領域との間隔が、当該オブジェクトに接触し得る他のオブジェクトの接触判定領域の大きさよりも小さくなる範囲で、その大きさが決定される。
さらに、本変形例では、剣オブジェクト101に設定される接触判定領域104が草オブジェクトに対して与える効果は、時間に応じて変化するものとする。具体的には、剣オブジェクトの接触判定領域104と草オブジェクトの接触判定領域とが接触した場合、当該草オブジェクトは、切断されるか、または剣を振った風圧で揺れているかのように動作するか、いずれかの動作を行う。剣オブジェクトが草に与える効果、すなわち、いずれの動作が行われるかは、ランダムに決定される。これによっても、剣によって着られた草の跡は正確な円弧状にはならなくなるので、草の跡をより自然に表現することができる。
図15は、変形例においてゲーム装置3のワークメモリ32に記憶される主なデータを示す図である。なお、図15では、図8と同じデータについては同じ参照符号を付し、詳細な説明を省略する。ワークメモリ32には、ゲームプログラム80’およびゲームデータ81が記憶される。ゲームプログラム80’は、後述するゲーム処理(図9参照)をゲーム装置3に実行させるためのゲームプログラムである。
本変形例においては、第1オブジェクトデータ82aに予備領域データが含まれない点、および、接触判定領域データ89aに効果データ95が含まれる点で上記実施形態とは異なる。それ以外の点は上記実施形態と同様のデータがワークメモリ32に記憶される。また、本変形例においては、第1オブジェクトデータ82aは、剣オブジェクトに関するデータであり、第2オブジェクトデータ82bは、草オブジェクトに関するデータである。なお、第2オブジェクトデータ82bは、1つの草オブジェクトに関するデータであり、複数の草オブジェクトが登場する場合には各草オブジェクトについてそれぞれ、第2オブジェクトデータ82bと同様のオブジェクトデータが記憶される。
効果データ95は、剣オブジェクトが草オブジェクトに接触すると判断された場合に、剣オブジェクトが草オブジェクトに対して与える効果を示す。具体的には、効果データ95は、「切断される」または「なびく」を示す。効果データ95が「切断される」を示す場合において剣オブジェクトが草オブジェクトに接触すると判断されたとき、当該草オブジェクトは切断される。一方、効果データ95が「なびく」を示す場合において剣オブジェクトが草オブジェクトに接触すると判断されたとき、当該草オブジェクトは風になびいているように動作する。上述したように剣オブジェクトが草オブジェクトに対して与える効果はゲーム中において変化するので、ゲーム処理中において効果データ95の内容はCPU31によって適宜更新されて書き換えられる。
図16は、変形例においてゲーム装置3で実行されるゲーム処理の流れを示すフローチャートである。図16において、図9と同じ処理については図9と同じステップ番号を付し、詳細な説明を省略する。
ステップS1およびステップS2の処理は、上記実施形態と同様である。変形例においては、ステップS2の次にステップS5の処理が実行される。ステップS3およびS4の処理は本変形例においては実行されない。ステップS5〜S7の処理は、上記実施形態と同様である。すなわち、ステップS5において剣オブジェクトの接触判定領域の大きさが所定範囲内でランダムに決定され、ステップS6およびS7において草オブジェクトが剣オブジェクトに接触するか否かが判定される。
本変形例においては、ステップS7の判定結果が肯定であった場合、ステップS8の実行前にステップS41の処理が実行される。ステップS41においては、CPU31は、剣オブジェクトに接触すると判断された草オブジェクトの動作内容を決定する。具体的には、当該草オブジェクトが切断されるか、それとも風になびく動作を行うかを決定する。この決定は、予め用意された乱数を用いてランダムに行われる。ステップS41において動作が決定されると、ワークメモリ32に記憶されている効果データ95の内容は、当該動作を示す内容に書き換えられる。続くステップS8においては、剣オブジェクトに接触すると判断された草オブジェクトについて、接触に応じた動作の制御が行われる。すなわち、ステップS41で決定された草オブジェクトの動作がステップS8で行われる。なお、ステップS9およびS10の処理は上記実施形態と同様である。
以上のように、上記変形例においては、剣オブジェクトの接触判定領域の大きさを一定時間毎(1フレーム毎)に変化させることによって、剣オブジェクトが移動する場合における剣オブジェクトの影響範囲(他のオブジェクトと接触する範囲)の外縁は凸凹の形状になる。これによって、剣によって着られた草の跡をより自然に表現することができる。
なお、上記実施形態および変形例では、接触判定領域の大きさをランダムに決定するとしたが、接触判定領域は時間に応じて増減を繰り返すように変化すればよく、他の実施形態においては、接触判定領域の大きさの変化に規則性を持たせるようにしてもよい。
本発明は、接触によって行われる動作結果がより自然になるようにオブジェクトを動作させること等を目的として、例えばゲームシステム等に利用することが可能である。
ゲームシステム1の外観図 ゲームシステム1の機能ブロック図 ゲーム装置3によってテレビ2に表示されるゲーム画面の一例を示す図 図3に示す地面を真上から見たときの図 竜巻72が通った後の地面74の様子を示す図 竜巻72と落ち葉73に設定される接触判定領域を示す図 接触判定処理を説明するための図 ゲーム装置3のワークメモリ32に記憶される主なデータを示す図 ゲーム装置3において実行されるゲーム処理の流れを示すメインフローチャート 図9に示すステップS3の詳細な処理の流れを示すフローチャート 図9に示すステップS6の詳細な処理の流れを示すフローチャート 変形例におけるゲーム画面の一例を示す図 変形例におけるゲーム空間における地面を真上から見たときの図 変形例におけるゲーム空間における地面を真上から見たときの図 変形例においてゲーム装置3のワークメモリ32に記憶される主なデータを示す図 変形例においてゲーム装置3で実行されるゲーム処理の流れを示すフローチャート 従来の技術を用いて表示される仮想空間の画像の一例を示す図 従来の技術を用いて表示される仮想空間の画像の一例を示す図
符号の説明
1 ゲームシステム
2 テレビジョン受像機
3 ゲーム装置
4 光ディスク
6 コントローラ
31 CPU
32 ワークメモリ
72 竜巻オブジェクト
73 落ち葉オブジェクト
75,76 接触判定領域
77 予備領域

Claims (6)

  1. 接触判定領域を設定された複数のオブジェクトが配置される仮想の3次元空間を表示装置に表示させる画像処理装置のコンピュータにおいて実行される画像処理プログラムであって、
    所定のオブジェクトが移動している間、当該所定のオブジェクトに設定される接触判定領域の大きさを、増減を繰り返すように時間に応じて変化させる変化ステップと、
    前記所定のオブジェクトと他のオブジェクトとが接触しているか否かをそれぞれの接触判定領域を用いて判定する接触判定ステップと、
    前記所定のオブジェクトに接触していると判定されるオブジェクトに対して所定の影響を与えた様子を前記表示装置に表示させる表示制御ステップとを前記コンピュータに実行させる画像処理プログラム。
  2. 前記所定のオブジェクトには、前記接触判定領域とは異なる予備領域が設定され、
    前記画像処理プログラムは、前記他のオブジェクトに設定される接触判定領域と前記予備領域とが接触しているか否かを判定する予備判定ステップをさらに前記コンピュータに実行させ、
    前記変化ステップおよび前記接触判定ステップは、前記予備判定ステップにて他のオブジェクトに設定される接触判定領域と前記予備領域とが接触していると判定されたときにのみ実行される、請求項1に記載の画像処理プログラム。
  3. 前記変化ステップにおいて、前記コンピュータは、所定時間間隔で接触判定領域の大きさを変化させる、請求項1に記載の画像処理プログラム。
  4. 前記変化ステップにおいて、前記コンピュータは、前記接触判定領域の大きさを所定の範囲内でランダムに変化させる、請求項1に記載の画像処理プログラム。
  5. 前記表示制御ステップにおいて、前記コンピュータは、前記所定のオブジェクトに接触していると判定されるオブジェクトが前記所定のオブジェクトに接触しない位置に移動する動作を表示するか、または、当該オブジェクトの表示態様を変化させて表示する、請求項1に記載の画像処理プログラム。
  6. 接触判定領域を設定された複数のオブジェクトが配置される仮想の3次元空間を表示装置に表示させる画像処理装置であって、
    所定のオブジェクトが移動している間、当該所定のオブジェクトに設定される接触判定領域の大きさを、増減を繰り返すように時間に応じて変化させる変化手段と、
    前記所定のオブジェクトと他のオブジェクトとが接触しているか否かをそれぞれの接触判定領域を用いて判定する接触判定手段と、
    前記所定のオブジェクトに接触していると判定されるオブジェクトに対して所定の影響を与えた様子を前記表示装置に表示させる表示制御手段とを備える、画像処理装置。

JP2006017715A 2006-01-26 2006-01-26 画像処理プログラムおよび画像処理装置 Active JP4719579B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006017715A JP4719579B2 (ja) 2006-01-26 2006-01-26 画像処理プログラムおよび画像処理装置
US11/482,751 US7679623B2 (en) 2006-01-26 2006-07-10 Image processing program and image processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006017715A JP4719579B2 (ja) 2006-01-26 2006-01-26 画像処理プログラムおよび画像処理装置

Publications (2)

Publication Number Publication Date
JP2007200011A JP2007200011A (ja) 2007-08-09
JP4719579B2 true JP4719579B2 (ja) 2011-07-06

Family

ID=38285070

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006017715A Active JP4719579B2 (ja) 2006-01-26 2006-01-26 画像処理プログラムおよび画像処理装置

Country Status (2)

Country Link
US (1) US7679623B2 (ja)
JP (1) JP4719579B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7369556B2 (ja) 2018-09-06 2023-10-26 株式会社バンダイナムコエンターテインメント プログラム、ゲーム装置、サーバ装置及びゲーム提供方法

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4660357B2 (ja) * 2005-11-18 2011-03-30 任天堂株式会社 画像処理プログラムおよび画像処理装置
JP4302143B2 (ja) * 2007-01-11 2009-07-22 株式会社ソニー・コンピュータエンタテインメント 物体衝突処理方法および物体衝突処理プログラム、物体衝突処理装置
US9478105B1 (en) * 2008-12-30 2016-10-25 Lucasfilm Entertainment Company Ltd. Detecting collision between objects
US10163261B2 (en) 2014-03-19 2018-12-25 Matterport, Inc. Selecting two-dimensional imagery data for display within a three-dimensional model
US9786097B2 (en) * 2012-06-22 2017-10-10 Matterport, Inc. Multi-modal method for interacting with 3D models
US10139985B2 (en) 2012-06-22 2018-11-27 Matterport, Inc. Defining, displaying and interacting with tags in a three-dimensional model
JP2013034884A (ja) * 2012-10-10 2013-02-21 Daito Giken:Kk 遊技台
CN103501287B (zh) * 2013-09-03 2017-02-22 网易(杭州)网络有限公司 一种游戏运行中确定动作命中对象的方法和设备
US10049493B1 (en) * 2015-10-22 2018-08-14 Hoyt Architecture Lab, Inc System and methods for providing interaction with elements in a virtual architectural visualization
JP7233399B2 (ja) * 2020-06-23 2023-03-06 任天堂株式会社 ゲームプログラム、ゲーム装置、ゲームシステム、およびゲーム処理方法
CN112562050B (zh) * 2020-11-27 2023-07-18 成都完美时空网络技术有限公司 虚拟对象风动画的生成方法及装置、存储介质、终端
JP7441361B1 (ja) 2023-05-26 2024-02-29 Kddi株式会社 情報処理装置、情報処理方法及びプログラム

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5056031A (en) * 1988-11-12 1991-10-08 Kabushiki Kaisha Toyota Chuo Kenyusho Apparatus for detecting the collision of moving objects
JP3401897B2 (ja) 1994-02-16 2003-04-28 株式会社セガ 衝突判定処理システムおよびこれを用いた画像処理装置
JP3239683B2 (ja) * 1995-05-11 2001-12-17 株式会社セガ 画像処理装置および画像処理方法
JP3753339B2 (ja) * 1996-06-06 2006-03-08 株式会社ナムコ 3次元シミュレータ装置
JP3184124B2 (ja) * 1997-07-30 2001-07-09 日立電子サービス株式会社 衝突検知方法、物体変位方法および教育シミュレータ
JP4221838B2 (ja) * 1998-09-30 2009-02-12 株式会社セガ ゲーム装置、当り判定方法、及び情報記録媒体
JP4186136B2 (ja) * 1998-10-08 2008-11-26 株式会社セガ 画像処理装置および画像処理方法
JP3707995B2 (ja) * 2000-05-17 2005-10-19 株式会社ナムコ ゲームシステム及び情報記憶媒体
JP3843241B2 (ja) * 2002-02-28 2006-11-08 株式会社バンダイナムコゲームス プログラム、情報記憶媒体、およびゲーム装置
JP2003334382A (ja) * 2002-05-21 2003-11-25 Sega Corp ゲーム装置、画像処理装置及び画像処理方法
US7457444B2 (en) * 2003-05-14 2008-11-25 Siemens Medical Solutions Usa, Inc. Method and apparatus for fast automatic centerline extraction for virtual endoscopy
JP4335160B2 (ja) * 2005-03-02 2009-09-30 任天堂株式会社 衝突判定プログラムおよび衝突判定装置
JP4756632B2 (ja) * 2005-08-23 2011-08-24 任天堂株式会社 ゲームプログラムおよびゲーム装置
JP4660357B2 (ja) * 2005-11-18 2011-03-30 任天堂株式会社 画像処理プログラムおよび画像処理装置
JP5030132B2 (ja) * 2006-01-17 2012-09-19 任天堂株式会社 ゲームプログラムおよびゲーム装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7369556B2 (ja) 2018-09-06 2023-10-26 株式会社バンダイナムコエンターテインメント プログラム、ゲーム装置、サーバ装置及びゲーム提供方法

Also Published As

Publication number Publication date
JP2007200011A (ja) 2007-08-09
US7679623B2 (en) 2010-03-16
US20070171221A1 (en) 2007-07-26

Similar Documents

Publication Publication Date Title
JP4719579B2 (ja) 画像処理プログラムおよび画像処理装置
JP4660357B2 (ja) 画像処理プログラムおよび画像処理装置
US8979650B2 (en) Game apparatus, recording medium having game program recorded thereon, and game system
US6413163B1 (en) Video game machine, method for switching viewpoint on game screen of video game, and computer-readable recording medium containing game-screen-viewpoint switching program
US7762893B2 (en) Storage medium having game program stored thereon and game apparatus
JP4740644B2 (ja) 画像処理プログラムおよび画像処理装置
JP4679429B2 (ja) 音出力プログラムおよび音出力装置
JP5106825B2 (ja) ゲームプログラム、ゲーム装置、ゲームシステムおよびゲーム制御方法
JP2010042090A (ja) プログラム、情報記憶媒体及びゲーム装置
US20060107824A1 (en) Storage medium storing breath blowing determining program, breath blowing determining apparatus, breath blowing determining method, storage medium storing game program, game apparatus, and game control method
JP2006305176A (ja) ゲームプログラムおよびゲーム装置
JP2006314705A (ja) ゲームプログラムおよびゲーム装置
JP2004321362A (ja) ゲーム装置およびゲームプログラム
JP5210547B2 (ja) 移動制御プログラムおよび移動制御装置
JP3747050B1 (ja) プログラム、情報記憶媒体、及び画像生成システム
US8062110B2 (en) Storage medium storing game program and game apparatus
JP3786670B1 (ja) プログラム、情報記憶媒体、及び画像生成システム
US7621812B2 (en) Game system and game program
JP4159940B2 (ja) ゲームシステムおよびゲームプログラム
JP5054908B2 (ja) プログラム、情報記憶媒体、及び画像生成システム
JP4307317B2 (ja) ゲーム装置およびゲームプログラム
JP4467590B2 (ja) 描画装置、描画方法、および描画プログラム
JP4148868B2 (ja) ゲームプログラムおよびゲーム装置
JP2005279133A (ja) ゲーム装置およびゲームプログラム
JP2001250124A (ja) ゲームシステム及び情報記憶媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081222

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110307

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110404

R150 Certificate of patent or registration of utility model

Ref document number: 4719579

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140408

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250