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

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

Info

Publication number
JP4472467B2
JP4472467B2 JP2004248626A JP2004248626A JP4472467B2 JP 4472467 B2 JP4472467 B2 JP 4472467B2 JP 2004248626 A JP2004248626 A JP 2004248626A JP 2004248626 A JP2004248626 A JP 2004248626A JP 4472467 B2 JP4472467 B2 JP 4472467B2
Authority
JP
Japan
Prior art keywords
vertex
virtual
control point
vertices
shape model
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.)
Expired - Lifetime
Application number
JP2004248626A
Other languages
English (en)
Other versions
JP2006065647A (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 JP2004248626A priority Critical patent/JP4472467B2/ja
Priority to US11/192,000 priority patent/US20060044311A1/en
Publication of JP2006065647A publication Critical patent/JP2006065647A/ja
Application granted granted Critical
Publication of JP4472467B2 publication Critical patent/JP4472467B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/10Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by input arrangements for converting player-generated signals into game device control signals
    • A63F2300/1068Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by input arrangements for converting player-generated signals into game device control signals being specially adapted to detect the point of contact of the player on a surface, e.g. floor mat, touch pad
    • A63F2300/1075Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by input arrangements for converting player-generated signals into game device control signals being specially adapted to detect the point of contact of the player on a surface, e.g. floor mat, touch pad using a touch screen
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/30Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by output arrangements for receiving control signals generated by the game device
    • A63F2300/301Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by output arrangements for receiving control signals generated by the game device using an additional display connected to the game console, e.g. on the controller

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Processing Or Creating Images (AREA)

Description

本発明は、画像処理プログラムおよび画像処理装置に関し、より特定的には、図形や文字等の線画を構成する頂点間を仮想バネによって関連付けて、この線画が変形する様子を表示する画像処理プログラムおよび画像処理装置に関する。
従来の画像処理においては、図形や文字等を表すモデルが自然に変形する様子を表現するために、モデルの頂点間に仮想バネを設定することが行われている。図31は、従来の画像処理方法における仮想バネが設定されたモデルの一例を示す図である。図31に示すように、モデルの各頂点には、少なくとも1つの他の頂点との間に仮想バネが設定される。モデルを変形させる際には、この仮想バネが伸縮することによって頂点が受ける力が算出され、算出された力を考慮して各頂点の位置が移動される。これによって、モデルが変形する様子を自然に表現することができる。
例えば、特許文献1には、モデルの頂点間に仮想バネを設定するとともに、初期位置と移動先の位置との間に仮想バネを設定する画像処理装置が記載されている。当該画像処理装置は、上記2種類の仮想バネを用いることによって、モデルの1点を移動させた場合においてモデルが変形する様子を自然に表現することができる。
また、特許文献2に記載の画像処理方法では、画像データをメッシュ状に区分することによって当該メッシュの頂点間に仮想バネを設定している。さらに、この画像処理方法では、仮想バネと仮想バネとのなす角に仮想の回転バネを設定している。この画像処理方法によれば、画像が変形する様子を自然に表現することができる。
特開平9−73549号公報 特開平10−69549号公報
ここで、モデルが移動する際にモデルを変形させることによってモデルをあたかも弾性体のごとく表現する場合を考える。図32は、従来の画像処理方法においてモデルが変形する様子を示す図である。なお、図32においては、説明の簡単のため、頂点P1〜P4が1列に並んだ直線状のモデルを考える。図32は、4つの頂点P1〜P4によって構成されるモデルの頂点P1を左方向に移動させることによってモデル全体が左方向へ移動するとともに、左右に伸びるように変形する様子を示している。図32においては、この様子がフレーム時間毎に示されている。
仮想バネを用いてモデルを変形させる処理においては、仮想バネを考慮して各頂点の位置を算出し、算出された位置に各頂点を移動させて表示する処理が1フレーム毎に行われる。図32では、第1フレームから第2フレームまでの間において頂点P1が左へ位置Paまで移動されるものとする。この結果、第2フレームにおける各頂点位置を決定する処理では、頂点P1が位置Paに移動しているので、頂点P1と頂点P2との間の仮想バネ91に力が発生する。その結果、第2フレームにおいては頂点P2が移動されて表示される。一方、第2フレームにおける各頂点の位置を決定する処理の段階では、頂点P2〜P4はまだ移動していない。従って、仮想バネ92および93には力が発生せず、頂点P3およびP4は第2フレームにおいて移動しない。なお、次の第3フレームにおける各頂点位置を決定する処理では、頂点P2が移動しているので、頂点P2と頂点P3との間の仮想バネ92に力が発生し、頂点P3が移動される。しかし、この処理においても頂点P3およびP4は移動していないので、頂点P4は第3フレームにおいても移動しない。最終的に、頂点P4は第4フレームにおいてやっと移動が開始されることになる。
以上のように、ある頂点を移動させることによってモデルを変形させる場合、移動させる頂点からの接続数が大きくなるほど、移動が開始されるフレームが遅くなることがわかる。なお、ここで言う接続数とは、頂点と頂点とを接続する仮想バネの数、換言すれば、ある頂点から別のある頂点に到達するまでの経路上に存在する仮想バネの数を意味する。従って、ある頂点が移動されても、その頂点からの接続数が大きい頂点においては、頂点の移動による影響がなかなか現れず、移動された頂点に対する追従性が非常に悪いことになる。以上に説明した、移動させる頂点からの接続数が大きい頂点の追従性の悪さは、モデルの頂点数が増えてモデルが複雑になるほど、顕著になる。
なお、上記の追従性の問題は、従来の画像処理方法では仮想バネが全ての頂点間には設定されていない(図31参照)ことが原因である。従って、全ての頂点間に仮想バネを設定することによって、上記追従性の問題を解消することは可能である。しかし、全ての頂点間に仮想バネを設定すれば、仮想バネの数が極端に多くなり、モデルを変形させる処理における計算量が膨大な量になってしまい、現実的ではない。
それ故、本発明の目的は、モデルを変形させる際における頂点の追従性の悪さを少ない計算量で改善することのできる画像処理プログラムおよび画像処理装置を提供することである。
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
第1の発明は、形状モデル(31,61)の形状を変化させて表示装置(第1LCD11)の画面に表示する処理をコンピュータ(CPUコア21等)に実行させる画像処理プログラムである。画像処理プログラムは、コントロール点指定ステップ(S62)と、第2仮想バネ設定ステップ(S15)と、コントロール点移動ステップ(S83)と、力算出ステップ(S114)と、位置決定ステップ(S92)と、表示制御ステップ(S86)とをコンピュータに実行させる。ここで、形状モデルを構成する各頂点(P1〜P7)は、少なくとも1つの他の頂点と関連付けられている(第1関連付リスト)。また、関連付けられた2頂点の間には、当該2頂点の間の距離に応じて大きさが変化する仮想の力を当該2頂点に与える第1の仮想バネ(34〜39)が設定される。コントロール点指定ステップでは、画面に表示された形状モデルのうちの少なくとも1つの頂点をコントロール点として指定する。第2仮想バネ設定ステップでは、指定されたコントロール点とコントロール点以外の各頂点との間に、第1の仮想バネとは異なる新たな仮想バネである第2の仮想バネ(41〜46)を設定する。コントロール点移動ステップでは、コントロール点を移動させる。力算出ステップでは、コントロール点の移動に起因して形状モデルの各頂点の位置関係が基準状態から変化した場合、変化後における形状モデルの各頂点が第1および第2の仮想バネから受ける仮想の力の大きさを算出する。位置決定ステップでは、算出された仮想の力に基づいて、形状モデルの各頂点を移動させるべき位置を決定する。表示制御ステップでは、決定された位置に各頂点を移動した形状モデルを画面に表示する。
また、第2の発明においては、位置決定ステップでは、コントロール点移動ステップにおいて移動されたコントロール点の位置を基準として、当該コントロール点以外の各頂点を移動させるべき位置を決定してもよい。
また、第3の発明においては、コントロール点指定ステップは、ユーザの指示に従ってコントロール点を指定してもよい。このとき、コントロール点移動ステップは、ユーザの指示に従ってコントロール点を移動させる。
また、第4の発明においては、第2仮想バネ設定ステップは、コントロール点の移動が完了するまで、または、コントロール点の移動に起因する形状モデルの変形が停止するまでの間のみ第2仮想バネを設定してもよい。
また、第5の発明においては、形状モデルは2次元または3次元の直交座標系において表されてもよい。このとき、第1および第2の仮想バネは、直交座標系における座標成分毎に個別の複数の部分仮想バネ(x方向仮想バネ、y方向仮想バネ)によって構成される。部分仮想バネは、直交座標系における座標軸方向を向く仮想の力であって、それが設定される2頂点の間の当該座標軸方向に関する距離に応じて大きさが変化する仮想の力を当該2頂点に与える。
また、第6の発明においては、入力検出ステップ(S10)と、モデル作成ステップ(S11)とをコンピュータにさらに実行させてもよい。入力検出ステップでは、入力装置の入力面上にユーザによって描かれた軌跡を座標点として時系列で検出する。モデル作成ステップでは、検出された各座標点の少なくとも一部の座標点を各頂点とする形状モデルを作成する。
また、第7の発明においては、入力検出ステップは、ユーザによって連続して入力された座標点を1まとまりの座標点群として検出してもよい。このとき、モデル作成ステップは、入力検出ステップにおいて検出された座標点群からその少なくとも一部を選出した各頂点と、当該各頂点を時系列順に結ぶ線分とによって構成される形状モデルを作成する。画像処理プログラムは、頂点関連付ステップ(S12)をコンピュータにさらに実行させてもよい。頂点関連付ステップでは、モデル作成ステップによって作成された形状モデルに含まれる2頂点のうち、線分によって結ばれる2頂点に関連付けを行う(第1関連リスト)。
また、第8の発明においては、形状モデルは、複数の頂点と頂点間を接続する線分とによって構成されてもよい。このとき、画像処理プログラムは、頂点関連付ステップ(S12)をコンピュータにさらに実行させてもよい。頂点関連付ステップでは、所定の頂点から線分を辿ることによって到達不可能な頂点が1つの形状モデルの内に存在する場合、当該所定の頂点から線分を辿ることによって到達可能な頂点と到達不可能な頂点との間に関連付けを行う。
また、第9の発明においては、バネ力算出ステップは、第1または第2の仮想バネが設定される2頂点の間の距離の基準状態からの差分に比例する大きさの力(仮想バネの「バネの力」)と、頂点の速度に比例する大きさの力(仮想バネに働く減衰力)とに基づいて当該仮想バネによる仮想の力を算出してもよい。
また、本発明は、上記画像処理プログラムを実行する画像処理装置(ゲーム装置1)の形態で提供されてもよい。
第1の発明によれば、コントロール点とそれ以外の頂点との間に仮想のバネが設定されるので、コントロール点からの接続数が多い頂点であっても、コントロール点の移動に対する応答を速くすることができる。すなわち、形状モデルの変形の追従性を向上することができる。また、第1の発明によれば、コントロール点が指定されたことに応じてコントロール点とそれ以外の頂点との間にのみ仮想のバネが設定され、全ての頂点間に仮想バネを固定的に設定されるわけではない。従って、形状モデルを変形させる処理を少ない計算量で行うことができる。
また、第2の発明によれば、コントロール点の位置は仮想バネの影響を受けずに決定されるので、コントロール点の移動を制御することによって形状モデルの移動を容易に制御することができる。
また、第3の発明によれば、ユーザは、自己が指定したコントロール点を移動させることによって形状モデルを容易に移動させることができる。
また、第4の発明によれば、コントロール点と各頂点との間に一時的に第2の仮想バネが設定され、不要となった第2の仮想バネが消去される。従って、仮想バネを効率良く設定することによって、必要最小限の仮想バネを用いて形状モデルの変形の追従性を向上することができる。
第5の発明によれば、仮想バネが設定される1組の頂点の間には、直交座標系の座標軸方向を向く互いに独立した複数の部分仮想バネが設定される。これによって、仮想バネによる仮想の力や頂点の移動先の位置を座標方向毎に別々に行うことができる。従って、第5の発明によれば、2頂点間の距離を算出する計算が不要であるので、計算処理が重い2乗計算や平方根計算を行う必要がなく、仮想バネを用いたモデルの変形処理を少ない処理負担で行うことが可能となる。
また、第6の発明によれば、ユーザによって入力された図形や文字等を、あたかも弾性体のごとく変形させることができる。
また、第7の発明によれば、ユーザによる入力に基づいて形状モデルの形状を決定するとともに、頂点間の関連付けを決定することができる。すなわち、形状モデルの頂点をどの頂点と関連付けるかを、ユーザによる入力に基づいて決定することができる。また、ユーザによる入力軌跡は一筆書き可能な形状であるので、形状モデルの各頂点は、少なくとも1つの他の頂点と確実に関連付けられることとなる。従って、頂点間の関連付けを容易にかつ正確に行うことができる。
また、第8の発明によれば、一体的に構成されていない複数の部分を有する形状モデルであっても、各部分を一体的に変形させることができる。
また、第9の発明によれば、仮想バネをより現実に近い形でシミュレートすることができる。
以下、本実施形態に係る画像処理装置および画像処理プログラムについて説明する。なお、本実施形態では、画像処理装置の一例として2つの表示装器を備えるゲーム装置を例に挙げて説明するが、本発明に係る画像処理装置は、画像処理プログラムを実行可能な装置であればどのような装置であっても構わない。例えば、画像処理装置は、単一の表示器を備えるゲーム装置や、据え置き型のパーソナルコンピュータであってもよいし、PDA等の携帯端末であってもよい。
図1は、本発明の一実施形態に係る画像処理装置の一例である携帯型のゲーム装置の外観図である。図1において、本実施形態のゲーム装置1は、2つの液晶表示器(以下、「LCD」という)11および12を所定の配置位置となるように、ハウジングに収納して構成される。具体的には、第1LCD11および第2LCD12を互いに上下に配置して収納する場合は、ハウジングが下部ハウジング18aおよび上部ハウジング18bから構成される。上部ハウジング18bは、下部ハウジング18aの上辺の一部で回動自在に支持される。上部ハウジング18bは、第2LCD12の平面形状よりも少し大きな平面形状を有し、一方主面から第2LCD12の表示画面を露出するように開口部が形成される。下部ハウジング18aは、横方向の略中央部に第1LCD11の表示画面を露出する開口部が形成される。下部ハウジング18aの平面形状は、上部ハウジング18bよりも横長に選ばれる。下部ハウジング18aには、第1LCD11を挟むいずれか一方にスピーカ15の音抜き孔が形成されるとともに、第1LCD11を挟む左右に操作スイッチ部14が装着される。
操作スイッチ部14は、第1LCD11の右横における下部ハウジング18aの一方主面に装着される動作スイッチ14aおよび14bと、第1LCD11の左横における下部ハウジング18aの一方主面に装着される方向指示スイッチ14c、スタートスイッチ14d、およびセレクトスイッチ14eとを含む。動作スイッチ14aおよび14bは、例えばアクションゲームにおいてはジャンプ、パンチ、武器を動かす等の指示、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいてはアイテムの取得、武器またはコマンドの選択決定等の指示入力に使用される。方向指示スイッチ14cは、プレイヤ(ユーザ)によって操作可能なプレイヤオブジェクト(またはプレイヤキャラクタ)の移動方向を指示したり、カーソルの移動方向を指示したりする等のゲーム画面における方向指示に用いられる。また、必要に応じて、動作スイッチをさらに追加したり、下部ハウジング18aにおける操作スイッチ14の装着領域の上部面(上部側面)の左右に側面スイッチ14fおよび14gを設けたりしても構わない。
また、第1LCD11の上面には、タッチパネル13(図1における破線領域)が装着される。タッチパネル13は、例えば、抵抗膜方式、光学式(赤外線方式)、静電容量結合式のいずれの種類でもよく、その上面(入力面)をスタイラス16(または指でも可)で押圧操作、移動操作、または撫でる操作をしたとき、スタイラス16の座標位置を検出して座標データを出力するものである。
上部ハウジング18bの側面近傍には、必要に応じてタッチパネル13を操作するスタイラス16を収納するための収納孔(図1における二点破線領域)が形成される。この収納孔には、スタイラス16が収納される。下部ハウジング18aの側面の一部には、本実施形態に係る図形識別プログラムを含むゲームプログラムを記憶したメモリ(例えば、ROM)を内蔵したカートリッジ17を着脱自在に装着するためのカートリッジ挿入部(図1における一点破線領域)が形成される。カートリッジ17は、ゲームプログラムを記憶する情報記憶媒体であり、例えば、ROMまたはフラッシュメモリのような不揮発性半導体メモリが用いられる。カートリッジ挿入部の内部には、カートリッジ17と電気的に接続するためのコネクタ(図2参照)が内蔵される。さらに、下部ハウジング18a(または上部ハウジング18bでも可)には、CPU等の各種電子部品を実装した電子回路基板が収納される。なお、ゲームプログラムを記憶する情報記憶媒体としては、上記不揮発性半導体メモリに限らず、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体でもよい。
次に、図2を参照して、ゲーム装置1の内部構成について説明する。なお、図2は、ゲーム装置1の内部構成を示すブロック図である。
図2において、下部ハウジング18aに収納される電子回路基板には、コンピュータとして機能するCPUコア21等が実装される。CPUコア21には、所定のバスを介して、カートリッジ17と接続するためのコネクタ28が接続されるととともに、入出力インターフェース(I/F)回路27、第1のグラフィック処理ユニット(第1GPU)24、第2のグラフィック処理ユニット(第2GPU)26、およびワーキングRAM(WRAM)22が接続される。
コネクタ28には、カートリッジ17が着脱自在に接続される。カートリッジ17は、上述したようにゲームプログラムを格納するための記憶媒体である。具体的には、カートリッジ17は、ゲームプログラムを記憶するROM171とバックアップデータを書き換え可能に記憶するRAM172とを搭載する。カートリッジ17のROM171に記憶されたゲームプログラムは、WRAM22にロードされ、当該WRAM22にロードされたゲームプログラムがCPUコア21によって実行される。CPUコア21がゲームプログラムを実行して得ることができる一時的なデータや画像を生成するためのデータがWRAM22に記憶される。
I/F回路27には、タッチパネル13、操作スイッチ部14、およびスピーカ15が接続される。スピーカ15は、上述した音抜き孔の内側位置に配置される。
第1GPU24には、第1ビデオRAM(以下「VRAM」)23が接続され、第2GPU26には、第2のビデオRAM(以下「VRAM」)25が接続される。第1GPU24は、CPUコア21からの指示に応じて、WRAM22に記憶される画像を生成するためのデータに基づいて第1ゲーム画像を生成する。生成された第1ゲーム画像は、第1GPU24によって第1VRAM23に描画される。第2GPU26は、CPUコア21からの指示に応じて、WRAM22に記憶される画像を生成するためのデータに基づいて第2ゲーム画像を生成する。生成された第2ゲーム画像は、第2GPU26によって第2VRAM25に描画される。
第1VRAM23は第1LCD11に接続され、第2VRAM25は第2LCD12に接続される。第1GPU24は、CPUコア21からの指示に応じて第1VRAM23に描画された第1ゲーム画像を第1LCD11に出力する。そして、第1LCD11は、第1GPU24から出力された第1ゲーム画像を表示する。第2GPU26は、CPUコア21からの指示に応じて第2VRAM25に描画された第2ゲーム画像を第2LCD12に出力する。そして、第2LCD12は、第2GPU26から出力された第2ゲーム画像を表示する。
以下、カートリッジ17に格納された画像処理プログラムによってゲーム装置1において実行されるゲーム処理について説明する。なお、本実施形態では、本発明に係る画像処理プログラムがゲームプログラムとしてゲーム装置によって実行される場合を例として説明する。また、本実施形態においては、タッチパネル13によって表示画面が覆われる第1LCD11のみを表示装置として用いる。従って、ゲーム装置1は、第2LCD12を有しない構成であってもよい。
以下、本実施形態に係る画像処理プログラムによって実行される画像処理について説明する。この画像処理は、仮想領域(2次元または3次元)内に構築された形状モデルが弾性体のごとく変形する様子を表示する処理である。形状モデルは、ゲーム中に画像として画面に表示されるものであればどのようなものでもよく、例えば、ゲーム中に登場するゲームキャラクタを表すための形状モデルであってもよいし、ゲームのオープニング画面で表示されるゲームタイトルを表すための形状モデルであってもよい。なお、以下では、2次元の仮想平面内に配置された2次元の形状モデルを変形する場合を例として説明する。
まず、図3A〜図3Dを参照して、形状モデルが変形する様子を説明する。図3A〜図3Dは、形状モデルが表示された第1LCD11の画面の一例を示す図である。形状モデルは、複数の頂点によって構成される。図3A〜図3Dでは、第1LCD11の画面32に表示されている形状モデル31は4つの頂点からなる折れ線である。なお、詳細は後述するが、本実施形態においては形状モデル31はプレイヤの入力によって作成される。形状モデル31の全ての頂点は、少なくとも1つの他の頂点と関連付けられて定義される。関連付けられた頂点間には、仮想バネが設定される(図4および図5参照)。仮想バネとは、当該頂点間の距離に応じて大きさが変化する仮想の力を発生させるように当該頂点間において仮想的に設定されたバネである。実際の処理においては、仮想バネは、形状モデルの形状に基づいて予め定められた基準距離(形状モデルが基準状態にあるときの頂点間の距離)と頂点間の距離との差(バネの伸縮量に相当)を入力とし、当該頂点に働く仮想の力(バネの伸縮による力に相当)を出力とするバネ関数として設定される。この仮想バネによって、形状モデルをあたかも弾性体のごとく変形させることができる。つまり、形状モデルの各頂点は仮想バネによって接続されているので、仮想バネの弾性によって頂点間の距離は可変であり、形状モデルは変形することができるのである。なお、図3に示す形状モデル31では、線分によって結ばれる頂点が互いに関連付けられている(すなわち、線分によって結ばれる頂点間に仮想バネが設定されている)。
図3Aは、形状モデル31が変形される前の状態を示す図である。本実施形態では、図3Aに示す状態のように、形状モデル31の変形が行われていない状態を基準状態と呼ぶ。ここで、本実施形態では、形状モデルは、プレイヤの操作によって変形される。具体的には、プレイヤは、形状モデルの任意の頂点を指定し、指定した頂点を移動させる操作を行うことで、形状モデルを変形させることができる。なお、頂点の指定は、所望の頂点が表示されている近傍の位置をプレイヤがスタイラス等で指定することによって行われる。指定された頂点は、プレイヤによるドラッグ操作(スタイラスがタッチパネルに接触した状態で接触位置を移動させる操作)によって移動することが可能である。なお、以下に説明する図3A〜図3Dでは、図3Aに示す状態において形状モデル31の左端の頂点がプレイヤの操作によって指定される場合を考える。また、以下では、プレイヤによって指定される頂点をコントロール点と呼ぶ。コントロール点は、形状モデルの変形の基準となる頂点である。
図3Bおよび図3Cは、形状モデルが変形されている状態を示す図である。なお、図3B〜図3Dに示す点線は、前の状態(前の図に示す状態)の形状モデル31およびスタイラスを示す。図3Bに示すように、プレイヤがコントロール点である頂点を左側へ移動させると、コントロール点以外の頂点は上記仮想バネから受ける仮想の力によって移動する。図3Bに示す状態のように、コントロール点の移動が開始した直後の状態においては、形状モデル31は、コントロール点である頂点が移動した方向へ伸びるように変形する。
図3Cは、図3Bに示す状態から時間が経過し、コントロール点をさらに左側へ移動させた状態を示す図である。この状態においても図3Bと同様、コントロール点以外の頂点は左側へ移動している。図3Cにおいては、形状モデル31は、図3Bに示す場合よりもさらに伸びて変形している。図3Dは、コントロール点の移動が停止した後の状態を示す図である。図3Dに示すように、コントロール点である頂点の移動が停止すると、伸びるように変形していた形状モデルが縮むように変形し始める。その後、形状モデル31は元の形状に戻って静止する。本実施形態におけるゲーム装置1は、以上の図3A〜図3Dに示したような変形動作を形状モデルが行う様子を表現するものである。
次に、図4および図5を参照して、本実施形態において形状モデルに設定される仮想バネについて説明する。ここで、本実施形態においては、第1仮想バネおよび第2仮想バネという2種類の仮想バネが形状モデルの頂点間に設定される。第1仮想バネは、予め固定的に関連付けが行われた各2頂点間に設定される仮想バネである。換言すれば、第1仮想バネは、コントロール点の指定とは無関係に定常的に頂点間に設定される仮想バネである。一方、第2仮想バネは、ある頂点がコントロール点に指定されたことに応じて設定される仮想バネである。第2仮想バネは、コントロール点に指定される頂点によって異なる頂点間に設定される。従って、コントロール点がまだ指定されていない段階では、第1仮想バネのみが設定され、第2仮想バネは設定されていない。本発明は、これらの第1および第2仮想バネという2種類の仮想バネを用いることによって、形状モデルを変形させる際における頂点の追従性の悪さを改善するものである。以下、第1仮想バネおよび第2仮想バネについて説明する。
図4は、形状モデルの関連付けられた頂点間に設定される第1仮想バネを示す図である。図4に示すように、形状モデル31の関連付けられた頂点間には、第1仮想バネ34〜39が設定される。なお、本実施形態においては、1組の頂点間には、直交座標系における座標成分毎に個別の複数の第1仮想バネが設定される。すなわち、1組の頂点間には、x軸方向に関する第1仮想バネおよびy軸方向に関する第1仮想バネという2種類の第1仮想バネが設定される。2種類の第1仮想バネについては後述する。
ここで、図4に示す第1仮想バネのみが設定される場合には、形状モデル31の1つの頂点をコントロール点として移動させると、移動させる頂点からの接続数が大きい頂点については、移動させる頂点に対する追従性が悪くなるという問題点がある(図32参照)。そこで、本実施形態においては、上記第1仮想バネの他に、プレイヤによってコントロール点として指定される頂点に応じて可変的に設定される第2仮想バネが用いられる。図5は、形状モデルに設定される第2仮想バネを示す図である。なお、図5においては、頂点P1がコントロール点であるとする。図5に示すように、第2仮想バネ41〜46は、コントロール点である頂点P1と形状モデルの他の頂点(頂点P2〜P4)との間に設定される。
図5に示したように、本実施形態においては、第1仮想バネに加えて第2仮想バネが設定される。この第2仮想バネは、コントロール点となる頂点の位置に応じて設定される頂点間の組が変化する、可変的に設定される仮想バネである。従って、本実施形態では、形状モデルの頂点間に対して、予め定められた固定的な関連付けが行われるとともに、コントロール点に応じて可変的に関連付けが行われるのである。
図6は、第1仮想バネおよび第2仮想バネが設定された形状モデルが変形する様子をフレーム時間毎に示す図である。図6においては、形状モデルの頂点P1がコントロール点に指定され、頂点P1が移動されることによって形状モデルが変形する様子を説明する。図6に示す第1フレームは、形状モデルが変形する直前のフレームである。プレイヤは、この第1フレームから第2フレームまでの間に、頂点P1をコントロール点に指定し、直交座標系のx軸方向に平行な方向に位置Paまで頂点P1を移動するものとする(図6に示す点線矢印参照)。
コントロール点の移動が行われた場合、ゲーム装置1は、各フレームを表示する間の処理において、(1)コントロール点の位置決定処理、(2)各仮想バネに生じる力の計算処理、(3)各頂点が受ける力の計算処理、(4)各頂点の位置決定処理という処理を順に行う。(1)コントロール点の位置決定処理は、プレイヤによって入力された位置に従ってコントロール点の位置を決定する処理である。(2)各仮想バネに生じる力の計算処理は、仮想バネの伸び(その時点における仮想バネの長さと基準状態における当該仮想バネの長さとの差分)に基づいて、仮想バネが頂点に与える力を計算する処理である。(3)各頂点が受ける力の計算処理は、(2)の処理で計算された各仮想バネによる力に基づいて、各頂点が各仮想バネから受ける力を計算する処理である。(4)各頂点の位置決定処理は、(3)の処理で計算された各頂点が受ける力に基づいて、各頂点の新たな位置を決定する処理である。以下の第2フレーム以降においては、上記(1)〜(4)の処理が各フレーム間で行われる。
第2フレームにおける各頂点の位置を決定する処理において、ゲーム装置1は、まず、プレイヤによる入力位置を検出することによってコントロール点の位置を決定する(上記(1)の処理)。図6の例では、プレイヤによって頂点P1が位置Paまで移動させる操作が行われるので、プレイヤによる入力位置として位置Paが検出され、コントロール点の位置は位置Paに決定される。つまり、頂点P1の位置は位置Paに決定される。
次に、ゲーム装置1は、各仮想バネに生じる力をその時点における各頂点の位置に基づいて決定する(上記(2)の処理)。ここで、その時点における各頂点の位置とは、コントロール点については第2フレームにおいて検出された位置であり、その他の頂点については前のフレームで決定された位置である。つまり、頂点P1については、新たに検出された位置(位置Pa)が現在の位置として用いられるが、その他の頂点P2〜P4については、第1フレームで決定(表示)された位置が現在の位置として用いられる。従って、第2フレームにおいては、頂点P1が前のフレームから移動しているので、頂点P1と頂点P2との間の第1仮想バネには仮想の力が生じるものとして処理される。さらに、頂点P1と各頂点P2〜P4との間の第2仮想バネにも仮想の力が生じるものとして処理される。
さらに、ゲーム装置1は、仮想バネに生じた力に基づいて各頂点が仮想バネから受ける力を算出し(上記(3)の処理)、算出した力に基づいてコントロール点以外の各頂点の位置を決定する(上記(4)の処理)。第2フレームにおいては、頂点P1と頂点P2との間の第1仮想バネの影響によって頂点P2が移動される。さらに、頂点P1と各頂点P2〜P4との間の第2仮想バネの影響によって頂点P2〜P4が移動される。従って、第2フレームにおいて、全ての頂点について移動が開始されている。
図6に示したように、第2仮想バネを設定することによって、コントロール点からの接続数が大きい頂点であっても、コントロール点が移動されたフレームから移動が開始されることになる。つまり、コントロール点の移動が開始された直後に、コントロール点の移動による影響が形状モデルの全体に伝わるので、コントロール点からの接続数が大きい頂点の追従性を向上することができる。
なお、図4および図5に示したように、本実施形態においては、1組の関連付けられた2頂点間には、形状モデルが配置される直交座標系の座標軸(x軸およびy軸とする)の各方向に関する2つの仮想バネが設定される。1つはx軸方向に関する仮想バネ(x方向仮想バネ)であり、もう1つはy軸方向に関する仮想バネ(y方向仮想バネ)である。図4においては、頂点P1と頂点P2との間にx方向仮想バネ34が設定され、頂点P2と頂点P3との間にx方向仮想バネ36が設定され、頂点P3と頂点P4との間にx方向仮想バネ38が設定される。また、頂点P1と頂点P2との間にy方向仮想バネ35が設定され、頂点P2と頂点P3との間にy方向仮想バネ37が設定され、頂点P3と頂点P4との間にy方向仮想バネ39が設定される。また、図5においては、頂点P1と頂点P2との間にx方向仮想バネ41が設定され、頂点P1と頂点P3との間にx方向仮想バネ43が設定され、頂点P1と頂点P4との間にx方向仮想バネ45が設定される。また、頂点P1と頂点P2との間にy方向仮想バネ42が設定され、頂点P1と頂点P3との間にy方向仮想バネ44が設定され、頂点P1と頂点P4との間にy方向仮想バネ46が設定される。
x方向仮想バネは、それが設定される2頂点間のx軸方向に関する距離に応じて仮想の力を発生する仮想バネである。x方向仮想バネによって発生する仮想の力の向きは、x軸方向である。一方、y方向仮想バネは、それが設定される2頂点間のy軸方向に関する距離に応じて仮想の力を発生する仮想バネである。y方向仮想バネによって発生する仮想の力の向きは、y軸方向である。また、x方向仮想バネとy方向仮想バネとは互いに独立である。すなわち、x方向仮想バネにより生じる仮想の力は、当該x方向仮想バネが設定される2頂点間のy軸方向に関する距離とは無関係であり、y方向仮想バネにより生じる仮想の力は、当該y方向仮想バネが設定される2頂点間のx軸方向に関する長さとは無関係である。
以上のように、本実施形態においては、1組の頂点の間に、直交座標系の座標軸方向を向く互いに独立した2つの仮想バネが設定される。従って、x軸方向に関する仮想バネの力の計算と、y軸方向に関する仮想バネの力の計算とを別々に行うことができる。つまり、本実施形態においては、2頂点間の距離を算出する計算が不要であるので、計算処理が重い2乗計算を行う必要がない。それ故、仮想バネを用いた計算が簡易になり、ゲーム装置1の処理負担が軽減される。
また、本実施形態においては、1組の頂点間に2つの仮想バネが設定されることによって、x軸方向に関するバネの伸びと、y軸方向に関するバネの伸びとは独立して処理される。例えば図3A〜図3Dに示す形状モデル31において頂点P1がx軸に平行な方向に移動された場合、x方向仮想バネは伸縮するが、y方向仮想バネは伸縮しない。その結果、形状モデル31のx軸方向に関する長さは伸縮するが、y軸方向に関する長さは変化しない。そのため、本実施形態においては、形状モデルが図3A〜図3Dに示すような、1本の線状の形状である場合でも、元の形状をある程度保ったままで形状モデルを伸縮変形させることができる(図3A〜図3D参照)。
一方、従来のように頂点間を直接接続する仮想バネを設定する方法では、形状モデルが元の形状を保つことができない場合がある。図7は、従来の方法において形状モデルの頂点を移動させた場合における形状モデルの変形の様子を示す図である。図7に示す形状モデル31’の頂点P1を図3Aと同様、x軸方向に移動させた場合、従来のように頂点間を直接接続するように仮想バネを設定する方法では、頂点P2〜P4は、y軸方向にも移動してしまう。その結果、形状モデル31’がy軸方向にひしゃげた形状となってしまい、元の形状が著しく変化してしまうおそれがある。そのため、従来の方法では、例えばP1とP3との間やP2とP4との間にさらに仮想バネを設定しなければならなかった。これに対して、本実施形態においては、1組の頂点間に互いに独立した2つの仮想バネを設定することによって、図7に示すような極端な変形を防止することができる。
以下、本実施形態に係る画像処理プログラムによって実行される処理の詳細について説明する。まず、当該処理を実行する際にゲーム装置1において用いられる変数およびデータについて説明する。図8は、ゲーム装置1における処理において用いられる変数を説明するための図である。図8においては、4つの頂点P1〜P4から構成される形状モデルを例にとって説明する。また、図面の煩雑化を避けるため、頂点P3に関する変数のみを記載する。図8に示されるように、当該処理においては、以下の変数が用いられる。なお、以下において、iは1〜nの整数である(nは形状モデルの頂点数)。
頂点P(i)の位置のx座標値:X(i)
頂点P(i)の位置のy座標値:Y(i)
頂点P(i+1)と頂点P(i)とのx軸方向に関する距離:ΔX(i)
頂点P(i+1)と頂点P(i)とのy軸方向に関する距離:ΔY(i)
コントロール点と頂点P(i)とのx軸方向に関する距離:ΔXc(i)
コントロール点と頂点P(i)とのy軸方向に関する距離:ΔYc(i)
頂点P(i)が受ける仮想の力のx座標成分:Fx(i)
頂点P(i)が受ける仮想の力のy座標成分:Fy(i)
頂点P(i)の速度のx座標成分:Vx(i)
頂点P(i)の速度のy座標成分:Vy(i)
以下、本実施形態に係るゲーム装置1において実行される処理の流れを説明する。図9は、ゲーム装置1において実行されるゲーム処理の流れを示すフローチャートである。ゲーム装置1の電源が投入されると、ゲーム装置1のCPUコア21は、図示しないブートROMに記憶されている起動プログラムを実行し、WRAM22等の各ユニットが初期化される。そして、カートリッジ17に格納されたプログラムがWRAM22に読み込まれ、CPUコア21によって当該プログラムの実行が開始される。図9に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。
図9では、まず、ステップ10(図では「ステップ」を単に「S」と略す。)およびステップ11において、変形の対象となる形状モデルが作成される。上述したように、本実施形態においては、形状モデルはプレイヤの操作によって作成される。具体的には、プレイヤがタッチパネル13上に描いた軌跡に応じた形状の形状モデルが作成される。
ステップ10においては、入力検出処理が行われる。入力検出処理は、プレイヤによってタッチパネル13上に描かれた軌跡の入力を検出する処理である。以下、入力検出処理を図10〜図13を用いて説明する。
まず、入力検出処理の概要を図10〜図12を用いて説明する。図10は、プレイヤによってタッチパネル13上に描かれた軌跡の一例を示す図である。ここでは、プレイヤが図10に示すような波形の図形51をタッチパネル13に対して入力した場合を例として説明する。図11は、図10に示す入力に対してゲーム装置1が読み取った入力座標を示す図である。入力検出処理においては、例えば図10に示すような図形51がプレイヤによって入力された場合、図11に示す各入力点Tp1〜Tp9の座標(入力座標)がゲーム装置1によって検出される。ゲーム装置1によって検出された入力座標は、入力座標リストとしてWRAM22に記憶される。図12は、入力座標リストの一例を示す図である。入力座標リストは、プレイヤによってタッチパネル13上に入力された軌跡を表すデータである。図12に示すように、入力座標リストには、プレイヤによってタッチパネル13に対して入力された位置を示す入力座標が格納される。なお、当該入力座標は、Tp1,Tp2,…,Tpm(mは1以上の整数)のように、プレイヤの入力順に格納される。また、i番目に入力された頂点Tp(i)の入力座標は、Xt(i)と表される。入力検出処理は、タッチパネル13からの入力座標に基づいて図12に示すような入力座標リストを作成する処理である。
図13は、図9に示す入力検出処理の詳細な処理の流れを示すフローチャートである。入力検出処理においては、まず、ステップ20において、上記入力座標リストの内容がクリア(初期化)される。続くステップ21において、タッチパネル13に対する入力があったか否かが判定される。本実施形態では、所定時間間隔毎にプレイヤによるタッチパネル13への入力位置が検出される。すなわち、ステップ21が所定時間間隔で実行される。
ステップ21における判定において、タッチパネル13に対する入力がないと判定された場合、ステップ21の処理が再度行われる。すなわち、タッチパネル13に対する入力があるまでステップ21の処理が所定時間間隔で行われる。一方、ステップ21における判定において、タッチパネル13に対する入力があったと判定された場合、ステップ22の処理が行われる。すなわち、ステップ22においては、ステップ21で検出された入力座標がWRAM22内の入力座標リストに仮登録される。当該入力座標は、入力座標リストに格納される入力座標がプレイヤの入力順となるように、既に入力座標リストに格納されている入力座標の後に追加される。ここで、仮登録と呼んでいるのは、ステップ21で検出された入力座標は、入力検出処理中における後述する処理によって入力座標リストから削除される可能性があるからである。
ステップ22の次のステップ23において、本登録された入力座標が入力座標リストに格納されているか否かが判定される。具体的には、ステップ21で検出された入力座標の前に、入力座標リストに既に格納されている入力座標(本登録された入力座標)があるか否かが判定される。ステップ23の判定において、本登録された入力座標が入力座標リストに格納されていない場合、ステップ24の処理が行われる。すなわち、ステップ24において、ステップ21で検出された入力座標が入力座標リストに本登録される。なお、「本登録する」とは、以降の入力検出処理によって入力座標を削除しないという意味である。ステップ24の後、ステップ29の処理が行われる。
一方、ステップ23の判定において、本登録された入力座標が入力座標リストに格納されている場合、ステップ25の処理が行われる。すなわち、ステップ25の処理において、仮登録中の入力座標(ステップ21で検出された入力座標)と、直前に本登録された入力座標との距離が算出される。続くステップ26において、ステップ25で算出した距離が予め定められた所定距離以上であるか否かが判定される。ステップ26の判定において、ステップ25で算出した距離が予め定められた所定距離以上であると判定された場合、ステップ27の処理が行われる。すなわち、ステップ27において、ステップ21で検出された入力座標が入力座標リストに本登録される。ステップ27の後、ステップ29の処理が行われる。一方、ステップ26の判定において、ステップ25で算出した距離が予め定められた所定距離以上でない(すなわち、所定距離よりも小さい)と判定された場合、ステップ28の処理が行われる。すなわち、ステップ28においては、ステップ21で検出された入力座標が入力座標リストから削除される。ステップ28の後、ステップ29の処理が行われる。
以上のように、本実施形態においては、タッチパネル13への入力が行われている際において、前回検出された入力位置と今回検出された入力位置との距離が所定距離よりも小さければ、今回検出された入力位置は削除される(ステップ28)。従って、プレイヤによる入力軌跡を示す入力座標リストから不要なデータを削除することができるので、入力座標リストのデータ量を低減することができる。
ステップ29においては、入力座標リストに格納されている各入力座標の位置を結んだ線画が第1LCD11に表示される。ステップ29によって、プレイヤは、タッチパネル13上に自身が入力した軌跡を目で確認することができる。続くステップ30において、入力の受け付けを終了するか否かが判定される。ステップ30の判定は、例えば、入力の受け付けを終了する旨の指示がプレイヤによって行われたか否か、あるいは、入力座標が最初に検出されてから所定時間が経過したか否か等によって判定することができる。ステップ30の判定において、入力の受け付けを終了しないと判定された場合、ステップ21の処理に戻る。以降、入力の受け付けを終了するまでステップ21〜29の処理が繰り返される。一方、ステップ30の判定において、入力の受け付けを終了すると判定された場合、CPUコア21は図13に示す入力検出処理を終了する。以上の入力検出処理によって、入力座標リストが作成される。
図9の説明に戻り、ステップ10の次のステップ11において、モデル作成処理が行われる。モデル作成処理は、入力座標リストにより示される各座標点の少なくとも一部の座標点を頂点とするような形状モデルを作成する処理である。なお、ステップ10で作成された入力座標リストの全ての入力座標の位置を頂点として形状モデルを作成してもよいが、入力座標リストに格納されている入力座標の数(形状モデルの頂点数)が多い場合には、後で行われる形状モデルを変形するための処理の処理量が大きくなってしまう。そこで、本実施形態では、モデル作成処理において、入力座標リストに格納されている入力座標のうちのいくつかを間引くことによって、入力座標リストにより示される軌跡の形状を簡易にする。
図14は、図9に示すモデル作成処理の詳細な処理の流れを示すフローチャートである。モデル作成処理においては、まず、ステップ40において、WRAM22に記憶される頂点リストの内容がクリアされる。頂点リストは、形状モデルの各頂点の位置を示すデータである。つまり、頂点リストは、形状モデルの形状を示す。図15は、頂点リストの一例を示す図である。頂点リストには、形状モデルの頂点の位置を示す座標が頂点毎に格納される。具体的には、頂点P(i)に対して、当該頂点の位置のx座標値X(i)およびy座標値Y(i)が格納される。なお、図15に示す左側の列の「C」は、コントロール点を示すフラグである。図15に示す頂点リストは、コントロール点は頂点P1であることを示す。ステップ40においては、当該フラグも含め頂点リストの内容が全て消去される。
ステップ40の次のステップ41において、ステップ10で作成された入力座標リストに格納されている入力座標のうちの連続する3つの入力座標が選出される。ここで選出されるのは、その時点の入力座標リストにおいて最初から3番目までに格納されている3つの入力座標である。続くステップ42において、ステップ41で選出された3つの入力座標を入力順に結んだ2つの線分のなす角度Θが算出される。続くステップ43において、ステップ42で算出されたΘが、次の式(1)を満たすか否かが判定される。
(180−a)≦Θ≦(180+a)…(1)
ここで、aは、予め定められた所定のしきい値である。ステップ43は、上記2つの線分がほぼ直線と見なすことができるか否かを判定するための処理である。すなわち、ステップ42で算出されたΘが上式(1)を満たす場合、当該2つの線分はほぼ直線と見なすことができ、逆に、ステップ42で算出されたΘが上式(1)を満たさない場合、当該2つの線分はほぼ直線と見なすことはできない。
ステップ43の判定において、ステップ42で算出されたΘが上式(1)を満たすと判定された場合、ステップ44の処理が行われる。すなわち、ステップ44において、ステップ41で選出された3つの入力座標のうちの中間の入力座標が入力座標リストから削除される。ステップ44は、上記2つの線分をほぼ直線と見なし、1本と線分として取り扱うための処理である。ステップ44の後、ステップ47の処理が行われる。一方、ステップ43の判定において、ステップ42で算出されたΘが上式(1)を満たすと判定された場合、ステップ45およびステップ46の処理が行われる。すなわち、ステップ45において、ステップ41で選出された3つの入力座標のうちの最初の入力座標がWRAM22に記憶されている頂点リストに登録される。当該入力座標は、頂点リストに格納される座標がプレイヤの入力順となるように、既に頂点リストに格納されている座標の後に追加される。さらにステップ46において、ステップ45で頂点リストに登録した入力座標が入力座標リストから削除される。1つの入力座標を頂点リストに2度登録することを防止するためである。ステップ46の後、ステップ47の処理が行われる。
ステップ47においては、CPUコア21は、入力座標リストに格納されている全ての入力座標について処理が終了したか否かを判定する。具体的には、当該全ての入力座標がステップ41で選出されたことがあるか否かを判定する。ステップ47の判定において、全ての入力座標について処理が終了していないと判定された場合、ステップ41の処理が行われる。以降、全ての入力座標について処理が終了するまで、ステップ41〜47の処理が繰り返される。一方、ステップ47の判定において、全ての入力座標について処理が終了していないと判定された場合、ステップ48の処理が行われる。すなわち、ステップ48の判定において、頂点リストに座標が登録されている各頂点と当該各頂点を順に結んだ線分とで構成される形状モデルが第1LCD11に表示される。ステップ48の後、CPUコア21はモデル作成処理を終了する。
以上のモデル作成処理によって、入力座標リストの入力座標により示される点から形状モデルの頂点とすべき点が抽出される。例えば、図11に示される各点から頂点が抽出されることによって、図8に示される形状モデルが作成される。すなわち、形状モデルの形状を示す頂点リスト(図15)がWRAM22に記憶される。なお、他の実施の形態においては、ステップ47とステップ48との間において、その時点で入力座標リストに残っている全ての入力座標を頂点リストに登録するようにしてもよい。図14に示す処理では、入力座標リストの最後および最後から2番目の入力座標が頂点リストに登録されないからである。
再び図9の説明に戻り、ステップ11の次のステップ12において、頂点関連付処理が行われる。頂点関連付処理とは、頂点リストにより示される形状モデルの頂点を他の頂点と関連付ける処理である。なお、本実施形態において、2頂点の関連付けは、関連付けが行われる2頂点を後述する関連付リストに格納することによって行われる。頂点関連付処理は、上記第1仮想バネを設定する2頂点の組を第1関連付リスト(図17)に格納することによって第1関連付リストを作成する処理である。なお、本実施形態では、各頂点は、頂点リストに格納された順番に関して前後の頂点に関連付けられる。
図16は、図9に示す頂点関連付処理の詳細な処理の流れを示すフローチャートである。頂点関連付処理においては、まず、ステップ50において、WRAM22に記憶される第1関連付リストの内容がクリアされる。第1関連付リストは、第1仮想バネが設定される各頂点間およびその基準距離を示すデータである。図17は、第1関連付リストの一例を示す図である。第1関連付リストには、第1仮想バネが設定される2頂点の組(図17に示すリストの左側の2列)と、その2頂点間のx軸方向に関する距離(図17に示すリストの右から2列目)およびy軸方向に関する距離(図17に示すリストの右端の列)とが組毎に格納される。また、頂点P(i+1)と頂点P(i)とのx軸方向に関する距離はΔX(i)で表され、頂点P(i+1)と頂点P(i)とのy軸方向に関する距離はΔY(i)で表される。
ステップ51において、前述のステップ11で作成された頂点リスト(図15参照)から連続する2つの頂点が選出される。ステップ51では、第1仮想バネが設定される2頂点の組であって、ステップ51でまだ選出されていない組が選出される。続くステップ52において、ステップ51で選出した2頂点について、当該2頂点間の距離が座標成分毎に分けて算出される。具体的には、ステップ51で選出された2頂点を頂点P(i)および頂点P(i+1)とすると、当該2頂点間の距離のx座標成分ΔX(i)およびy座標成分ΔY(i)は、次の式(2)によって算出される。
ΔX(i)=X(i)−X(i+1)
ΔY(i)=Y(i)−Y(i+1)…(2)
ここで、X(i)、X(i+1)、Y(i)、およびY(i+1)は、頂点リストを参照することによって得ることができる。なお、ステップ52で算出される距離(ΔX(i),ΔY(i))は、形状モデルが基準状態にある場合の当該2頂点間の距離、すなわち、基準距離である。さらに、ステップ53において、CPUコア21は、ステップ52で算出された基準距離(ΔX(i),ΔY(i))を第1関連付リスト(図17)に登録する。
ステップ53の次のステップ54において、第1仮想バネが設定される2頂点の全ての組について基準距離を算出したか否かが判定される。基準距離を算出していない組がある場合、処理はステップ51に戻り、全ての組について基準距離を算出するまでステップ51〜53の処理が繰り返される。一方、全ての組について基準距離を算出した場合、CPUコア21は、頂点関連付処理を終了する。この頂点関連付処理によって、第1関連付リスト(図17)が作成される。
再び図9の説明に戻り、上記ステップ10および11の処理によって形状モデルが作成され、ステップ12の処理によって形状モデルの頂点間の関連付けが行われる。これらのステップ10〜12の完了によって、形状モデルの変形を行うための準備処理が完了したこととなる。なお、他の実施形態においては、ステップ10および11の処理を省略し、予め用意された形状モデルを用いて以降のステップ13〜17を行うようにしてもよい。さらに、ステップ10〜12の処理を省略し、予め関連付けが行われた形状モデルを用いて以降のステップ13〜17を行うようにしてもよい。以降のステップ13〜17は、プレイヤが指定したコントロール点を基準として形状モデルが変形する様子を表現するための処理である。
ステップ12の次のステップ13においては、タッチパネル13への入力があったか否かが判定される。ここでの入力は、プレイヤがコントロール点を指定するための入力である。ステップ13の判定において、タッチパネル13に対する入力がないと判定された場合、ステップ13の処理が再度行われる。すなわち、タッチパネル13に対する入力があるまでステップ13の処理が所定時間間隔で行われる。一方、ステップ13における判定において、タッチパネル13に対する入力があったと判定された場合、ステップ14の処理が行われる。すなわち、ステップ14においては、コントロール点設定処理が行われる。コントロール点設定処理は、プレイヤによる指定に基づいてコントロール点を設定する処理である。
図18は、図9に示すコントロール点設定処理の詳細な処理の流れを示すフローチャートである。コントロール点設定処理においては、まず、ステップ60において、プレイヤによって指定された座標が検出される。ここで検出される座標は、直前のステップ13で入力された座標である。続くステップ61において、ステップ60で検出された座標と、前述のステップ11で作成された頂点リスト(図15)に格納されている各頂点の座標との距離が頂点毎に算出される。続くステップ62において、ステップ61で算出した距離が最も小さい頂点がコントロール点に設定される。具体的には、頂点リストにおける当該頂点にフラグ(図15に示す「C」)が設定される。以上のステップ60〜62の完了によってCPUコア21はコントロール点設定処理を終了する。
再び図9の説明に戻り、ステップ14の次のステップ15において、コントロール点関連付処理が行われる。コントロール点関連付処理とは、コントロール点として指定された頂点と形状モデルの全頂点とを関連付ける処理である。コントロール点関連付処理は、上記第2仮想バネを設定する2頂点の組を第2関連付リスト(図20)に格納することによって第2関連付リストを作成する処理である。
図19は、図9に示すコントロール点関連付処理の詳細な処理の流れを示すフローチャートである。コントロール点関連付処理においては、まず、ステップ70において、第2関連付リストがクリアされる。第2関連付リストは、第2仮想バネが設定される各頂点間およびその基準距離を示すデータである。図20は、第2関連付リストを示す図である。第2関連付リストには、第2仮想バネが設定される2頂点の組(図20に示すリストの左側の2列)と、その2頂点間のx軸方向に関する距離(図20に示すリストの右から2列目)およびy軸方向に関する距離(図17に示すリストの右端の列)とが2頂点間毎に格納される。また、コントロール点Cと頂点P(i)とのx軸方向に関する距離はΔXc(i)で表され、コントロール点Cと頂点P(i)とのy軸方向に関する距離はΔYc(i)で表される。なお、本実施形態においては、コントロール点である頂点とそれと同一の頂点との間にも関連付けが行われるが、コントロール点である頂点とそれと同一の頂点との間の関連付けはなくてもよい。
ステップ71においては、頂点リストから1つの頂点の座標が選出される。ステップ71では、まだ選出されていない頂点であって、頂点リストに格納されている順番が最も若い頂点が選出される。続くステップ72において、ステップ71で選出した頂点とコントロール点との間の距離が座標成分毎に分けて算出される。具体的には、ステップ71で選出された頂点を頂点P(i)と頂点P(i+1)とすると、当該頂点とコントロール点との間の距離のx座標成分ΔXc(i)およびy座標成分ΔYc(i)は、次の式(3)によって算出される。
ΔXc(i)=Xc−X(i)
ΔYc(i)=Yc−Y(i)…(3)
ここで、Xcはコントロール点である頂点のx座標値であり、Ycは当該頂点のy座標値である。従って、Xc、X(i)、Yc、およびY(i)は、頂点リストを参照することによって得ることができる。なお、ステップ72で算出される距離(ΔXc(i),ΔYc(i))は、形状モデルが基準状態にある場合におけるコントロール点と各頂点との間の距離、すなわち、基準距離である。ここでは、コントロール点と各頂点との間の基準距離を特にコントロール点間基準距離と呼ぶ。次に、ステップ73において、CPUコア21は、ステップ72で算出されたコントロール点間基準距離(ΔXc(i),ΔYc(i))を第2関連付リスト(図20)に登録する。
ステップ73の次のステップ74において、頂点リストに格納されている全ての頂点についてコントロール点間基準距離を算出したか否かが判定される。コントロール点間基準距離を算出していない頂点がある場合、処理はステップ71に戻り、全ての頂点についてコントロール点間基準距離を算出するまでステップ71〜73の処理が繰り返される。一方、全ての頂点についてコントロール点間基準距離を算出した場合、CPUコア21は、コントロール点間関連付処理を終了する。
再び図9の説明に戻り、ステップ15の次のステップ16において、頂点移動処理が行われる。頂点移動処理は、コントロール点の移動に応じた形状モデルの各頂点の移動先を、仮想バネを用いて決定する処理である。
図21は、図9に示す頂点移動処理の詳細な処理の流れを示すフローチャートである。頂点移動処理においては、まず、ステップ80において、バネ力リストがクリアされる。図22は、バネ力リストを示す図である。バネ力リストには、形状モデルの各頂点が仮想バネから受ける力が座標軸成分毎に分けて格納される。バネ力リストにおいては、頂点P(i)が受ける力のx座標成分はFx(i)で表され、y座標成分はFy(i)で表される。
ステップ81において、コントロール点が移動したか否かが判定される。具体的には、CPUコア21は、タッチパネル13への入力が行われた位置を示す座標をタッチパネル13から取得する。そして、取得した座標が、前回のステップ81において取得した座標と同じであるか否かを判定する。なお、ステップ81の処理が最初に行われる場合には、前回のステップ81において取得した座標に代えて、直前のステップ13において検出される座標を用いる。また、タッチパネル13への入力が検出されなかった場合、コントロール点が移動していないと判定する。
ステップ81の判定において、コントロール点が移動していないと判定された場合、ステップ82および83の処理がスキップされ、ステップ84の処理が行われる。一方、ステップ81の判定において、コントロール点が移動したと判定された場合、ステップ82および83の処理が行われる。すなわち、ステップ82において、コントロール点の移動量(ΔXd,ΔYd)が算出される。コントロール点の移動量は、直前のステップ81でタッチパネル13から取得された座標と、その前のステップ81で取得した座標とを用いて算出される。具体的には、直前のステップ81でタッチパネル13から取得された座標を(Xd1,Yd1)とし、その前のステップ81で取得した座標を(Xd2,Yd2)とすると、コントロール点の移動量(ΔXd,ΔYd)は、次の式(4)によって算出される。
ΔXd=Xd1−Xd2
ΔYd=Yd1−Yd2…(4)
次に、ステップ83において、コントロール点に設定されている頂点の座標が更新される。具体的には、頂点リスト内の当該頂点の座標が更新される。
上記ステップ83で説明したように、本実施形態では、コントロール点である頂点の位置は、プレイヤによる指定によって決定され、仮想バネの影響を受けない。従って、プレイヤは、コントロール点の位置を操作することによって形状モデルを容易に移動させることができる。
ステップ84においては、x方向に関する位置決定処理が行われる。x方向に関する位置決定処理は、形状モデルの各頂点のx軸方向に関する位置を決定するための処理である。当該処理においては、x方向仮想バネが用いられる。なお、x方向に関する位置決定処理においては、「x軸方向に関する第1仮想バネ」を「x方向第1仮想バネ」と呼び、「x軸方向に関する第2仮想バネ」を「x方向第2仮想バネ」と呼ぶ。
図23は、図21に示すx方向に関する位置決定処理の詳細な処理の流れを示すフローチャートである。x方向に関する位置決定処理においては、まず、ステップ90において、第1力計算処理が行われる。第1力算出処理は、頂点間に設定されるx方向第1仮想バネが各頂点に加える力を算出する処理である。
図24は、図23に示す第1力計算処理の詳細な処理の流れを示すフローチャートである。第1力計算処理においては、まず、ステップ100において、頂点リストから連続する2つの頂点が選出される。ステップ100では、x方向第1仮想バネが設定される2頂点の組であって、まだ選出されていない組が選出される。なお、ステップ100において選出された頂点のうちの頂点リストにおける順番が若い方の頂点を第1頂点と呼び、他方の頂点を第2頂点と呼ぶ。
ステップ101においては、ステップ100で選出された2頂点間のx軸方向に関する距離が算出される。具体的には、第1頂点P(i)と第2頂点P(i+1)との間のx軸方向に関する距離ΔX(i)’は、以下の式(5)によって算出することができる。
ΔX(i)’=X(i)−X(i+1)…(5)
ここで、X(i)およびX(i+1)は、頂点リスト(図15)を参照することによって得ることができる。
ステップ102においては、第1頂点P(i)と第2頂点P(i+1)との間のx軸方向に関する現在の頂点間距離と基準距離との差分が算出される。具体的には、当該頂点間距離ΔX(i)’と当該基準距離ΔX(i)との差分D(i)は、D(i)=ΔX(i)’−ΔX(i)として算出される。なお、この基準距離ΔX(i)は、上記第1関連付リストを参照することによって得ることができる。
ステップ103においては、ステップ100で選出された2頂点間に設定されるx方向第1仮想バネから上記第1頂点が受ける力が算出される。ここで、頂点間に設定された仮想バネから頂点が受ける力は、仮想バネの「バネの力」(上記差分D(i)に比例する力)と、仮想バネに働く減衰力(頂点の速度Vx(i)に比例する力)との和である。従って、頂点P(i)と頂点P(i+1)との間に設定される第1仮想バネから第1頂点が受ける力Fx(i)は、以下の式(6)によって算出することができる。
Fx(i)=−kx×D(i)−dx×Vx(i)…(6)
ここで、kxはx方向第1仮想バネのバネ係数であり、dxはx方向第1仮想バネの減衰係数である。kxおよびdxは、予め定められた定数である。本実施形態では、x方向第1仮想バネのバネ係数および減衰係数は全て同じ値(kx、dx)であるとする。なお、他の実施の形態においては、仮想バネ毎にバネ係数の値を異ならせるようにしてもよい。また、本実施形態では、バネの力(上式(6)の右辺の第1項)に加えてバネの減衰力(右辺の第2項)をも考慮して、仮想バネから頂点が受ける力を算出したが、他の実施形態では、減衰力を無視してバネの力のみから当該力を算出するようにしてもよい。
また、上式(6)におけるVx(i)は、頂点P(i)の速度である。形状モデルの各頂点の速度は、速度リストとしてWRAM22に格納される。図25は、速度リストを示す図である。速度リストには、形状モデルの各頂点の速度が座標軸成分毎に分けて格納される。速度リストにおいては、頂点P(i)の速度のx座標成分はVx(i)で表され、y座標成分はVy(i)で表される。
図24の説明に戻り、上記ステップ103で算出された力は、バネ力リストに格納される。すなわち、ステップ103で算出された力Fx(i)が頂点P(i)と対応付けられてバネ力リストに格納される。
ステップ104においては、ステップ100で選出された2頂点間に設定されるx方向第1仮想バネから上記第2頂点が受ける力が算出される。具体的には、頂点P(i)と頂点P(i+1)との間に設定される第1仮想バネから第2頂点が受ける力Fx(i+1)は、以下の式(7)によって算出することができる。
Fx(i+1)=−kx×(ΔX(i)’−ΔX(i))−dx×Vx(i+1)…(7)
なお、上記ステップ104で算出された力は、既に格納されているバネ力リストの内容(Fx(i))に足し合わされ、足し合わされた結果がバネ力リストに新たなFx(i)として格納される。ステップ103および104の処理によって、第1力算出処理の終了時には、頂点に接続される全ての第1仮想バネから当該頂点が受ける力の和がバネ力リストに格納されることとなる。
ステップ105においては、第1仮想バネが設定される頂点の組の全てについて、頂点が受ける力を算出したか否かが判定される。頂点が受ける力を算出していない組がある場合、全ての組について当該力を算出するまでステップ101〜104の処理が繰り返される。一方、全ての組について当該力を算出した場合、CPUコア21は、図24に示す第1力算出処理を終了する。
図23の説明に戻り、ステップ90の次のステップ91において、第2力算出処理が行われる。第2力算出処理は、コントロール点と頂点との間に設定されるx方向第2仮想バネが各頂点に加える力を算出する処理である。
図26は、図23に示す第2力計算処理の詳細な処理の流れを示すフローチャートである。第2力計算処理においては、まず、ステップ110において、頂点リストから1つの頂点が選出される。ステップ110では、まだ選出されていない頂点であって、頂点リストに格納されている順番が最も若い頂点が選出される。
ステップ111においては、ステップ110で選出された頂点とコントロール点との間のx軸方向に関する距離が算出される。具体的には、頂点P(i)とコントロール点との間のx軸方向に関する距離ΔXc(i)’は、以下の式(8)によって算出することができる。
ΔXc(i)’=Xc(i)−Xc…(8)
ここで、Xc(i)は、第2関連付リストを参照することによって得ることができる。また、Xcは、コントロール点である頂点のx座標値であるので、頂点リスト(図15)を参照することによって得ることができる。
ステップ112においては、ステップ110で選出された頂点とコントロール点との間のx軸方向に関する現在の頂点間距離と基準距離との差分が算出される。具体的には、当該頂点間距離ΔXc(i)’と当該基準距離ΔXc(i)との差分Dc(i)は、Dc(i)=ΔXc(i)’−ΔXc(i)として算出される。なお、この基準距離ΔXc(i)は、上記第2関連付リストを参照することによって得ることができる。
ステップ113においては、ステップ110で選出された頂点に設定されるx方向第2仮想バネから当該頂点が受ける力が算出される。ここで、上述したように、頂点間に設定された仮想バネから頂点が受ける力は、仮想バネの「バネの力」と、仮想バネに働く減衰力との和である。従って、頂点P(i)とコントロール点との間に設定される第2仮想バネから頂点P(i)が受ける力Fx(i)’は、以下の式(9)によって算出することができる。
Fx(i)’=−kx’×Dc(i)−dx×Vx(i)…(9)
ここで、kx’はx方向第2仮想バネのバネ係数であり、予め定められた定数である。なお、本実施形態では、x方向第2仮想バネのバネ係数および減衰係数は全て同じ値(kx’、dx)であるとするが、他の実施の形態においては、仮想バネ毎にバネ係数の値を異ならせるようにしてもよい。
次に、ステップ114において、ステップ110で選出された頂点がそれに設定される各仮想バネから受ける力の総和が算出される。具体的には、CPUコア21は、ステップ113で算出された力を、既に格納されているバネ力リストの内容(ステップ103および104で格納された内容)に足し合わせる。そして、足し合わせた結果をバネ力リストに格納する。これによって、バネ力リストの内容は、その頂点に接続される全ての第1仮想バネおよび第2仮想バネから当該頂点が受ける力の総和を示すことになる。
ステップ114の次のステップ115においては、頂点リストに格納されている全ての頂点をステップ110で選出したか否かが判定される。選出していない頂点がある場合、処理はステップ110に戻り、全ての頂点が選出されるまでステップ111〜114の処理が繰り返される。一方、全ての頂点が選出された場合、CPUコア21は、第2力算出処理を終了する。
図23の説明に戻り、以上のステップ90および91によって、各頂点が受ける力(x軸方向を向く力)の和が算出されてバネ力リストに格納される。そこで、ステップ91の次のステップ92においては、x座標決定処理が行われる。x座標更新処理は、頂点が仮想バネから受ける力に基づいて、各頂点を移動させるべき位置のx座標を決定する処理である。
図27は、図23に示すx座標決定処理の詳細な処理の流れを示すフローチャートである。x座標決定処理においては、まず、ステップ120において、頂点リストからコントロール点以外の1つの頂点の座標が選出される。具体的には、ステップ120でまだ選出されていない頂点であって、頂点リストに格納されている順番が最も若い頂点が選出される。なお、コントロール点を選出しない理由は、コントロール点の位置は前述のステップ83で決定されるからである。
ステップ121においては、選出された頂点のx軸方向の加速度が算出される。頂点のx軸方向の加速度は、当該頂点が仮想バネから受ける力に基づいて算出することができる。具体的には、頂点P(i)のx軸方向の加速度Ax(i)は、頂点P(i)の質量をm(i)とすると、バネ力リストに格納されている力Fx(i)に基づいて以下の式(10)によって算出することができる。
Ax(i)=(Fx(i)−d×Vx(i)’)/m(i)…(10)
ここで、dは空気抵抗係数である。また、Vx(i)’は頂点P(i)の速度である。ただし、上式(10)で用いられるVx(i)’は、後述するステップ122において更新される前の値である。
ステップ122においては、選出された頂点のx軸方向の速度が算出される。頂点のx軸方向の速度は、ステップ121で算出された当該頂点の速度に基づいて算出することができる。具体的には、頂点P(i)のx軸方向の速度Vx(i)は、加速度Ax(i)に基づいて以下の式(11)によって算出することができる。
Vx(i)=Vx(i)’+Ax(i)×Δt…(11)
ここで、Δtは、形状モデルの表示画像を更新する時間間隔、すなわちフレーム時間である。なお、CPUコア21は、ステップ122で頂点P(i)について新たな速度が算出されると、算出された速度に速度リストの内容を更新する。
ステップ123においては、選出された頂点のx座標をステップ122で算出された速度に基づいて算出する。具体的には、頂点P(i)のx座標値X(i)は、次の式(12)に従って算出される。
X(i)=X(i)’+Vx(i)×Δt…(12)
ここで、X(i)’は、このステップ123で新たなx座標が算出される前の頂点P(i)のx座標である。X(i)’は、頂点リスト(図15)の内容を参照することによって得ることができる。CPUコア21は、ステップ123で頂点P(i)について新たなx座標が算出されると、算出されたx座標に頂点リストの内容を更新する。以上のステップ121〜123によって、ステップ120で選出された頂点のx座標が新たな位置に更新される。
ステップ124において、頂点リストに格納されている全ての頂点についてx座標を算出したか否かが判定される。x座標を算出していない頂点がある場合、処理はステップ120に戻り、全ての頂点についてx座標を算出するまでステップ120〜124の処理が繰り返される。一方、全ての頂点についてx座標を算出した場合、CPUコア21は、x座標決定処理を終了する。また、これによって図23に示すx方向に関する位置決定処理が終了する。
図21の説明に戻り、上記ステップ84のx方向に関する位置決定処理によって、形状モデルの各頂点のx軸方向に関する新たな位置(x座標)が決定される。ステップ84の次にステップ85においては、y方向に関する位置決定処理が行われる。y方向に関する位置決定処理は、形状モデルの各頂点のy軸方向に関する位置を決定するための処理である。y方向に関する位置決定処理は、x軸方向であるかy軸方向であるかの違いを除いて、上述したx方向に関する位置決定処理と同様の処理であるので、詳細な説明を省略する。
以上に示したx方向に関する位置決定処理(ステップ84)およびy方向に関する位置決定処理(ステップ85)においては、各仮想バネによって生じる仮想の力、仮想バネによって頂点に与えられる仮想の力、および、仮想の力による頂点の移動先の位置が、x軸方向およびy軸方向について独立して、つまり、座標成分毎に算出される。従って、仮想バネによって生じる仮想の力に関する計算は、向きが平行な力同士の加算によって行われるので、ステップ90および91からも明らかなように、本実施形態における処理では2乗計算や平方根計算が必要でないことがわかる。また、移動先の各頂点の位置も、座標成分毎の仮想の力を用いて座標成分毎に計算されるので、2乗計算や平方根計算を用いずに計算することができる。
上記ステップ84および85によって、形状モデルの各頂点の新たな位置(x座標およびy座標)が決定する。従って、ステップ85の処理が完了した時点で、頂点リストは、各頂点の新たな位置を示す内容に更新されている。ステップ86においては、この頂点リストに基づいて形状モデルの表示を更新する。具体的には、頂点リストの各頂点の位置を、頂点リストにより示される位置に更新して第1LCD11に表示する。
ステップ86の次のステップ87において、形状モデルは前の状態から変形したか否かが判定される。すなわち、CPUコア21は、ステップ86で表示が更新された形状モデルは、更新前の状態(すなわち、1フレーム前の状態)と形状が同じであるか否かが判定される。ステップ87の判定は、例えば、1フレーム前の形状モデルの各頂点の位置を記憶しておき、更新前後の各頂点の位置を比較することによって行われてもよいし、バネ力リストに格納されている力が全て0であるか否かによって行われてもよい。形状モデルは、コントロール点の移動が停止した後でもしばらくの間は、元の形状(基準状態の形状)に戻るように変形を行い、元の形状に戻ると静止する(図3Cおよび図3D参照)。ステップ87は、形状モデルが元の形状に戻り静止しているか否かを判定するための処理である。
ステップ87の判定において、形状モデルが前の状態から変形している場合、処理はステップ80に戻る。以降、形状モデルが元の形状に戻って静止するまで、ステップ80〜87の処理が繰り返される。一方、ステップ87の判定において、形状モデルが前の状態から変形していない場合、CPUコア21は、図21に示す頂点移動処理を終了する。
再び図9の説明に戻り、ステップ16の頂点移動処理の次に、ステップ17の処理が行われる。すなわち、ステップ17において、ゲーム処理を終了するか否かが判定される。ステップ17の判定は、例えば、ゲームを終了する指示がプレイヤによって行われたか否かによって行われる。ゲーム処理を終了しないと判定された場合、処理はステップ13に戻り、ゲーム終了までステップ13からステップ17の処理が繰り返される。一方、ゲーム処理を終了すると判定された場合、CPUコア21は、図9に示す処理を終了する。以上で、ゲーム装置1において実行されるゲーム処理の説明を終了する。
以上のように、本実施形態によれば、第2仮想バネを設定することによって、コントロール点と直接接続されていない頂点についての追従性を向上することができる。これによって、弾性体のごとく変形する形状モデルをより自然に見えるように表現することができる。なお、本実施形態ではコントロール点の位置はプレイヤによって決められたが、他の実施形態においては、画像処理プログラムにおいて予め定められたアルゴリズムに従ってコントロール点の位置を決定するようにしてもよい。
なお、上記の実施形態では、コントロール点の移動が停止した場合であっても、形状モデルの変形が続いている間は、コントロール点がそのまま設定され、コントロール点である頂点の位置は移動しないように処理された(図26に示すx座標決定処理において、コントロール点である頂点の座標は更新されないため)。ここで、他の実施形態においては、コントロール点の移動が完了した後は、コントロール点の設定を外すようにしてもよい。すなわち、コントロール点の移動が完了した後は、コントロール点に指定されたいた頂点についても仮想バネの力によってその位置が移動されるようにしてもよい。具体的には、図20のステップ80の判定結果が否定であった場合、図26のステップ120でコントロール点であった頂点も選出対象とするようにしてもよい。また、コントロール点の移動が完了したか否かの判定は、プレイヤによるタッチパネル13への入力位置が前回検出した位置から変化しなくなったか否かによって行われてもよいし、プレイヤによるタッチパネル13への入力がなくなったか否かによって行われてもよい。
また、本実施形態によれば、x軸方向に関する仮想バネの力の計算(図21に示すステップ84)と、y軸方向に関する仮想バネの力の計算(図21に示すステップ85)とを別々に行うことができる。従って、上述したゲーム処理の説明からも明らかなように、本実施形態では2乗計算や平方根計算等の計算が不要である。それ故、仮想バネを用いた計算処理を従来に比べて非常に簡易な計算で行うことが可能になる。特に、処理能力が高くない携帯機器においては本実施形態に係る画像処理プログラムが有効である。
また、本実施形態においては、2次元の直交座標系に配置された2次元の形状モデルを変形する場合を例として説明したが、3次元の直交座標系に配置された3次元の形状モデルを変形する場合も本実施形態と同様に処理することが可能である。図28は、3次元の形状モデルにおける頂点間に設定される仮想バネを示す図である。3次元の形状モデルを対象とする場合、直交座標系の次数と同数、すなわち3つの仮想バネが1組の頂点間に設定される。すなわち、図28に示すように、頂点P1と頂点P2という1組の頂点間に、x軸方向に関する仮想バネ55、y軸方向に関する仮想バネ56、およびz方向に関する仮想バネ57が設定される。また、3次元の形状モデルを処理対象とする場合は、x方向に関する位置決定処理(上記ステップ84)およびy方向に関する位置決定処理(上記ステップ85)に加えて、z方向に関する位置決定処理を行う必要があるが、この位置決定処理も上記ステップ84と同様の処理である。
なお、本実施形態においては、直交座標系における形状モデルの頂点間に設定される仮想バネ(第1または第2仮想バネ)として、直交座標系の座標成分毎に部分仮想バネ(x方向仮想バネおよびy方向仮想バネ)を設定した。ここで、形状モデルの頂点間に設定される仮想バネは、2頂点の間の距離に応じて大きさが変化する仮想の力を当該2頂点に与えるものであればよい。例えば、他の実施形態においては、座標成分毎に部分仮想バネ(x方向仮想バネおよびy方向仮想バネ)を設定せずに、第1および第2仮想バネを頂点間に直接接続するようにしてもよい。具体的には、図31に示す形状モデルに設定される仮想バネのような、頂点間を直接接続する仮想バネを第1および第2仮想バネとして用いてもよい。図31に示す形状モデルを例にとってより具体的に説明すると、当該形状モデルにおいて任意の1頂点が指定されたとき、指定された頂点とそれ以外の頂点との間に第2仮想バネを設定するようにしてもよい。なお、このときに設定される第2仮想バネは、図31に示す仮想バネと同様、頂点間を直接接続する仮想バネである。ただし、頂点間を直接接続する仮想バネを第1および第2仮想バネとして用いる場合、モデルを変形させる画像処理において、2点間の距離を算出する計算が必須となるので、平方根計算や2乗計算といった処理の重い計算処理を行う必要があることに留意する。従って、画像処理プログラムを実行するコンピュータの処理能力が高い装置では、頂点間の距離や頂点が受ける力を座標成分毎に分けずに算出するようにしても問題ない。
また、本実施形態においては、線分によって全ての頂点が接続されている形状モデルを例として説明した。すなわち、図4等に示した形状モデルは、任意の頂点から線分を辿ることによって全ての頂点に到達することが可能な形状であった。ここで、形状モデルは線分によって全ての頂点が必ずしも接続されている必要はない。図29は、形状モデルの他の例を示す図である。図29に示す形状モデル61は、頂点P1から頂点P5を順に線分によって接続した部分と、頂点P6と頂点P7とを線分によって接続した部分とからなる(この形状モデル61は、頂点P1から頂点P5を順に線分によって接続した1つの形状モデルと、頂点P6と頂点P7とを線分によって接続した1つの形状モデルという2つの形状モデルであると捉えてもよい。)。このような形状モデルの場合、頂点関連付処理(ステップ12)では、線分によって結ばれる2頂点の間に仮想バネを設定することに加えて、上記2つの部分を接続するように仮想バネを設定すればよい。つまり、任意の頂点から仮想バネを辿ることによって全ての頂点に到達することが可能となるように、仮想バネを設定すればよい。図29に示す例では、頂点P3と頂点P6との間、および、頂点P4と頂点P7との間に仮想バネが設定されている。図29に示すように、形状モデルは、2つの部分からなる構成であってもよい。従って、接続されていない複数の部分からなる図形や文字(例えば漢字)がプレイヤによって入力された場合であっても、その図形や文字を形状モデルとして変形することが可能である。
図30Aおよび図30Bは、バネの伸びと時間との関係を示すグラフを示す図である。図30Aおよび図30Bにおいて、縦軸はバネの伸び(Δx)であり、横軸は時間(t)である。形状モデルの各頂点の挙動としては、図30Aのように振動を行いながら徐々に減衰していくような挙動、および、図30Bのように振動せずに単に減衰していくような挙動となることが考えられる。形状モデルの頂点がいずれの挙動となるかは、仮想バネのバネ係数や減衰係数、頂点の質量、空気抵抗等の種々の定数の値の設定の仕方によって変化するものであり、いずれの挙動となるように各変数を設定してもよい。
本発明は、モデルがあたかも弾性体のように変形する処理を行う画像処理装置、または、それにおいて実行される画像処理プログラムとして利用することが可能である。
本発明の一実施形態に係る画像処理装置の一例である携帯型のゲーム装置の外観図 ゲーム装置1の内部構成を示すブロック図 形状モデルが表示された第1LCD11の画面の一例を示す図 形状モデルが表示された第1LCD11の画面の一例を示す図 形状モデルが表示された第1LCD11の画面の一例を示す図 形状モデルが表示された第1LCD11の画面の一例を示す図 形状モデルの関連付けられた頂点間に設定される第1仮想バネを示す図 形状モデルに設定される第2仮想バネを示す図 第1仮想バネおよび第2仮想バネが設定された形状モデルが変形する様子をフレーム時間毎に示す図 従来の方法において形状モデルの頂点を移動させた場合における形状モデルの変形の様子を示す図 ゲーム装置1における処理において用いられる変数を説明するための図 ゲーム装置1において実行されるゲーム処理の流れを示すフローチャート プレイヤによってタッチパネル13上に描かれた軌跡の一例を示す図 図10に示す入力に対してゲーム装置1が読み取った入力座標を示す図 入力座標リストの一例を示す図 図9に示す入力検出処理の詳細な処理の流れを示すフローチャート 図9に示すモデル作成処理の詳細な処理の流れを示すフローチャート 頂点リストの一例を示す図 図9に示す頂点関連付処理の詳細な処理の流れを示すフローチャート 第1関連付リストの一例を示す図 図9に示すコントロール点設定処理の詳細な処理の流れを示すフローチャート 図9に示すコントロール点関連付処理の詳細な処理の流れを示すフローチャート 第2関連付リストを示す図 図9に示す頂点移動処理の詳細な処理の流れを示すフローチャート バネ力リストを示す図 図21に示すx方向に関する位置決定処理の詳細な処理の流れを示すフローチャート 図23に示す第1力計算処理の詳細な処理の流れを示すフローチャート 速度リストを示す図 図23に示す第2力計算処理の詳細な処理の流れを示すフローチャート 図23に示すx座標決定処理の詳細な処理の流れを示すフローチャート 3次元の形状モデルにおける頂点間に設定される仮想バネを示す図 形状モデルの他の例を示す図 バネの伸びと時間との関係を示すグラフを示す図 バネの伸びと時間との関係を示すグラフを示す図 従来の画像処理方法における仮想バネが設定されたモデルの一例を示す図 従来の画像処理方法においてモデルが変形する様子を示す図
符号の説明
1 ゲーム装置
11 第1LCD
21 CPUコア
22 WRAM
31,61 形状モデル
34〜39,41〜46,55〜57 仮想バネ

Claims (9)

  1. 形状モデルの形状を変化させて表示装置の画面に表示する処理をコンピュータに実行させる画像処理プログラムであって、
    前記コンピュータへの入力装置による入力または前記コンピュータの記憶装置に記憶されている設定に応じて、前記形状モデルを構成する各頂点、少なくとも1つの他の頂点と関連付け、当該関連付けられた2頂点の組を前記記憶装置に記憶する頂点関連付けステップと
    前記関連付けられた2頂点の組の各々の間に、2頂点の間の距離に応じて大きさが変化する仮想の力を当該2頂点に与える第1の仮想バネを設定し、前記記憶装置に記憶する第1仮想バネ設ステップと
    前記コンピュータへの入力装置による入力または前記コンピュータの記憶装置に記憶されている設定に応じて、画面に表示された前記形状モデルのうちの少なくとも1つの頂点をコントロール点として指定するコントロール点指定ステップと、
    前記指定されたコントロール点と前記コントロール点以外の各頂点との組において、当該組の各々を構成する2頂点間の距離に応じて大きさが変化する仮想の力を当該2頂点に与える仮想バネであって、前記第1の仮想バネとは異なる新たな仮想バネである第2の仮想バネを設定し、前記記憶装置に記憶する第2仮想バネ設定ステップと、
    前記コンピュータへの入力装置による入力または前記コンピュータの記憶装置に記憶されている設定に応じて、前記コントロール点を移動させるコントロール点移動ステップと、
    前記コントロール点の移動に起因して前記形状モデルの各頂点の位置関係が基準状態から変化した場合、変化後における前記形状モデルの各頂点が前記設定された第1および第2の仮想バネから受ける仮想の力の大きさを算出する力算出ステップと、
    前記算出された仮想の力に基づいて、前記形状モデルの各頂点を移動させるべき位置を決定する位置決定ステップと、
    前記決定された位置に各頂点を移動した前記形状モデルを画面に表示する表示制御ステップとを前記コンピュータに実行させ、
    前記第2仮想バネ設定ステップは、前記コントロール点の指定から、前記コントロール点の移動が完了するまで、または、前記コントロール点の移動に起因する前記形状モデルの変形が停止するまでの間のみ前記第2の仮想バネを設定する、画像処理プログラム。
  2. 前記位置決定ステップは、前記コントロール点移動ステップにおいて移動されたコントロール点の位置と、当該コントロール点の移動前の時点における、当該コントロール点以外の各頂点の位置を基準として算出された仮想の力に基づいて、当該コントロール点以外の各頂点を移動させるべき位置を決定する、請求項1に記載の画像処理プログラム。
  3. 前記コントロール点指定ステップは、前記入力装置による入力に従って前記コントロール点を指定し、
    前記コントロール点移動ステップは、前記入力装置による入力に従って前記コントロール点を移動させる、請求項2に記載の画像処理プログラム。
  4. 前記形状モデルは2次元または3次元の直交座標系において表され、
    前記第1および第2の仮想バネは、前記直交座標系における座標成分毎に個別の複数の部分仮想バネによって構成され、
    前記部分仮想バネは、前記直交座標系における座標軸方向を向く仮想の力であって、それが設定される2頂点の間の当該座標軸方向に関する距離に応じて大きさが変化する仮想の力を当該2頂点に与える、請求項1に記載の画像処理プログラム。
  5. 前記入力装置の入力面上にユーザによって描かれた軌跡を座標点として時系列で検出する入力検出ステップと、
    前記検出された各座標点の少なくとも一部の座標点を各頂点とする形状モデルを作成するモデル作成ステップとを前記コンピュータにさらに実行させる、請求項1に記載の画像処理プログラム。
  6. 前記入力検出ステップは、ユーザによって連続して入力された座標点を1まとまりの座標点群として検出し、
    前記モデル作成ステップは、前記入力検出ステップにおいて検出された座標点群からその少なくとも一部を選出した各頂点と、当該各頂点を時系列順に結ぶ線分とによって構成される前記形状モデルを作成し、
    前記モデル作成ステップによって作成された前記形状モデルに含まれる2頂点のうち、線分によって結ばれる2頂点に関連付けを行う頂点関連付ステップを前記コンピュータにさらに実行させる、請求項に記載の画像処理プログラム。
  7. 前記形状モデルは、複数の頂点と頂点間を接続する線分とによって構成され、
    所定の頂点から線分を辿ることによって到達不可能な頂点が1つの形状モデルの内に存在する場合、当該所定の頂点から線分を辿ることによって到達可能な頂点と到達不可能な頂点との間に関連付けを行う頂点関連付ステップを前記コンピュータにさらに実行させる、請求項1に記載の画像処理プログラム。
  8. 記力算出ステップは、前記第1または第2の仮想バネが設定される2頂点の間の距離の基準状態からの差分に比例する大きさの力と、頂点の速度に比例する大きさの力とに基づいて当該仮想バネによる仮想の力を算出する、請求項1に記載の画像処理プログラム。
  9. 形状モデルの形状を変化させて表示装置の画面に表示する画像処理装置であって、
    前記画像処理装置への入力装置による入力または前記画像処理装置の記憶装置に記憶されている設定に応じて、前記形状モデルを構成する各頂点、少なくとも1つの他の頂点と関連付け、当該関連付けられた2頂点の組を前記記憶装置に記憶する頂点関連付け手段と
    前記関連付けられた2頂点の間の組の各々に、2頂点の間の距離に応じて大きさが変化する仮想の力を当該2頂点に与える第1の仮想バネ設定し、前記記憶装置に記憶する第1仮想バネ設定手段と
    画面に表示された前記形状モデルのうちの少なくとも1つの頂点をコントロール点として指定するコントロール点指定手段と、
    前記指定されたコントロール点と前記コントロール点以外の各頂点との組において、当該組の各々を構成する2頂点間の距離に応じて大きさが変化する仮想の力を当該2頂点に与える仮想バネであって、前記第1の仮想バネとは異なる新たな仮想バネである第2の仮想バネを設定し、前記記憶装置に記憶する第2仮想バネ設定手段と、
    前記コントロール点を移動させるコントロール点移動手段と、
    前記コントロール点の移動に起因して前記形状モデルの各頂点の位置関係が基準状態から変化した場合、変化後における前記形状モデルの各頂点が前記設定された第1および第2の仮想バネから受ける仮想の力の大きさを算出する力算出手段と、
    前記算出された仮想の力に基づいて、前記形状モデルの各頂点を移動させるべき位置を決定する位置決定手段と、
    前記決定された位置に各頂点を移動した形状モデルを画面に表示する表示制御手段とを備え、前記第2仮想バネ設定手段は、前記コントロール点の指定から、前記コントロール点の移動が完了するまで、または、前記コントロール点の移動に起因する前記形状モデルの変形が停止するまでの間のみ前記第2の仮想バネを設定する、画像処理装置
JP2004248626A 2004-08-27 2004-08-27 画像処理プログラムおよび画像処理装置 Expired - Lifetime JP4472467B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004248626A JP4472467B2 (ja) 2004-08-27 2004-08-27 画像処理プログラムおよび画像処理装置
US11/192,000 US20060044311A1 (en) 2004-08-27 2005-07-29 Image processing program and image processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004248626A JP4472467B2 (ja) 2004-08-27 2004-08-27 画像処理プログラムおよび画像処理装置

Publications (2)

Publication Number Publication Date
JP2006065647A JP2006065647A (ja) 2006-03-09
JP4472467B2 true JP4472467B2 (ja) 2010-06-02

Family

ID=35942413

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004248626A Expired - Lifetime JP4472467B2 (ja) 2004-08-27 2004-08-27 画像処理プログラムおよび画像処理装置

Country Status (2)

Country Link
US (1) US20060044311A1 (ja)
JP (1) JP4472467B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4508776B2 (ja) * 2004-08-18 2010-07-21 任天堂株式会社 画像処理プログラムおよび画像処理装置
JP4646001B2 (ja) * 2005-09-15 2011-03-09 株式会社ソニー・コンピュータエンタテインメント ゲーム制御プログラム
JP5437726B2 (ja) * 2009-07-29 2014-03-12 任天堂株式会社 情報処理プログラム、情報処理装置、情報処理システム、および座標算出方法
EP3223242B1 (en) 2016-03-24 2020-08-12 Ecole Nationale de l'Aviation Civile Curve editing mechanism

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6342886B1 (en) * 1999-01-29 2002-01-29 Mitsubishi Electric Research Laboratories, Inc Method for interactively modeling graphical objects with linked and unlinked surface elements
US6476804B1 (en) * 2000-07-20 2002-11-05 Sony Corporation System and method for generating computer animated graphical images of an exterior patch surface layer of material stretching over an understructure
US6958752B2 (en) * 2001-01-08 2005-10-25 Sensable Technologies, Inc. Systems and methods for three-dimensional modeling
KR100500897B1 (ko) * 2003-09-03 2005-07-14 한국전자통신연구원 방향을 갖는 질점과 일반화된 스프링 모델을 이용한비정형 물체의 애니메이션 방법

Also Published As

Publication number Publication date
JP2006065647A (ja) 2006-03-09
US20060044311A1 (en) 2006-03-02

Similar Documents

Publication Publication Date Title
US9229562B2 (en) Information processing apparatus and storage medium for storing information processing program
JP4172645B2 (ja) 入力位置との関係でゲームオブジェクトの動作を変化させるゲームプログラム
JP3816375B2 (ja) ビデオゲーム装置、ビデオゲームにおけるキャラクタの表示方法、プログラム及び記録媒体
JP4358181B2 (ja) ゲームプログラムおよびゲーム装置
JP3734820B1 (ja) ゲームプログラム、ゲーム装置、および入力装置
JP5106825B2 (ja) ゲームプログラム、ゲーム装置、ゲームシステムおよびゲーム制御方法
JP4388004B2 (ja) 画像生成装置及び方法、プログラム、並びに記録媒体
JP2005204754A (ja) タッチパネル入力を用いたゲームシステム
JP2005346467A (ja) 図形認識プログラム
JP2005211242A (ja) タッチパネル入力を用いたゲームシステム
US7695367B2 (en) Storage medium having game program stored thereon and game apparatus
JP2006034516A (ja) ゲームプログラム、ゲーム装置、および入力装置
JP2006314349A (ja) ゲームプログラムおよびゲーム装置
JP4848401B2 (ja) タッチパネル入力を用いたゲームシステム
JP3926307B2 (ja) 3次元画像描画装置及び方法、プログラム、並びに記録媒体
US7656407B2 (en) Image processing program and image processing apparatus
JP5977878B1 (ja) プログラム、ゲームの制御方法、及び情報処理装置
JP4472467B2 (ja) 画像処理プログラムおよび画像処理装置
JP4121492B2 (ja) ゲーム装置およびゲームプログラム
JP4658544B2 (ja) ゲームプログラム、ゲーム装置、および入力装置
US8926427B2 (en) Video game with screen flip and dual sets of collision data
JP4472778B2 (ja) ゲームプログラムおよびゲーム装置
JP5354820B2 (ja) 入力処理プログラムおよび入力処理装置
JP4724740B2 (ja) 入力処理プログラムおよび入力処理装置
JP2004005024A (ja) 情報処理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070807

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090824

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090827

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091009

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: 20100203

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100303

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

Free format text: PAYMENT UNTIL: 20130312

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4472467

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: 20130312

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130312

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130312

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20140312

Year of fee payment: 4

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250