この発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
[実施の形態1]
本発明に係るコンピュータないし画像処理装置の代表例として、以下ではゲーム装置100について説明する。また、本発明に係る画像処理プログラムの一例として、当該ゲーム装置100で実行されるプログラムについて説明する。なお、本発明に係る画像処理装置は、ゲーム装置に限定されることはなく、各種アプリケーションを実行可能なパーソナルコンピュータとして実現してもよい。すなわち、本発明に係る画像処理プログラムは、入力手段および表示手段が利用可能なコンピュータであれば、いずれの種類のコンピュータであっても実行可能である。なお、「利用可能な」とは、入力手段と表示手段がコンピュータと有線または無線で接続されており、データの通信が可能であることを意味し、入力手段や表示手段がコンピュータ装置と一体である場合と、別体である場合の両方を含む。
また、本発明に係る画像処理プログラムは、パーソナルコンピュータ上で実行される各種アプリケーションの機能として組み込まれてもよい。また、以下では携帯型装置について説明するが、据え置き型の装置であってもかまわない。
また、入力手段としては、後述するように携帯型装置であれば、後述するようにタッチパネルが好ましいが、代替的にマウスなどでもよい。あるいは、表示モニタに対して遠隔から座標指示可能なポインタ(典型的には、Wii(登録商標)のコントローラなど)などであってもかまわない。なお、マウスやポインタの場合には、後述する実施の形態における「タッチオン」の座標は、所定の操作(ボタン操作など)があったときの検出座標とすればよく、「タッチ状態が継続」の判定は、所定の操作が継続(例えば、当該ボタン操作が継続)しているという判定とすることができる。
<ゲーム装置の外観>
図1は、この発明の実施の形態1に従うゲーム装置100の外観図である。
図1を参照して、本実施の形態に従うゲーム装置100は、折り畳み型の携帯ゲーム装置である。図1では、開いた状態(開状態)のゲーム装置100が示されている。ゲーム装置100は、開いた状態においてもユーザが両手または片手で把持することができるようなサイズで構成される。
ゲーム装置100は、下側ハウジング11および上側ハウジング21を有する。下側ハウジング11と上側ハウジング21とは、開閉可能(折り畳み可能)に連結されている。図1に示す例では、下側ハウジング11および上側ハウジング21は、それぞれ横長の長方形の板状に形成され、互いの長辺部分で回転可能に連結されている。
通常、ユーザは、開状態でゲーム装置100を使用する。また、ユーザは、ゲーム装置100を使用しない場合には閉状態としてゲーム装置100を保管する。また、図1に示す例では、ゲーム装置100は、上記閉状態および開状態のみでなく、下側ハウジング11と上側ハウジング21とのなす角度が閉状態と開状態との間の任意の角度において、連結部分に発生する摩擦力などによってその開閉角度を維持することができる。つまり、上側ハウジング21を下側ハウジング11に対して任意の角度で静止させることができる。
下側ハウジング11には、表示部(表示手段)として、下側LCD(Liquid Crystal Display:液晶表示装置)12が設けられる。下側LCD12は横長形状であり、長辺方向が下側ハウジング11の長辺方向に一致するように配置される。なお、本実施の形態では、ゲーム装置100に搭載される表示部(表示手段)としてLCDを用いているが、たとえばEL(Electro Luminescence:電界発光)を利用した表示装置等、他の任意の表示装置を利用してもよい。また、ゲーム装置100は、任意の解像度の表示装置を利用することができる。
下側ハウジング11には、入力部(入力手段)として、各操作ボタン14A〜14Hが設けられる。図1に示されるように、各操作ボタン14A〜14Hのうち、方向入力ボタン14A、操作ボタン14B、操作ボタン14C、操作ボタン14D、操作ボタン14E、電源ボタン14F、スタートボタン14G、およびセレクトボタン14Hは、上側ハウジング21と下側ハウジング11とを折りたたんだときに内側となる、下側ハウジング11の内側主面上に設けられる。
方向入力ボタン14Aは、たとえば選択操作等に用いられる。各操作ボタン14B〜14Eは、たとえば決定操作やキャンセル操作等に用いられる。電源ボタン14Fは、ゲーム装置100の電源をオン/オフするために用いられる。図1に示す例では、方向入力ボタン14Aおよび電源ボタン14Fは、下側ハウジング11の内側主面中央付近に設けられる下側LCD12に対して、左右一方側(図1では左側)の当該主面上に設けられる。
また、操作ボタン14B〜14E、スタートボタン14G、およびセレクトボタン14Hは、下側LCD12に対して左右他方側(図1では右側)となる下側ハウジング11の内側主面上に設けられる。方向入力ボタン14A、操作ボタン14B〜14E、スタートボタン14G、およびセレクトボタン14Hは、ゲーム装置100に対する各種操作を行なうために用いられる。
なお、ゲーム装置100には、図1において図示されていない操作ボタン14I〜14Kがさらに設けられてもよい。たとえば、Lボタン14Iは、下側ハウジング11の上側面の左端部に設けられ、Rボタン14Jは、下側ハウジング11の上側面の右端部に設けられる。Lボタン14IおよびRボタン14Jは、ゲーム装置100に対して、たとえば撮影指示操作(シャッター操作)を行なうために用いられる。さらに、音量ボタン14Kは、下側ハウジング11の左側面に設けられる。音量ボタン14Kは、ゲーム装置100が備えるスピーカの音量を調整するために用いられる。
また、ゲーム装置100は、各操作ボタン14A〜14Hとは別の入力部(入力手段)として、さらにタッチパネル13を備えている。タッチパネル13は、下側LCD12の画面上を覆うように装着されている。
本実施の形態では、タッチパネル13は、下側LCD12の表示面と対応付けて配置されており、たとえば抵抗膜方式のタッチパネルが用いられる。ただし、タッチパネル13は、抵抗膜方式に限らず、任意の押圧式のタッチパネルを用いることができる。
また、本実施の形態では、タッチパネル13として、たとえば下側LCD12の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル13の解像度と下側LCD12の解像度とが一致している必要はない。
さらに、下側ハウジング11の右側面には、タッチペン27の挿入口(図1に示す破線)が設けられている。上記挿入口は、タッチパネル13に対する操作を行なうために用いられるタッチペン27を収納することができる。なお、タッチパネル13に対する入力は、通常タッチペン27を用いて行われるが、タッチペン27に限らずユーザの指でタッチパネル13を操作することも可能である。
さらに、下側ハウジング11の右側面には、メモリカード28を収納するための挿入口(図1では、二点鎖線で示している)が設けられている。この挿入口の内側には、ゲーム装置100とメモリカード28とを電気的に接続するためのコネクタ(図示せず)が設けられる。メモリカード28は、たとえばSD(Secure Digital)メモリカードであり、コネクタに着脱自在に装着される。メモリカード28は、たとえば、ゲーム装置100によって撮影および/または画像処理された画像を記憶(保存)したり、他の装置で生成された画像をゲーム装置100に読み込んだりするために用いられる。
さらに、下側ハウジング11の上側面には、メモリカード29を収納するための挿入口(図1では、一点鎖線で示している)が設けられている。この挿入口の内側にも、ゲーム装置100とメモリカード29とを電気的に接続するためのコネクタ(図示せず)が設けられる。メモリカード29は、画像通信プログラムやゲームプログラム等を記憶した記憶媒体であり、下側ハウジング11に設けられた挿入口に着脱自在に装着される。
下側ハウジング11と上側ハウジング21との連結部の左側部分には、3つのLED15A〜15Cが取り付けられる。本実施の形態に従うゲーム装置100は、他の機器との間で無線通信を行なうことが可能であり、第1LED15Aは、無線通信が確立している場合に点灯する。第2LED15Bは、ゲーム装置100の充電中に点灯する。第3LED15Cは、ゲーム装置100の電源がオンである場合に点灯する。したがって、3つのLED15A〜15Cによって、ゲーム装置100の通信確立状況、充電状況、および、電源のオン/オフ状況をユーザに通知することができる。
一方、上側ハウジング21には、上側LCD22が設けられる。上側LCD22は横長形状であり、長辺方向が上側ハウジング21の長辺方向に一致するように配置される。なお、下側LCD12と同様、上側LCD22に代えて、他の任意の方式および任意の解像度の表示装置を利用してもよい。なお、上側LCD22上を覆うように、タッチパネルを設けてもかまわない。
さらに、上側ハウジング21には、2つの撮像装置であるカメラ(内側カメラ23および外側カメラ25)が設けられる。図1に示されるように、内側カメラ23は、上側ハウジング21の連結部付近の内側主面に取り付けられる。一方、外側カメラ25は、内側カメラ23が取り付けられる内側主面の反対側の面、すなわち、上側ハウジング21の外側主面(ゲーム装置100が閉状態となった場合に外側となる面であり、図1に示す上側ハウジング21の背面)に取り付けられる。なお、図1においては、外側カメラ25を破線で示している。
これによって、内側カメラ23は、上側ハウジング21の内側主面が向く方向を撮影することが可能であり、外側カメラ25は、内側カメラ23の撮影方向の逆方向、すなわち、上側ハウジング21の外側主面が向く方向を撮影することが可能である。
このように、本実施の形態では、2つの内側カメラ23および外側カメラ25の撮影方向が互いに逆方向となるように設けられる。たとえば、ユーザは、ゲーム装置100からユーザの方を見た景色を内側カメラ23で撮影することができるとともに、ゲーム装置100からユーザの反対側の方向を見た景色を外側カメラ25で撮影することができる。
なお、下側LCD12および/または上側LCD22は、内側カメラ23または外側カメラ25で撮影される画像をリアルタイムに表示するために用いられることもある。
さらに、上記連結部付近の内側主面には、音声入力装置としてマイク(図2に示すマイク43)が収納されている。そして、上記連結部付近の内側主面には、マイク43がゲーム装置100外部の音を検知できるように、マイクロフォン用孔16が形成される。マイク43を収納する位置およびマイクロフォン用孔16の位置は必ずしも上記連結部である必要はなく、たとえば下側ハウジング11にマイク43を収納し、マイク43の収納位置に対応させて下側ハウジング11にマイクロフォン用孔16を設けるようにしてもよい。
さらに、上側ハウジング21の外側主面には、第4LED26(図1では、破線で示す)が取り付けられる。第4LED26は、内側カメラ23または外側カメラ25によって撮影が行われている間点灯する。また、内側カメラ23または外側カメラ25によって動画が撮影(撮影画像を動画として記憶)される間は点滅させてもよい。
なお、LEDが画面に映り込むことを防ぐために、シャッターが押された瞬間から、当該シャッターが押された瞬間の撮影画像の記憶が完了するまでの間は第4LED26を消灯させてもよい。第4LED26によって、ゲーム装置100による撮影が行われていることを撮影対象者や周囲に通知することができる。
さらに、上側ハウジング21の内側主面中央付近に設けられる上側LCD22に対して、左右両側の当該主面に音抜き孔24がそれぞれ形成される。音抜き孔24の奥の上側ハウジング21内にはスピーカが収納されている。音抜き孔24は、スピーカからの音をゲーム装置100の外部に放出するための孔である。
以上に説明したように、上側ハウジング21には、画像を撮影するための構成である内側カメラ23および外側カメラ25と、各種画像を表示するための表示手段である上側LCD22とが設けられる。一方、下側ハウジング11には、ゲーム装置100に対する操作入力を行なうための入力部(タッチパネル13および各ボタン14A〜14K)と、各種画像を表示するための表示手段である下側LCD12とが設けられる。
当該入力装置は、たとえば、ゲーム装置100を使用する際には、下側LCD12や上側LCD22に撮影画像(カメラによって撮影された画像)を表示しながら、下側ハウジング11をユーザが把持して入力装置に対する入力を行なうような用途に用いることができる。
<ゲーム装置の内部構成>
図2は、この発明の実施の形態1に従うゲーム装置100の内部構成の一例を示すブロック図である。
図2を参照して、ゲーム装置100は、CPU31と、メインメモリ32と、メモリ制御回路33と、保存用データメモリ34と、プリセットデータ用メモリ35と、メモリカードインターフェース(メモリカードI/F)36および37と、無線通信モジュール38と、ローカル通信モジュール39と、リアルタイムクロック(RTC)40と、電源回路41と、インターフェース回路(I/F回路)42等との電子部品を備えている。これらの電子部品は、電子回路基板上に実装されて、下側ハウジング11(または上側ハウジング21でもよい)内に収納される。
CPU31は、所定のプログラムを実行するための演算処理手段である。本実施の形態では、所定のプログラムがゲーム装置100内のメモリ(たとえば、保存用データメモリ34)やメモリカード28および/または29に記録されており、CPU31は、当該所定のプログラムを実行することによって、後述する画像処理を実行する。なお、CPU31によって実行されるプログラムは、ゲーム装置100内のメモリに予め記録されていてもよいし、メモリカード28および/または29から取得されてもよいし、他の機器との通信によって他の機器から取得されてもよい。
CPU31には、メインメモリ32、メモリ制御回路33、およびプリセットデータ用メモリ35が接続される。また、メモリ制御回路33には、保存用データメモリ34が接続される。
メインメモリ32は、CPU31のワーク領域やバッファ領域として用いられる記憶手段である。すなわち、メインメモリ32は、上記情報処理に用いられる各種データを記憶したり、外部(メモリカード28および29や他の機器等)から取得されるプログラムを記憶したりする。本実施の形態では、メインメモリ32として、たとえばPSRAM(Pseudo-SRAM)を用いる。
保存用データメモリ34は、CPU31によって実行されるプログラムや内側カメラ23および外側カメラ25によって撮影された画像のデータ等を記憶するための記憶手段である。保存用データメモリ34は、不揮発性の記憶媒体によって構成されており、たとえば本実施例ではNAND型フラッシュメモリで構成される。メモリ制御回路33は、CPU31の指示に従って、保存用データメモリ34に対するデータの読み出しおよび書き込みを制御する回路である。
プリセットデータ用メモリ35は、ゲーム装置100において予め設定される各種パラメータ等のデータ(プリセットデータ)を記憶するための記憶手段である。プリセットデータ用メモリ35としては、SPI(Serial Peripheral Interface)バスによってCPU31と接続されるフラッシュメモリを用いることができる。
メモリカードI/F36および37は、それぞれCPU31に接続される。メモリカードI/F36は、コネクタに装着されたメモリカード28に対するデータの読み出しおよび書き込みを、CPU31の指示に応じて行なう。また、メモリカードI/F37は、コネクタに装着されたメモリカード29に対するデータの読み出しおよび書き込みを、CPU31の指示に応じて行なう。
本実施の形態では、内側カメラ23および外側カメラ25によって撮影された画像データや他の装置から受信された画像データがメモリカード28に書き込まれたり、メモリカード28に記憶された画像データがメモリカード28から読み出されて保存用データメモリ34に記憶されたり、他の装置へ送信されたりする。また、メモリカード29に記憶された各種プログラムが、CPU31によって読み出されて実行されたりする。
なお、本発明に係る画像処理プログラムは、メモリカード29等の外部記憶媒体を通じてコンピュータシステムに供給されるだけでなく、有線または無線の通信回線を通じてコンピュータシステムに供給されてもよい。また、画像処理プログラムは、コンピュータシステム内部の不揮発性記憶装置に予め記憶されていてもよい。なお、画像処理プログラムを記憶する記憶媒体としては、上記不揮発性記憶装置に限らず、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体でもよい。
無線通信モジュール38は、たとえばIEEE802.11.b/gの規格に準拠した方式により、無線LANに接続する機能を有する。また、ローカル通信モジュール39は、所定の通信方式により同種のゲーム装置との間で無線通信を行なう機能を有する。無線通信モジュール38およびローカル通信モジュール39は、CPU31に接続される。CPU31は、無線通信モジュール38を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュール39を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
さらに、CPU31には、RTC40および電源回路41が接続される。RTC40は、時間をカウントしてCPU31に出力する。たとえば、CPU31は、RTC40によって計時された時間に基づいて、現在時刻(日付)等を計算することもできる。電源回路41は、ゲーム装置100が有する電源(典型的には電池であり、下側ハウジング11に収納される)から供給される電力を制御し、ゲーム装置100の各部品に電力を供給する。
さらに、ゲーム装置100は、マイク43およびアンプ44を備えている。マイク43およびアンプ44は、それぞれI/F回路42に接続される。マイク43は、ゲーム装置100に向かって発声されたユーザの音声を検知して、当該音声を示す音声信号をI/F回路42に出力する。アンプ44は、I/F回路42から音声信号を増幅してスピーカ(図示せず)から出力させる。I/F回路42は、CPU31に接続される。
また、タッチパネル13は、I/F回路42に接続される。I/F回路42は、マイク43およびアンプ44(スピーカ)の制御を行なう音声制御回路と、タッチパネル13の制御を行なうタッチパネル制御回路とを含む。
音声制御回路は、音声信号に対するA/D変換およびD/A変換を行ったり、音声信号を所定の形式の音声データに変換したりする。
タッチパネル制御回路は、タッチパネル13からの信号に基づいて所定の形式のタッチ位置データを生成してCPU31に出力する。たとえば、タッチ位置データは、タッチパネル13の入力面に対して入力が行われた位置の座標を示すデータである。なお、タッチパネル制御回路は、タッチパネル13からの信号の読み込み、および、タッチ位置データの生成を所定時間に1回の割合で行なう。
CPU31は、I/F回路42を介して、タッチ位置データを取得することにより、ユーザによるタッチパネル13に対する操作によって入力される座標を検出することができる。
操作ボタン14は、上記各操作ボタン14A〜14Kから構成され、CPU31に接続される。操作ボタン14からCPU31へは、各操作ボタン14A〜14Kに対する入力状況(押下されたか否か)を示す操作データが出力される。CPU31は、操作ボタン14から操作データを取得することによって、操作ボタン14に対する入力に応じた処理を実行する。
内側カメラ23および外側カメラ25は、それぞれCPU31に接続される。内側カメラ23および外側カメラ25は、CPU31の指示に応じて画像を撮影し、撮影した画像データをCPU31に出力する。たとえば、CPU31は、内側カメラ23および外側カメラ25のいずれか一方に対して撮影指示を行ない、撮影指示を受けたカメラが画像を撮影して画像データをCPU31に送る。
また、下側LCD12および上側LCD22は、それぞれCPU31に接続される。下側LCD12および上側LCD22は、それぞれCPU31の指示に従って画像を表示する。一例として、CPU31は、内側カメラ23および外側カメラ25のいずれかから取得した画像を、下側LCD12および上側LCD22の一方に表示させ、所定の処理によって生成した操作説明画面を下側LCD12および上側LCD22の他方に表示させる。
<ゲーム装置の使用例>
図3は、この発明の実施の形態1に従うゲーム装置100の使用形態の一例を示す図である。図3を参照して、ゲーム装置100では、搭載されたカメラ(内側カメラ23または外側カメラ25)で撮影される被写体TRGなどの画像が下側LCD12にリアルタイムに表示されるとともに、ユーザはタッチペン27や自身の指など(以下、「タッチペン27等」と称する)を用いて、下側LCD12上に配置されたタッチパネル13を操作して、任意のオブジェクトを追加することが可能である。そして、このユーザ操作に応じたオブジェクトが撮影される画像に重ね合わされて表示されるようになる。このように、本実施の形態に従うゲーム装置100では、カメラで撮影された画像などに対して、ユーザは自由に「らくがき」することが可能である。なお、表示される画像は、メモリカード28(図2)などに予め記憶された画像(静止画像もしくは動画像)であってもよい。
なお、図3に示す例では、外側カメラ25を用いて被写体TRGが撮影されているが、内側カメラ23を用いて被写体TRGを撮影するようにしてもよく、いずれのカメラを使用するかについては、ユーザが任意に選択できるようにしてもよい。
図4は、この発明の実施の形態1に従うゲーム装置100における選択画面の一例を示す図である。図4を参照して、本実施の形態に従うゲーム装置100は、上述したユーザが自由に「らくがき」できる機能を含む複数の機能を搭載しており、ユーザは、図4に示す選択画面上で所望する機能を選択する。
図4に示す例では、画面上部にゲーム装置100に搭載された各機能に対応する複数のアイコン150が表示されており、ユーザは、これらのアイコン150のうち所望する機能に対応するアイコンを任意に選択することができる。また、画面の両側には、選択アイコン152および154が表示されている。ユーザが選択アイコン152または154を選択する毎に、選択される機能がアイコン150の配列に従って左側または右側に順次変更される。
このような方法によりユーザが機能を選択した上で、「はじめる」アイコン158を選択すると、選択された機能が実行される。また、「やめる」アイコン156が選択されると、図示しないメニュー画面へ戻る。
また、図4に示すように、ユーザにより選択されたアイコン150に対応する機能の内容をユーザに提示するように、プレビュー領域160には、その選択された機能の名称(図4に示す例では「らくがきカメラ」)およびその処理の概略が示される。
<「らくがきカメラ」の概要>
以下、図5〜図11を参照して、本実施の形態に従う「らくがきカメラ」の概要について説明する。
本実施の形態に従う「らくがきカメラ」は、カメラで撮影された画像などに対して、ユーザが自由に「らくがき」することができる機能である。「らくがきカメラ」では、主として、予め用意された1個のオブジェクト(スタンプ)を任意の位置および向きで配置できる機能と、ユーザ入力された軌跡に沿って複数のオブジェクトを配置できる機能とが提供される。
図5に示すように、「らくがきカメラ」のモードでは、カメラで撮影された画像がリアルタイムに表示されるとともに、この画像に対して「らくがき」操作を選択するためのアイコン202〜208が画面上部に表示され、各種操作を選択するためのアイコン210〜214が画面下部に表示される。
この図5に示す例では、被写体TRGを撮影して得られた画像に対して、葉っぱのスタンプであるオブジェクトOBJ2と、ハート型のスタンプであるオブジェクトOBJ4とが重ねて表示され、さらに、ユーザが入力した「hello」の文字を示すオブジェクトOBJ3が重ねて表示されている場合を示す。
図5に示すオブジェクトOBJ3については、ユーザが「えんぴつ」アイコン202を選択(タッチ)した後、タッチペン27等を画面上にタッチしたまま移動(スライド操作)させることで、その移動した軌跡に応じて生成される。なお、「えんぴつ」アイコン202を選択することで、図示しない選択サブメニューが表示され、この選択サブメニューにおいて、線の太さおよび線の色などを任意に選択することができる。
また、ユーザは、「消しゴム」アイコン204を選択した後、タッチペン27等を画面上にタッチしたまま移動(スライド操作)させることで、その移動した軌跡(領域)に含まれるオブジェクトが消去される。さらに、「全部けす」アイコン208が選択されると、表示領域200に表示されているすべてのオブジェクトが消去される。
また、「スタンプ」アイコン206が選択されると、図6に示す選択サブメニューが表示され、この選択サブメニューで選択されたスタンプが入力可能になる。ゲーム装置100では、複数種類のスタンプ(図6に示す例では10種類)が予め用意されており、図6に示すように、「スタンプ」アイコン206が選択された場合の選択サブメニューでは、各スタンプに対応する複数のアイコン222が表示される。ユーザは、所望するスタンプに対応するアイコンを選択した後、「とじる」アイコン224を選択すると、選択されたスタンプが入力可能な状態となって、選択サブメニューの表示は消える。
選択されたスタンプが入力可能な状態において、ユーザがタッチペン27等で画面上の所望する位置にタッチすることで、当該位置(第1オブジェクト配置座標値に相当)に選択された1個のスタンプが配置される。
特に、本実施の形態に従うゲーム装置100では、配置された直後のスタンプは、その配置される向きについては未確定の状態に維持される。すなわち、ユーザが、タッチペン27等で画面上にタッチオンしてスタンプを配置した後、画面上にタッチしたまま、当該タッチペン27等を移動(スライド操作)させることで、スタンプの向きはその移動後のタッチ位置(継続座標値に相当)に応じてリアルタイムで変化する。そして、ユーザが画面上からタッチペン27等を離す、もしくはタッチペン27等をタッチオン位置から所定距離D1より多く移動させたなどの操作を行なった場合には、配置されたスタンプの向きは確定する(確定状態)。なお、後述の通り、タッチ位置がタッチオン位置から所定距離D2(D2<D1)より短いときには、スタンプの向きは変更されない。
具体的な一例として、たとえば、図6に示す選択サブメニューにおいて吹き出しのスタンプに対応するアイコンが選択された後、ユーザがタッチペン27等で画面上の所望する位置にタッチすると、図7に示すように、吹き出しのスタンプであるオブジェクトOBJ4が、タッチオンされた位置に応じて配置される。なお、このときのオブジェクトOBJ4の向きは、予め定められた向き(初期値)となる。さらに、タッチペン27等で画面上にタッチした状態のまま、タッチペン27等を移動させると、図8に示すように、オブジェクトOBJ4は、このタッチペン27等の移動した後の位置に応じて順次回転する。なお、各スタンプには、予め回転の中心点が定められており、タッチペン27等の移動に応じてこの中心点を回転中心として回転する。その後、タッチペン27等が画面上から離されたり、タッチペン27等がタッチオン位置より所定距離D1より多く移動したりした場合などには、配置されたオブジェクト4(スタンプ)の向きは確定する。
さらに、1つ目のスタンプを配置した後、タッチペン27等を画面上にタッチしたまま移動させた場合の例について、図9〜図11を参照して説明する。なお、理解を容易にするために、図9〜図11に示す例では、葉っぱのスタンプが選択されている場合について示す。
まず、ユーザがタッチペン27等で画面上の所望する位置にタッチすると、図9に示すように、葉っぱのスタンプであるオブジェクトOBJ21がタッチオンされた位置に応じて配置される(画面に表示される)。上述したように、この配置された直後のスタンプ(オブジェクトOBJ21)は、その向きについては未確定な状態にある。その後、ユーザが、タッチペン27等で画面上にタッチした状態のまま、タッチペン27等をタッチオン位置から所定距離D1より多く移動させると、オブジェクトOBJ21の向きが確定する。このオブジェクトOBJ21の向きの確定と同時あるいは確定の後、さらにタッチペン27等により画面がタッチされ続けている状態であれば、新たなスタンプ(2つ目のスタンプ)であるオブジェクトOBJ22が配置される。
なお、2個目に配置されるスタンプの向きについては、1個目のスタンプの位置と自身のスタンプの位置との相対関係に応じて、その向きが定まる。それゆえ、2つ目のスタンプは配置される時点で向きが確定している。2つめのスタンプが配置された後、さらに、その後、タッチした状態のままオブジェクトOBJ22の位置から所定距離D1だけ多く移動させると、さらに新たなスタンプ(3つ目のスタンプ)であるオブジェクトOBJ23が配置される。この3つ目のスタンプについても、2つ目のスタンプと同様、配置される時点で向きが確定している。具体的には、2つ目のスタンプの位置と自身のスタンプの位置との相対関係に応じてその向きが定まる。さらにその後タッチした状態のままタッチ位置を移動させ続けると、4つ目以降のスタンプ(OBJ24,OBJ25,…)についても、上述と同様に配置され。その向きが定まる。なお、前述の通り、タッチペン27等を画面上にタッチしてから離されるまでの一連の操作中において、1個目に配置されるスタンプの向きは、自身のスタンプの位置と1つ後のスタンプの位置の相対関係に応じて確定するので、表示される時点で向きが確定しておらず、その後のタッチ位置に応じて向きが変化する。一方、2個目以降に配置されるスタンプの向きについては、1つ前のスタンプの位置と自身のスタンプの位置との相対関係に応じて、その配置される向きが定まる。すなわち、一連の操作中において、2個目以降に配置されたスタンプについては、表示される時点で向きが確定しているため、未確定状態が存在しない。
このようにして、ユーザが、タッチペン27等で画面上をタッチした状態のまま、タッチペン27等を移動させると、その軌跡に沿ってスタンプが順次配置される。このような操作は、タッチペン27等で画面にタッチしている限り継続する。そのため、ユーザは、タッチペン27等を操作することで、その軌跡に沿ったスタンプを自在に配置することができる。
なお、タッチペン27等で画面をタッチして、タッチオン位置から所定距離D1以内でタッチオフした場合には、スタンプが1つだけ配置される。また、タッチオン位置から所定距離D2以内でタッチオフした場合は、スタンプの向きは初期状態のまま表示される。すなわち、タッチしてすぐにタッチオフした場合(タッチオン位置から所定距離D2以内でタッチオフした場合)には、1つのスタンプが初期状態の向きで表示される。
このように、本実施の形態に従うゲーム装置100では、タッチパネル13に対する操作によって連続的に入力される座標値の変化を検出し、この座標値の変化に対応するタッチパネル13上の軌跡に応じて、少なくとも1つのオブジェクトが順次表示される。このとき、各オブジェクトの向きは、タッチパネル13上の軌跡に応じて順次決定される。また、オブジェクトを1つだけ配置することも可能であり、また、当該1つのオブジェクトは、初期状態の向きで表示することも、向きを変更して表示することも可能である。
再度図5を参照して、「やめる」アイコン210が選択されると、本「らくがきカメラ」の処理が中止され、図4に示すような選択画面へ戻る。
また、「とる」アイコン212が選択されることで、選択されたタイミングにおいてカメラで撮影されている画像と、ユーザが「らくがき」したオブジェクトOBJ2〜OBJ4とを合成した静止画像が生成され、保存用データメモリ34(図2)などに記憶される。
また、切替アイコン214が選択されると、画像撮影に使用するカメラが、内側カメラ23と外側カメラ25との間で切り替えられる。
<「らくがきカメラ」の詳細処理>
以下、図12、図13、図37および図38を参照して、本実施の形態に従う「らくがきカメラ」の詳細処理について説明する。なお、図12および図13に示す例は、図9および図10に示すオブジェクトOBJ21およびOBJ22が配置される処理を説明するものであり、図37および図38に示す例は、図9および図10に示すオブジェクトOBJ21およびOBJ22が配置される内部処理を説明するものである。
タッチペン27等で画面上にタッチされると、タッチパネル13(図1,図2)は、その入力面に対して入力が行われた位置の座標を示すタッチ位置データを出力する。たとえば、図12(a)に示すように、第1入力点P1をタッチペン27等でタッチすると(タッチオンすると)、この第1入力点P1の座標を示すタッチ位置データが得られる。
続いて、この第1入力点P1に基づいて基準線が算出される。図12(a)に示す例では、第1入力点P1を通り、かつ紙面横方向に平行な基準線L1が用いられる。この基準線は、スタンプ(オブジェクト)の向き(初期値)を決定するための便宜上のものであり、第1入力点P1の位置を反映したものであれば任意に選択することができる。たとえば、第1入力点P1を通り、かつ紙面縦方向に平行な基準線を用いてもよい。
第1入力点P1に1個目のスタンプが配置される。各スタンプには、図37(a)に示すように、その種類に応じて、角度基準線SL1および中心点C1が予め定められている。図37(a)に示す例では、その中心点C1が第1入力点P1に一致するように、オブジェクトOBJ21は配置される(オブジェクトOBJ21の位置はこの時点で確定する)。このとき、オブジェクトOBJ21は、初期値として、その角度基準線SL1が基準線L1と一致するような向きに配置される。
さらに、図12(b)に示すように、タッチ状態のままタッチペン27等が第2入力点P2に移動すると、第1入力点P1および第2入力点P2を通る基準線L2が算出される。なお、この基準線L2は、タッチペン27等の移動に伴って、タッチ位置データの座標値が変化する毎にリアルタイムで更新される。すなわち、基準線L2は、オブジェクトOBJ21の向きが確定するまでは、最新のタッチ位置に応じて変化し、具体的には、配置されたオブジェクトOBJ21の中心位置C1と最新のタッチ位置とを通る線に随時更新される。この基準線L2の算出(更新)に伴って、図37(a)に示すように、オブジェクトOBJ21は、その角度基準線SL1が最新の基準線L2と一致するように、その向きがリアルタイムで変更される。すなわち、オブジェクトOBJ21は、初期の向きから、基準線L1と角度基準線SL1とがなす角θの大きさだけ中心点C1を中心として回転する。なお、この図12(b)および図37(a)に示す状態では、オブジェクトOBJ21の向きは、未確定状態にある。
この未確定状態においては、第2入力点P2と第1入力点P1との間の距離(ユークリッド距離)ΔL1がリアルタイムで算出されるとともに、この算出された距離ΔL1の大きさが所定のしきい値Th1と比較される。そして、距離ΔL1が当該所定のしきい値Th1を超えると、オブジェクトOBJ21の向きは確定状態になる。
具体的には、図12(c)に示すように、第1入力点P1からタッチ状態のままタッチペン27等が第3入力点P3に移動し、このときの第1入力点P1と第3入力点P3との間の距離ΔL1が所定のしきい値Th1を超えたと判断されると、オブジェクトOBJ21の向きは確定する。すなわち、オブジェクトOBJ21の向きは、図37(c)に示すように、その角度基準線SL1が第1入力点P1および第3入力点P3を通る基準線L3と一致する向きに確定する。すなわち、オブジェクトOBJ21の向きは、未確定状態から確定状態に移行する。
なお、オブジェクトの向きが未確定状態から確定状態に移行するための条件(向き確定条件に相当)としては、上述した距離ΔL1の大きさが所定のしきい値Th1を超えているとの条件に代えて、あるいはこれに加えて、(1)タッチペン27等によるタッチ操作の継続時間が所定時間を越えて経過した、(2)タッチペン27等によるタッチ操作が有効範囲以外の領域に対してなされた、(3)操作ボタン14A〜14Hが選択された、(4)タッチオフした、といった条件を用いてもよい。
以上のような処理に従って、1個目のスタンプの配置位置および向きが決定する。次に、2個目以降のスタンプを配置する処理について説明する。
第3入力点P3からタッチ状態のままタッチペン27等の移動が継続すると、オブジェクトOBJ21の向きが確定状態に移行したのと同時、あるいはその後、新たなオブジェクトOBJ22が配置される。
なお、オブジェクトOBJ21の向きを確定する条件と、新たなオブジェクトOBJ22を配置する条件(第2オブジェクト表示条件に相当)とは共通であってもよいし、互いに異なったものであってもよい。
図13(a)には、先のオブジェクトが確定状態に移行したのと同時に、次ぎのオブジェクトが配置される場合を示す。すなわち、図12(c)に示すように、タッチ状態のままタッチペン27等が第3入力点P3に移動して、オブジェクトOBJ21の向きが確定状態に移行すると、それと同時に、図13(a)に示すように、2個目のスタンプ(オブジェクトOBJ22)が配置される。
このオブジェクトOBJ22は、第3入力点P3(オブジェクトOBJ21の向きが確定する条件を満たしたときのタッチ座標)に応じた位置に配置される。図13(a)および図38(a)に示す例では、その中心点C2が第3入力点P3に一致するように、オブジェクトOBJ22は配置される(この時点で、オブジェクトOBJ22の位置は確定する)。なお、基準線L3は、第1入力点P1および第3入力点P3を通る線(この場合には、直線)である。さらに、オブジェクトOBJ22は、図38(a)に示すように、その角度基準線SL2が基準線L3と一致するような向きに配置される。
一方、図13(b)には、先のオブジェクトが確定状態に移行後に、次ぎのオブジェクトが配置される場合を示す。この場合には、オブジェクトOBJ21の確定状態への移行後も、タッチ状態のままのタッチペン27等の移動後の入力点と第1入力点P1との間の距離ΔL2がリアルタイムで算出されるとともに、この算出された距離ΔL2の大きさが所定のしきい値Th2と比較される。なお、しきい値Th2は、オブジェクトOBJ21の向きの確定を判断するために用いられたしきい値Th1より大きく設定される。
そして、図13(b)に示すように、タッチ状態のままタッチペン27等が第4入力点P4に移動し、このときの第1入力点P1と第4入力点P4との間の距離ΔL2が所定のしきい値Th2を超えたと判断されると、新たなオブジェクトOBJ22が配置される。このとき、第1入力点P1および第4入力点P4を通る基準線L4が算出され、オブジェクトOBJ22は、図13(b)および図38(b)に示すように、その中心点C2が第4入力点P4に一致するように配置される(この時点でオブジェクトOBJ22の位置は確定する)。さらに、図38(b)に示すように、オブジェクトOBJ22は、その角度基準線SL2が基準線L4と一致するような向きに配置される(この時点でオブジェクトOBJの向きも確定する)。
さらに、オブジェクトOBJ22の配置後もタッチ状態のままのタッチペン27等の移動後の入力点と2個目のオブジェクトOBJ22を配置したタイミングの入力点(図13(a)に示す例では第3入力点P3、図13(b)に示す例では第3入力点P4)との位置関係に基づいて、3個目のオブジェクトOBJ23を配置するか否かについて判断される。
すなわち、たとえば、図13(a)に示すように、第3入力点P3において2個目のオブジェクトOBJ22が配置されたとすると、タッチ状態のままタッチペン27等が、この第3入力点P3からしきい値Th1を超えて離れた位置にある第5入力点P5に到達した時点で、当該第5入力点P5に3個目のオブジェクトOBJ23が配置される(図13(c)参照)。なお、図38(c)に示すように、オブジェクトOBJ23は、その角度基準線SL3が基準線L5と一致するような向きに配置される。
あるいは、図13(b)に示すように、第4入力点P4において2個目のオブジェクトOBJ22が配置された場合も同様に、第4入力点P4からしきい値Th2を超えて離れた位置に到達した時点で、当該位置に3個目のオブジェクトOBJ23が配置される。
以下同様にして、タッチ状態のままタッチペン27等が移動することで、2個目以降のオブジェクトOBJが順次配置される。
さらに、ユーザに対する操作性を向上させるためには、未確定状態のオブジェクトの向きを変更するに際して、ある程度の不感範囲を設けることが好ましい。より具体的には、図14に示すように、ユーザがタッチペン27等で第1入力点P1をタッチオンしてオブジェクトOBJ21が配置された後、このタッチペン27等が第1入力点P1の近傍に存在する間は、当該オブジェクトOBJ21の向き(初期値)を維持する。すなわち、タッチペン27等が第1入力点P1を中心とする不感範囲DA内に存在する場合には、上述のようなオブジェクトOBJ21の向きをリアルタイムで変更する処理を行なわない。そして、タッチ状態のままタッチペン27等が不感範囲DA外に移動した場合に、はじめてオブジェクトOBJ21の向きを変更する処理を開始する。
上述したように、ユーザが画面上からタッチペン27等を離すと、未確定状態のオブジェクトは確定状態に移行するが、この際、取得されるタッチペン27等の位置が微妙に変化する場合がある。不感範囲を設けることによって、このようなユーザの意図しない操作によりオブジェクトの向きが変化することを抑制できる。例えば、オブジェクトを1つだけ初期状態の向きに配置したいときに有効である。
なお、上述の説明では、第1入力点P1、第2入力点P2…に対応する位置にそれぞれオブジェクトOBJ21,OBJ22,…を表示する構成について例示したが、第1入力点P1、第2入力点P2…からそれぞれ所定方向に所定距離だけ離れた位置にオブジェクトOBJ21,OBJ22,…を表示してもよい。
<描画処理>
上述したように、本実施の形態に従うゲーム装置100では、カメラで撮影された画像がリアルタイムに表示されるとともに、タッチペン27等による操作入力の位置に応じて、未確定状態のオブジェクトの向きもリアルタイムで変化する。そのため、このような画像表示を行なうための描画処理について図15を用いて説明する。
図15は、この発明の実施の形態1に従うゲーム装置100の描画処理を説明するための模式図である。図15を参照して、本実施の形態に従うゲーム装置100では、4つのレイヤー242,244,246,248を用いて、画面表示するための映像信号を生成している。なお、レイヤー242,244,246,248の各々は、少なくとも下側LCD12の解像度に相当する大きさのメモリ領域をメインメモリ32内に形成することで実現される。
第1レイヤー242は、カメラで撮影された画像(静止画像もしくは動画像)、またはメモリカード28(図2)などから読出された画像(静止画像もしくは動画像)を表示するためのメモリ領域である。CPU31(図2)は、内側カメラ23、外側カメラ25、およびメモリカード28のいずれかから入力される画像を展開し、メインメモリ32内の第1レイヤー242に相当する領域に書き込む。なお、静止画像が入力される場合には、ラスタデータに展開した上で書き込みを行なえばよいが、動画像が入力される場合には、表示のリアルタイム性を向上させるために、ポリゴン処理などを用いてレンダリングを行なってもよい。
第2レイヤー244は、ユーザが「らくがき」して配置されたオブジェクトを表示するためのメモリ領域である。CPU31は、ユーザ操作に応じて配置されるオブジェクトのキャラクタデータやラスタデータを、メモリカード29などから読み出して、メインメモリ32内の第2レイヤー244に相当する領域に書き込む。なお、後述するように、未確定状態のオブジェクトのデータについては、第3レイヤー246においてレンダリングされるため、第2レイヤー244には、確定状態に移行後のオブジェクトのみについてのデータが書き込まれる。
第3レイヤー246は、未確定状態のオブジェクトを表示するためのメモリ領域である。上述したスタンプを表示するためのデータは、代表的にポリゴンデータとしてメモリカード29に予め記憶されている。CPU31は、ユーザ操作に応じて、必要なスタンプのポリゴンデータを読み出した上で、スタンプを構成する各ポリゴンの座標値をリアルタイムで算出する。そして、CPU31は、算出されたポリゴンによってレンダリングされた結果をメインメモリ32内の第3レイヤー246に相当する領域に書き込む。
また、CPU31は、未確定状態のオブジェクトが確定状態に移行すると、そのときの第3レイヤー246上の画像データを第2レイヤー244の対応する位置へ転送する。すなわち、未確定状態のオブジェクトについては、ポリゴン処理を用いてその画像を動的に生成するが、確定状態に移行し、その表示がそれ以上変更されなくなると、そのオブジェクトを表示するためのデータは、第2レイヤー244に記憶される。
第4レイヤー248は、ユーザ操作を受け付けるためのアイコンを表示するためのメモリ領域である。CPU31は、ユーザ操作によって選択された機能や動作モードに応じて、必要なアイコンを表示するためのデータをメインメモリ32内の第4レイヤー248に相当する領域に書き込む。
これらのレイヤー242,244,246,248が記憶するデータを合成した画像が画面表示される。各レイヤー242,244,246,248では、表示すべきデータが存在する画素についてのみ有効なものとして扱われ、表示すべきデータが存在しない画素については、いわば透明なものとして扱われる。そのため、あるレイヤーのうち透明なものとして取り扱われる画素については、より下位のレイヤーの対応する画素のデータが画面表示されることになる。
また、「とる」アイコン212(図5)が選択された場合には、CPU31は、第1レイヤー242および第2レイヤー244に記憶されたデータに基づいて、合成画像を生成し、この生成した合成画像を保存用データメモリ34(図2)などに記憶される。
<入力範囲>
また、ユーザ入力可能な範囲をタッチパネル13の入力面の一部に制限してもよい。たとえば、図16に示すように、本実施の形態に従う「らくがきカメラ」では、スタンプを配置する処理において、ユーザによるタッチペン27等による操作入力に対する有効範囲260を予め定めておいてもよい。このような有効範囲260を定めることにより、ユーザ操作を受け付けるためのアイコンなどの上にオブジェクトが「らくがき」されることを抑制することができる。
また、上述したように、未確定状態のオブジェクトを確定状態に移行するための条件の一つとして、タッチペン27等による操作入力が有効範囲260内であるか否かの判断を含めてもよい。すなわち、いずれかのオブジェクトが未確定状態である場合に、タッチペン27等による操作入力が有効範囲260外になると、当該オブジェクトを確定状態に移行させる。
<処理手順>
以下、上述した本実施の形態に従う「らくがきカメラ」に係る処理手順について、図17〜図23を参照して説明する。なお、図17〜図23に示す各ステップは、代表的に、CPU31が、メモリカード29に記憶されたプログラム等をメインメモリ32に読み出して実行することで実現される。
(1.機能選択処理)
図17は、この発明の実施の形態1に従うゲーム装置100における機能選択に係る処理を示すフローチャートである。図17に示す機能選択に係る処理は、ゲーム装置100の電源が投入され、あるいはスタートボタンが押下された後、ユーザが図示しないメニュー画面から所定のアイコンを選択することで実行される。
図17を参照して、ステップS2において、CPU31は、図4に示すような選択画面を下側LCD12に表示する。続くステップS4では、CPU31は、I/F回路42を介してタッチパネル13からタッチ位置データが入力されたか否かを判断する。すなわち、CPU31は、ユーザによるタッチペン27等によるタッチ操作の有無を判断する。タッチ位置データが入力されていなければ(ステップS4においてNO)、ステップS4の処理が繰り返される。一方、タッチ位置データが入力されていれば(ステップS4においてYES)、処理はステップS6へ進む。
ステップS6では、CPU31は、タッチ位置データの示す座標値がいずれかのアイコン150の表示範囲内の値であるか否かを判断する。すなわち、CPU31は、アイコン150のいずれかが選択されたか否かを判断する。そして、タッチ位置データの示す座標値がいずれかのアイコン150の表示範囲内の値であれば(ステップS6においてYES)、処理はステップS8へ進む。一方、タッチ位置データの示す座標値がいずれのアイコン150の表示範囲外であれば(ステップS6においてNO)、処理はステップS10へ進む。
ステップS8では、CPU31は、表示中の選択画面を選択されたアイコン150に対応する表示内容に更新する。すなわち、図4に示すように、たとえば「らくがきカメラ」の機能が選択された場合には、「らくがきカメラ」といった名称および各処理の内容をプレビュー表示する。そして、処理はステップS4へ戻る。
ステップS10では、CPU31は、タッチ位置データの示す座標値が選択アイコン152または154の表示範囲内の値であるか否かを判断する。すなわち、CPU31は、選択アイコン152または154が選択されたか否かを判断する。そして、タッチ位置データの示す座標値が選択アイコン152または154の表示範囲内の値であれば(ステップS10においてYES)、処理はステップS12へ進む。一方、タッチ位置データの示す座標値が選択アイコン152および154の表示範囲外の値であれば(ステップS10においてNO)、処理はステップS14へ進む。
ステップS12では、CPU31は、表示中の選択画面を選択された選択アイコン152または154に対応する表示内容に更新する。そして、処理はステップS4へ戻る。
ステップS14では、CPU31は、タッチ位置データの示す座標値が「はじめる」アイコン158の表示範囲内の値であるか否かを判断する。すなわち、CPU31は、「はじめる」アイコン158が選択されたか否かを判断する。そして、タッチ位置データの示す座標値が「はじめる」アイコン158の表示範囲内の値であれば(ステップS14においてYES)、処理はステップS16へ進む。一方、タッチ位置データの示す座標値が「はじめる」アイコン158の表示範囲外の値であれば(ステップS14においてNO)、処理はステップS18へ進む。
ステップS16では、CPU31は、選択中の機能を実行する。ここで、「らくがきカメラ」が選択されていれば、CPU31は、図18および図19に示すフローチャートに従う処理を実行する。
ステップS18では、CPU31は、タッチ位置データの示す座標値が「やめる」アイコン156の表示範囲内の値であるか否かを判断する。すなわち、CPU31は、「やめる」アイコン156が選択されたか否かを判断する。そして、タッチ位置データの示す座標値が「やめる」アイコン156の表示範囲内の値であれば(ステップS18においてYES)、本処理は終了する。一方、タッチ位置データの示す座標値が「やめる」アイコン156の表示範囲外の値であれば(ステップS18においてNO)、処理はステップS4へ戻る。
(2.「らくがきカメラ」サブルーチン)
図18および図19は、図17に示すステップS16において「らくがきカメラ」が選択されている場合に実行されるサブルーチン処理を示すフローチャートである。
図18を参照して、まず、ステップS100において、CPU31は、図20に示す描画処理サブルーチンを開始する。この描画処理サブルーチンは、図6〜図11に示すような「らくがきカメラ」での画面表示を行なうための処理である。なお、図20に示す処理手順は、図18および図19に示される処理とは独立して、所定周期で繰り返し実行される。
続くステップS102では、CPU31は、図5に示すアイコン202〜214を表示するためのデータを、メインメモリ32内の第4レイヤー248に相当する領域に書き込む。すなわち、CPU31は、ユーザ操作を受け付けるためのアイコンを下側LCD12に表示する。
続くステップS104では、CPU31は、I/F回路42を介してタッチパネル13からタッチ位置データが入力されたか否かを判断する。すなわち、CPU31は、ユーザによるタッチペン27等によるタッチ操作の有無を判断する。言い換えれば、CPU31は、タッチパネル13に対するユーザ操作によって入力される座標値が検出されるか否かを判断する。タッチ位置データが入力されていなければ(ステップS104においてNO)、ステップS104の処理が繰り返される。一方、タッチ位置データが入力されていれば(ステップS104においてYES)、処理はステップS106へ進む。
ステップS106では、CPU31は、タッチ位置データの示す座標値が「えんぴつ」アイコン202の表示範囲内の値であるか否かを判断する。すなわち、CPU31は、「えんぴつ」アイコン202が選択されたか否かを判断する。そして、タッチ位置データの示す座標値が「えんぴつ」アイコン202の表示範囲内の値であれば(ステップS106においてYES)、処理はステップS110へ進む。一方、タッチ位置データの示す座標値が「えんぴつ」アイコン202の表示範囲外の値であれば(ステップS106においてNO)、処理はステップS116へ進む。
ステップS110では、CPU31は、内部フラグを「えんぴつ」モードに設定する。続くステップS112では、CPU31は、「えんぴつ」モードの選択サブメニューを表示するためのデータを、メインメモリ32内の第4レイヤー248に相当する領域に書き込む。すなわち、CPU31は、「えんぴつ」モードにおける属性(線の太さおよび線の色など)を選択するためのサブメニューを下側LCD12に表示する。さらに、ステップS114では、CPU31は、ユーザ選択に応じて、「えんぴつ」モードで使用する属性値を内部フラグに設定する。そして、処理はステップS104へ戻る。
ステップS116では、CPU31は、タッチ位置データの示す座標値が「消しゴム」アイコン204の表示範囲内の値であるか否かを判断する。すなわち、CPU31は、「消しゴム」アイコン204が選択されたか否かを判断する。そして、タッチ位置データの示す座標値が「消しゴム」アイコン204の表示範囲内の値であれば(ステップS116においてYES)、処理はステップS118へ進む。一方、タッチ位置データの示す座標値が「消しゴム」アイコン204の表示範囲外の値であれば(ステップS116においてNO)、処理はステップS120へ進む。
ステップS118では、CPU31は、内部フラグを「消しゴム」モードに設定する。そして、処理はステップS104へ戻る。
ステップS120では、CPU31は、タッチ位置データの示す座標値が「スタンプ」アイコン206の表示範囲内の値であるか否かを判断する。すなわち、CPU31は、「スタンプ」アイコン206が選択されたか否かを判断する。そして、タッチ位置データの示す座標値が「スタンプ」アイコン206の表示範囲内の値であれば(ステップS120においてYES)、処理はステップS122へ進む。一方、タッチ位置データの示す座標値が「スタンプ」アイコン206の表示範囲外の値であれば(ステップS120においてNO)、処理はステップS128へ進む。
ステップS122では、CPU31は、内部フラグを「スタンプ」モードに設定する。続くステップS124では、CPU31は、「スタンプ」モードの選択サブメニューを表示するためのデータを、メインメモリ32内の第4レイヤー248に相当する領域に書き込む。すなわち、CPU31は、図6に示すような、「スタンプ」モードにおける属性(スタンプの種類など)を選択するためのサブメニューを下側LCD12に表示する。さらに、ステップS126では、CPU31は、ユーザ選択に応じて、「スタンプ」モードで使用する種類を内部フラグに設定する。そして、処理はステップS104へ戻る。
ステップS128では、CPU31は、タッチ位置データの示す座標値が「全部けす」アイコン208の表示範囲内の値であるか否かを判断する。すなわち、CPU31は、「全部けす」アイコン208が選択されたか否かを判断する。そして、タッチ位置データの示す座標値が「全部けす」アイコン208の表示範囲内の値であれば(ステップS128においてYES)、処理はステップS130へ進む。一方、タッチ位置データの示す座標値が「全部けす」アイコン208の表示範囲外の値であれば(ステップS128においてNO)、処理はステップS132(図19)へ進む。
ステップS130では、CPU31は、メインメモリ32内の第2レイヤー244に記憶されているデータをリセット(ゼロクリア)する。すなわち、CPU31は、ユーザにより「らくがき」されることで配置されているすべてのオブジェクトを消去する。
ステップS132では、CPU31は、タッチ位置データの示す座標値が有効範囲260(図16)内の値であるか否かを判断する。すなわち、CPU31は、ユーザが「らくがき」の操作を行なったか否かを判断する。そして、タッチ位置データの示す座標値が有効範囲260内の値であれば(ステップS132においてYES)、処理はステップS134へ進む。一方、タッチ位置データの示す座標値が有効範囲260外の値であれば(ステップS132においてNO)、処理はステップS142へ進む。
ステップS134では、CPU31は、内部フラグを参照して、現在設定されているモードを判断する。すなわち、CPU31は、直前のユーザ操作によって、「えんぴつ」アイコン202、「消しゴム」アイコン204、および「スタンプ」アイコン206のいずれが選択されているかを判断する。そして、現在設定されているモードが「えんぴつ」モードであれば(ステップS134において「えんぴつ」)、処理はステップS136に進み、「えんぴつ」モードのサブルーチン処理(図21)が実行される。また、現在設定されているモードが「消しゴム」モードであれば(ステップS134において「消しゴム」)、処理はステップS138に進み、「消しゴム」モードのサブルーチン処理(図22)が実行される。また、現在設定されているモードが「スタンプ」モードであれば(ステップS134において「スタンプ」)、処理はステップS140に進み、「スタンプ」モードのサブルーチン処理(図23)が実行される。
一方、ステップS142では、CPU31は、タッチ位置データの示す座標値が「とる」アイコン212の表示範囲内の値であるか否かを判断する。すなわち、CPU31は、「とる」アイコン212が選択されたか否かを判断する。そして、タッチ位置データの示す座標値が「とる」アイコン212の表示範囲内の値であれば(ステップS142においてYES)、処理はステップS144へ進む。一方、タッチ位置データの示す座標値が「とる」アイコン212の表示範囲外の値であれば(ステップS142においてNO)、処理はステップS146へ進む。
ステップS144では、CPU31は、メインメモリ32内の第1レイヤー242および第2レイヤー244にそれぞれ相当する領域に記憶されたデータをそれぞれ読み出して、合成画像を生成する。さらに、CPU31は、合成画像を保存用データメモリ34などに書き込む。そして、処理はステップS104へ戻る。
ステップS146では、CPU31は、タッチ位置データの示す座標値が切替アイコン214の表示範囲内の値であるか否かを判断する。すなわち、CPU31は、切替アイコン214が選択されたか否かを判断する。そして、タッチ位置データの示す座標値が切替アイコン214の表示範囲内の値であれば(ステップS146においてYES)、処理はステップS148へ進む。一方、タッチ位置データの示す座標値が切替アイコン214の表示範囲外の値であれば(ステップS146においてNO)、処理はステップS150へ進む。
ステップS148では、CPU31は、画像撮影に使用するカメラを内側カメラ23と外側カメラ25との間で切り替える。すなわち、CPU31は、メインメモリ32内の第1レイヤー242に入力される画像のソースを内側カメラ23と外側カメラ25との間で切り替える。そして、処理はステップS104へ戻る。
ステップS150では、CPU31は、タッチ位置データの示す座標値が「やめる」アイコン210の表示範囲内の値であるか否かを判断する。すなわち、CPU31は、「やめる」アイコン210が選択されたか否かを判断する。そして、タッチ位置データの示す座標値が「やめる」アイコン210の表示範囲内の値であれば(ステップS150においてYES)、CPU31は、図20に示す描画処理サブルーチンを終了(ステップS152)させた後、本処理を終了する。一方、タッチ位置データの示す座標値が「やめる」アイコン210の表示範囲外の値であれば(ステップS150においてNO)、処理はステップS104へ戻る。
(3.描画処理サブルーチン)
図20は、図18に示すステップS100において実行が開始される描画処理サブルーチン処理を示すフローチャートである。
図20を参照して、ステップS200において、CPU31は、選択されているカメラ(内側カメラ23または外側カメラ25)から入力された画像を展開し、メインメモリ32内の第1レイヤー242に相当する領域に書き込む。すなわち、CPU31は、カメラで撮影された画像を更新する。
続くステップS202において、CPU31は、第1レイヤー242、第2レイヤー244、第3レイヤー246、第4レイヤー248がそれぞれ記憶するデータを合成する。なお、第2レイヤー244、第3レイヤー246、第4レイヤー248に記憶されるデータは、図18および図19に示すサブルーチン処理や、後述する図21〜図23に示す各サブルーチン処理の実行に伴って、随時更新される。
さらに続くステップS204において、CPU31は、合成したデータに基づいて、下側LCD12に画像を描画(レンダリング)する。そして、処理はステップS200へ戻る。
上述の図20に示すサブルーチン処理は、図18に示すステップS100においてその実行が開始され、図19に示すステップS152においてその実行が終了される。
(4.「えんぴつ」モード処理サブルーチン)
図21は、図19に示すステップS136において実行される「えんぴつ」モードのサブルーチン処理を示すフローチャートである。
図21を参照して、ステップS300において、CPU31は、タッチ位置データの示す座標値に基づいて、ユーザからの操作入力に対応するメインメモリ32内の第2レイヤー244の画素のデータを内部フラグの設定値に応じて変更する。すなわち、CPU31は、図18のステップS114において設定された「えんぴつ」モードで使用する属性値に応じて、「らくがき」されるオブジェクトを示すデータを第2レイヤー244に追加する。
続くステップS302では、CPU31は、I/F回路42を介してタッチパネル13からタッチ位置データの入力が継続しているか否かを判断する。すなわち、CPU31は、ユーザによるタッチペン27等によるタッチ操作の継続の有無を否かを判断する。タッチ位置データの入力が継続していれば(ステップS302においてYES)、ステップS300の処理が繰り返される。一方、タッチ位置データの入力が継続していなければ(ステップS302においてNO)、処理は、図18のステップS104にリターンする。
(5.「消しゴム」モード処理サブルーチン)
図22は、図19に示すステップS138において実行される「消しゴム」モードのサブルーチン処理を示すフローチャートである。
図22を参照して、ステップS400において、CPU31は、タッチ位置データの示す座標値に基づいて、ユーザからの操作入力に対応するメインメモリ32内の第2レイヤー244の画素のデータをゼロクリアする。すなわち、CPU31は、既に配置されているオブジェクトのうち、ユーザがタッチペン27等を画面上にタッチした部分を消去する。
続くステップS402では、CPU31は、I/F回路42を介してタッチパネル13からタッチ位置データの入力が継続しているか否かを判断する。すなわち、CPU31は、ユーザによるタッチペン27等によるタッチ操作の継続の有無を否かを判断する。タッチ位置データの入力が継続していれば(ステップS402においてYES)、ステップS400の処理が繰り返される。一方、タッチ位置データの入力が継続していなければ(ステップS402においてNO)、処理は、図18のステップS104にリターンする。
(6.「スタンプ」モード処理サブルーチン)
図23は、図19に示すステップS140において実行される「スタンプ」モードのサブルーチン処理を示すフローチャートである。
図23を参照して、ステップS500において、CPU31は、内部変数である第1座標値および第2座標値を初期化(ゼロクリア)する。続くステップS502において、CPU31は、タッチ位置データの示す座標値を第1座標値にセットする。すなわち、検出された座標値のうち第1座標値が取得される。ここで、座標値の検出が開始された直後(すなわち、タッチオン座標)の座標値が第1座標値とみなされる。そして、処理はステップS504へ進む。
ステップS504において、CPU31は、ステップS502においてセットされた第1座標値を通る基準線を算出する。続くステップS506において、CPU31は、図18のステップS126において選択された種類のスタンプのオブジェクトを内部フラグの参照により特定し、選択されたスタンプを表示するためのデータ(代表的に、ポリゴンデータ)をメモリカード29から読出す。さらに続くステップS508において、CPU31は、選択されたスタンプが、第1座標値を基準する位置に、かつ基準線に応じた向きで配置されるように、レンダリングされた結果をメインメモリ32内の第3レイヤー246に相当する領域に書き込む。すなわち、ステップS506およびS508では、第1座標値に基づいて、下側LCD12の対応する位置にスタンプ(オブジェクト)を表示するための処理が実行される。そして、処理はステップS510へ進む。
ステップS510では、CPU31は、I/F回路42を介してタッチパネル13からタッチ位置データの入力が継続しているか否かを判断する。すなわち、CPU31は、ユーザによるタッチペン27等によるタッチ操作の継続の有無を否かを判断する。言い換えれば、座標値の検出が継続しているか否かが判断される。タッチ位置データの入力が継続していれば(ステップS510においてYES)、処理はステップS512へ進む。
一方、タッチ位置データの入力が継続していなければ(ステップS510においてNO)、処理はステップS522へ進む。すなわち、第1座標値の取得後、座標値の検出が途絶えることを条件にして、後述するように、ステップS522に示す未確定状態のオブジェクトを確定状態する処理が実行される。
ステップS512では、CPU31は、現在のタッチ位置データの示す座標値を第2座標値にセットする。すなわち、検出された座標値のうち第1座標値に引き続く第2座標値が取得される。続くステップS514では、CPU31は、第1座標値と第2座標値との間の距離が不感範囲を示すしきい値より大きいか否かを判断する。すなわち、座標値が継続して検出されている間に入力される座標値が第1条件(向き変更条件に相当)を満足するか否かが判断される。第1座標値と第2座標値との距離が不感範囲を示すしきい値以下であれば(ステップS514においてNO)、ステップS510以下の処理が繰り返される。
一方、第1座標値と第2座標値との距離が不感範囲を示すしきい値より大きければ(ステップS514においてYES)、処理はステップS516へ進む。これらの処理により、第1条件を満足すると判断された座標値が有効な第2座標値とみなされる。
ステップS516では、CPU31は、第1座標値と第2座標値とを通る基準線を算出する。続くステップS518では、CPU31は、配置されたスタンプが、ステップS516において新たに算出された基準線に応じた向きで配置されるように、メインメモリ32内の第3レイヤー246に相当する領域をレンダリングされた結果で更新する。すなわち、下側LCD12に表示されるオブジェクトの向きが変更される。ここで、オブジェクトの向きは、第1座標値と第2座標値とを通る線に基づいて決定される。そして、処理はステップS520へ進む。
ステップS520では、CPU31は、第1座標値と第2座標値との間の距離が所定のしきい値Th1より大きいか否かを判断する。すなわち、CPU31は、未確定状態のオブジェクトを確定状態に移行させるための条件が成立したか否かを判断する。第1座標値と第2座標値との距離がしきい値Th1より大きければ(ステップS520においてYES)、処理はステップS522へ進む。
一方、第1座標値と第2座標値との距離がしきい値Th1以下であれば(ステップS520においてNO)、ステップS510以下の処理が繰り返される。すなわち、第2座標値を取得するステップと、オブジェクトの向きを変更するステップとは、座標値の検出が継続している間、繰り返される。これにより、未確定状態のオブジェクトを確定状態に移行させるための条件が満足されるまでの間、第2座標値が更新される毎に、オブジェクトの向きが随時変更されることになる。
ステップS522では、CPU31は、メインメモリ32内の第3レイヤー246に相当する領域に記憶されているデータをメインメモリ32内の第2レイヤー244に領域に書き込むとともに、第3レイヤー246に相当する領域をゼロクリアする。すなわち、CPU31は、未確定状態のオブジェクトを確定状態に移行させる。これにより、未確定状態のオブジェクトを確定状態に移行させるための条件が満足されると、オブジェクトの向きが固定されることになる。
なお、確定状態に移行させるための条件が満足された後は、その後の第2座標値に関わらず、第1オブジェクトの向きは固定されたままとなる。
続くステップS524では、CPU31は、I/F回路42を介してタッチパネル13からタッチ位置データの入力が継続しているか否かを判断する。すなわち、CPU31は、ユーザによるタッチペン27等によるタッチ操作の継続の有無を否かを判断する。タッチ位置データの入力が継続していれば(ステップS524においてYES)、処理はステップS526へ進む。一方、タッチ位置データの入力が継続していなければ(ステップS524においてNO)、処理は、図18のステップS104にリターンする。
ステップS526では、CPU31は、新たなスタンプが、第2座標値を基準とする位置(典型的には、第2座標値の位置)に、かつステップS516において新たに算出された基準線に応じた向きで配置されるように、レンダリングされた結果をメインメモリ32内の第2レイヤー244に相当する領域に書き込む。すなわち、入力される座標値の変化に応じて、さらなるオブジェクトが下側LCD12に表示される。なお、操作ボタン14A〜14Hが選択された場合にも、さらなるオブジェクトを表示するようにしてもよい。
続くステップS528において、CPU31は、タッチ位置データの示す座標値を第1座標値にセットする。すなわち、新たなスタンプの基準となったタッチ位置データを新たな第1座標値とみなす。そして、処理はステップS530へ進む。
ステップS530では、CPU31は、I/F回路42を介してタッチパネル13からタッチ位置データの入力が継続しているか否かを判断する。すなわち、CPU31は、ユーザによるタッチペン27等によるタッチ操作の継続の有無を否かを判断する。タッチ位置データの入力が継続していれば(ステップS530においてYES)、処理はステップS532へ進む。一方、タッチ位置データの入力が継続していなければ(ステップS530においてNO)、処理は、図18のステップS104にリターンする。
ステップS532では、CPU31は、現在のタッチ位置データの示す座標値を第2座標値にセットする。続くステップS534では、CPU31は、第1座標値と第2座標値との間の距離が所定のしきい値Th1より大きいか否かを判断する。すなわち、CPU31は、座標値が継続して検出されている間に入力される座標値が、さらに新たなオブジェクトを配置すべきか否かを決定する第3条件を満足するか否かを判断する。
第1座標値と第2座標値との距離がしきい値Th1より大きければ(ステップS534においてYES)、処理はステップS536へ進む。一方、第1座標値と第2座標値との距離がしきい値Th1以下であれば(ステップS534においてNO)、ステップS532以下の処理が繰り返される。
ステップS536では、第1座標値と第2座標値とを通る基準線を算出する。続くステップS538では、CPU31は、さらに新たなスタンプが、第2座標値を基準する位置に(典型的には、第2座標値の位置に)、かつステップS536で算出された新たな基準線に応じた向きで配置されるように、レンダリングされた結果をメインメモリ32内の第2レイヤー244に相当する領域に書き込む。すなわち、新たに表示されるオブジェクトの向きは、直近に表示されたオブジェクトの位置の決定に用いられた座標値と当該新たに表示するオブジェクトの位置の決定に用いられる座標値とを通る線に基づいて、決定される。そして、ステップS528以下の処理が繰り返される。
本実施の形態によれば、ユーザは、タッチパネル13に対する一連の操作によって、所望する位置にオブジェクトを配置することができるとともに、当該オブジェクトを所望する向きに変更することができる。このように、ユーザは、いわゆる「ワンアクション」によって、オブジェクトを自在に配置し、かつその向きも変更ができるので、より直感的にオブジェクトを表示させることができる。
[実施の形態1の変形例1]
上述の実施の形態1では、2個目以降に配置されるスタンプについては未確定状態を存在させないように構成したが、2個目以降に配置されるスタンプについても、未確定状態を存在させるようにしてもよい。すなわち、2個目以降に配置されるスタンプについて、先に配置されたスタンプの位置と、タッチペン27等によるユーザ入力された位置との関係に応じて、その向きをリアルタイムで変化するようにしてもよい。以下、図24を参照して、本変形例における特徴的な処理について説明する。
なお、以下に説明する処理を除いて、そのハードウェア構成や処理手順などについては、上述した実施の形態1のそれと同様であるので、詳細な説明は繰り返さない。
たとえば、図24(a)に示すように、ユーザがタッチペン27等で画面上の第1入力点P1にタッチした後、タッチペン27等を画面上にタッチしたまま第2入力点P2を経て、第6入力点P6までタッチペン27等を移動させた場合を考える。また、このユーザ操作によって、第1入力点P1および第2入力点P2を基準とする位置に、オブジェクトOBJ21およびOBJ22がそれぞれ配置されているものとする。なお、第2入力点P2と第6入力点P6との間の距離は、オブジェクトを確定状態に移行させるためのしきい値Th1以下であるとする。
本変形例では、このような状態において、オブジェクトOBJ22を未確定状態に維持する。すなわち、オブジェクトOBJ22の向きは、オブジェクトOBJ21を配置するための基準となった第1入力点P1と、自オブジェクトを配置するための基準となった第2入力点P2と、各時点におけるタッチペン27等によるユーザ入力された位置(図24(a)に示す例では、第6入力点P6)とを通る線を基準線としてリアルタイムに変更される。なお、上述のような3点を通る基準線の算出方法としては、代表的に、ベジェ近似などを用いることができる。なお、このような基準線を決定する際には、先に配置された1つのオブジェクトに限られず、複数の先に配置されたオブジェクトの基準位置に基づいて、基準線を算出してもよい。
その後、図24(b)に示すように、ユーザがタッチペン27等を、第2入力点P2との間の距離がしきい値Th1を超えている第7入力点P7まで移動させると、オブジェクトOBJ22は未確定状態から確定状態に移行する。この確定状態に移行したオブジェクトOBJ22の向きは、第1入力点P1、第2入力点P2、第7入力点P3の3点を通る基準線に基づいて定められることになる。
[実施の形態1の変形例2]
上述の実施の形態1では、第2入力点P2が更新される毎に、未確定状態のオブジェクトの向きがリアルタイムに変更される構成について説明したが、オブジェクトが未確定状態から確定状態に移行するための条件が満足されるまでの間、オブジェクトの向きを初期値に維持するとともに、当該条件が満足された後に、当該条件が満たされた時点の第2入力点P2に応じた向きにオブジェクトの向きを変更した上で、確定状態に移行させてもよい。この確定状態に移行した後は、オブジェクトの向きは変更後の向きに固定される。
本変形例では、上述の図23に示すフローチャートにおいて、ステップS516およびS518に示す処理が、ステップS522の実行に先立って実行される。その他の処理については、上述した実施の形態1と同様であるので、詳細な説明は繰り返さない。
[実施の形態2]
上述の実施の形態1では、表示される画像にユーザが自由に「らくがき」できる機能について説明した。以下、実施の形態2では、画像を「万華鏡」のように表示させる機能について説明する。
本実施の形態に従うゲーム装置100Aの外観図および内部構成については、上述の図1および図2と同様であるので、詳細な説明は繰り返さない。
<ゲーム装置の使用例>
本実施の形態に従うゲーム装置100Aについても、上述の実施の形態1に従うゲーム装置100と同様の使用形態で使用される。すなわち、たとえば図3に示すように、ゲーム装置100Aに搭載されたカメラ(内側カメラ23または外側カメラ25)で撮影された画像(あるいは、その一部)が万華鏡のように敷き詰められて、下側LCD12にリアルタイムに表示される。ユーザは、タッチペン27等の操作により、この下側LCD12に表示される態様を自由に変化させることが可能である。なお、表示される画像は、メモリカード28(図2)などに予め記憶された画像(静止画像もしくは動画像)であってもよい。
なお、図3に示す例では、外側カメラ25を用いて被写体TRGが撮影されているが、内側カメラ23を用いて被写体TRGを撮影するようにしてもよく、いずれのカメラを使用するかについては、ユーザが任意に選択できる。
図25は、この発明の実施の形態2に従うゲーム装置100Aにおける選択画面の一例を示す図である。図25を参照して、本実施の形態に従うゲーム装置100Aは、上述した画像を万華鏡のように表示することができる機能を含む複数の機能を搭載しており、ユーザは、図25に示す選択画面上で所望する機能を選択する。
図25に示す例では、画面上部にゲーム装置100に搭載された各機能に対応する複数のアイコン150が表示されており、ユーザは、これらのアイコン150のうち所望する機能に対応するものを任意に選択することができる。また、画面の両側には、選択アイコン152および154が表示されている。ユーザが選択アイコン152または154を選択する毎に、選択される機能がアイコン150の配列に従って左側または右側に順次変更される。
このような方法によりユーザが機能を選択した上で、「はじめる」アイコン158を選択すると、選択された機能が実行される。また、「やめる」アイコン156が選択されると、図示しないメニュー画面へ戻る。
また、図25に示すように、ユーザにより選択されたアイコン150に対応する機能の内容をユーザに提示するように、プレビュー領域160には、その選択された機能の名称(図25に示す例では「かがみカメラ」)およびその処理の内容が示される。
<「かがみカメラ」の概要>
以下、図26〜図30を参照して、本実施の形態に従う「かがみカメラ」の概要について説明する。
本実施の形態に従う「かがみカメラ」は、カメラで撮影された画像やメモリカード28などに予め記憶された画像など(以下、これらの画像を「入力画像」とも総称する)に対して、ユーザが自由に万華鏡のように表示させることができる機能である。「かがみカメラ」では、主として、入力画像の一部を抽出した画像オブジェクトの向きおよびサイズをユーザ操作に応じて自在に変更する機能と、当該変更後の画像オブジェクトに応じて、表示される画面をリアルタイムで更新することができる機能とが提供される。
図26に示すように、「かがみカメラ」のモードでは、入力画像が万華鏡のようにリアルタイムに表示されるとともに、この表示画像に対する操作を選択するためのアイコン302〜306が画面上部に表示され、各種操作を選択するためのアイコン310〜314が表示される。
ユーザが「左右対称」アイコン302を選択(タッチ)すると、図25に示すように、入力画像と当該入力画像を画面に対して左右反転させた画像とが同時に表示される。さらに、ユーザのタッチペン27等によるタッチ操作に応じて、画面上に表示される画像の向きがリアルタイムで変化する。
ユーザが「三角」アイコン304をタッチすると、図26に示すように、入力画像から三角形状の部分が、画像オブジェクトOBJ5として抽出され、この画像オブジェクトOBJ5を隣接する各辺についてそれぞれ線対称となるように順次展開していったような画像が表示される。
また、図27に示すように、ユーザがタッチペン27等を画面上にタッチしたまま回転移動させると、画像オブジェクトOBJ5は、当該タッチ操作に応じた角度だけ、予め定められた中心点308を中心に回転する。すなわち、画像オブジェクトOBJ5の向きは、ユーザ入力に応じてリアルタイムで変化する。なお、図27で示すように、この画像オブジェクトOBJ5の回転に伴って、画像オブジェクトOBJ5を中心に展開される画像の位置も変化する。
さらに、図28に示すように、ユーザがタッチペン27等を画面上にタッチしたまま、画像オブジェクトOBJ5の中心点308から遠ざかる、もしくは近づく方向に移動させると、画像オブジェクトOBJ5は、当該タッチ操作に応じて拡大もしくは縮小する。すなわち、画像オブジェクトOBJ5のサイズは、ユーザ入力に応じてリアルタイムで変化する。なお、図28で示すように、この画像オブジェクトOBJ5のサイズの変化に伴って、画像オブジェクトOBJ5を中心に展開される画像の配置やサイズも変化する。
また、ユーザが「四角」アイコン306をタッチすると、図29に示すように、入力画像から四角形状の部分が、画像オブジェクトOBJ6として抽出され、この画像オブジェクトOBJ6を隣接する各辺についてそれぞれ線対称となるように順次展開していったような画像が表示される。
また、図30に示すように、ユーザがタッチペン27等を画面上にタッチしたまま回転移動させると、画像オブジェクトOBJ6は、当該タッチ操作に応じた角度だけ、予め定められた中心点308を中心に回転する。すなわち、画像オブジェクトOBJ6の向きは、ユーザ入力に応じてリアルタイムで変化する。なお、この画像オブジェクトOBJ6の回転に伴って、画像オブジェクトOBJ6を中心に展開される画像の位置も変化する。さらに、図28と同様に、ユーザがタッチペン27等を画面上にタッチしたまま、画像オブジェクトOBJ6の中心点308から遠ざかる、もしくは近づく方向に移動させると、画像オブジェクトOBJ6は、当該タッチ操作に応じて拡大もしくは縮小する。そして、この画像オブジェクトOBJ6のサイズの変化に伴って、画像オブジェクトOBJ6を中心に展開される画像の配置やサイズも変化する。
このように、画像オブジェクトには、その回転および/またはサイズ変更に係る基準点となる中心点が予め定められている。後述するように、この基準点とタッチ操作に伴う座標の変化を示すベクトルとこの基準点との相対関係に応じて、オブジェクトの回転量(回転位置)および縮小/拡大率(サイズ)の度合いが算出される。
また、「やめる」アイコン310が選択されると、本「かがみカメラ」の処理が中止され、図25に示すような選択画面へ戻る。
また、「とる」アイコン312が選択されることで、選択されたタイミングにおいて表示されている画像に対応する静止画像が生成され、保存用データメモリ34(図2)などに記憶される。
また、切替アイコン314が選択されると、画像撮影に使用するカメラが、内側カメラ23と外側カメラ25との間で切り替えられる。
<「かがみカメラ」の詳細処理>
以下、図31を参照して、本実施の形態に従う「かがみカメラ」の詳細処理について説明する。なお、図31に示す例は、図26に示す画像オブジェクトOBJ5に対する処理を説明するものである。
特に、本実施の形態に従う「かがみカメラ」では、ユーザがタッチペン27等で画面上に対して行なった単位時間当たりの操作量に応じて、画像オブジェクトの回転量およびサイズ変更量が算出される。そのため、ユーザがタッチペン27等を操作することで、画像オブジェクトの回転速度がより速くなったり、より大きく拡大されたりして、ユーザにとって見れば、自身の操作に反応して画像オブジェクトが自在に変更されるといった感覚を得られる。
より詳細には、図31に示す例のように、たとえば、ユーザがタッチペン27等をタッチ状態のまま第8入力点P8から第9入力点P9へ移動させたとする。なお、このユーザによるタッチペン27等の移動操作(座標値の変化)は、演算周期Δt(いわゆるフレーム周期)の間に行なわれたものとする。以下の説明では、第8入力点が時刻tで入力され、第9入力点が時刻t+Δtで入力されたとする。
画像オブジェクトOBJ5の回転量およびサイズ変更量は、この第8入力点P8から第9入力点P9への移動によって生じた操作ベクトルVtpに応じて算出される。より具体的には、画像オブジェクトOBJ5の中心点308に対する操作ベクトルVtpの周方向成分vθおよび径方向成分vrに応じて、画像オブジェクトOBJ5の回転量およびサイズ変更量がそれぞれ算出される。
この周方向および径方向については、画像オブジェクトOBJ5の中心点308を通る任意の直線について定義することができるが、図31に示す例では、画像オブジェクトOBJ5の中心点308および操作ベクトルVtpの始点(第8入力点P8)を通る直線L8について、操作ベクトルVtpが周方向成分および径方向成分に分解される。すなわち、操作ベクトルVtpは、直線L8に垂直な成分(周方向成分vθ)と平行な成分(径方向成分vr)とに分解される。
さらに、周方向成分vθおよび径方向成分vrを用いて、ある時刻tと引き続く演算周期後(t+Δt)との間における画像オブジェクトの回転角度θおよび縮小/拡大率αは、以下のような数式に従って算出される。
θ(t+Δt)=θ(t)±a×vθ・・・(1)
α(t+Δt)=α(t)+b×vr・・・(2)
但し、θの初期値は0、αの初期値は1であり、タッチ操作がないときでも、θ,αの値は前回の値が保持される。
θ(t)およびα(t)は、時刻tにおける回転角度および縮小/拡大率を示す。
θ(t+Δt)およびα(t+Δt)は、時刻(t+Δt)における回転角度および縮小/拡大率を示し、aおよびbは、バイアス係数を示す。
このように決定されるθおよびαを用いて、中心点308を中心としてθだけ回転し、かつ、αだけ拡大縮小したオブジェクト画像が中心点308の位置に表示される。なお、θは標準の向きからの回転角度であり、αは標準サイズからの拡大縮小率である。
なお、上述の例では、1フレーム間の操作ベクトルVtpの径方向成分vrを用いて画像オブジェクトの縮小/拡大率αを求めたが、他の例では、タッチオン座標と、タッチオン時の縮小/拡大率α0を記憶しておき、その後タッチ操作が継続している限りにおいて、画像オブジェクトOBJ5の中心点308からタッチオン座標までの距離と、中心点308から現在のタッチ座標までの距離の差Δd(t)を用いてもよい。この場合、時刻tにおける縮小/拡大率α(t)は以下の数式によって算出される。なお、Δd(t)は現在のタッチ座標がタッチオン座標よりも中心点に近いときはマイナスの値となる。
α(t)=α0+b×Δd(t)・・・(2)’
上記の例ではα(t)は常にタッチオン時を基準に算出されることになり、そうすることにより誤差の蓄積を防止することができる。このとき、θについても同様に、タッチオン時の回転角度θ0に基づいて、タッチオン時と現在との回転角度の差分を用いて算出してもよいし、前式(1)を用いて算出してもよい。
なお、(1)式の左辺第2項の符号は、画像オブジェクトの回転位置θの定義と、操作ベクトルVtpの向きとの関係に応じていずれかが選択される。すなわち、画像オブジェクトOBJ5の中心点308に対して反時計回りの方向を回転位置θの正方向に定めた場合には、操作ベクトルVtpが中心点308に対して反時計回りの方向に生じると、(1)式の左辺第2項の符号は「+」となり、一方、操作ベクトルVtpが中心点308に対して時計回りの方向に生じると、(1)式の左辺第2項の符号は「−」となる。
さらに、操作ベクトルVtpがいずれの方向に生じたかを判断する方法の一例として、操作ベクトルVtpと、画像オブジェクトOBJ5の中心点308から第8入力点P8へのベクトルVsとの外積に基づく判断を用いることができる。すなわち、図31に示す例では、操作ベクトルVtpが反時計回りの方向に生じると、操作ベクトルVtpとベクトルVsとの外積は正の値をとり、一方、操作ベクトルVtpが時計回りの方向に生じると、操作ベクトルVtpとベクトルVsとの外積は負の値をとる。そこで、このような外積の符号に応じて、いずれの方向に操作ベクトルVtpが生じたかを判断することができる。
また、(2)式において、径方向成分Vrは、画像オブジェクトOBJ5の中心点308から遠ざかる方向を+(プラス)とし、近づく方向を−(マイナス)としている。
なお、当然のことながら、画像オブジェクトOBJ5の中心点308および操作ベクトルVtpの終点(第9入力点P9)を通る直線L9について、操作ベクトルVtpを周方向成分および径方向成分に分解してもよい。また、中心点308と操作ベクトルVtpの中間点を通る直線を用いてもよい。
<描画処理>
上述したように、本実施の形態に従うゲーム装置100Aでは、カメラで撮影された画像の一部が画像オブジェクトとして抽出され、この抽出された画像オブジェクトを画面全体に複数展開した画像がリアルタイムに表示される。さらに、ユーザがタッチペン27等を画面上にタッチしたまま操作を行なうと、画像オブジェクトは、この操作に応じた回転角およびサイズでリアルタイムに変化する。そのため、このような画像表示を行なうための描画処理について図32および図33を用いて説明する。
図32は、この発明の実施の形態2に従うゲーム装置100Aの描画処理を説明するための模式図である。図33は、この発明の実施の形態2に従うゲーム装置100Aにおける画像オブジェクトの抽出処理を説明するための模式図である。
図32を参照して、本実施の形態に従うゲーム装置100Aでは、2つのレイヤー342および344を用いて、画面表示するための映像信号を生成している。なお、レイヤー342および344の各々は、少なくとも下側LCD12の解像度に相当する大きさのメモリ領域をメインメモリ32内に形成することで実現される。
第1レイヤー342は、カメラで撮影された画像(静止画像もしくは動画像)、またはメモリカード28(図2)などから読出された画像(静止画像もしくは動画像)から抽出された画像オブジェクトを展開して表示するためのメモリ領域である。
CPU31(図2)は、内側カメラ23、外側カメラ25、およびメモリカード28のいずれかから入力される入力画像IMGを展開し、この入力画像IMGから画像オブジェクトOBJ5を抽出する。そして、この画像オブジェクトOBJ5を所定規則に従って展開したデータを、メインメモリ32内の第1レイヤー342に相当する領域に書き込む。なお、静止画像が入力される場合には、ラスタデータに展開した上で書き込みを行なえばよいが、動画像が入力される場合には、表示のリアルタイム性を向上させるために、ポリゴン処理などを用いてレンダリングを行なってもよい。
第2レイヤー344は、ユーザ操作を受け付けるためのアイコンを表示するためのメモリ領域である。CPU31は、ユーザ操作によって選択された機能や動作モードに応じて、必要なアイコンを表示するためのデータをメインメモリ32内の第2レイヤー344に相当する領域に書き込む。
これらのレイヤー342および344が記憶するデータを合成した画像が画面表示される。各レイヤー342および344では、表示すべきデータが存在する画素についてのみ有効なものとして扱われ、表示すべきデータが存在しない画素については、いわば透明なものとして扱われる。そのため、あるレイヤーのうち透明なものとして取り扱われる画素については、より下位のレイヤーの対応する画素のデータが画面表示されることになる。
また、「とる」アイコン312(図26)が選択された場合には、CPU31は、第1レイヤー342に記憶されたデータを保存用データメモリ34(図2)などに記憶される。
上述した画像オブジェクトの抽出処理としては、図33(a)に示すように、入力画像IMGに対して予め定められた領域に含まれる画素のデータを抽出した上で、この抽出したデータを上述した縮小/拡大率αに応じて縮小または拡大することで、表示される大きさを可変にするようにしてもよい。
あるいは、画像オブジェクトの別の抽出処理としては、図33(b)に示すように、入力画像IMGから画素のデータを抽出する領域を上述した縮小/拡大率αに応じて縮小または拡大するようにしてもよい。このような処理を採用することで、画像オブジェクトの実効サイズを同一に維持しつつ、その中に含まれる実体データ(すなわち、被写体TRGの画像)を縮小または拡大することができる。
<処理手順>
以下、上述した本実施の形態に従う「かがみカメラ」に係る処理手順について、図34〜図36を参照して説明する。なお、図34〜図36に示す各ステップは、代表的に、CPU31が、メモリカード29に記憶されたプログラム等をメインメモリ32に読み出して実行することで実現される。
(1.機能選択処理)
本実施の形態に従うゲーム装置100Aにおいても、上述の図17と同様の機能選択に係る処理が実行される。
本実施の形態に従うゲーム装置100Aでは、図17に示すステップS8において、図25に示すように、たとえば「かがみカメラ」の機能が選択された場合には、「かがみカメラ」といった名称および各処理の内容(図25に示す例では、左右対称モード)がプレビュー表示される。
また、ステップS16において、「かがみカメラ」が選択されていれば、CPU31は、図34および図35に示すフローチャートに従う処理を実行する。
その他のステップについては、上述した実施の形態1と同様であるので、詳細な説明は繰り返さない。
(2.「かがみカメラ」サブルーチン)
図34および図35は、図17に示すステップS16において「かがみカメラ」が選択されている場合に実行されるサブルーチン処理を示すフローチャートである。
図34および図35を参照して、まず、ステップS600において、CPU31は、内部変数である前回座標値および今回座標値を初期化(ゼロクリア)する。
続くステップS602において、CPU31は、図36に示す描画処理サブルーチンを開始する。この描画処理サブルーチンは、図26〜図30に示すような「かがみカメラ」での画面表示を行なうための処理である。なお、図36に示す処理手順は、図34および図35に示される処理とは独立して、所定周期で繰り返し実行される。
さらに続くステップS604では、CPU31は、選択されているカメラ(内側カメラ23または外側カメラ25)からの入力画像のうち、予め定められた領域(初期値)に含まれる画素のデータを抽出することで画像オブジェクト(初期値)が生成される。さらに続くステップS606では、CPU31は、ステップS604で生成された画像オブジェクト(初期値)を予め定められた回転位置θおよび縮小/拡大率αで画面全体に展開した表示データを生成し、メインメモリ32内の第1レイヤー342に相当する領域に書き込む。そして、処理はステップS608へ進む。
続くステップS608では、CPU31は、図26に示すアイコン302〜314を表示するためのデータを、メインメモリ32内の第2レイヤー344に相当する領域に書き込む。すなわち、CPU31は、ユーザ操作を受け付けるためのアイコンを下側LCD12に表示する。
以上のようなステップS602〜S608の処理によって、「かがみカメラ」モードの初期画面が表示される。
続くステップS610では、CPU31は、I/F回路42を介してタッチパネル13からタッチ位置データが入力されたか否かを判断する。すなわち、CPU31は、ユーザによるタッチペン27等によるタッチ操作の有無を判断する。タッチ位置データが入力されていなければ(ステップS610においてNO)、ステップS610の処理が繰り返される。一方、タッチ位置データが入力されていれば(ステップS610においてYES)、処理はステップS612へ進む。
ステップS612では、CPU31は、タッチ位置データの示す座標値が「左右対称」アイコン302の表示範囲内の値であるか否かを判断する。すなわち、CPU31は、「左右対称」アイコン302が選択されたか否かを判断する。そして、タッチ位置データの示す座標値が「左右対称」アイコン302の表示範囲内の値であれば(ステップS612においてYES)、処理はステップS614へ進む。一方、タッチ位置データの示す座標値が「左右対称」アイコン302の表示範囲外の値であれば(ステップS612においてNO)、処理はステップS616へ進む。
ステップS614では、CPU31は、内部フラグを「左右対称」モードに設定する。そして、処理はステップS610へ戻る。
ステップS616では、CPU31は、タッチ位置データの示す座標値が「三角」アイコン304の表示範囲内の値であるか否かを判断する。すなわち、CPU31は、「三角」アイコン304が選択されたか否かを判断する。そして、タッチ位置データの示す座標値が「三角」アイコン304の表示範囲内の値であれば(ステップS616においてYES)、処理はステップS618へ進む。一方、タッチ位置データの示す座標値が「三角」アイコン304の表示範囲外の値であれば(ステップS616においてNO)、処理はステップS620へ進む。
ステップS618では、CPU31は、内部フラグを「三角」モードに設定する。そして、処理はステップS610へ戻る。
ステップS620では、CPU31は、タッチ位置データの示す座標値が「四角」アイコン306の表示範囲内の値であるか否かを判断する。すなわち、CPU31は、「四角」アイコン306が選択されたか否かを判断する。そして、タッチ位置データの示す座標値が「四角」アイコン306の表示範囲内の値であれば(ステップS620においてYES)、処理はステップS622へ進む。一方、タッチ位置データの示す座標値が「四角」アイコン306の表示範囲外の値であれば(ステップS620においてNO)、処理はステップS624へ進む。
ステップS622では、CPU31は、内部フラグを「四角」モードに設定する。そして、処理はステップS610へ戻る。
ステップS624では、CPU31は、タッチ位置データの示す座標値が「とる」アイコン312の表示範囲内の値であるか否かを判断する。すなわち、CPU31は、「とる」アイコン312が選択されたか否かを判断する。そして、タッチ位置データの示す座標値が「とる」アイコン312の表示範囲内の値であれば(ステップS624においてYES)、処理はステップS626へ進む。一方、タッチ位置データの示す座標値が「とる」アイコン312の表示範囲外の値であれば(ステップS624においてNO)、処理はステップS628へ進む。
ステップS626では、CPU31は、メインメモリ32内の第1レイヤー342に相当する領域に記憶されたデータを読み出して、保存用データメモリ34などに書き込む。そして、処理はステップS610へ戻る。
ステップS628では、CPU31は、タッチ位置データの示す座標値が切替アイコン314の表示範囲内の値であるか否かを判断する。すなわち、CPU31は、切替アイコン314が選択されたか否かを判断する。そして、タッチ位置データの示す座標値が切替アイコン314の表示範囲内の値であれば(ステップS628においてYES)、処理はステップS630へ進む。一方、タッチ位置データの示す座標値が切替アイコン314の表示範囲外の値であれば(ステップS628においてNO)、処理はステップS632へ進む。
ステップS630では、CPU31は、画像撮影に使用するカメラを内側カメラ23と外側カメラ25との間で切り替える。すなわち、CPU31は、入力画像のソースを内側カメラ23と外側カメラ25との間で切り替える。そして、処理はステップS610へ戻る。
ステップS632では、CPU31は、タッチ位置データの示す座標値が「やめる」アイコン310の表示範囲内の値であるか否かを判断する。すなわち、CPU31は、「やめる」アイコン310が選択されたか否かを判断する。そして、タッチ位置データの示す座標値が「やめる」アイコン310の表示範囲内の値であれば(ステップS632においてYES)、CPU31は、図36に示す描画処理サブルーチンを終了(ステップS634)させた後、本処理を終了する。一方、タッチ位置データの示す座標値が「やめる」アイコン210の表示範囲外の値であれば(ステップS632においてNO)、処理は図35に示すステップS636へ進む。すなわち、ステップS636以下の処理は、ユーザがタッチペン27等で画面上のアイコン301〜314以外の位置にタッチした場合に実行される。
ステップS636では、CPU31は、今回座標値にゼロ以外の有効な値がセットされているか否かを判断する。すなわち、CPU31は、前回の演算周期において、ユーザがタッチペン27等で画面上のアイコン301〜314以外の位置にタッチしたか否かを判断する。
今回座標値にゼロ以外の有効な値がセットされていなければ(ステップS636においてNO)、処理はステップS638へ進む。ステップS638では、CPU31は、タッチ位置データの示す座標値を前回座標値および今回座標値にそれぞれセットする。そして、処理はステップS650へ進む。すなわち、前回の演算周期において、ユーザが画像オブジェクトの回転および/またはサイズ変更を指示するための入力操作を行なっていなければ、当該入力操作直後の演算周期では、画像オブジェクトの回転位置θおよび縮小/拡大率αは変更されない。
一方、今回座標値にゼロ以外の有効な値がセットされていれば(ステップS636においてYES)、処理はステップS640へ進む。ステップS640では、CPU31は、前回座標値を現在の今回座標値にセットした後、タッチ位置データの示す座標値を今回座標値にセットする。そして、処理はステップS642へ進む。すなわち、前回の演算周期から今回の演算周期の間に、ユーザによる何らかの入力操作が行なわれた場合には、画像オブジェクトの回転および/またはサイズ変更に係る処理が実行される。
ステップS642では、CPU31は、前回座標値から今回座標値までの操作ベクトルVtpを算出する。すなわち、タッチパネル13に対する操作によって入力される座標値の変化が検出される。
続くステップS644では、CPU31は、配置されている画像オブジェクトの中心点から前回座標値までのベクトルVsを算出する。さらに続くステップS646では、CPU31は、操作ベクトルVtpとベクトルVsとの外積を算出し、この算出した外積の符号(正または負)に基づいて、操作ベクトルVtpが生じた回転方向を判断する。そして、処理はステップS648へ進む。
ステップS648では、CPU31は、操作ベクトルVtpを周方向成分Vθおよび径方向成分Vrに分解する。すなわち、座標値の変化に応じた周方向成分Vθ(第1変化成分)および径方向成分Vr(第2変化成分)が取得される。
続くステップS650では、CPU31は、ステップS648において算出した周方向成分Vθおよび径方向成分Vrに基づいて、画像オブジェクトの回転位置θおよび縮小/拡大率αをそれぞれ算出する。そして、処理はステップS650へ進む。
ステップS650では、CPU31は、選択されているカメラ(内側カメラ23または外側カメラ25)からの入力画像のうち、設定されているモードに応じた領域に含まれる画素のデータを抽出することで画像オブジェクトを更新する。さらに続くステップS652では、CPU31は、ステップS650で更新された画像オブジェクトを現在の回転位置θおよび縮小/拡大率αで画面全体に展開した表示データを生成し、メインメモリ32内の第1レイヤー342に相当する領域に書き込む。すなわち、画像オブジェクトをを中心として、画像オブジェクトに含まれる画像を画面全体に展開して表示される。そして、処理はステップS654へ進む。
ステップS654では、CPU31は、次の演算周期の実行タイミングまで待つ。その後、処理はステップS610へ戻る。この繰り返し処理によって、画像オブジェクトの回転位置(向き)または縮小/拡大率(サイズ)の変更に伴って、展開することで得られる表示画像は順次更新される。
(3.描画処理サブルーチン)
図36は、図34に示すステップS602において実行が開始される描画処理サブルーチン処理を示すフローチャートである。
図36を参照して、ステップS700において、CPU31は、第1レイヤー342および第2レイヤー344がそれぞれ記憶するデータを合成する。なお、第1レイヤー342に記憶されるデータは、上述の図34および図35に示すサブルーチン処理の実行に伴って、随時更新される。
さらに続くステップS702において、CPU31は、合成したデータに基づいて、下側LCD12に画像を描画(レンダリング)する。そして、処理はステップS700へ戻る。
上述の図36に示すサブルーチン処理は、図34に示すステップS602においてその実行が開始され、図36に示すステップS634においてその実行が終了される。
[実施の形態2の変形例]
上述の実施の形態2では、図31に示すように、操作ベクトルVtpの周方向成分Vθに応じて、画像オブジェクトの回転量がそれぞれ決定される処理について例示したが、オブジェクトの基準点に対して、操作ベクトルVtpの両頂点がなす角に応じて、オブジェクトを回転するようにしてもよい。
すなわち、図31において、オブジェクトOBJ5の中心点308に対して、第8入力点P8と第9入力点P9とがなす角に応じて、オブジェクトの回転位置θの単位周期当たりの変化量を算出してもよい。言い換えれば、オブジェクトの向きの変更量を、その基準点に対して入力される座標値の変化前後の2つの座標値がなす角に応じて定められる。
その他の処理については、上述した実施の形態2と同様であるので、詳細な説明は繰り返さない。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
11 下側ハウジング、12 下側LCD、13 タッチパネル、14A〜14K 操作ボタン、15A 第1LED、15B 第2LED、15C 第3LED、16 マイクロフォン用孔、21 上側ハウジング、22 上側LCD、23 内側カメラ、24 音抜き孔、25 外側カメラ、26 第4LED、27 タッチペン、28,29 メモリカード、32 メインメモリ、33 メモリ制御回路、34 保存用データメモリ、35 プリセットデータ用メモリ、36,37 メモリカードI/F、38 無線通信モジュール、39 ローカル通信モジュール、41 電源回路、42 インターフェース回路(I/F回路)、43 マイク、44 アンプ、100,100A ゲーム装置。