説明

描画処理プログラムおよび描画処理装置

【課題】ポインティングデバイスによる座標入力を用いた描画処理において、よりリアルな描画を可能とする描画処理プログラムおよび描画処理装置を提供する。
【解決手段】入力位置を出力するポインティングデバイスからの出力に応じた描画を表示装置に表示させる。入力位置取得手段は、ポインティングデバイスから入力位置を繰り返して取得する。描画手段は、所定の要素画像を、入力位置取得手段が取得した最新の入力位置に描画して表示装置に表示する。再描画手段は、所定の要素画像より大きな表示サイズの要素画像を、入力位置取得手段が取得した過去の入力位置に描画して表示装置に表示する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、描画処理プログラムおよび描画処理装置に関し、より特定的には、ポインティングデバイスを用いたユーザ入力に応じて文字や図形を表示画面に表示する描画処理プログラムおよび描画処理装置に関する。
【背景技術】
【0002】
従来、表示画面に対する座標入力を行うポインティングデバイスで操作されるパーソナルコンピュータやゲーム装置等を利用して、表示画面に文字や図形等を描画する装置がある。例えば、ポインティングデバイスの1つであるタッチパネルへの手書き入力に応じて、文字や図形を描画する装置が開示されている(例えば、特許文献1参照)。上記特許文献1で開示された装置では、タッチパネルから出力される座標データに基づいて、押圧位置が移動した移動速度を算出し、当該移動速度に応じて描画パターンの大きさを変更している。
【特許文献1】特開2006−252141号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、上記特許文献1で開示された装置は、タッチパネルに手書き入力する入力速度に応じて、単に描画パターンの大きさを変更しているだけである。つまり、表示画面に描画された軌跡は、その後変化するようなこともなく、毛筆やペン等で描いた後に墨やインクが時間経過に応じて滲んでいくようなリアルな表現をするものではない。
【0004】
それ故に、本発明の目的は、ポインティングデバイスによる座標入力を用いた描画処理において、よりリアルな描画を可能とする描画処理プログラムおよび描画処理装置を提供することである。
【課題を解決するための手段】
【0005】
上記の目的を達成するために、本発明は以下の構成を採用した。なお、括弧内の参照符号やステップ番号等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
【0006】
第1の発明は、入力位置(TP)を出力するポインティングデバイス(15)からの出力に応じた描画を表示装置(12)に表示させるコンピュータ(21)で実行される描画処理プログラムである。描画処理プログラムは、入力位置取得手段(ステップ52およびステップ59を実行するCPUコア21、以下、単にステップ番号のみ記載する)、描画手段(S56、S92)、および再描画手段(S95)として、コンピュータを機能させる。入力位置取得手段は、ポインティングデバイスから入力位置を繰り返して取得する。描画手段は、所定の要素画像を、入力位置取得手段が取得した最新の入力位置(最新の指示位置P)に描画して表示装置に表示する。再描画手段は、所定の要素画像より大きな表示サイズの要素画像を、入力位置取得手段が取得した過去の入力位置に描画して表示装置に表示する。なお、再描画手段が描画対象とする過去の入力位置は、過去に取得した全ての入力位置、最新の入力位置から一定時間内に入力された過去の入力位置、最新の入力位置から一定領域内に入力された過去の入力位置、または過去の一定数の入力位置等を含む。また、再描画手段は、前に描画した要素画像を消去して再描画してもよいし、前に描画した要素画像に新たな要素画像を重ねて再描画してもよい。また、ポインティングデバイスは、画面上での入力位置や座標を指定する入力装置であり、例えば、タッチパネル、マウス、トラックパッド、トラックボール、タッチスクリーン、ゲームコントローラのハウジングで指し示された画面位置を検出するシステム等で実現される。
【0007】
第2の発明は、上記第1の発明において、サイズ選択手段として、さらにコンピュータを機能させる。サイズ選択手段は、最新の入力位置から時系列的に遡った過去の複数の入力位置それぞれに対して、入力位置取得手段が取得した順に応じて遡って漸増的に大きな表示サイズ(Wi)の要素画像を選択する(S94、図4A〜図4C)。再描画手段は、複数の入力位置のそれぞれについて、サイズ選択手段により選択された要素画像を描画して表示装置に表示する。
【0008】
第3の発明は、上記第2の発明において、再描画手段は、過去の入力位置における入力の移動速度(バッファ距離)に応じて、当該入力位置における要素画像の表示サイズの最大値(Wt)を決定し、当該入力位置について描画する要素画像の表示サイズを当該最大値に制限する(S72、S76)。なお、表示サイズが最大値に到達した後に再描画手段が行う描画は、最大値の表示サイズの要素画像を再描画(つまり、最大値の表示サイズの要素画像が同じ入力位置に何度も描画される)してもよいし、最大値以下の表示サイズの要素画像を再描画(つまり、最大値以下の表示サイズの要素画像が同じ入力位置に何度も描画される)してもよいし、再描画自体を停止してもよい。
【0009】
第4の発明は、上記第3の発明において、入力速度算出手段(S71)として、さらにコンピュータを機能させる。入力速度算出手段は、再描画手段によって過去の入力位置(Dc)について要素画像を描画するにあたり、入力位置取得手段が取得した入力位置を用いて、過去の各入力位置に対して、当該入力位置における入力の移動速度を算出する。再描画手段は、過去の入力位置のそれぞれについて、入力速度算出手段によって算出された過去の各入力位置における入力の移動速度に応じて、当該移動速度が大きいほど最大値が小さくなるように、各入力位置の最大値を決定する。
【0010】
第5の発明は、上記第3の発明において、入力速度算出手段および保存手段(S76、Dc)として、さらにコンピュータを機能させる。入力速度算出手段は、入力位置取得手段が取得した入力位置を用いて、最新の入力位置における入力の移動速度を算出する。保存手段は、入力速度算出手段によって算出された移動速度に基づいて、当該移動速度に関する情報を各入力位置について保存する。再描画手段は、過去の入力位置のそれぞれについて、保存手段によって保存された各入力位置についての移動速度に関する情報を参照して、各入力位置における移動速度が大きいほど最大値が小さくなるように、各入力位置の最大値を決定する。ここで、移動速度に関する情報は、算出された移動速度自体を示すデータや当該移動速度を加工したデータ(具体的には表示サイズの最大値を示すデータ、実施例では目標太さWtを示すデータ)等が含まれる。
【0011】
第6の発明は、上記第1の発明において、描画手段は、予め設定された最小の表示サイズの要素画像を、最新の入力位置に描画する(S92)。再描画手段は、最小の表示サイズより大きな表示サイズの要素画像を、最新の入力位置から時系列的に遡った過去の入力位置に描画し、さらに大きな表示サイズの要素画像を、当該過去の入力位置から時系列的にさらに遡った過去の入力位置に描画する。
【0012】
第7の発明は、上記第2の発明において、サイズ選択手段は、メモリに記憶された複数の表示サイズの描画パターン(Df1)から、入力位置取得手段が取得した入力位置にそれぞれ対応する描画パターンを要素画像として選択する。
【0013】
第8の発明は、上記第1の発明において、再描画手段は、その中心の色濃度が相対的に濃い画素で構成され、その周囲の色濃度が相対的に薄い画素で構成される要素画像(図7〜図9)を、過去の入力位置に対して既に描画された要素画像に重ねて描画する(ビットマップ情報の加算、図15)。
【0014】
第9の発明は、上記第1の発明において、操作類型判定手段(S55、S81〜S84)および種類選択手段(S55、S85〜S89)として、さらにコンピュータを機能させる。操作類型判定手段は、入力位置取得手段の取得履歴に応じて、最新の入力位置においてユーザがポインティングデバイスを操作している操作類型(入り、スライド、つなぎ、横止め、縦止め)を判定する。種類選択手段は、操作類型判定手段により最新の入力位置に対して判定された操作類型に応じて、複数種類の要素画像の中から使用する要素画像の種類を選択する。描画手段および再描画手段は、それぞれ最新の入力位置における操作類型に応じて選択された種類の要素画像を、最新の入力位置および過去の入力位置に描画する。
【0015】
第10の発明は、上記第1の発明において、操作類型判定手段および種類選択手段として、さらにコンピュータを機能させる。操作類型判定手段は、入力位置取得手段の取得履歴に応じて、各入力位置においてユーザがポインティングデバイスを操作している操作類型を判定する。種類選択手段は、操作類型判定手段により各入力位置に対して判定された操作類型に応じて、複数種類の要素画像の中から使用する要素画像の種類をそれぞれ選択する。描画手段および再描画手段は、それぞれ各入力位置における操作類型に応じて選択された種類の要素画像を、各入力位置にそれぞれ描画する。
【0016】
第11の発明は、上記第9または第10の発明において、操作類型判定手段は、入力位置取得手段が最初に入力位置(タッチオン指示位置)を取得したときに、当該入力位置に対して、ユーザが入力開始状態(入り)の操作類型でポインティングデバイスを操作していると判定し、かつ、入力位置取得手段が継続して入力位置を取得したときに、当該入力位置に対して、ユーザが入力継続状態(スライド)の操作類型でポインティングデバイスを操作していると判定する。種類選択手段は、操作類型判定手段が入力開始状態の操作類型と判定したことに応じて、当該操作類型に分類された第1の形状の要素画像(図8)を、当該入力開始状態と判定された入力位置に対応して選択し、かつ、操作類型判定手段が入力継続状態の操作類型と判定したことに応じて、当該操作類型に分類された当該第1の形状とは異なる第2の形状の要素画像(図7)を、当該入力継続状態と判定された入力位置に対応して選択する。
【0017】
第12の発明は、上記第11の発明において、操作類型判定手段は、入力位置取得手段が取得した入力位置が、最初の入力位置を中心とした所定範囲内であるとき、当該取得した入力位置に対して、入力開始状態の操作類型でポインティングデバイスを操作していると判定する。
【0018】
第13の発明は、上記第11の発明において、種類選択手段は、操作類型判定手段が入力開始状態の操作類型が終了したと判定された後から所定条件を満たす(つなぎ)まで、第1の形状と第2の形状との中間形状の要素画像(図9)を、入力位置に対応して選択する。例えば、上記所定条件は、入力開始状態の操作類型が終了したと判定された後から一定時間経過したとき、または入力開始状態の操作類型が終了したと判定された後から一定距離離れたとき等に相当する。
【0019】
第14の発明は、上記第11の発明において、操作類型判定手段は、入力位置取得手段が繰り返し取得した入力位置が、所定時間以上所定範囲内に位置するとき、ユーザが入力終了状態(横止め、縦止め)の操作類型でポインティングデバイスを操作していると判定する。種類選択手段は、操作類型判定手段が入力終了状態の操作類型と判定したことに応じて、当該操作類型に分類された第1の形状および第2の形状とは異なる第3の形状の描画パターンを、入力位置に対応して選択する。
【0020】
第15の発明は、上記第2の発明において、サイズ選択手段は、入力位置取得手段が取得した入力位置間を補間する位置に対して、当該補間前後の入力位置に選択されている要素画像のサイズを線形補間する表示サイズの要素画像を、さらに選択する(S96)。再描画手段は、要素画像設定手段が入力位置および入力位置間を補間する位置にそれぞれについて、サイズ選択手段により選択された要素画像を描画して表示装置に表示する(S97)。
【0021】
第16の発明は、上記第1の発明において、ポインティングデバイスは、表示装置の表示画面を覆うタッチパネルである。入力位置取得手段は、タッチパネルから出力されるタッチ座標データを入力位置として取得する。
【0022】
第17の発明は、入力位置を出力するポインティングデバイスからの出力に応じた描画を表示装置に表示させる描画処理装置である。描画処理装置は、入力位置取得手段、描画手段、および再描画手段を備える。入力位置取得手段は、ポインティングデバイスから入力位置を繰り返して取得する。描画手段は、所定の要素画像を、入力位置取得手段が取得した最新の入力位置に描画して表示装置に表示する。再描画手段は、所定の要素画像より大きな表示サイズの要素画像を、入力位置取得手段が取得した過去の入力位置に描画して表示装置に表示する。
【発明の効果】
【0023】
上記第1の発明によれば、最新の入力位置に対して過去の入力位置では相対的に大きな表示サイズの要素画像で描画される。例えば、これらの要素画像を並べて接続することによって線を描くことが可能であり、当該線を描いてから時間が経過した入力位置には線の太さが太く描画されるため、毛筆描画で表現される線のようにリアルな描画が可能となる。
【0024】
上記第2の発明によれば、最新の入力位置では小さい要素画像で描画され、当該入力位置から過去の入力位置側へ遡った位置では漸増的に大きな要素画像で描画される。例えば、これらの要素画像を並べて接続することによって線を描く場合、当該線を描いた直後から時間が経過することによって徐々に線の太さが拡大するように描画されるため、毛筆描画で表現される線のようにリアルな描画が可能となる。
【0025】
上記第3〜第5の発明によれば、ユーザの入力の移動速度に応じて、描かれる要素画像の表示サイズの最大値が変化する。したがって、入力の移動速度が高速の場合に描かれる線太さを細くし、入力の移動速度が低速の場合に描かれる線を太くすることも可能であり、よりリアルな描画が可能となる。
【0026】
上記第6の発明によれば、最新の入力位置では最も表示サイズが小さい要素画像で描画され、当該入力位置から過去の入力位置側へ遡った位置では徐々に表示サイズが大きくなった要素画像が描画されるため、時間経過と共ににじみが進行するような表現が可能となる。
【0027】
上記第7の発明によれば、描画および再描画される要素画像は、予め記憶された複数の描画パターンから選択されるため、バリエーションに富んだ形状の描画が可能となる。
【0028】
上記第8の発明によれば、既に描かれた画像にさらに描画パターンを書き重ねるように再描画されるため、現実の濃度バラツキを表現することができる。また、その中心へ向かうほど濃くなる描画パターンが用いられるため、これらの描画パターンを複数接続して配置した線を表現するときも、その線中心へ向かうほど濃くなるような線を描画することができる。
【0029】
上記第9および第10の発明によれば、ユーザの操作類型に応じて、それぞれ異なった形状を表現した描画が可能となる。
【0030】
上記第11および第12の発明によれば、ユーザが入力開始時点(例えば、タッチパネルに対するタッチオン)では第1の形状の画像を描画することができ、ユーザが入力開始時点から基本操作に移ると第2の形状の画像を描画することができる。例えば、第1の形状を、筆を紙に最初に接した際に現れる涙滴形状とすることによって、毛筆書きにおける「入り」を模した形状の手書き線を描画することができる。
【0031】
上記第13の発明によれば、ユーザが入力開始時点から基本操作に移る際、入力開始時点で用いられる第1の形状の描画パターンから、基本操作で用いられる第2の形状の描画パターンまで変化する中間的な形状の要素画像が描画されるため、描画処理で表現される形状変化がスムーズとなる。
【0032】
上記第14の発明によれば、ユーザが入力位置の移動を停止したとき(例えば、タッチパネルをタッチオフする前の停止)では、第3の形状の要素画像が用いられる。例えば、第3の形状を、紙上で筆を止めた際に現れる横または縦方向につぶれた形状とすることによって、毛筆書きにおける「横止め」や「縦止め」を模した形状の手書き線を描画することができる。
【0033】
上記第15の発明によれば、入力位置の間が適切な要素画像で補間されるため、入力位置を接続する線を描画するとき、スムーズな線を描画することができる。
【0034】
上記第16の発明によれば、タッチパネルに対するスライド操作の軌跡に沿って線を描くような描画処理が可能となり、タッチ操作に応じた手書き文字や図形等をリアルに表示することができる。
【0035】
また、本発明の描画処理装置によれば、上述した描画処理プログラムと同様の効果を得ることができる。
【発明を実施するための最良の形態】
【0036】
図面を参照して、本発明の一実施形態に係る描画処理プログラムを実行する描画処理装置について説明する。本発明の描画処理プログラムは、表示装置に表示可能な任意のコンピュータシステムで実行されることによって適用することができるが、描画処理装置の一例としてゲーム装置1で実行されるゲームプログラムに含まれる描画処理プログラムを用いて説明する。なお、図1は、本発明のゲームプログラムを実行するゲーム装置1の外観図である。ここでは、ゲーム装置1の一例として、携帯ゲーム装置を示す。
【0037】
図1において、ゲーム装置1は、第1のLCD(Liquid Crystal Display:液晶表示装置)11および第2のLCD12を含む。ハウジング13は、上側ハウジング13aと下側ハウジング13bとによって構成されている。第1のLCD11は、上側ハウジング13aに収納され、第2のLCD12は、下側ハウジング13bに収納される。例えば、第1のLCD11および第2のLCD12の解像度は、いずれも256dot×192dotである。なお、本実施形態では表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置等、他の任意の表示装置を利用することができる。また、第1のLCD11および第2のLCD12は、任意の解像度のものを利用することができる。
【0038】
上側ハウジング13aには、後述する1対のスピーカ(図2の右スピーカ30aおよび左スピーカ30b)からの音を、外部に放出するための音抜き孔18aおよび18bが形成されている。
【0039】
下側ハウジング13bには、入力装置として、十字スイッチ14a、スタートスイッチ14b、セレクトスイッチ14c、Aボタン14d、Bボタン14e、Xボタン14f、Yボタン14g、電源スイッチ14h、Lボタン14L、およびRボタン14Rが設けられている。なお、Lボタン14LおよびRボタン14Rは、下側ハウジング13bの上部側面に設けられており、図1に示す上側ハウジング13aの背後に配置されているため、図示されていない。また、さらなる入力装置として、第2のLCD12の画面上を覆うようにタッチパネル15が装着されている。また、下側ハウジング13bには、メモリカード17やスティック16を収納するための挿入口(図1では、一点鎖線で示している)も設けられている。
【0040】
タッチパネル15としては、例えば抵抗膜方式や光学式(赤外線方式)や静電容量結合式等、任意の方式のものを利用することができる。タッチパネル15は、その表面をスティック16で触れると、その接触位置に対応する座標データを出力する機能を有するポインティングデバイスの一例である。なお、以下ではプレイヤがタッチパネル15をスティック16でタッチ操作するものとして説明を行うが、スティック16の代わりにペン(スタイラスペン)や指でタッチパネル15をタッチ操作することももちろん可能である。本実施形態では、タッチパネル15として、一例として第2のLCD12の解像度と同じく256dot×192dotの解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル15の解像度と第2のLCD12の解像度とが一致している必要はない。
【0041】
メモリカード17は、ゲームプログラム等を記録した記録媒体であり、下側ハウジング13bに設けられた挿入口に着脱自在に装着される。
【0042】
次に、図2を参照して、ゲーム装置1の内部構成を説明する。なお、図2は、ゲーム装置1の内部構成を示すブロック図である。
【0043】
図2において、ハウジング13に収納される電子回路基板20には、CPUコア21が実装される。CPUコア21には、バス22を介して、コネクタ23が接続されるとともに、入出力インターフェース回路(図面ではI/F回路と記す)25、第1GPU(Graphics Processing Unit)26、第2GPU27、RAM24、LCDコントローラ31、およびワイヤレス通信部33が接続される。コネクタ23には、メモリカード17が着脱自在に接続される。メモリカード17は、ゲームプログラムを記憶するROM17aと、バックアップデータを書き換え可能に記憶するRAM17bを搭載する。メモリカード17のROM17aに記憶されたゲームプログラムは、RAM24にロードされ、RAM24にロードされたゲームプログラムがCPUコア21によって実行される。RAM24には、ゲームプログラムの他にも、適宜、CPUコア21がプログラムを実行して得られる一時的なデータを生成するためのデータ等が記憶される。I/F回路25には、タッチパネル15、右スピーカ30a、左スピーカ30b、および図1の十字スイッチ14aやAボタン14d等から成る操作スイッチ部14が接続される。右スピーカ30aおよび左スピーカ30bは、音抜き孔18aおよび18bの内側にそれぞれ配置され、CPUコア21が生成したサウンド出力情報に応じたサウンドを再生する。
【0044】
第1GPU26には、第1VRAM(Video RAM)28が接続され、第2GPU27には、第2VRAM29が接続される。第1GPU26は、CPUコア21からの指示に応じて、RAM24に記憶されている表示画像を生成するためのデータに基づいて第1の表示画像を生成し、第1VRAM28に描画する。第2GPU27は、同様にCPUコア21からの指示に応じて第2の表示画像を生成し、第2VRAM29に描画する。第1VRAM28および第2VRAM29は、LCDコントローラ31に接続されている。
【0045】
LCDコントローラ31は、レジスタ32を含む。レジスタ32は、CPUコア21からの指示に応じて0または1の値を記憶する。LCDコントローラ31は、レジスタ32の値が0の場合は、第1VRAM28に描画された第1のゲーム画像を第1のLCD11に出力し、第2VRAM29に描画された第2のゲーム画像を第2のLCD12に出力する。また、レジスタ32の値が1の場合は、第1VRAM28に描画された第1のゲーム画像を第2のLCD12に出力し、第2VRAM29に描画された第2のゲーム画像を第1のLCD11に出力する。
【0046】
ワイヤレス通信部33は、他のゲーム装置のワイヤレス通信部33との間で、ゲーム処理に利用されるデータやその他のデータをやりとりする機能を有しており、一例としてIEEE802.11の無線LAN規格に則った無線通信機能を提供する。そして、ワイヤレス通信部33は、受信したデータをCPUコア21に出力する。また、ワイヤレス通信部33は、CPUコア21から指示されたデータを他のゲーム装置へ送信する。
【0047】
なお、本発明のゲームプログラム(描画処理プログラム)は、メモリカード17等の外部記憶媒体を通じてコンピュータシステムに供給されるだけでなく、有線または無線の通信回線を通じてコンピュータシステムに供給されてもよい。また、ゲームプログラムは、コンピュータシステム内部の不揮発性記憶装置に予め記録されていてもよい。なお、ゲームプログラムを記憶する情報記憶媒体としては、上記不揮発性半導体メモリに限らず、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体でもよい。
【0048】
次に、図3および図4を参照して、ゲーム装置1で実行されるゲームプログラムによる具体的な処理動作を説明する前に、当該処理動作によって第1のLCD11および第2のLCD12に表示される表示形態例等について説明する。なお、図3は、第1のLCD11および第2のLCD12に表示される画面表示例を示す図である。図4A〜図4Cは、第2のLCD12に表示されるゲーム画像とタッチ操作される位置との関係を説明するための図である。
【0049】
図3において、ゲーム装置1の第1のLCD11および第2のLCD12には、それぞれゲーム画像が表示される。例えば、第1のLCD11には、プレイヤがスティック16を用いてタッチパネル15をタッチして手書きする手本となる文字や図形を示すゲーム画像が表示される。図3においては、漢字「一」が手本文字Mとして表示されている。一方、第2のLCD12には、プレイヤがスティック16を用いてタッチパネル15をタッチ操作した軌跡に沿って描かれる手書き文字Cが表示される。図3においては、プレイヤが手本文字Mに合うようタッチパネル15のタッチ位置TPをタッチ操作して手書き入力している一例を示しており、タッチ位置TPの位置まで描かれた手書き文字Cが表示されている。
【0050】
ここで、手本文字Mは、楷書等の毛筆系書体で描かれた文字が示される。そして、手書き文字Cも、タッチ位置TPの軌跡に沿って、あたかもプレイヤが毛筆で描いたような線で表現される。例えば、現実世界で毛筆を用いて線を描く場合、その描く速度、描く筆圧等に応じて線の太さが変化する。また、毛筆で描いた直後から時間が経過することによって、徐々に線の太さが拡大する(にじみ)ような変化も生じる。さらに、毛筆では、筆の入り、止め、はね、はらい等に応じて、特殊な形状の線が描かれる。本実施形態における手書き文字Cは、上述した現実世界における毛筆描画による特徴を、タッチ位置TPに応じてリアルに第2のLCD12に表現する。
【0051】
図4A〜図4Cを参照して、時間経過に応じて徐々に線の太さを拡大させる処理の一例を説明する。例えば、プレイヤがタッチパネル15上をスライドさせるようなタッチ操作(以下、スライド操作と記載する)をする際、タッチ操作されている最新のタッチ位置TPでは最も細い線が描画され、当該タッチ位置TPから時系列的に遡ったタッチ位置(例えば、図4Bおよび図4Cにおけるタッチ位置TPa)では相対的に太い線が再描画される。なお、図4A〜図4Cでは、手書き文字Cの手書き線部分を中抜き斜線領域で示している。
【0052】
具体的には、プレイヤがタッチパネル15をタッチ操作するタッチ位置TPに対して、目標太さWtがそれぞれ設けられる。つまり、タッチ位置TPがスライド操作に応じて移動すると、タッチ位置TPの履歴に対してそれぞれのタッチ位置TPに目標太さWtが設定される。一方、プレイヤがタッチ操作している最新のタッチ位置TPでは、最も細い太さWi0の線が描かれる。そして、最細太さWi0で描かれた線は、時間経過と共に目標太さWtに向かってその太さが漸増的に拡大するように変化して再描画される。なお、後述により明らかとなるが、本実施形態における手書き文字Cは、各タッチ位置に、描画太さWiおよび入力状態(入り、止め等)に応じた要素画像(例えば、後述する描画パターン)を既に描かれている要素画像に重ね合わせていくことによって、その線太さが拡大して再描画される。
【0053】
例えば、図4Aに示す状態から図4Bに示す状態を経て図4Cに示す状態に変化する例を考える。この操作例は、プレイヤが入力方向Diへタッチ位置TPを移動させてスライド操作する例である。そして、当該スライド操作に応じて設定される各タッチ位置TPには、全て同じ目標太さWtが設定されるものとする。なお、図4Aは、プレイヤがタッチ位置TPaをタッチ操作している状態(つまり、タッチ位置TP=タッチ位置TPa)の一例を示す図である。図4Bは、プレイヤがタッチ位置TPaをタッチ操作した後、入力方向Diへタッチ位置TPを移動させてスライド操作している状態の一例を示す図である。図4Cは、図4Bに示す状態から、さらにプレイヤが入力方向Diへタッチ位置TPを移動させてスライド操作している状態の一例を示す図である。
【0054】
ここで、タッチ位置TPaに注目する。図4Aにおいて、プレイヤがタッチ操作している最新のタッチ位置TPでは、最細太さWi0の線となる。したがって、タッチ位置TP=タッチ位置TPaの状態では、タッチ位置TPaにおける線太さWaも最細太さWi0となる。
【0055】
次に、図4Bに示すように、プレイヤがタッチ位置TPaをタッチ操作した後、入力方向Diへタッチ位置TPを移動させてスライド操作する。このスライド操作によって、タッチ位置TPaにおける線太さWaは、時間経過と共に目標太さWtに向かって漸増的に拡大するように変化する。つまり、タッチ操作されてから時間経過が短いタッチ位置TPにおいて線太さが細く、時間経過が長いタッチ位置TPにおいて線太さが漸増的に太くなるような線が描かれる。結果的に、入力方向Diへタッチ位置TPを移動させてスライド操作する場合、最新のタッチ位置TPから過去のタッチ位置TPa側へ遡った軌跡には、最細太さWi0から時間経過に応じて漸増的に目標太さWtまで線の太さを拡大させる区間Zcと、目標太さWtまで到達した区間Zsが形成される。なお、図4Bの状態では、タッチ位置TPaが区間Zcに含まれるため、タッチ位置TPaにおける線太さWaは、Wi0<Wa<Wtとなっている。
【0056】
次に、図4Cに示すように、図4Bに示す状態から、さらにプレイヤが入力方向Diへタッチ位置TPを移動させてスライド操作する。このスライド操作によって、タッチ位置TPaにおける線太さWaは、時間経過と共に目標太さWtに向かってさらに漸増的に拡大するように変化する。これによって、タッチ位置TPaにおける線太さWaは、やがて目標太さWtとなり、タッチ位置TPaが区間Zsに含まれる位置となる。このように、手書き文字Cは、最新のタッチ位置TPでは一番細い描画パターンで描画され、当該タッチ位置TPから過去のタッチ位置TPa側へ遡った位置では最細太さWi0より太い描画パターンで再描画される。これによって、第2のLCD12には、手書き文字Cが毛筆で描いた直後から時間が経過することによって徐々に線の太さが拡大するように再描画される。
【0057】
次に、図5〜図14を参照して、ゲーム装置1で実行されるゲームプログラムによる具体的な処理動作について説明する。なお、図5は、ゲームプログラムを実行することに応じて、RAM24に記憶される各種データの一例を示す図である。図6は、RAM24に記憶されるポイントバッファの一例を示す図である。図7は、RAM24に記憶されるスライド状態の描画パターンデータの一例を示す図である。図8は、RAM24に記憶される入り状態の描画パターンデータの一例を示す図である。図9は、RAM24に記憶されるつなぎ状態の描画パターンデータの一例を示す図である。図10は、RAM24に記憶されるパレット情報テーブルの一例を示す図である。図11は、当該ゲームプログラムを実行することによってゲーム装置1がゲーム処理を行うフローチャートである。図12は、図11におけるステップ60の目標太さ算出処理の詳細な動作を示すサブルーチンである。図13は、図11におけるステップ61の入力状態設定処理の詳細な動作を示すサブルーチンである。図14は、図11におけるステップ62の描画処理の詳細な動作を示すサブルーチンである。なお、これらの処理を実行するためのプログラムは、ROM17aに格納されたゲームプログラムに含まれており、ゲーム装置1の電源がオンになったときに、ROM17aからRAM24に読み出されて、CPUコア21によって実行される。
【0058】
図5において、RAM24には、ROM17aから読み出されたプログラムやゲーム処理において生成される一時的なデータが記憶される。図5において、RAM24のデータ記憶領域には、タッチ位置データDa、タッチオン指示位置データDb、ポイントバッファデータDc、入力位置バッファデータDd、バッファ距離データDe、入力距離データDf、および描画データDg等が格納される。
【0059】
タッチ位置データDaは、タッチパネル15をプレイヤがタッチしている画面座標系のタッチ位置TPを示すタッチ座標を示すデータが格納される。例えば、タッチ座標は、ゲーム装置1がゲーム処理する時間単位(例えば、1/60秒)毎に取得され、当該取得に応じてタッチ位置データDaに格納されて更新される。
【0060】
タッチオン指示位置データDbは、タッチパネル15に最初にタッチオンされたタッチ位置に応じて、仮想世界に指定される指示位置(以下、タッチオン指示位置と記載することがある)Pの指示座標を示すデータが格納される。
【0061】
ポイントバッファデータDcは、指示位置Pの履歴およびそれらの各種データが記述されたポイントバッファが格納される。以下、図6を参照して、ポイントバッファデータDcに格納されるポイントバッファについて説明する。
【0062】
図6において、ポイントバッファは、タッチ位置TPから算出された指示位置Pの所定期間分の履歴毎に、カウントフラグ、目標太さ、描画太さ、および入力状態が記述されている。指示位置Pは、手書き文字Cが描かれる仮想世界(以下、単に仮想世界と記載する)において、上記タッチ位置TPと重なる位置を示す座標であり、タッチ位置TPを仮想世界に透視変換することによって得られる。例えば、指示位置Pは、仮想世界に設定されているxy座標系の座標値(x,y)で示され、タッチ座標の取得に応じて算出された座標値(x,y)を示すデータが、ポイントバッファに記述される。以下、当指示位置Pを示す座標値を指示座標と記載する。ポイントバッファには、現在タッチ操作して取得されたタッチ位置TPから、所定処理回数分遡って取得されて算出された指示位置Pの履歴が記述される。図6に示した一例では、4回分の指示位置履歴がバッファ番号1〜4にそれぞれ記述されており、具体的には、バッファ番号1に指示座標(x1,y1)、バッファ番号2に指示座標(x2,y2)、バッファ番号3に指示座標(x3,y3)、およびバッファ番号4に指示座標(x4,y4)が記述されている。ここで、ポイントバッファに記述されるデータの中では、バッファ番号1(先頭)に記述される指示位置Pが最新のデータであり、バッファ番号4(最後)に記述される指示位置Pが最古のデータである。
【0063】
ポイントバッファには、上記指示位置P毎に設定された目標太さWt、描画太さWi、および入力状態(スライド、入り、つなぎ、止め等)が記述される。具体的には、バッファ番号1に目標太さWt1および描画太さWi1、バッファ番号2に目標太さWt2および描画太さWi2、バッファ番号3に目標太さWt3および描画太さWi3、バッファ番号4に目標太さWt4および描画太さWi4がそれぞれ記述され、バッファ番号1〜4の全てに入力状態「スライド」が記述されている。また、ポイントバッファには、何れのデータが「カレント」に設定されているかを示すカレントフラグが記述されている。図6の例では、バッファ番号1のデータにカレントフラグ「ON」が記述され、バッファ番号1のデータが「カレント」に設定されていることを示している。
【0064】
入力位置バッファデータDdは、現在から所定時間前までの所定期間分(例えば、過去約30秒間分)の指示位置Pの履歴が記述された入力位置バッファが格納される。
【0065】
バッファ距離データDeは、ポイントバッファに記述された各指示座標(x,y)を通って、現在プレイヤがタッチパネル15をタッチ操作しているタッチ位置に応じた指示位置(以下、最新の指示位置と記載することがある)までの仮想世界における距離(バッファ距離Lb)を示すデータが格納される。入力距離データDfは、上記タッチオン指示位置から最新の指示位置までの仮想世界における距離(入力距離Li)を示すデータが格納される。
【0066】
描画データDgは、描画パターンデータDg1およびパレット情報テーブルDg2等を含んでいる。描画パターンデータDg1は、仮想世界において手書き文字Cをゲーム画面に表示するための要素画像の一例を示すビットマップデータである。また、パレット情報テーブルDg2は、描画パターンデータが示す各画素の値(ビットマップ情報)に対して参照される、パレット情報を示すデータテーブルである。以下、図7〜図10を参照して、描画パターンデータDg1およびパレット情報テーブルDg2について説明する。なお、図7〜図9に示す要素画像(描画パターン)は、それぞれの矩形領域が1つの画素を示しており、各画素に対して設定されるビットマップ情報を図示している。なお、本実施形態では、手書き文字Cが無彩色で表示するため、描画パターンの各画素に設定される色も無彩色(白色〜灰色〜黒色)となる。
【0067】
図7〜図9において、描画パターンデータDg1は、プレイヤのタッチ操作に応じて設定される入力状態(タッチ操作する操作類型)毎に、それぞれ複数の描画パターンを有している。また、各入力状態の際に用いられる描画パターンは、例えば描画太さWiに応じた8つのパターンが設定される。なお、描画パターンデータDg1に格納される描画パターンは、本発明における要素画像の一例に相当する。
【0068】
描画パターンの各画素に対して設定されているビットマップ情報は、0〜15の何れかの整数値で示され、これらの数値によって各画素のRGB値が設定されている。これらビットマップ情報とRGB値との関係が、パレット情報テーブルDg2に格納されたパレット情報テーブルで示される。
【0069】
図10に示すように、0〜15の整数値で示されるビットマップ情報は、それぞれRGB値を示すパレット情報と対応している。例えば、ビットマップ情報「0」に対しては、パレット情報(255,255,255)のRGB値が対応しており、すなわちビットマップ情報「0」は白色を示す情報である。また、ビットマップ情報「15」に対しては、パレット情報(0,0,0)のRGB値が対応しており、すなわちビットマップ情報「15」は黒色を示す情報である。また、ビットマップ情報「1」〜「14」に対しては、それぞれ灰色を示す情報となっており、ビットマップ情報の数値が大きくなると、順次その濃度が濃くなるRGB値がパレット情報として設定されている。より具体的には、パレット情報は、白色〜灰色〜黒色のグラデーション有する16段階のRGB値を示す情報である。そして、これら16段階のパレット情報は、それぞれビットマップ情報によって指定することができる。
【0070】
図7は、入力状態が「スライド」のときに用いられる複数の描画パターンの一例を示している。図7において、入力状態が「スライド」のときに用いられる描画パターンは、各描画太さWiに応じて略円形の描画パターンが設定される。具体的には、描画太さWiが「1」〜「8」に対して、それぞれ略円形の描画パターンが設定されており、描画太さWiの数値が大きくなると、当該数値の大きさに応じて灰色で示されるビットマップ情報の領域が拡大する。また、各描画パターンは、その中心が最も濃度が濃いビットマップ情報(すなわち、数値が大きい)を有しており、描画パターンの中心から外縁方向へ漸減的に濃度が薄くなるビットマップ情報(すなわち、数値が漸減的に小さくなる)を有している。
【0071】
図8は、入力状態が「入り」のときに用いられる複数の描画パターンの一例を示している。図8において、入力状態が「入り」のときに用いられる描画パターンは、各描画太さWiに応じて略涙滴形の描画パターンが設定される。具体的には、各描画パターンは、略涙滴形の最細部が左上方向に配置され、右下方向へ向かって徐々にその幅が太くなるように設定されている。換言すると、各描画パターンは、筆を紙に最初に接した際に現れる形状を模しており、筆先の尖りが相対的に強く表現される画像である。また、各描画パターンは、描画太さWiが「1」〜「8」に対して、それぞれ略涙滴形の描画パターンが設定されており、描画太さWiの数値が大きくなると、当該数値の大きさに応じて灰色で示されるビットマップ情報の領域が拡大する。また、各描画パターンは、その中心が最も濃度が濃いビットマップ情報を有しており、描画パターンの中心から外縁方向へ漸減的に濃度が薄くなるビットマップ情報を有している。
【0072】
図9は、入力状態が「つなぎ」のときに用いられる複数の描画パターンの一例を示している。図9において、入力状態が「つなぎ」のときに用いられる描画パターンは、各描画太さWiに応じて略円形および略涙滴形の中間的な形状の描画パターンが設定される。具体的には、各描画パターンは、上述した入力状態が「スライド」のときに用いられる描画パターンと入力状態が「入り」のときに用いられる描画パターンとの中間的な形状で設定されている。換言すると、各描画パターンは、入力状態が「入り」のときに用いられる描画パターンと同様に、筆先の尖りが表現される画像であるが、「入り」の画像パターンより若干左右方向に倒した形状とすることで、上記中間的な形状を表現している。また、各描画パターンは、描画太さWiが「1」〜「8」に対して、それぞれ中間的な形状の描画パターンが設定されており、描画太さWiの数値が大きくなると、当該数値の大きさに応じて灰色で示されるビットマップ情報の領域が拡大する。また、各描画パターンは、その中心が最も濃度が濃いビットマップ情報を有しており、描画パターンの中心から外縁方向へ漸減的に濃度が薄くなるビットマップ情報を有している。
【0073】
なお、図7〜図9においては、入力状態が「スライド」、「入り」、および「つなぎ」のときに用いられる複数の描画パターンの一例を示したが、描画パターンデータDg1には他の入力状態のときに用いられる描画パターンも格納される。例えば、描画パターンデータDg1には、入力状態が「横止め」や「縦止め」のときに用いられる描画パターンも格納される。これらの描画パターンについても、上記描画パターンと同様に、描画太さWiが「1」〜「8」に対して、それぞれ固有の形状の描画パターンが設定されており、描画太さWiの数値が大きくなると、当該数値の大きさに応じて灰色で示されるビットマップ情報の領域が拡大する。また、各描画パターンは、その中心が最も濃度が濃いビットマップ情報を有しており、描画パターンの中心から外縁方向へ漸減的に濃度が薄くなるビットマップ情報を有している。
【0074】
例えば、入力状態が「横止め」のときに用いられる描画パターンは、「スライド」のときに用いられる描画パターンを横方向に伸ばした形状である。また、「横止め」のときに用いられる描画パターンは、当該横方向に伸ばした形状をさらに縦横に拡大したような形状でもかまわない。換言すると、入力状態が「横止め」のときに用いられる描画パターンは、紙面に沿って筆を横方向に書き進めた状態で筆圧を高めて止めた際に現れる形状を模した画像である。また、入力状態が「縦止め」のときに用いられる描画パターンは、「スライド」のときに用いられる描画パターンを縦方向に伸ばした形状である。また、「縦止め」のときに用いられる描画パターンは、当該縦方向に伸ばした形状をさらに縦横に拡大したような形状でもかまわない。換言すると、入力状態が「縦止め」のときに用いられる描画パターンは、紙面に沿って筆を縦方向に書き進めた状態で筆圧を高めて止めた際に現れる形状を模した画像である。
【0075】
次に、ゲーム装置1の動作について説明する。まず、ゲーム装置1の電源(電源スイッチ14h)がONされると、CPUコア21によってブートプログラム(図示せず)が実行され、これによりメモリカード17に格納されているゲームプログラムがRAM24にロードされる。そして、当該ロードされたゲームプログラムがCPUコア21で実行されることによって、図11〜図14に示すステップ(図11〜図14では「S」と略称する)が実行される。
【0076】
図11において、CPUコア21は、ゲームの初期設定を行って(ステップ50)、処理を次のステップに進める。例えば、CPUコア21がステップ50で行う初期設定として、プレイヤに描かせる手本文字Mを仮想世界に設定し、第1のLCD11に表示する。そして、CPUコア21は、タッチ位置データDa、タッチオン指示位置データDb、ポイントバッファデータDc、バッファ距離データDe、および入力距離データDfに格納されている各ゲームパラメータを初期化(例えば、各数値を0に初期化)する。また、第2VRAM29等に書き込まれて第2のLCD12に手書き文字Cを表示するためビットマップ情報は、全て0に設定される。
【0077】
次に、CPUコア21は、プレイヤがタッチパネル15をタッチ操作するのを待つ、すなわちタッチオンか否かを判断する(ステップ51)。そして、CPUコア21は、タッチオンの場合、次のステップ52に処理を進める。一方、CPUコア21は、プレイヤがタッチパネル15をタッチ操作していない、すなわちタッチオフの場合、当該ステップ51の処理を繰り返す。
【0078】
ステップ52において、CPUコア21は、タッチパネル15をタッチしている画面座標系のタッチ位置TPを示すタッチ座標を取得して、処理を次のステップに進める。例えば、CPUコア21は、取得したタッチ座標を用いて、タッチ位置データDaに記憶されたタッチ座標を更新する。
【0079】
次に、CPUコア21は、上記ステップ52で取得されたタッチ位置TPに応じた仮想世界の指示位置Pの指示座標を示すデータを算出して、当該指示座標をタッチオン指示位置データDbに保存して(ステップ53)、処理を次のステップに進める。例えば、指示位置Pの指示座標は、タッチ座標TPのタッチ座標を仮想世界に透視変換することによって得られる。一例として。指示座標は、タッチ座標と重なって第2のLCD12に表示される仮想世界の2次元平面上の位置を算出することによって得られる。
【0080】
次に、CPUコア21は、上記ステップ53で算出された指示位置Pの目標太さWtおよび描画太さWiを設定する(ステップ54)。そして、CPUコア21は、算出された指示位置Pの入力状態を「入り」に設定し(ステップ55)、処理を次のステップに進める。例えば、CPUコア21は、目標太さWtおよび描画太さWiを、それぞれタッチオン時の所定太さ(例えば、目標太さWt=最小値1および描画太さWi=最小値1)に設定する。また、CPUコア21は、入力状態をタッチオン時の入力状態(ここでは、入力状態=「入り」)に設定する。
【0081】
次に、CPUコア21は、上記ステップ53で算出された指示位置Pに設定された描画太さWiおよび入力状態に応じた描画パターンを描画し、第2のLCD12に表示して(ステップ56)、処理を次のステップに進める。具体的には、CPUコア21は、上記ステップ54およびステップ55で設定された描画太さWi「1」および入力状態「入り」に基づいて、描画パターンデータDg1から描画太さWi「1」および入力状態「入り」の描画パターンを抽出する(図8参照)。そして、CPUコア21は、第2GPU27(図2参照)に対して、抽出した描画パターンが指示位置Pの指示座標(x,y)に配置されたゲーム画像を生成する指示を行う。この指示に応じて、第2GPU27は、第2VRAM29等に描画パターンに応じたビットマップ情報を書き込む。そして、第2GPU27は、パレット情報テーブルDg2を参照して、第2VRAM29に書き込まれたビットマップ情報に応じたパレット情報を出力して、描画パターンに応じたゲーム画像が第2のLCD12に表示される。
【0082】
次に、CPUコア21は、最新の指示位置Pの指示座標(x,y)、目標太さWt、描画太さWi、および入力状態をポイントバッファデータDcのポイントバッファの最新位置に保存して(ステップ57)、処理を次のステップに進める。例えば、CPUコア21は、ポイントバッファ(図6参照)に格納されているバッファ番号4(最古のデータ格納位置)を除いたバッファ番号iのデータを、バッファ番号i+1の格納位置にそれぞれ移動させる。そして、CPUコア21は、ポイントバッファのバッファ番号1(最新のデータ格納位置)に、最新の指示位置Pの指示座標(x,y)、目標太さWt、描画太さWi、および入力状態を記述する。このステップ57の処理によって、ポイントバッファの各格納位置(バッファ番号1〜3)に格納されている3組のデータの格納位置が順次繰り下げられ、最新の格納位置(バッファ番号1)に最新の指示位置Pに設定された各データが格納される。
【0083】
また、上記ステップ57において、CPUコア21は、タッチ位置TPの軌跡(つまり、指示位置Pの軌跡)を判定するために、上記最新の指示位置Pの指示座標(x,y)を入力位置バッファデータDdの入力位置バッファの最新位置に保存する。ここで、入力位置バッファは、現在から所定時間前までの所定期間分(例えば、過去約30秒間分)の指示座標(x,y)の履歴が格納される。
【0084】
次に、CPUコア21は、プレイヤがタッチパネル15へのタッチ操作をしていない、すなわちタッチオフか否かを判断する(ステップ58)。そして、CPUコア21は、プレイヤのタッチ操作が継続して行われている、すなわちタッチオンの場合、次のステップ59に処理を進める。一方、CPUコア21は、プレイヤがタッチパネル15をタッチ操作していない、すなわちタッチオフの場合、当該フローチャートによる処理を終了する。
【0085】
ステップ59において、CPUコア21は、タッチパネル15をタッチしている画面座標系のタッチ位置TPを示すタッチ座標を取得して、処理を次のステップに進める。例えば、CPUコア21は、取得したタッチ座標を用いて、タッチ位置データDaに記憶されたタッチ座標を更新する。
【0086】
次に、CPUコア21は、最新の指示位置Pにおける目標太さWtを設定する処理を行い(ステップ60)、次のステップに処理を進める。以下、図12を参照して、目標太さ算出処理の詳細な動作について説明する。
【0087】
図12において、CPUコア21は、ポイントバッファデータDcのポイントバッファを参照して、最新の指示位置Pからのバッファ距離を算出し(ステップ71)、次のステップへ処理を進める。ここで、バッファ距離Lbは、ポイントバッファに記述された各指示座標(x,y)を通って、最新の指示位置Pまでの仮想世界における距離である。
【0088】
まず、CPUコア21は、上記ステップ59で取得したタッチ座標を用いて、最新の指示位置P0の指示座標(x0,y0)を算出する。そして、CPUコア21は、ポイントバッファのバッファ番号1〜4に記述された各指示位置(以下、指示位置P1〜P4と記載する)をタッチ操作順に通って、最新の指示位置P0までの距離をバッファ距離Lbとして算出する。ここで、各指示位置Pnの指示座標を(xn,yn)とすると、指示位置Pnと指示位置Pn+1との距離Lnは、
【数1】

で算出できる。そして、バッファ距離Lbは、各指示位置間の距離Lnを加算する、すなわち、
Lb=L0+L1+L2+L3
によって算出する。そして、CPUコア21は、算出したバッファ距離Lbを用いてバッファ距離データDeを更新する。
【0089】
次に、CPUコア21は、バッファ距離Lbに応じて最新の指示位置Pの目標太さWtを仮設定し(ステップ72)、次のステップに処理を進める。例えば、目標太さWtが所定の最小値Wtdから最大値Wtuまでの正数値(例えば、Wtd=1、Wtu=8)に設定され、バッファ距離Lbに判定最小距離Ld(例えば、Ld=0.5)および判定最大距離Lu(例えば、Lu=6.0)が設けられる。そして、バッファ距離Lbが判定最小距離Ld以下の場合(Lb≦Ld)、目標太さWtを最大値Wtu(すなわち、8)に設定する。また、バッファ距離Lbが判定最大距離Lu以上の場合(Lb≧Lu)、目標太さWtを最小値Wtd(すなわち、1)に設定する。また、バッファ距離Lbが判定最小距離Ldより大きく判定最大距離Luより小さい場合(Ld<Lb<Lu)、判定最小距離Ldから判定最大距離Luへの距離を最大値Wtuから最小値Wtdへの線形な値に変換する、すなわち
Wt=Wtu−(Wtu−Wtd)*(Lb−Ld)/(Lu−Ld)
にで算出される値を算出する。そして、目標太さWtを、算出された値の小数点以下を切り捨て、切り上げ、または四捨五入等した整数に設定する。
【0090】
このように、目標太さWtは、バッファ距離Lbに応じて仮設定される。ここで、最新の指示位置Pにおいて、当該指示位置Pが移り変わって移動していく移動速度(以下、単に移動速度と記載する)の算出は、当該指示位置Pより過去の所定時間における各指示位置P間の距離を合計することにより、指示位置Pの移動速度を算出するのが典型的である。また、単に、最新の指示位置Pと1つ前の指示位置P(つまり、バッファ番号1に記述された指示位置P1)との間の距離により、指示位置Pの移動速度を算出することも可能である。したがって、バッファ距離Lbは、所定期間におけるタッチ位置TPの移動距離を示すパラメータであり、プレイヤがタッチパネル15に対する入力の移動速度を示すものである。
【0091】
また、指示位置Pの移動速度の算出は、当該指示位置Pより過去の各指示位置P間の距離だけでなく、当該指示位置Pより後に設定された各指示位置P間の距離も用いることもできる。例えば、ポイントバッファのバッファ番号2に記述された指示位置P2の移動速度は、過去の所定時間における各指示位置P間の距離(距離L2およびL3)と、指示位置P2の後の所定時間における各指示位置P間の距離(距離L0およびL1)とを合計することにより算出することができる。そして、算出された指示位置P2の移動速度を用いて、指示位置P2の目標太さWt2を設定してもかまわない。また、単に、指示位置Pと1つ後の指示位置P(つまり、バッファ番号1に記述された指示位置P2の移動速度を算出するときの指示位置P1)との間の距離により、指示位置Pの移動速度を算出することも可能である。このように、目標太さWtを仮設定するための指示位置Pの移動速度は、当該指示位置Pより過去の所定時間における各指示位置P間の距離および/または当該指示位置Pより後の所定時間における各指示位置P間の距離を用いて、算出することが可能である。
【0092】
次に、CPUコア21は、上記ステップ72で仮設定した目標太さWtとポイントバッファデータDcのポイントバッファにおける最新データ(バッファ番号1)に記述されている目標太さWt1との差分を算出する。そして、CPUコア21は、差分値が一定範囲内(例えば、差分値の絶対値が2以下)の場合、処理を次のステップ76に進める。一方、CPUコア21は、差分値が一定範囲外(例えば、差分値の絶対値が2より大きい)の場合、処理を次のステップ75に進める。
【0093】
ステップ75において、CPUコア21は、仮設定された最新の指示位置Pの目標太さWtを、上記一定範囲内となる整数(例えば、上記差分値の絶対値が2となる整数)に変更し、次のステップ76に処理を進める。例えば、目標太さWt1=5に対して目標太さWt=8が仮設定された場合、目標太さWt=7に変更される。また、目標太さWt1=5に対して目標太さWt=1が仮設定された場合、目標太さWt=3に変更される。このように、最新の指示位置Pの目標太さWtは、前回設定された目標太さWt1からの変化量が一定範囲内に抑制される。
【0094】
ステップ76において、CPUコア21は、現在仮設定されている、または上記ステップ75で変更された最新の指示位置Pの目標太さWtを確定して、当該サブルーチンによる処理を終了する。
【0095】
図11に戻り、上記ステップ60の目標太さ算出処理の後、CPUコア21は、最新の指示位置Pにおける入力状態を設定する処理を行い(ステップ61)、次のステップに処理を進める。以下、図13を参照して、入力状態設定処理の詳細な動作について説明する。
【0096】
図13において、CPUコア21は、プレイヤのタッチ操作の入力状態が入りか否かを判断する(ステップ81)。例えば、CPUコア21は、タッチオン指示位置データDbに格納されているタッチオン指示位置から、最新の指示位置までの仮想世界における距離が所定距離以内(後述する距離L0以内)であれば、入力状態が入りであると判定する。つまり、プレイヤがタッチパネル15に触れた位置から、タッチパネル15をタッチしながら所定距離以内でスライド操作している期間は、入力状態が入りであると判定される。そして、CPUコア21は、入力状態が入りであるとき、次のステップ84に処理を進める。一方、CPUコア21は、入力状態が入りでないとき、次のステップ82に処理を進める。
【0097】
ステップ82において、CPUコア21は、プレイヤのタッチ操作の入力状態がつなぎか否かを判断する。一例として、CPUコア21は、プレイヤのタッチ操作の入力状態が入りでなくなった時点から所定時間が経過するまでの期間を、入力状態が入りからスライド(基本描線)へのつなぎであると判断する。そして、CPUコア21は、入力状態がつなぎであるとき、次のステップ85に処理を進める。一方、CPUコア21は、入力状態がつなぎでないとき、次のステップ83に処理を進める。
【0098】
ステップ83において、CPUコア21は、プレイヤのタッチ操作の入力状態が止めか否かを判断する。一例として、CPUコア21は、所定時間以上の間、所定範囲内に指示位置が指定されるとき、入力状態が止めであると判断する。つまり、プレイヤのスライド操作の速度が減速して、タッチ操作位置が所定範囲内に所定時間以上とどまっているとき、入力状態が止めであると判定される。また、CPUコア21は、入力状態が止めと判定した最初の指示位置Pを中心とした一定範囲内に、その後の指示位置Pが指定されている間も入力状態を止めと判断する。そして、CPUコア21は、入力状態が止めであるとき、次のステップ84に処理を進める。一方、CPUコア21は、入力状態が止めでないとき、次のステップ89に処理を進める。
【0099】
ステップ84において、CPUコア21は、最新の指示位置Pまでの過去の指示位置Pの軌跡が横方向であるか否かを判断する。そして、CPUコア21は、軌跡が横方向である場合、次のステップ87に処理を進める。一方、CPUコア21は、軌跡が縦方向である場合、次のステップ88に処理を進める。
【0100】
例えば、上記ステップ84において、CPUコア21は、入力位置バッファに格納されている指示位置Pの履歴と最新の指示位置Pとを用いて、入力方向が横方向および縦方向の何れかであるかを判断する。具体的には、最新の指示位置Pを基準位置として、入力位置バッファの履歴を遡って順次指示位置Pを参照していく。そして、基準位置から遡った入力軌跡の長さが所定長さ(例えば、6dot)以上となる過去の指示位置Ppを抽出して、基準位置と指示位置Ppとの位置関係が横方向および縦方向の何れかであるかを判断する。ここで、横方向および縦方向とは、手書き文字Cが表示された際の縦横方向を示している。例えば、図3のように第1のLCD11および第2のLCD12の位置関係が左右となるようにゲーム装置1を配置したとき、第2のLCD12の左右方向が横方向であり、第2のLCD12の上下方向が縦方向である。そして、CPUコア21は、第2のLCD12の左右方向を基準方向(0°)としたとき、上記基準位置と指示位置Ppとをそれぞれ結ぶ方向と当該基準方向との間の角度が0°以上45°未満であれば、軌跡が横方向であると判定する。一方、CPUコア21は、上記角度が45°以上90°以下であれば、軌跡が縦方向であると判定する。
【0101】
なお、上述した一例では、入力位置バッファに格納された指示位置Pのデータを用いたが、他のデータを用いて縦横判定を行ってもかまわない。例えば、ポイントバッファに格納されている指示位置Pの履歴と最新の指示位置Pとを用いて、これらの指示位置Pを結ぶ方向が横方向および縦方向の何れかであるかを判断してもかまわない。この場合、ポイントバッファに格納された指示位置Pをそれぞれ結ぶ方向の平均等と当該基準方向との間の角度を用いて、上述と同様の判定を行う。
【0102】
ステップ85〜ステップ89において、CPUコア21は、上記ステップ81〜ステップ84における入力状態判定結果に応じて、最新の指示位置Pの入力状態を設定する。すなわち、プレイヤのタッチ操作の入力状態が入りであると判定されたとき(ステップ81でYes)、最新の指示位置Pの入力状態を入りに設定して(ステップ85)、当該サブルーチンによる処理を終了する。プレイヤのタッチ操作の入力状態がつなぎであると判定されたとき(ステップ82でYes)、最新の指示位置Pの入力状態をつなぎに設定して(ステップ86)、当該サブルーチンによる処理を終了する。プレイヤのタッチ操作の入力状態が横方向の止めであると判定されたとき(ステップ83およびステップ84でYes)、最新の指示位置Pの入力状態を横止めに設定して(ステップ87)、当該サブルーチンによる処理を終了する。プレイヤのタッチ操作の入力状態が縦方向の止めであると判定されたとき(ステップ83でYes、ステップ84でNo)、最新の指示位置Pの入力状態を縦止めに設定して(ステップ88)、当該サブルーチンによる処理を終了する。そして、プレイヤのタッチ操作の入力状態が入り、つなぎ、止めの何れでもないと判定されたとき(ステップ81〜ステップ83が何れもNo)、最新の指示位置Pの入力状態をスライドに設定して(ステップ89)、当該サブルーチンによる処理を終了する。このように、CPUコア21は、算出した指示位置Pを用いて、プレイヤがタッチ操作した操作類型を判定して入力状態として設定している。
【0103】
図11に戻り、上記ステップ61の入力状態設定処理の後、CPUコア21は、描画処理を行い(ステップ62)、上記ステップ57に戻って処理を繰り返す。以下、図14を参照して、描画処理の詳細な動作について説明する。
【0104】
図14において、CPUコア21は、最新の指示位置Pの描画太さWiを設定する(ステップ91)。例えば、CPUコア21は、最新の指示位置Pの描画太さWiを、所定太さ(例えば、描画太さWi=最小値1)に設定する。次に、CPUコア21は、上記ステップ61で設定された最新の指示位置Pの入力状態および上記ステップ91で設定された描画太さWiに応じた描画パターンを描画し、第2のLCD12に表示して(ステップ92)、処理を次のステップに進める。具体的には、CPUコア21は、最新の指示位置Pに設定されている描画太さWi(すなわち、最小値1)および入力状態に基づいて、描画パターンデータDg1から該当する入力状態の描画太さWi「1」の描画パターンを抽出する(図8等参照)。そして、CPUコア21は、第2GPU27(図2参照)に対して、抽出した描画パターンが最新の指示位置Pの指示座標(x,y)に配置されたゲーム画像を生成する指示を行い、当該ゲーム画像が第2のLCD12に表示される。ここで、上述したように、描画処理の際には第2VRAM29等に描画パターンに応じたビットマップ情報が書き込まれるが、既にビットマップ情報が書き込まれている画素については、ビットマップ情報を書き換える必要がある。このビットマップ情報の書き換え処理については、後述する。
【0105】
次に、CPUコア21は、ポイントバッファデータDcのポイントバッファの最新位置(すなわち、ポイント番号1)のデータをカレントに設定して(ステップ93)、処理を次のステップに進める。例えば、CPUコア21は、ポイントバッファにおけるポイント番号1のカレントフラグをONに設定し、他のデータのカレントフラグをOFFに設定する。
【0106】
次に、CPUコア21は、ポイントバッファにおいてカレントフラグがONに設定されているデータの目標太さWtを参照し、格納位置に応じて描画太さWiを設定する(ステップ94)。例えば、バッファ番号1〜4にそれぞれ格納されている目標太さWtをWt1〜Wt4とし、バッファ番号1〜4に設定される描画太さWiをWi1〜Wi4とすると、描画太さWi1〜Wi4は、それぞれ
Wi1=1(最小値)
Wi2=Wt2×2/4
Wi3=Wt3×3/4
Wi4=Wt4
で設定される。なお、算出された何れの描画太さWi1〜Wi4についても、小数点以下を四捨五入、切り捨て、または切り上げ等することによって、整数値とする。そして、CPUコア21は、設定された描画太さWiを用いて、カレントフラグがONに設定されたポイントバッファの描画太さWiを更新して、処理を次のステップに進める。
【0107】
後述により明らかとなるが、バッファ番号1〜4に記述された描画太さWi1〜Wi4は、処理が繰り返される毎にポイントバッファ内で降順に記述場所が移動するため、結果的に描画太さがWiは、同じ指示位置Pに設定されている目標太さWtまで、最小値1からその数値が大きくなっていくことになる。つまり、この描画太さWiを目標太さWtまで拡大させる処理によって、手書き文字Cは、最新の指示位置Pでは一番細い描画パターンで描画され、当該最新の指示位置Pから過去の指示位置側へ遡った位置では最細の描画太さWiより太い描画太さWiの描画パターンで再描画される。これによって、第2のLCD12には、手書き文字Cがタッチ操作して描いた直後から時間が経過することによって徐々に線の太さが拡大するように再描画される(図4A〜図4C参照)。また、各指示位置Pに設定された目標太さWtは、当該指示位置Pに対応する描画太さWiが拡大する最大値としても機能していることがわかる。
【0108】
次に、CPUコア21は、カレントフラグがONに設定された指示位置Pに設定された描画太さWiおよび入力状態に応じた描画パターンを描画し、第2のLCD12に表示して(ステップ95)、処理を次のステップに進める。具体的には、CPUコア21は、ポイントバッファにおいてカレントフラグがONに設定された描画太さWiおよび入力状態を参照して、描画パターンデータDg1から参照した描画太さWiおよび入力状態に応じた描画パターンを抽出する。そして、CPUコア21は、第2GPU27に対して、抽出した描画パターンがカレントの指示位置Pの指示座標(x,y)に配置されたゲーム画像を生成する指示を行う。この指示に応じて、第2GPU27は、第2VRAM29等に描画パターンに応じたビットマップ情報を書き込む。そして、第2GPU27は、パレット情報テーブルDg2を参照して、第2VRAM29に書き込まれたビットマップ情報に応じたパレット情報を出力して、描画パターンに応じたゲーム画像が第2のLCD12に表示される。ここで、カレントの指示位置Pに描画パターンに応じたビットマップ情報を書き込むときには、前回の処理において同じ指示位置Pに描画パターンに応じたビットマップ情報が既に書き込まれている。以下、図15を参照して、ビットマップ情報の書き換え処理について説明する。なお、図15は、ビットマップ情報を書き換える一例と、当該ビットマップ情報に応じて表示される画像例を示す図である。
【0109】
図15では、第2VRAM29等に書き込まれたビットマップ情報に対して、表示される画像例が、各描画パターンに応じたビットマップ情報の書き換え段階毎に記載している。ここで、図15に示すビットマップ情報は、0〜15の何れかの整数値で上述した16段階のパレット情報(図10参照)が示され、これらの数値によって各画素のRGB値が設定される。
【0110】
例えば、描画指示がされていない初期段階においては、第2VRAM29等の表示メモリ領域に書き込まれて第2のLCD12に手書き文字Cを表示するため画素毎のビットマップ情報は、全て「0」に設定されている。初期段階では、これらビットマップ情報「0」に応じて、各画素にパレット情報(255,255,255)が指定され、全画素が白色の画像が表示される。
【0111】
次に、上記初期段階後の第1段階において、中央領域の2×2画素にビットマップ情報「5」が記載され、他の画素にビットマップ情報「0」が記載された4×4の描画パターンが、上記表示メモリ領域の中央位置に書き込まれる。このとき、既に書き込まれている画素毎のビットマップ情報に、配置する描画パターンにおける対応画素のビットマップ情報を加算して書き込まれる。なお、上記加算結果が「15」を超える場合、ビットマップ情報を「15」とする。結果的に、上記表示メモリ領域の中央位置の2×2画素にビットマップ情報「5」が記載され、他の画素にビットマップ情報「0」が書き込まれる。第1段階では、これらビットマップ情報「5」または「0」に応じて、中央部の画素にパレット情報(170,170,170)が指定され、他の画素にパレット情報(255,255,255)が指定されるため、中央領域の画素がライトグレーとなり周辺領域の画素が白色となった画像が表示される。
【0112】
次に、上記第1段階後の第2段階において、中央領域の2×2画素にビットマップ情報「7」が記載され、他の画素にビットマップ情報「5」が記載された4×4の描画パターンが、上記第1段階と同じ表示メモリ領域の位置に書き込まれる。このときも、上記第1段階で既に書き込まれている画素毎のビットマップ情報に、配置する描画パターンにおける対応画素のビットマップ情報を加算して書き込まれる。具体的には、上記表示メモリ領域の中央位置の2×2画素には、上記第1段階においてビットマップ情報「5」が書き込まれているため、これらの画素に描画パターンの中央領域のビットマップ情報「7」がそれぞれ加算されてビットマップ情報「12」に書き換えられる。また、上記表示メモリ領域の中央位置における2×2画素の周囲画素には、描画パターンに記述されているビットマップ情報「5」が書き込まれ、他の画素にビットマップ情報「0」が書き込まれる。そして、第2段階では、これらビットマップ情報「12」、「5」、または「0」に応じて、中央部の画素にパレット情報(51,51,51)が指定され、その周囲の画素にパレット情報(170,170,170)が指定され、他の画素にパレット情報(255,255,255)が指定される。したがって、第2段階では、中央領域の画素がダークグレイとなり、その周囲領域の画素がライトグレーとなり、さらにその周辺領域の画素が白色となった画像が再描画されて表示される。
【0113】
このように、本実施形態に係る描画処理では、描画パターンを重ねて指定することによって、画素毎にビットマップ情報が積算される。したがって、描画パターンの灰色画素を重ねて指定することによって灰色から黒色に向かって変化するため、濃度が濃い画像に推移して再描画されていく。
【0114】
図14に戻り、上記ステップ95の処理の後、CPUコア21は、最新の指示位置Pからカレントに指定された指示位置Pまでの指示位置間の描画太さWiおよび入力状態を補間設定し(ステップ96)、処理を次のステップに進める。
【0115】
例えば、プレイヤがタッチ位置TPを高速で大きく動かす等したときは、算出される指示位置Pの間隔が相対的に大きくなる。このように、指示位置Pの間隔が広くなると、描画される描画パターンの間が広くなり手書き文字Cの線太さにバラツキが生じてしまう。このような線太さのバラツキを解消するために、上記ステップ96では指示位置P間にも描画パターンを描画するための描画太さWiおよび入力状態を補間設定する。
【0116】
上記ステップ96の処理例として、第1の指示位置P1と第2の指示位置P2との間の描画太さWiおよび入力状態を補間設定する一例を考える。ここで、第1の指示位置P1には描画太さWi1が設定され、第2の指示位置P2には描画太さWi2が設定され、第1の指示位置P1と第2の指示位置P2との間の距離がX(具体的には、X画素)とする。例えば、描画太さWi1と描画太さWi2との差が1以下であれば、第1の指示位置P1と第2の指示位置P2との間の各画素に対して、それぞれ描画太さWi1または描画太さWi2を補間設定する。また、描画太さWi1と描画太さWi2との差が2以上(nとする)であれば、上記X画素を当該差に応じて分割して、分割区間毎にWi1からWi2までの数値を描画太さWiとして補間設定する。例えば、Wi1<Wi2のとき、第1の指示位置P1からX/n画素までの区間の各画素に対して、それぞれ描画太さWi1+1を補間設定する。また、次のX/n画素から2X/n画素までの区間の各画素に対して、それぞれ描画太さWi1+2を補間設定する。そして、(n−1)X/n画素から第2の指示位置P2までの区間の各画素に対して、それぞれ描画太さWi2を補間設定する。なお、何れの場合においても、第1の指示位置P1と第2の指示位置P2との間の各画素に対する入力状態は、第1の指示位置P1に設定された入力状態または第2の指示位置P2に設定された入力状態に補間設定する。
【0117】
次に、CPUコア21は、上記ステップ95で各画素に補間設定された描画太さWiおよび入力状態に応じた描画パターンを当該各画素に描画し、第2のLCD12に表示して(ステップ97)、処理を次のステップに進める。当該ステップ97の描画処理については、上述したステップ95の描画処理を同様であるため、詳細な説明を省略する。
【0118】
次に、CPUコア21は、ポイントバッファにおける最古の位置(すなわち、バッファ番号4)のカレントフラグがONに設定されているか否かを判断する(ステップ98)。そして、CPUコア21は、最古の位置以外(すなわち、バッファ番号1〜3)のカレントフラグがONに設定されている場合、カレントフラグがONに設定されているデータのカレントフラグをOFFに変更し、当該データの1つ最古側に記述されたデータのカレントフラグをONに変更して(ステップ99)、上記ステップ94に戻って処理を繰り返す。一方、CPUコア21は、最古の位置のカレントフラグがONに設定されている場合、当該サブルーチンによる処理を終了する。
【0119】
次に、図16〜図18を参照して、上述したフローチャートに基づいた処理によって描かれる手書き文字Cの表示例について説明する。なお、図16は、プレイヤの入力状態が「入り」→「つなぎ」→「スライド」に移り変わったときの手書き文字Cの一例を示す図である。図17は、プレイヤの入力状態が「スライド」→「止め」に移り変わったときの手書き文字Cの一例を示す図である。図18は、プレイヤの入力状態が「スライド」のままでタッチパネル15からタッチオフされたときの手書き文字Cの一例を示す図である。なお、図16〜図18においては、手書き文字Cの手書き線内部状況を説明するために、現実には塗りつぶし線で表示される手書き文字Cが中抜き線で図示されている。また、図16〜図18では、プレイヤがタッチパネル15上をスライド操作した軌跡Tを破線で示している。
【0120】
図16において、プレイヤがタッチパネル15の指示位置P0(すなわち、タッチオン指示位置P0)にタッチオンしたとき、入力状態は「入り」に設定される(図11のステップ55)。そして、プレイヤが、タッチオン指示位置P0から所定距離以内(距離L0)をスライド操作している期間(図13のステップ81でYes)は、入力状態が「入り」に設定される(図13のステップ85;図16の入り区間)。この入り区間における描画処理においては、入力状態が「入り」のときに用いられる描画パターンが用いられる。ここで、図8を用いて説明したように、入力状態が「入り」のときに用いられる描画パターンは、筆を紙に最初に接した際に現れる形状を模しているため、手書き文字Cにおいても毛筆における「入り」形状が表現される。
【0121】
その後、プレイヤが、タッチオン指示位置P0から指示位置P1において距離L0を超える位置までスライド操作してから所定時間が経過するまでの期間(図13のステップ82でYes)は、入力状態が「つなぎ」に設定される(図13のステップ86;図16のつなぎ区間)。このつなぎ区間における描画処理においては、入力状態が「つなぎ」のときに用いられる描画パターンが用いられる。ここで、図9を用いて説明したように、入力状態が「つなぎ」のときに用いられる描画パターンは、入力状態が「入り」のときに用いられる描画パターンと略円形の描画パターン(すなわち、入力状態が「スライド」)との中間的な形状であるため、手書き文字Cにおいても毛筆における「入り」形状から基本描線(スライド)までのつなぎの形状が表現される。
【0122】
さらに、プレイヤが、指示位置P1をタッチ操作した時点から所定時間が経過して指示位置P2をタッチ操作した後の期間(図13のステップ81〜ステップ83が何れもNo)は、入力状態が「スライド」に設定される(図13のステップ89;図16のスライド区間)。このスライド区間における描画処理においては、入力状態が「スライド」のときに用いられる描画パターンが用いられる。ここで、図7を用いて説明したように、入力状態が「スライド」のときに用いられる描画パターンは、略円形であるため、手書き文字Cにおいては、基本描線を示す形状が表現される。
【0123】
図17において、プレイヤの入力状態が「スライド」で横方向にスライド操作してから、所定時間以上の間、所定範囲内の指示位置Pが指定されるとき(図13のステップ84でYes;図17の指示位置P3〜Peの間)、入力状態は「横止め」に設定される(図13のステップ87)。そして、プレイヤが、タッチパネル15から指示位置Peでタッチオフするまで、入力状態が「横止め」に設定される(図17の止め区間)。この止め区間における描画処理においては、入力状態が「横止め」のときに用いられる描画パターンが用いられる。ここで、上述したように、入力状態が「横止め」のときに用いられる描画パターンは、紙面に沿って筆を横方向に書き進めた状態で筆圧を高めて止めた際に現れる形状を模しているため、手書き文字Cにおいても毛筆における「横止め」形状が表現される。
【0124】
図18において、毛筆書きにおける「はね」や「はらい」を描くようにプレイヤがタッチパネル15上をスライド操作してタッチオフするとき、プレイヤの入力状態が「スライド」のままで指示位置Peからタッチオフされる(図18のスライド区間)。このようなスライド操作においては、プレイヤは、スライド操作におけるタッチ位置TPの移動を加速しながらタッチオフする。したがって、上述したバッファ距離Lbもタッチ位置TPの移動に応じて短縮される傾向となり、指示位置Peに向かって目標太さWtが細くなっていく。これに加えて、最新の指示位置Peでは一番細い描画パターンで描画され、当該指示位置Peから過去の指示位置側へ遡った位置では徐々に太い描画パターンで再描画される。したがって、タッチオフされた指示位置Peでは、過去の指示位置側へ遡った位置と比較して顕著に先細りした形状となり、あたかも毛筆書きにおける「はね」や「はらい」のような形状で表示される。
【0125】
このように、上述したゲーム装置1による処理では、最新のタッチ位置TPと重なる指示位置Pでは一番細い描画パターンで描画され、当該指示位置Pから過去の指示位置側へ遡った位置では相対的に太い描画パターンで再描画された手書き文字Cが表示される。これによって、第2のLCD12には、手書き文字Cがタッチ操作して描いた直後から時間が経過することによって徐々に線の太さが拡大するように描画され、毛筆描画で表現される文字のようにリアルな描画が可能となる。また、各指示位置Pに設定される目標太さWtは、タッチ操作の速度に応じて変化するため、さらにリアルな手書き文字Cの描画が可能となる。さらに、手書き文字Cを描画する際に用いられる描画パターンは、プレイヤの入力状態に応じて異なる形状が設定されているため、毛筆書きにおける「入り」や「止め」等の特徴形状もリアルに表現することができる。
【0126】
なお、上述した実施形態では、2画面分の液晶表示部の一例として、物理的に分離された第1のLCD11および第2のLCD12を互いに上下に配置した場合(上下2画面の場合)を説明した。しかしながら、2画面分の表示画面の構成は、他の構成でもかまわない。例えば、下側ハウジング13bの一方主面に第1のLCD11および第2のLCD12を左右に配置してもかまわない。また、第2のLCD12と横幅が同じで縦の長さが2倍のサイズからなる縦長サイズのLCD(すなわち、物理的には1つで、表示サイズが縦に2画面分あるLCD)を下側ハウジング13bの一方主面に配設して、上記2つのゲーム画像(すなわち、手本文字Mを示す画像と手書き文字Cを示す画像)を上下に表示(すなわち上下の境界部分無しに隣接して表示)するように構成してもよい。また、第2のLCD12と縦幅が同じで横の長さが2倍のサイズからなる横長サイズのLCDを下側ハウジング13bの一方主面に配設して、横方向に2つのゲーム画像を左右に表示(すなわち左右の境界部分無しに隣接して表示)するように構成してもよい。すなわち、物理的に1つの画面を2つに分割して使用することにより2つのゲーム画像を表示してもかまわない。いずれの画像の形態に対しても、上述した第2のLCD12に表示していたゲーム画像が表示される画面上にタッチパネル15を配設すれば、同様に本発明を実現することができる。また、物理的に1つの画面を2つに分割して使用することにより上記2つのゲーム画像を表示する場合、当該画面全面にタッチパネル15を配設してもかまわない。
【0127】
また、上述した実施例では、ゲーム装置1にタッチパネル15が一体的に設けられているが、ゲーム装置とタッチパネルとを別体にして構成しても、本発明を実現できることは言うまでもない。また、第1のLCD11の上面にタッチパネル15を設けて第1のLCD11に上述した第2のLCD12に表示していたゲーム画像を表示しても良い。さらに、上記実施例では表示画面を2つ(第1のLCD11、第2のLCD12)を設けたが、表示画面は1つであってもかまわない。すなわち、上記実施例において、第1のLCD11を設けず単に第2のLCD12のみを表示画面としてタッチパネル15を設けるように構成してもよい。また、上記実施例において、第2のLCD12を設けずに第1のLCD11の上面にタッチパネル15を設けて、上述した第2のLCD12に表示していたゲーム画像を第1のLCD11に表示しても良い。
【0128】
また、上記実施例では、座標入力を実現するゲーム装置1の入力手段としてタッチパネル15を用いたが、他のポインティングデバイスを用いてもかまわない。ここで、ポインティングデバイスは、画面上での入力位置や座標を指定する入力装置であり、例えば、マウス、トラックパッド、トラックボールなどを入力手段として使用し、入力手段から出力される出力値から計算された画面座標系の位置情報を用いれば、本発明を同様に実現することができる。
【0129】
この場合、上記画面座標系の位置情報を上述した処理におけるタッチ位置TPとして取り扱えば、本発明を実現することが可能である。ただし、上述した処理におけるタッチオンまたはタッチオフの判定については、上記位置情報の入力とは異なった上記入力手段からの他の入力の有無や変化によって代用する。例えば、上記入力手段に設けられた操作ボタンの押下(例えば、マウスの右クリック中または左クリック中)しているか否かによって、上記タッチオンまたはタッチオフの判定を代用する。
【0130】
また、ゲームコントローラをプレイヤが把持してゲームを楽しむ据置型のゲーム装置の場合、他の態様のポインティングデバイスも考えられる。例えば、ゲームコントローラのハウジングに固設されたカメラを、上記ポインティングデバイスとして利用することも可能である。この場合、ゲームコントローラのハウジングで指し示した位置の変化に応じてカメラが撮像する撮像画像が変化する。したがって、この撮像画像を解析することにより、表示画面に対して上記ハウジングで指し示した座標を算出することができる。
【0131】
この場合、上記ハウジングで指し示した位置を示す座標を、上述した処理におけるタッチ座標として取り扱えば本発明を実現することが可能である。ただし、上述した処理におけるタッチオンまたはタッチオフの判定については、上記座標入力とは異なった上記ゲームコントローラからの他の入力の有無や変化によって代用する。第1の例として、上記ゲームコントローラに設けられた操作ボタンの押下(例えば、Aボタンを押下しているときタッチオン)しているか否かによって、上記タッチオンまたはタッチオフの判定を代用する。第2の例では、上記ゲームコントローラが2つのハウジングで構成されている。そして、これら2つのハウジングは、上記カメラが搭載されている一方ハウジングと、他方のハウジングの動きに応じた信号を出力する加速度センサ等の検出部が固設された当該他方のハウジングとで構成される。この場合、他方のハウジングの動き(例えば、ハウジングを所定方向に傾けているときにタッチオン)に応じて、上記タッチオンまたはタッチオフの判定を代用する。第3の例では、上記ゲームコントローラのハウジングにマイク等の音声入力手段が設けられている。この場合、プレイヤが所定の音声を発したときにタッチオンおよびタッチオフが切り替わる判定で代用する。
【0132】
なお、上述した描画処理において、描画パターンを重ね合わせて再描画する際、ビットマップ情報を加算することによって表示される色濃度が濃くなる一例を示したが、他の方向を用いて同様の再描画を行ってもかまわない。例えば、白色のRGB値(255,255,255)から黒色のRGB値(0,0,0)を1〜0の値で正規化し、当該正規化した値をビットマップ情報として取り扱う。このように設定されたビットマップ情報は、白色(つまり、「1」)以外のビットマップ情報を乗算することによって、黒色(つまり、「0」)に近づいていく。このように、描画パターンを重ね合わせて再描画する際、ビットマップ情報を乗算することによって表示される色濃度が濃くなるように描画処理を行ってもかまわない。
【0133】
また、上述した一例では、指示位置Pに配置する要素画像の一例として描画パターンを用いたが、他の態様の要素画像を用いてもかまわない。例えば、各指示位置Pを中心とした所定半径(例えば、描画太さWi)の円を描く処理を行う。これによって、各指示位置Pに円形状の要素画像が配置され、互いに重なり合うことによって上述した手書き文字Cを描画することができる。
【0134】
また、上述した説明では、ポイントバッファにカウントフラグ、目標太さ、描画太さ、および入力状態を、各指示位置Pの履歴毎に記述したが、何れかのデータを記述しなくてもかまわない。例えば、描画太さについては、上述したように記述された目標太さおよびバッファ番号から算出することができるため、処理毎に各目標太さから算出して取得してもかまわない。また、入力状態については、最新の指示位置Pに対して設定されている入力状態が常にポイントバッファに記述されている各指示位置Pの入力状態とすれば、入力状態の履歴をポイントバッファに記述しなくてもよい。この場合、再描画される指示位置P(すなわち、ポイントバッファに格納されている指示位置P)には、最新の指示位置Pに設定されている入力状態に応じた描画パターンが再描画されることになる。
【0135】
また、上述した実施形態では、プレイヤのタッチ入力に応じて手書き文字Cが描画される例を用いたが、他の対象物を描画してもかまわない。例えば、図形や絵等を描画する処理においても、同様に本発明を適用できることは言うまでもない。また、上述した説明では、白色〜灰色〜黒色の無彩色の手書き文字Cが描画される例を用いたが、他の色彩の手書き文字Cを描画することも可能である。この場合、描画する文字色に応じて、図10に示すパレット情報テーブルのパレット情報をビットマップ情報に応じて調整すれば、有彩色の手書き文字Cであっても、同様の処理によって本発明を実現することができる。
【0136】
また、ゲームコントローラをプレイヤが把持してゲームを楽しむ据置型のゲーム装置におけるポインティングデバイスは、ゲームコントローラのハウジングの外部に別設されてもよい。一例として、カメラでハウジングの外部から当該ハウジングを撮影し、撮像画像内に撮像されたハウジングの画像を解析することにより、表示画面に対してハウジングで指し示している位置を示す座標を算出することが可能である。さらに、ハウジングに固設されたユニットとハウジング外部に別設されたユニットとの協働によるシステムを用いてもよい。この例としては、ハウジング外部に発光ユニットを別設し、ハウジングに固設されたカメラで発光ユニットからの光を撮影する。このカメラで撮像された撮像画像を解析することにより、表示画面に対してハウジングが指し示している座標を算出することができる。
【0137】
また、上記実施例では、携帯型のゲーム装置1や据置型のゲーム装置を用いて説明したが、一般的なパーソナルコンピュータ等の情報処理装置で本発明の描画処理プログラムを実行して、本発明を実現してもかまわない。
【0138】
また、上述したゲーム装置1の形状や、それに設けられている各種操作ボタン14やタッチパネル15の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、上述した描画パターンの設定数および形状等や、各種設定値および判定値等は、単なる一例に過ぎず他の値であっても、本発明を実現できることは言うまでもない。
【0139】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示にすぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。
【産業上の利用可能性】
【0140】
本発明の描画処理プログラムおよび描画処理装置は、ポインティングデバイスによる座標入力に応じた描画処理において、よりリアルな描画を可能とし、座標入力を用いて手書き入力した文字や図形等を表示装置に表示する装置や当該装置で実行されるプログラム等として有用である。
【図面の簡単な説明】
【0141】
【図1】本発明の一実施形態に係るゲームプログラムを実行するゲーム装置1の外観図
【図2】図1のゲーム装置1の内部構成を示すブロック図
【図3】図1の第1のLCD11および第2のLCD12に表示される画面表示例を示す図
【図4A】図1の第2のLCD12に表示されるゲーム画像とタッチ操作される位置との関係を説明するための第1段階の状態を示す図
【図4B】図1の第2のLCD12に表示されるゲーム画像とタッチ操作される位置との関係を説明するための第2段階の状態を示す図
【図4C】図1の第2のLCD12に表示されるゲーム画像とタッチ操作される位置との関係を説明するための第3段階の状態を示す図
【図5】本発明の一実施形態に係るゲームプログラムを実行することに応じて、RAM24に記憶される各種データの一例を示す図
【図6】図2のRAM24に記憶されるポイントバッファの一例を示す図
【図7】図2のRAM24に記憶されるスライド状態の描画パターンデータの一例を示す図
【図8】図2のRAM24に記憶される入り状態の描画パターンデータの一例を示す図
【図9】図2のRAM24に記憶されるつなぎ状態の描画パターンデータの一例を示す図
【図10】図2のRAM24に記憶されるパレット情報テーブルの一例を示す図
【図11】本発明の一実施形態に係るゲームプログラムを実行することによってゲーム装置1がゲーム処理を行うフローチャート
【図12】図11におけるステップ60の目標太さ算出処理の詳細な動作を示すサブルーチン
【図13】図11におけるステップ61の入力状態設定処理の詳細な動作を示すサブルーチン
【図14】図11におけるステップ62の描画処理の詳細な動作を示すサブルーチン
【図15】ビットマップ情報を書き換える一例と、当該ビットマップ情報に応じて表示される画像例
【図16】プレイヤの入力状態が「入り」→「つなぎ」→「スライド」に移り変わったときの手書き文字Cの一例を示す図
【図17】プレイヤの入力状態が「スライド」→「止め」に移り変わったときの手書き文字Cの一例を示す図
【図18】プレイヤの入力状態が「スライド」のままでタッチパネル15からタッチオフされたときの手書き文字Cの一例を示す図
【符号の説明】
【0142】
1 ゲーム装置
11 第1のLCD
12 第2のLCD
13 ハウジング
13a 上側ハウジング
13b 下側ハウジング
14 操作スイッチ部
14a 十字スイッチ
14b スタートスイッチ
14c セレクトスイッチ
14d Aボタン
14e Bボタン
14f Xボタン
14g Yボタン
14h 電源スイッチ
14L Lボタン
14R Rボタン
15 タッチパネル
16 スティック
17 メモリカード
17a ROM
17b RAM
18a、18b 音抜き孔
20 電子回路基板
21 CPUコア
22 バス
23 コネクタ
24 RAM
25 I/F回路
26 第1GPU
27 第2GPU
28 第1VRAM
29 第2VRAM
30a 右スピーカ
30b 左スピーカ
31 LCDコントローラ
32 レジスタ
33 ワイヤレス通信部

【特許請求の範囲】
【請求項1】
入力位置を出力するポインティングデバイスからの出力に応じた描画を表示装置に表示させるコンピュータで実行される描画処理プログラムであって、
前記ポインティングデバイスから前記入力位置を繰り返して取得する入力位置取得手段と、
所定の要素画像を、前記入力位置取得手段が取得した最新の入力位置に描画して前記表示装置に表示する描画手段と、
前記所定の要素画像より大きな表示サイズの要素画像を、前記入力位置取得手段が取得した過去の入力位置に描画して前記表示装置に表示する再描画手段として、前記コンピュータを機能させる、描画処理プログラム。
【請求項2】
前記最新の入力位置から時系列的に遡った過去の複数の入力位置それぞれに対して、前記入力位置取得手段が取得した順に応じて遡って漸増的に大きな表示サイズの要素画像を選択するサイズ選択手段として、さらに前記コンピュータを機能させ、
前記再描画手段は、前記複数の入力位置のそれぞれについて、前記サイズ選択手段により選択された要素画像を描画して前記表示装置に表示する、請求項1に記載の描画処理プログラム。
【請求項3】
前記再描画手段は、前記過去の入力位置における入力の移動速度に応じて、当該入力位置における前記要素画像の表示サイズの最大値を決定し、当該入力位置について描画する要素画像の表示サイズを当該最大値に制限する、請求項2に記載の描画処理プログラム。
【請求項4】
前記再描画手段によって前記過去の入力位置について前記要素画像を描画するにあたり、前記入力位置取得手段が取得した入力位置を用いて、前記過去の各入力位置に対して、当該入力位置における入力の移動速度を算出する入力速度算出手段として、さらに前記コンピュータを機能させ、
前記再描画手段は、前記過去の入力位置のそれぞれについて、前記入力速度算出手段によって算出された前記過去の各入力位置における入力の移動速度に応じて、当該移動速度が大きいほど前記最大値が小さくなるように、各入力位置の前記最大値を決定する、請求項3に記載の描画処理プログラム。
【請求項5】
前記入力位置取得手段が取得した入力位置を用いて、最新の入力位置における入力の移動速度を算出する入力速度算出手段と、
前記入力速度算出手段によって算出された前記移動速度に基づいて、当該移動速度に関する情報を各入力位置について保存する保存手段として、さらに前記コンピュータを機能させ、
前記再描画手段は、前記過去の入力位置のそれぞれについて、前記保存手段によって保存された各入力位置についての前記移動速度に関する情報を参照して、各入力位置における前記移動速度が大きいほど前記最大値が小さくなるように、各入力位置の前記最大値を決定する、請求項3に記載の描画処理プログラム。
【請求項6】
前記描画手段は、予め設定された最小の表示サイズの要素画像を、前記最新の入力位置に描画し、
前記再描画手段は、前記最小の表示サイズより大きな表示サイズの要素画像を、前記最新の入力位置から時系列的に遡った過去の入力位置に描画し、さらに大きな表示サイズの要素画像を、当該過去の入力位置から時系列的にさらに遡った過去の入力位置に描画する、請求項1に記載の描画処理プログラム。
【請求項7】
前記サイズ選択手段は、メモリに記憶された複数の表示サイズの描画パターンから、前記入力位置取得手段が取得した入力位置にそれぞれ対応する描画パターンを前記要素画像として選択する、請求項2に記載の描画処理プログラム。
【請求項8】
前記再描画手段は、その中心の色濃度が相対的に濃い画素で構成され、その周囲の色濃度が相対的に薄い画素で構成される要素画像を、前記過去の入力位置に対して既に描画された要素画像に重ねて描画する、請求項1に記載の描画処理プログラム。
【請求項9】
前記入力位置取得手段の取得履歴に応じて、前記最新の入力位置においてユーザが前記ポインティングデバイスを操作している操作類型を判定する操作類型判定手段と、
前記操作類型判定手段により前記最新の入力位置に対して判定された操作類型に応じて、複数種類の要素画像の中から使用する要素画像の種類を選択する種類選択手段として、さらに前記コンピュータを機能させ、
前記描画手段および前記再描画手段は、それぞれ前記最新の入力位置における操作類型に応じて選択された種類の要素画像を、前記最新の入力位置および前記過去の入力位置に描画する、請求項1に記載の描画処理プログラム。
【請求項10】
前記入力位置取得手段の取得履歴に応じて、各入力位置においてユーザが前記ポインティングデバイスを操作している操作類型を判定する操作類型判定手段と、
前記操作類型判定手段により前記各入力位置に対して判定された操作類型に応じて、複数種類の要素画像の中から使用する要素画像の種類をそれぞれ選択する種類選択手段として、さらに前記コンピュータを機能させ、
前記描画手段および前記再描画手段は、それぞれ前記各入力位置における操作類型に応じて選択された種類の要素画像を、前記各入力位置にそれぞれ描画する、請求項1に記載の描画処理プログラム。
【請求項11】
前記操作類型判定手段は、前記入力位置取得手段が最初に入力位置を取得したときに、当該入力位置に対して、ユーザが入力開始状態の操作類型で前記ポインティングデバイスを操作していると判定し、かつ、前記入力位置取得手段が継続して入力位置を取得したときに、当該入力位置に対して、ユーザが入力継続状態の操作類型で前記ポインティングデバイスを操作していると判定し、
前記種類選択手段は、前記操作類型判定手段が前記入力開始状態の操作類型と判定したことに応じて、当該操作類型に分類された第1の形状の要素画像を、当該入力開始状態と判定された前記入力位置に対応して選択し、かつ、前記操作類型判定手段が前記入力継続状態の操作類型と判定したことに応じて、当該操作類型に分類された当該第1の形状とは異なる第2の形状の要素画像を、当該入力継続状態と判定された前記入力位置に対応して選択する、請求項9または10に記載の描画処理プログラム。
【請求項12】
前記操作類型判定手段は、前記入力位置取得手段が取得した入力位置が、前記最初の入力位置を中心とした所定範囲内であるとき、当該取得した入力位置に対して、前記入力開始状態の操作類型で前記ポインティングデバイスを操作していると判定する、請求項11に記載の描画処理プログラム。
【請求項13】
前記種類選択手段は、前記操作類型判定手段が前記入力開始状態の操作類型が終了したと判定された後から所定条件を満たすまで、前記第1の形状と前記第2の形状との中間形状の要素画像を、前記入力位置に対応して選択する、請求項11に記載の描画処理プログラム。
【請求項14】
前記操作類型判定手段は、前記入力位置取得手段が繰り返し取得した入力位置が、所定時間以上所定範囲内に位置するとき、ユーザが入力終了状態の操作類型で前記ポインティングデバイスを操作していると判定し、
前記種類選択手段は、前記操作類型判定手段が前記入力終了状態の操作類型と判定したことに応じて、当該操作類型に分類された前記第1の形状および前記第2の形状とは異なる第3の形状の描画パターンを、前記入力位置に対応して選択する、請求項11に記載の描画処理プログラム。
【請求項15】
前記サイズ選択手段は、前記入力位置取得手段が取得した入力位置間を補間する位置に対して、当該補間前後の入力位置に選択されている要素画像のサイズを線形補間する表示サイズの要素画像を、さらに選択し、
前記再描画手段は、前記要素画像設定手段が前記入力位置および前記入力位置間を補間する位置にそれぞれについて、前記サイズ選択手段により選択された要素画像を描画して前記表示装置に表示する、請求項2に記載の描画処理プログラム。
【請求項16】
前記ポインティングデバイスは、前記表示装置の表示画面を覆うタッチパネルであり、
前記入力位置取得手段は、前記タッチパネルから出力されるタッチ座標データを前記入力位置として取得する、請求項1に記載の描画処理プログラム。
【請求項17】
入力位置を出力するポインティングデバイスからの出力に応じた描画を表示装置に表示させる描画処理装置であって、
前記ポインティングデバイスから前記入力位置を繰り返して取得する入力位置取得手段と、
所定の要素画像を、前記入力位置取得手段が取得した最新の入力位置に描画して前記表示装置に表示する描画手段と、
前記所定の要素画像より大きな表示サイズの要素画像を、前記入力位置取得手段が取得した過去の入力位置に描画して前記表示装置に表示する再描画手段とを備える、描画処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4A】
image rotate

【図4B】
image rotate

【図4C】
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

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate


【公開番号】特開2008−269059(P2008−269059A)
【公開日】平成20年11月6日(2008.11.6)
【国際特許分類】
【出願番号】特願2007−108195(P2007−108195)
【出願日】平成19年4月17日(2007.4.17)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】