JP4408910B2 - キャラクター表示装置、キャラクター表示方法、ならびに、プログラム - Google Patents

キャラクター表示装置、キャラクター表示方法、ならびに、プログラム Download PDF

Info

Publication number
JP4408910B2
JP4408910B2 JP2007067966A JP2007067966A JP4408910B2 JP 4408910 B2 JP4408910 B2 JP 4408910B2 JP 2007067966 A JP2007067966 A JP 2007067966A JP 2007067966 A JP2007067966 A JP 2007067966A JP 4408910 B2 JP4408910 B2 JP 4408910B2
Authority
JP
Japan
Prior art keywords
character
orientation
unit
index value
screen
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2007067966A
Other languages
English (en)
Other versions
JP2008233946A (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.)
Konami Digital Entertainment Co Ltd
Original Assignee
Konami Digital Entertainment 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 Konami Digital Entertainment Co Ltd filed Critical Konami Digital Entertainment Co Ltd
Priority to JP2007067966A priority Critical patent/JP4408910B2/ja
Publication of JP2008233946A publication Critical patent/JP2008233946A/ja
Application granted granted Critical
Publication of JP4408910B2 publication Critical patent/JP4408910B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Processing Or Creating Images (AREA)
  • Position Input By Displaying (AREA)

Description

本発明は、ユーザの意識的な動作と無意識の動作とを分別し、無意識の動作をキャラクターの表示に反映させるのに好適なキャラクター表示装置、キャラクター表示方法、ならびに、これらをコンピュータにて実現するプログラムに関する。
従来から、ゲームやチャット、ソーシャルネットワークサービス等の分野においては、ユーザが、自身を投影した仮想世界内でのキャラクター(「アバター」と呼ばれることもある。)を選択、設定し、その姿を自分の端末や他人の端末に表示させて、ユーザに親しみを感じさせる手法が広く使われている。
この場合、キャラクターの膝や肘などの関節の角度や位置を周期的に微小に変化させて、キャラクターの形状を変化させ、そこにキャラクターが表示されていることをユーザに認知させやすくすると同時に、現実の人間が体を停止させている場合であっても、心臓の鼓動や筋肉の収縮拡張によって、微小にその形状が変化していることをキャラクターの形状でもシミュレーションして、キャラクターが生きているかのように感じさせ、ユーザに親しみやすくさせる手法も使われている。
一方で、ユーザがマウスや各種のコントローラなどを用いて、画面内に表示されるカーソルや矢印などの指示標識の位置を指定し、メニュー項目やアイコン、処理の対象となるキャラクターなどの選択対象の画像に指示標識の位置を合わせ、クリックやボタン押下などの選択指示入力によって、当該選択対象の画像を選択し、当該選択対象の画像に対応付けられた処理を実行させる技術も広く使われている。
マウスカーソルが移動すると、これに連動させてキャラクターの表情や形状を変化させる技術も提案され、以下の文献に、その技術が開示されている。
ウィキペディア英語版,http://en.wikipedia.org/wiki/Xeyes
[非特許文献1]には、xeyesというアプリケーションが紹介されている。xeyesは、2つの目玉が画面上のカーソルの移動を追跡し、あたかも、目玉がカーソルを見つめているかのように表示するアプリケーションである。
本アプリケーションでは、マウスなどの各種のコントローラの位置や姿勢をユーザが操作することによって変化する画面内のカーソル等の位置に応じて、キャラクターの目玉の形状を変化するから、結局は、コントローラ等の位置や姿勢に連動してキャラクターの形状が変化することとなっている。
さて、キャラクターがアバターとして機能する場合など、ユーザとそのキャラクターが密接に連関している場合には、ユーザの生物学的な状況、たとえば、緊張していたり興奮していたり、という状況をキャラクターにも反映させたいことがある。このような生物学的な状況を処理する技術分野は、感性情報処理とも呼ばれ、心拍数センサーや体温センサー、発汗センサーなどを用いる手法も考えられる。
しかしながら、ユーザの生物学的な状況は、マウスの微小な位置の移動やコントローラの微小な傾きの変化、コントローラで測定される加速度等にも反映されるものと考えられる。そして、これらの測定結果をキャラクターの姿勢などに反映させれば、ユーザとキャラクターを密接に結び付け、キャラクターに生きているかのような印象を付与することができるようになると予想される。
しかしながら、上記のように、マウスやコントローラに対するユーザの動作は、これらを固定して把持しているような状況における心臓の鼓動や筋肉の収縮拡張を反映した無意識的な動作のほか、メニュー項目やアイコン等の画像を選択する場合等の意識的な動作もある。
したがって、マウスやコントローラを、通常のように各種の選択動作に利用する一方で、ユーザの生物学的な状況を測定するためのセンサーとしても同時に利用するための技術が必要となる。
本発明は、上記のような課題を解決するもので、ユーザの意識的な動作と無意識の動作とを分別し、無意識の動作をキャラクターの表示に反映させるのに好適なキャラクター表示装置、キャラクター表示方法、ならびに、これらをコンピュータにて実現するプログラムを提供することを目的とする。
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
本発明の第1の観点に係るキャラクター表示装置は、記憶部、測定部、決定部、表示部、保持部、指標部、修正部を備え、以下のように構成する。
すなわち、記憶部には、仮想空間に配置されるキャラクターの形状を定めるオブジェクトの位置および向きが記憶される。
たとえば、3次元グラフィックス処理においてキャラクターを処理対象とする場合には、キャラクターの各部の骨を表すボーンを仮想空間に配置し、ボーン同士を関節に相当する場所で連結して、ボーンからの相対的な位置によってスキンの制御点を定め、スキンの形状にテクスチャを貼り付けることによって、キャラクターの外観を形成する。そして、関節で連結されているボーン同士の相対的な角度を変化させることで、キャラクター全体の形状を変化させる。したがって、この場合は、ボーンがオブジェクトに相当する。
また、2次元グラフィックス処理においてキャラクターを処理対象とする場合には、上記のxeyesのように、キャラクターの顔や胴体などの概形を表す部分と、キャラクターの目玉や手足などの部品を表す部分とにキャラクターを分割して、各部分の相対的な位置関係や角度の関係を変化させることで、キャラクター全体の形状を変化させる。したがって、この場合は、各部分がオブジェクトに相当する。
このように、記憶部には、これらのキャラクターの形状を定めて画像を生成する処理に必要な情報が、記憶されるのである。
一方、測定部は、ユーザが把持するコントローラの位置・向きのいずれか少なくとも1つ(以下「第1測定量」という。)と、当該コントローラの位置・向き・速度・加速度・角速度・角加速度のいずれか少なくとも1つ(以下「第2測定量」という。)と、を測定する。
コントローラとしては、たとえば、マウスのように、位置のみが測定できるものを採用することもできる。この場合、第1測定量は「位置」とするのが典型的であり、第2測定量は、第1測定量と同じ「位置」としても良いが、第1測定量を微分することで「速度」「加速度」を第2測定量とすることも可能である。
また、近年では、釣り竿や指示棒のように操作できるコントローラも使われており、この場合には、コントローラの3次元空間における「位置」と「向き」を合わせて、もしくは、「向き」のみを、第1測定量として利用するのが典型的である。この場合も微分によって「角速度」「角加速度」などが得られる。
このほか、上記のようなコントローラが、測定精度の観点等から、加速度センサーや角加速度センサーを別途備えることもある。この場合には、これらのセンサーにより測定される量を第2測定量として取り扱うこともできる。
一方、決定部は、測定された第1測定量により、指示標識を表示すべき位置を決定する。
たとえば、マウスによってマウスカーソルを画面内で移動させるような状況では、マウスにおいて測定された位置が第1測定量であり、これに連動してマウスカーソルを表示する位置が決定されるので、マウスカーソルが指示標識として機能することとなる。
また、現実のレーザーポインタでは、レーザー光がスクリーンにぶつかって照射マークが発光する。そこで、指示棒として機能するようなコントローラでは、3次元空間におけるコントローラの位置や向きによって、画面内に表示されるカーソルの位置を決定する。
すなわち、本発明では、第1測定量をユーザによる意識的な操作と考え、決定部によって決定される位置は、ユーザによる意識的な操作の結果と考えるのである。
一方、表示部は、決定された位置に当該指示標識を配置し、記憶されたオブジェクトの位置および向きにより定められる形状で当該キャラクターを配置した画像を生成して画面に表示する。
すなわち、従来から行われている通り、ゲームのプレイヤーキャラクターやアバターを画面に表示するとともに、ユーザの各種選択などを助けるため、マウスカーソルやレーザーポインタの照射マークに相当するような指示標識も画面に表示される。
一方、保持部は、測定された第2測定量のうち、決定された位置が当該画面内の所定の無効領域に含まれない期間に測定された第2測定量の履歴を保持する。
ここで、「画面内の所定の無効領域」とは、典型的には、「ユーザが指示標識の位置をその領域内に置いた場合には、それはユーザの意識的な操作である」と想定されるような領域のことであり、たとえば、カーソルなどの指示標識によって選択されるメニュー項目やアイコンなどの画像が表示される領域、およびその近傍である。
したがって、保持部は、ユーザの意識的な操作でないと想定されるような場所に指示標識が存在する期間に測定された第2測定量の履歴を保持するのである。
保持部は、典型的には、一定長のキューやリングバッファによって構成され、測定部により第2測定量が測定されると、決定部により決定された位置が画面内の無効領域に含まれなければ、当該測定された第2測定量をキューに追加する。また、キューやリングバッファのオーバーフローを防止するため、履歴は、古い順に消去(上書き)がされていく。
そして、指標部は、決定された位置が、当該画面内の無効領域に
(a)含まれない場合、測定された第2測定量を指標値とし、
(b)含まれる場合、保持された履歴に含まれる第2測定量のいずれかを指標値として、
当該指標値を出力する。
この指標値は、第2測定量によって定められる値であるが、上記のように、ユーザの無意識的な操作中であると想定される場合には、最新の(現在の)第2測定量が指標値となり、ユーザが意識的に何かを操作している間であると想定される場合には、過去に測定された第2測定値の履歴から適当なものを選択して出力する。選択の手法としては、たとえば、ランダムに選択する、履歴の中の一定の区間を繰り返し走査するように選択する、などの手法が考えられる。
一方、記憶部は、出力された指標値により、記憶されたオブジェクトの位置・向きのいずれか少なくとも1つを修正する。
各オブジェクトの位置や向きは、当該オブジェクトが配置される仮想空間に設定される物理法則にしたがったシミュレーションによって求められる。たとえば、重力や摩擦力、各種の抵抗力・摩擦力バネなどの弾性力を設定して、微分方程式を解くことにより、シミュレーションを行うのが典型的である。
本発明では、指標値に基づいて、シミュレーションにより得られるオブジェクトの位置や向きを修正する。指標値に基づく修正には、種々考えられるが、指標値に所定の演算を施した結果をオブジェクトに働く外力として、上記の微分方程式に導入する手法や、指標値に所定の演算を施した結果分だけオブジェクトの位置や向きを直接変化させて修正する手法が典型的である。
本発明によれば、ユーザの意識的な動作と無意識の動作とを分別し、無意識の動作をキャラクターの表示に反映させて、キャラクターとユーザとの無意識的な連関をより一層高めて画面に表示することができるようになる。
また、本発明のキャラクター表示装置は、以下のように構成することができる。
すなわち、表示部は、当該画面内に配置される指示標識によって指定され、ユーザによる当該コントローラを介した選択入力操作によって選択される選択対象を表す選択対象画像を、当該画像にさらに配置して生成する。
ここで、選択対象画像とは、たとえばメニュー項目やアイコン、処理対象となるキャラクター等の画像である。
さらに、当該画面内の所定の無効領域は、当該選択対象画像が表示される表示領域、もしくは、当該選択対象画像が表示される領域に外接する所定の周辺領域である。
すなわち、メニュー項目やアイコン等が表示される場所を含む画面内の一定の領域が、無効領域として設定される。これらの領域にカーソルなどの指示標識が入っている間は、ユーザが積極的かつ意識的にマウス等のコントローラを操作している可能性が高いと考えられるからである。
本発明は、上記発明の好適実施形態に係るもので、ユーザによるコントローラの意識的な操作と、無意識的な操作とを簡易に弁別して、無意識的な操作をキャラクターの形状に反映させることができるようになる。
また、本発明のキャラクター表示装置において、保持部は、測定された第2測定量の履歴を、所定の保持時間長分保持し、指標部は、決定された位置が当該画面内の所定の無効領域に
(a)含まれない場合、保持された履歴のうち、最新の第2測定量を指標値とし、
(b)含まれる場合、決定された位置が当該画面内の所定の無効領域に含まれ始めてからの経過時間を計測し、当該保持時間から当該経過時間を減算した結果を当該保持時間で除算した剰余時間を計算し、保持された履歴のうち、当該剰余時間分過去の第2測定量を指標値として、
当該指標値を出力するように構成することができる。
上述した通り、保持部がリングバッファもしくはキューとして構成されており、測定された最新の第2測定量は、当該保持部に最後に(最新に)追加された第2測定量に等しいことから、指示標識が無効領域に含まれない場合は、これを指標値とする。
一方、指示標識が無効領域に含まれる間は、無効領域に入ってからの経過時間をt、保持部に保持できる履歴の時間長をTとしたときに、当該保持部内で、(T - t) mod Tだけ過去に相当する場所に保持されている第2測定量を指標値とするのである。
ただし、a mod bは、
a mod b = a (0≦a<b);
= (a+b) mod b (a<0);
= (a-b) mod b (b<a);
のように定義される演算であり、割り算をしたときの余りを求める演算を、整数以外にも拡張したものである。
このように、カーソルが無効領域に入っている間は、カーソルが無効領域に入る前の時間長Tの間にされた無意識の操作(第2測定量)が繰り返し使用される。したがって、カーソルが無効領域に入っている間、キャラクターは、あたかも直前の時間長Tの間の動作を繰り返しているかのように見える。
本発明によれば、保持領域に保持されている第2測定量を繰り返し走査するように指標値として用いることで、ユーザが意識的な操作を行っている間であっても、過去にされたユーザの無意識的な操作とキャラクターとを連関させることができるようになる。
また、本発明のキャラクター表示装置において、当該第2測定量は、当該コントローラの速度・加速度・角速度・角加速度のいずれか少なくとも1つであり、測定部は、当該第1測定量と、当該第2測定量と、を、異なるセンサーにより測定するように構成することができる。
上記のように、第1測定量と第2測定量とは、同じものをそのまま利用しても良いし、前者を適宜微分して後者として用いるなどの手法を採用することもできるが、本発明においては、位置・向きセンサーと加速度センサーの2つを備えるコントローラが普及しつつある状況に対応することとしている。
本発明によれば、ユーザの無意識的な操作に相当すると想定される第2測定量を、第1測定量を測定するハードウェアとは異なるものとし、第2測定量のうち、意識的な操作に基づくものを除去するために、第1測定量を用いることとして、ユーザによる意識的な操作と無意識的な操作とを、容易に弁別することができるようになる。
また、本発明のキャラクター表示装置において、修正部は、当該指標値にあらかじめ対応付けられる変位量を、記憶部に記憶されるいずれかのオブジェクトの位置または向きに加算することにより、当該オブジェクトの位置・向きのいずれか少なくとも1つを修正するように構成することができる。
上記のように、オブジェクトの位置・向きの修正手法としては、オブジェクトの位置・向きの微分方程式に繰り込まれる「力」の原因として指標値を用いることもできるが、指標値にあらかじめ変位量を対応付けておき、この変位量を位置や向きに直接加算することとしている。
この際に、あらかじめ対応付けられる変位量は、指標値を適当に整数化した値をインデックスとするテーブルを用意して、当該テーブルに登録しておくこととしても良いし、当該指標値に所定の比例定数を乗じた量であるように構成することも可能である。
本発明によれば、ユーザの無意識的な操作をキャラクターに反映させる際に、計算の負担を低減することができるようになる。
また、本発明のキャラクター表示装置において、当該あらかじめ対応付けられる変位量は、当該指標値に、前記決定された位置が当該画面内の所定の無効領域に含まれ始めてからの経過時間に対して減衰する所定の係数を乗じた量であるように構成することができる。
上記の発明においては、カーソルが無効領域に入っている間は、カーソルが無効領域に入っている間、キャラクターは、あたかも直前の時間長Tの間の動作を繰り返すこととなるが、本発明においては、この繰り返し動作が次第に減衰していくことになる。
本発明のその他の観点に係るキャラクター表示方法は、仮想空間に配置されるキャラクターの形状を定めるオブジェクトの位置および向きが記憶される記憶部、測定部、決定部、表示部、測定された測定量の履歴が保持される保持部、指標部、修正部を有するキャラクター表示装置にて実行され、測定工程、決定工程、表示工程、保持工程、指標工程、修正工程を備え、以下のように構成する。
すなわち、測定工程では、測定部が、ユーザが把持するコントローラの位置・向きのいずれか少なくとも1つ(以下「第1測定量」という。)と、当該コントローラの位置・向き・速度・加速度・角速度・角加速度のいずれか少なくとも1つ(以下「第2測定量」という。)と、を測定する。
一方、決定工程では、決定部が、測定された第1測定量により、指示標識を表示すべき位置を決定する。
さらに、表示工程では、表示部が、決定された位置に当該指示標識を配置し、記憶されたオブジェクトの位置および向きにより定められる形状で当該キャラクターを配置した画像を生成して画面に表示する。
そして、保持工程では、保持部に、決定された位置が当該画面内の所定の無効領域に含まれない期間に測定された第2測定量の履歴を保持させる。
一方、指標工程では、指標部が、決定された位置が、当該画面内の無効領域に
(a)含まれない場合、測定された第2測定量を指標値とし、
(b)含まれる場合、保持された履歴に含まれる第2測定量のいずれかを指標値として、
当該指標値を出力する。
さらに、修正工程では、修正部が、出力された指標値により、記憶されたオブジェクトの位置・向きのいずれか少なくとも1つを修正する。
本発明のその他の観点に係るプログラムは、コンピュータを上記のキャラクター表示装置の各部として機能させるように構成する。
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
本発明によれば、ユーザの意識的な動作と無意識の動作とを分別し、無意識の動作をキャラクターの表示に反映させるのに好適なキャラクター表示装置、キャラクター表示方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
以下に本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム用の情報処理装置を利用して本発明が実現される実施形態を説明するが、以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
図1は、プログラムを実行することにより、本発明のキャラクター表示装置の機能を果たす典型的な情報処理装置の概要構成を示す模式図である。以下、本図を参照して説明する。
情報処理装置100は、CPU(Central Processing Unit)101と、ROM 102と、RAM(Random Access Memory)103と、インターフェイス104と、コントローラ105と、外部メモリ106と、画像処理部107と、DVD−ROM(Digital Versatile Disc ROM)ドライブ108と、NIC(Network Interface Card)109と、音声処理部110と、マイク111と、を備える。
ゲーム用のプログラムおよびデータを記憶したDVD−ROMをDVD−ROMドライブ108に装着して、情報処理装置100の電源を投入することにより、当該プログラムが実行され、本実施形態のキャラクター表示装置が実現される。
CPU 101は、情報処理装置100全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、CPU 101は、レジスタ(図示せず)という高速アクセスが可能な記憶域に対してALU(Arithmetic Logic Unit)(図示せず)を用いて加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などを行うことができる。さらに、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行えるように、CPU 101自身が構成されているものや、コプロセッサを備えて実現するものがある。
ROM 102には、電源投入直後に実行されるIPL(Initial Program Loader)が記録され、これが実行されることにより、DVD−ROMに記録されたプログラムをRAM 103に読み出してCPU 101による実行が開始される。また、ROM 102には、情報処理装置100全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。
RAM 103は、データやプログラムを一時的に記憶するためのもので、DVD−ROMから読み出したプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータが保持される。また、CPU 101は、RAM 103に変数領域を設け、当該変数に格納された値に対して直接ALUを作用させて演算を行ったり、RAM 103に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻す、などの処理を行う。
インターフェイス104を介して接続されたコントローラ105は、ユーザがゲーム実行の際に行う操作入力を受け付ける。本図では、コントローラ105としてレーザポインタや指示棒の代わりとなるような把持モジュール201と発光モジュール251との組み合わせを採用しているが、上下左右を示す操作入力等、各種のボタンが用意された従来のコントローラを採用することも可能であるし、マウスやキーボードなどをコントローラとして使用しても良い。
インターフェイス104を介して着脱自在に接続された外部メモリ106には、ゲーム等のプレイ状況(過去の成績等)を示すデータ、ゲームの進行状態を示すデータ、ネットワーク対戦の場合のチャット通信のログ(記録)のデータなどが書き換え可能に記憶される。ユーザは、コントローラ105を介して指示入力を行うことにより、これらのデータを適宜外部メモリ106に記録することができる。
DVD−ROMドライブ108に装着されるDVD−ROMには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データが記録される。CPU 101の制御によって、DVD−ROMドライブ108は、これに装着されたDVD−ROMに対する読み出し処理を行って、必要なプログラムやデータを読み出し、これらはRAM 103等に一時的に記憶される。
画像処理部107は、DVD−ROMから読み出されたデータをCPU 101や画像処理部107が備える画像演算プロセッサ(図示せず)によって加工処理した後、これを画像処理部107が備えるフレームメモリ(図示せず)に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部107に接続されるモニタ(図示せず)へ出力される。これにより、各種の画像表示が可能となる。
画像演算プロセッサは、2次元の画像の重ね合わせ演算やαブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
また、仮想3次元空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Zバッファ法によりレンダリングして、所定の視点位置から仮想3次元空間に配置されたポリゴンを所定の視線の方向へ俯瞰したレンダリング画像を得る演算の高速実行も可能である。
さらに、CPU 101と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を2次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。
NIC 109は、情報処理装置100をインターネット等のコンピュータ通信網(図示せず)に接続するためのものであり、LAN(Local Area Network)を構成する際に用いられる10BASE−T/100BASE−T規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ISDN(Integrated Services Digital Network)モデム、ADSL(Asymmetric Digital Subscriber Line)モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとCPU 101との仲立ちを行うインターフェース(図示せず)により構成される。
音声処理部110は、DVD−ROMから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカ(図示せず)から出力させる。また、CPU 101の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカから出力させる。
音声処理部110では、DVD−ROMに記録された音声データがMIDIデータである場合には、これが有する音源データを参照して、MIDIデータをPCMデータに変換する。また、ADPCM形式やOgg Vorbis形式等の圧縮済音声データである場合には、これを展開してPCMデータに変換する。PCMデータは、そのサンプリング周波数に応じたタイミングでD/A(Digital/Analog)変換を行って、スピーカに出力することにより、音声出力が可能となる。
さらに、情報処理装置100には、インターフェイス104を介してマイク111を接続することができる。この場合、マイク111からのアナログ信号に対しては、適当なサンプリング周波数でA/D変換を行い、PCM形式のディジタル信号として、音声処理部110でのミキシング等の処理ができるようにする。
このほか、情報処理装置100は、ハードディスク等の大容量外部記憶装置を用いて、ROM 102、RAM 103、外部メモリ106、DVD−ROMドライブ108に装着されるDVD−ROM等と同じ機能を果たすように構成してもよい。
以上で説明した情報処理装置100は、いわゆる「コンシューマ向けテレビゲーム装置」に相当するものであるが、仮想空間を表示するような画像処理を行うものであれば本発明を実現することができる。したがって、携帯電話、携帯ゲーム機器、カラオケ装置、一般的なビジネス用コンピュータなど、種々の計算機上で本発明を実現することが可能である。
たとえば、一般的なコンピュータは、上記情報処理装置100と同様に、CPU、RAM、ROM、DVD−ROMドライブ、および、NICを備え、情報処理装置100よりも簡易な機能を備えた画像処理部を備え、外部記憶装置としてハードディスクを有する他、フレキシブルディスク、光磁気ディスク、磁気テープ等が利用できるようになっている。また、コントローラ105ではなく、キーボードやマウスなどを入力装置として利用する。
図2は、現実の空間における位置や姿勢などの種々のパラメータが測定できるようなコントローラ105と情報処理装置100との外観を示す説明図である。以下、本図を参照して説明する。
コントローラ105は、把持モジュール201と発光モジュール251との組合せからなっており、把持モジュール201は無線通信によって情報処理装置100と通信可能に接続されており、発光モジュール251は、有線で情報処理装置100と通信可能に接続されている。情報処理装置100の処理結果の音声および画像は、モニタおよびスピーカとして機能するテレビジョン装置291によって出力表示される。
把持モジュール201は、テレビジョン装置291のリモートコントローラと類似した外観をしており、その先端には、CCDカメラ202が配置されている。
一方発光モジュール251は、テレビジョン装置291の上部に固定されている。発光モジュール251の両端には、発光ダイオード252が配置されており、情報処理装置100からの電源供給によって発光する。
把持モジュール201のCCDカメラ202は、この発光モジュール251の様子を撮影する。
撮影された画像の情報は、情報処理装置100に送信され、情報処理装置100は、当該撮影された画像内において発光ダイオード252が撮影された位置に基づいて、発光モジュール251に対する把持モジュール201の位置を取得する。
このほか、把持モジュール201内には、加速度センサ、角加速度センサ、傾きセンサ等が内蔵されており、把持モジュール201そのものの姿勢を測定することが可能となっている。この測定結果も、情報処理装置100に送信される。
これらの測定結果に基づいて、把持モジュール201のテレビジョン装置291に対する位置や向きが同定される。したがって、把持モジュール201を長手方向に延長した先がテレビジョン装置291の画面と交叉する場所を計算により推定することができる。画面内のこの推定場所にカーソルを表示することで、現実世界のレーザポインタや指示棒のように、把持モジュール201を機能させることができるようになる。
把持モジュール201の上面には、十字形キー203が配置されており、プレイヤは、十字形キー203を押し込み操作することによって、各種の方向指示入力を行うことができる。また、Aボタン204ほか、各種ボタン206も上面に配置されており、当該ボタンに対応付けられた指示入力を行うことができる。
一方、Bボタン205は、把持モジュール201の下面に配置されており、把持モジュール201の下面に窪みが構成されていることとあいまって、拳銃やマジックハンドにおける引き金を模したものとなっている。典型的には、仮想空間内における拳銃による発砲やマジックハンドによる把持の指示入力は、Bボタン205を用いて行われる。
また、把持モジュール201の上面のインジケータ207は、把持モジュール201の動作状況や情報処理装置100との無線通信状況などをプレイヤに提示する。
把持モジュール201の上面に用意された電源ボタン208は、把持モジュール201そのものの動作のオン・オフを行うもので、把持モジュール201は内蔵された電池(図示せず。)によって動作する。
このほか、把持モジュール201内部には、バイブレータ(図示せず。)が用意されており、情報処理装置100からの指示に基づいて、振動の有無や強弱を制御することができるようになっている。
なお、把持モジュール201側に発光ダイオードを用意し、テレビジョン装置291(の発光モジュール251)側にCCDカメラを配置して、把持モジュール201の位置を測定するように構成しても良い。
以下では、把持モジュール201と発光モジュール251との組合せからなるコントローラ105を用いる状況を前提に説明する。ただし、上記のような形態によらず、たとえば超音波や赤外線通信、GPS(Global Positioning System)等を利用してコントローラ105の現実世界における位置や姿勢を測定するとした場合や、また、マウスやキーボード、各種ボタンを備えたゲーム用コントローラを用いた場合であっても、本発明の範囲に含まれる。
(キャラクター表示装置)
図3は、本実施形態に係るキャラクター表示装置の概要構成を示す説明図である。以下、本図を参照して説明する。
本実施形態に係るキャラクター表示装置301は、記憶部302、測定部303、決定部304、表示部305、保持部306、指標部307、修正部308を備える。
まず、記憶部302には、仮想空間に配置されるキャラクターの形状を定めるオブジェクトの位置および向きが記憶される。本実施形態では、3次元グラフィックス処理を用いてキャラクターの形状を定めることとする。したがって、キャラクターの各部の骨を表すボーンを仮想空間に配置し、ボーン同士を関節に相当する場所で連結して、ボーンからの相対的な位置によってスキンの制御点を定め、スキンの形状にテクスチャを貼り付けることによって、キャラクターの外観を形成する。
この場合、関節で連結されているボーン同士の相対的な角度を変化させると、キャラクター全体の形状を変化させる。したがって、ボーンがオブジェクトに相当する。
このほか、2次元グラフィックス処理を用いて、キャラクターの形状を定めることとしても良い。上記のxeyesのように、キャラクターの顔や胴体などの概形を表す部分と、キャラクターの目玉や手足などの部品を表す部分とにキャラクターを分割して、各部分の相対的な位置関係や角度の関係を変化させることで、キャラクター全体の形状を変化させる。したがって、この場合は、各部分がオブジェクトに相当する。
一方、保持部306は、コントローラについて測定された測定量をリングバッファもしくは長さ制限のあるキューとして記憶する領域である。リングバッファにより構成する場合には、長さTの配列Aと、現在のインデックス変数iと、により、リングバッファを構成することができる。典型的には、配列Aは整数もしくは浮動小数点数の配列であり、インデックス変数iは整数変数である。
このように、記憶部302には、これらのキャラクターの形状を定めて画像を生成する処理に必要な情報が、記憶され、保持部306には、コントローラについて測定された測定量が記憶される。これらの情報は、キャラクター表示装置301におけるキャラクター表示処理が開始される際に、初期化される。
ここで、記憶部302および保持部306は、各種の情報を(一時的に)記憶する機能を果たすものである。一方、測定部303、決定部304、表示部305、指標部307、修正部308は、後述するような各種の処理を実行する機能を果たす要素である。
図4は、キャラクター表示装置301において実行されるキャラクター表示処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
本処理が開始されると、上記のように、CPU 101は、記憶部302、保持部306に記憶される情報等、RAM 103に用意される各種の情報の初期化を行う(ステップS401)。このように、記憶部302、保持部306は、RAM 103に確保された記憶域によって実現される。したがって、本実施形態では、RAM 103が、記憶部302、保持部306として機能する。
なお、保持部306のリングバッファの初期化は、変数i←0,1,…,T-1についてA[i]←0を行い、さらに、変数i←0のように代入をすることで行う。
このほか、経過時間を計測するカウンタ変数tもRAM 103内に用意されており、t←0のように初期化を行う。
このほか、RAM 103に用意される情報としては、ユーザが選択可能なメニュー項目やアイコンの種類、画像情報および表示位置、これに対応付けられる処理の種類などが、ある。
ついで、CPU 101は、ユーザが把持するコントローラ105の把持モジュール201から送信される把持モジュール201の位置・向き(姿勢)・加速度・角加速度などの情報と、各種ボタンの押圧操作などの情報と、からなるコントローラの状態の情報を取得する(ステップS402)。
本実施形態では、把持モジュール201の位置・向きを第1測定量として用い、把持モジュール201に用意された加速度センサーの測定結果を第2測定量として用いることとする。なお、上述のように、向きのみを第1測定量とし、第2測定量は、これを微分して得ることとしても良いし、第1測定量と第2測定量の両方に、同じ測定結果を採用することとしても良い。
したがって、コントローラ105は、第1測定量および第2測定量を測定する測定部303として機能する。
さらに、CPU 101は、コントローラ105から取得した把持モジュール201の位置・向きの情報、すなわち、第1測定量に基づいて、画面内において指示標識として機能するカーソルの表示位置を決定する(ステップS403)。
カーソルの表示位置は、把持モジュール201を長手方向に延長した先がテレビジョン装置291の画面と交叉する位置とすると、あたかもレーザポインタや指示棒であるかのように把持モジュール201を取り扱うことができるため、ユーザにとっても直観的な操作が可能となる。
したがって、CPU 101は、第1測定量に基づいて、指示標識を表示すべき位置を決定する決定部304として機能する。
なお、コントローラ105としてマウスを使用する場合には、第1測定量はマウスの位置に相当し、測定されたマウスの位置からマウスカーソルの表示位置が決定される。
本実施形態では、第1測定量は主としてユーザによる意識的な操作に基づくものと想定しており、決定部304によって決定される位置は、ユーザによる意識的な操作の結果と考えている。一方、第2測定量が、後述するように、ユーザによる無意識的な操作を反映していると想定している。
さて、CPU 101は、RAM 103に用意された情報およびステップS403において決定されたカーソルの位置情報に基づいて、画面に表示すべき画像をRAM 103内のフレームメモリに生成する(ステップS404)。図5は、本実施形態において生成される画像の例を示す説明図である。以下、本図を参照して説明する。
生成される画像501には、以下のような情報が含まれる。
(a)指示標識として機能するカーソル画像502。第1測定量に連動して位置が変わる。
(b)キャラクター画像503。後述するように、第2測定量に連動して位置や形状が変わる。
(c)メニュー項目やアイコンを表す選択対象画像504。カーソルが重なるように把持モジュール201の位置や向きを調整して、Aボタン204を押圧操作すると、その選択対象画像に対応付けられる処理が実行される。
これらの画像生成は、通常のゲームやチャットシステム等に用いられるものと同様のグラフィックス技術を適用することが可能である。なお、選択対象画像504が表示される領域を包含するように、無効領域505が設定される。
無効領域505は、「ユーザが指示標識の位置をその領域内に置いた場合には、それはユーザの意識的な操作である」と想定されるような領域のことであり、たとえば、カーソルなどの指示標識によって選択されるメニュー項目やアイコンなどの選択対象画像504が表示される領域、およびその近傍である。
この無効領域505は、画像に直接配置されるものではなく、ユーザが視認することはできないが、後述するように、第2測定量の処理の際の判断材料として用いる。
そして、垂直同期割込が生じるまで待機する(ステップS405)。この待機の間には、他の処理をコルーチン的に実行することも可能である。このほか、以下のような処理を行っても良い。すなわち、カーソル画像502がいずれかの選択対象画像504に重なっており、かつ、コントローラ105の把持モジュール201のAボタン204が押圧操作されているか否かを判断し、その判断結果によって、本処理を終了し、続いて当該選択対象画像504に対応付けられた処理を実行する等である。
そして、垂直同期割込が生じたら、画像処理部107に指示を出して、RAM 103内のフレームメモリに生成された画像を実際に転送して、テレビジョン装置291のモニタに表示する(ステップS406)。
これにより、カーソルやレーザーポインタの照射マーク等に対応する指示標識を表すカーソル画像502、ゲームのプレイヤーキャラクターやアバターに対応するキャラクター画像503、ユーザによる各種選択などを行うため選択対象画像504が画面に表示される。
したがって、CPU 101は、RAM 103や画像処理部107と共働して、決定された位置に指示標識を配置し、記憶されたオブジェクトの位置および向きによりキャラクターを配置した画像を生成して画面に表示する表示部305として機能する。
ついで、CPU 101は、カーソル画像502が表示される位置、すなわち、決定部304によって決定された位置が、無効領域505に含まれるか否かを判断する(ステップS407)。カーソル画像502の中心位置や左上の位置が無効領域505に含まれるか否かを判断基準とするのが典型的であるが、たとえば画像処理部107のハードウェアによる支援がある場合には、カーソル画像502と無効領域505とが重なるか否かを判断基準としても良い。また、無効領域505の形状を長方形もしくは長方形の集合としておくと、この判断に必要な計算量を低減することが可能となる。
そして、カーソル画像502が表示される位置が無効領域505に含まれない場合(ステップS407;No)、ステップS402において測定・取得された第2測定量を、保持部306に追加する(ステップS408)。具体的には、
A[i]←第2測定量;
i←(i+1) mod T;
を実行する。
本実施形態では、第2測定量として加速度センサーにより計測された加速度のスカラー値をそのまま用いているが、把持モジュール201を人間が自然に握っている場合、心臓の鼓動の周期に連動して各種の物理パラメータも一定の周期を持つものと考えられる。したがって、第2測定量として、位置、速度、加速度、向き、角速度、角加速度などの、いずれの測定値を用いても良いし、これらに適宜適当な係数を乗じて加算するなど、複数の計測値から計算により第2計測量を求めることとしても良い。
このようにして、保持部306には、A[(i-1) mod T]は、カーソル画像502が無効領域505に含まれていない間に測定された最新の値であり、A[(i-2) mod T]は、カーソル画像502が無効領域505に含まれていない間に測定されたその直前の値であり、A[(i-3) mod T]は、カーソル画像502が無効領域505に含まれていない間に測定されたさらにその直前の値であり、……、のように、第2計測量の履歴が保持される。
さて、カウンタ変数tに、現在までにカーソル画像502が無効領域505に含まれて続けている時間長をカウントするため、ステップS408の後は、カウンタ変数tをt←0に設定する(ステップS409)。一方、カーソル画像502が無効領域505に含まれていれば(ステップS407;Yes)、カウンタ変数tについてt←t+1を実行し、カウントを1だけ増やす(ステップS410)。
ついで、CPU 101は、変数jに(i + t - 1) mod Tの計算結果を格納する(ステップS411)。
j = (i+t-1) mod T = (T+i-T+t-1) mod T = ((i-1) - (T-t)) mod T
が成立するから、
(1)カーソル画像502が無効領域505に含まれていなければ、t = 0であるから、A[j] = A[(i-1) mod T]が成立し、A[j]は、測定された最新の第2測定量の値であり、
(2)カーソル画像502が無効領域505に含まれていなければ、A[j]は、最新に登録された第2測定量A[(i-1) mod T]よりも、(T-t) mod Tだけ過去に登録された第2測定量の値である、ということとなる。
そして、CPU 101は、指標値としてA[j]を取得する(ステップS412)。すなわち、CPU 101は、RAM 103と共働して、第2測定量もしくはその履歴を、オブジェクトの位置や向きを修正するための指標値とする指標部307として機能する。
このように、本実施形態では、カーソル画像502が無効領域505に含まれていれば履歴全体を繰り返し走査して指標値を得るし、カーソル画像502が無効領域505に含まれていなければ、最新の第2測定量を指標値とするが、この他の手法として、カーソル画像502が無効領域505に含まれていればjを(i-1) mod Tとし、含まれていなければ、0,1,T-1からランダムに選択する手法を採用しても良い。
このほか、A[j]をそのまま指標値とするのではなく、その前後の要素との(重み付き)平均としても良い。たとえば、A[(i-1) mod T]とA[i mod T]とは、時間的に分断された時点での測定値であるから、これを平滑化させたい場合もある。
そこで、適当な大きさの正定数N≦Tをあらかじめ選択しておき、
Σk=0 N A[(j-k) mod T]/N
を指標値とすれば、リングバッファ内の第2測定値の変化の高周波成分を除去して、キャラクター画像503の形状の変化を平滑にすることができるようになる。
ついで、CPU 101は、記憶部302に記憶されたオブジェクトの、次の時点での位置や向きをシミュレーション計算する(ステップS413)。
各オブジェクトの位置や向きは、当該オブジェクトが配置される仮想空間に設定される物理法則にしたがったシミュレーションによって求められる。たとえば、重力や摩擦力、各種の抵抗力・摩擦力バネなどの弾性力を設定して、微分方程式を解くことにより、シミュレーションを行うのが典型的である。
また、本処理は、垂直同期周期で繰り返しが行われるため、物理シミュレーションにおける時間ステップの単位を垂直同期周期(典型的には60分の1秒)に一致させると、リアルタイムでの処理が可能となる。
さらに、ステップS412にて得られた指標値に基づいて、CPU 101は、記憶部302に記憶されたオブジェクトの位置・向きのいずれか少なくとも1つを修正する(ステップS414)。
指標値に基づく修正には、種々考えられるが、指標値に所定の演算を施した結果をオブジェクトに働く外力として、上記の微分方程式に導入する手法や、指標値に所定の演算を施した結果分だけオブジェクトの位置や向きを直接変化させて修正する手法などがある。
本実施形態では、ボーン、制御点、スキンを用いてキャラクターの位置、向き、形状を定めることとする。図6は、仮想空間内におけるボーン、制御点、スキンの関係を示す説明図である。以下、本図を参照して説明する。
本図に示す例では、仮想空間1200内には、2つのボーン1201a、1201bが配置されている。各ボーン1201a、1201bの長さは一定である。ボーン1201bの端点1202bは、ボーン1201aの突端1203aに連結されており、ボーン1201bは、端点1202bを回転中心にして、ボーン1201aに対して回転することができる。
したがって、ボーン1201aの端点1202bに原点が一致し、ボーン1201aに固定された座標系1204aにおけるボーン1201bの端点1202bの座標は、一定となる。
本図では、ボーン1201a、1201bは、長い角錐に楕円球を連結した形状で表現されており、角錐の上頂点が突端1203a、1203bに、楕円球が端点1202a、1202bに、それぞれ対応している。
また、ボーン1201aに固定された座標系1204aにおける回転量(姿勢)を与えることにより、ボーン1201aに対するボーン1201bの相対的な姿勢が一意に定まることになる。なお、ここでいう回転は、「ある1つの軸を中心に回転する」の意味ではなく、「ある1つの点を中心に回転する」の意味であり、たとえばユニバーサルジョイントなどによって実現されるような回転に相当するものである。
このように、あるボーン1201bの端点1202bが他のボーン1201aの突端1203aに一致して、端点1202bを中心にボーン1201bが回転する姿勢によって、ボーン1201aに対するボーン1201bの相対的な位置が定まる場合、ボーン1201aとボーン1201bとには、座標系の依存関係の順序を定めることができる。
たとえばキャラクターの頭部の位置や形状を定めるには、表す場合には、一般的には、
(1)背骨に相当するボーンに対して首の骨に相当するボーンの位置を定め、
(2)首の骨に相当するボーンに対して頭蓋骨に相当するボーンの位置を定め、
(3a)頭蓋骨に相当するボーンに対して顎の骨に相当するボーンの位置を定め、
(3b)頭蓋骨に相当するボーンに対して目蓋に相当するボーンの位置を定め、……
のように、多数のボーンを連結させることによって行う。また、ボーンは、現実の人間や動物の骨格と一致するように設定しても良いし、適宜省略したり、追加したりしても良い。たとえば目蓋のように、筋肉のみによって動作するような部分であっても、上記のように仮想的にボーンを設定することで、キャラクターの表情の設計を行うのが一般的である。
さて、ボーン1201aには、複数の制御点1205aが割り当てられている(割当の対応関係を点線で示している)。各制御点1205aの、ボーン1201aに割り当てられた座標系1204aにおける座標は一定である。したがって、各制御点1205aは、ボーン1201aに固定されている。
一方、ボーン1201bにも、複数の制御点1205bが割り当てられている。各制御点1205bの、ボーン1201bに割り当てられた座標系1204bにおける座標は一定である。したがって、各制御点1205bは、ボーン1201bに固定されている。
したがって、ボーン1201bが端点1202bを中心にボーン1201aに対して回転すると、制御点1205bもこれに連動してボーン1201aに対して回転することになる。
ある座標系に対する他の座標系の原点の位置、ならびに、当該ある座標系に対する当該他の座標系の各軸の方向(回転量)が定まれば、当該ある座標系と当該他の座標系において、相互に点の座標値を一意に変換することが可能である。
したがって、ボーン1201aに対するボーン1201bの相対的な姿勢を変化させることによって、ボーン1201aに対する制御点1205bの相対的な位置を計算により求めることができる。一方、ボーン1201aに対する制御点1205aの相対的な位置は、上記のように固定されているから、2つのボーン1201a、1201bに固定された全制御点1201a、1201bの座標系1204aに対する座標値や、座標系1204bに対する座標値は、座標変換の計算によって求めることができ、これらの処理を連結されたすべてのボーンについて繰り返すことにより、すべての制御点の、ある座標系(典型的には背骨に固定された座標系、もしくは、グローバル座標系)における位置を確定させることができる。
さて、上記のようにして制御点1205a、1205bのある座標系における位置が定まったら、これらの制御点1205a、1205bの位置に基づいて、スキン1206を定めることができる。
本実施形態では、スキン1206は、ポリゴン1207の集合体であり、制御点1205a、1205bをあらかじめ定めた対応付けで各ポリゴン1207の頂点としている。本図に示す例では、人の腕の表面の一部のような形状をなしている。
制御点1205a、1205bをポリゴン1207の頂点としてポリゴン1207によってスキン1206の形状を定める手法のほか、各制御点1205a、1205bに重みを割り振ることによって定義されるNURBS(Non Uniform Rational B Spline)曲面をスキンとする手法を採用しても良い。この手法では、制御点の数をさらに増やすことも可能である。この場合には、スキン1206の形状は、2つのパラメータu,vの有理多項式により当該スキン1206内の点の座標値が定められることとなる。
u-v座標系においては、2つのパラメータu,vのそれぞれを一定の範囲で変化させると、長方形の領域が得られる。そこで、この長方形の領域の大きさのテクスチャ画像を用意しておけば、u,vの値に基づいて、当該テクスチャ画像の画素と、スキン1206の各点との対応付けをとることができる。このようにして、スキン1206にテクスチャ画像を貼り付ける。
本図では、2つのボーン1201a、1201bを例に示しているが、実際にはキャラクターの形状を構成するボーンはより多くのボーンからなる。
そして、自然体のキャラクターにおいては、各ボーン同士の相対的な姿勢(向き)に、標準姿勢(向き)を設定し、これにずれた姿勢(向き)となっていると、標準姿勢(向き)に戻すような回転力が生じ、また、ボーンの移動速度や回転速度に比例するような粘性力・抵抗力が働くものとして、ボーン同士の運動をシミュレーションすると、少々形が変わったとしても、振動しながら次第に自然体に姿勢が戻るような筋肉のようなシミュレーションを行うことができる。
本実施形態では、このようなキャラクター形状のシミュレーションにおいて、あるボーンと別のボーンの相対的な姿勢を、指標値に基づいて微小に変化させる。
そして、適当な係数を定めて指標値にこれを乗じることにより、修正量を得るのが典型的である。この場合には、センサーの測定可能範囲の上限値と下限値に当該係数を乗じたときに得られる値が、キャラクターの形状に対して相対的に小さくなるように、当該係数の大きさを定める。
このほか、修正量として、カウンタ変数tに対して減衰する係数e(t)を、指標値に乗じたものを採用しても良い。上記のように、指標値が第2測定値そのものであるとき、すなわち、カーソル画像502が無効領域505に含まれていない間は、カウンタ変数tは0に等しく、カーソル画像502が無効領域505に含まれている間は、カウンタ変数tは次第に増加していく。
したがって、係数e(t)として、以下のようなものを採用することができる。なお、C,Kは適当な正の定数である。
(1)線形に減衰するもの。すなわち、
e(t) = C - Kt (0≦t≦C/K);
= 0 (C/K≦t)
(2)指数的に減衰するもの。すなわち、
e(t) = C exp(-Kt)
(3)このほか、0≦t1<t2であればe(t1)≧e(t2)が成立するような任意の関数e(・)。
ここで修正量として得られる値の時間変化を見てみると、カーソル画像502が無効領域505に含まれている間は、直前の無効領域505に含まれていない間の時間長T分の値をそのまま繰り返す、もしくは、直前の無効領域505に含まれていない間の時間長T分の値をそのまま繰り返しながら減衰していくものとなる。
したがって、修正量は、後述するように、キャラクターの(無意識的な)動作の原因となるものであるから、カーソル画像502が無効領域505に入ったとしても、いきなりキャラクターの(無意識的な)動作が停止したりすることはなく、動作が繰り返し再現され、態様によっては減衰しながら繰り返し再現されることとなる。したがって、プレイヤーの無意識的な動作とキャラクターの感情表現とをシームレスに連携させることができる。
さて、この修正量に応じて、あるボーンに対する他のボーンの姿勢を、微小に修正する。たとえば、この修正量分だけ、あるボーンの方向軸周りに、このボーンに連結されている他のボーンを回転させるのである。
これによって、ボーン同士のなす角度が変化するから、「筋肉」の働きによってキャラクターの形状が微小に動的に変化することとなる。
このとき、修正を行う対象となるボーンの対(関節)は、キャラクターのいずれか1つだけでも良いし、複数箇所としても良い。キャラクターの動きをできるだけ左右対称にしたい場合には、たとえば背骨と頚骨との間に上記のような修正をすれば良いし、人間が手遊びをする場合は利き腕(ほとんどの場合右腕)で行うのが常であるから、右腕の手首の関節で、上記のような処理を行えば良い。
また、ボーン同士のなす角を、ボーン同士が張る面において、修正量分だけ広げたり狭めたりする、ボーンのいずれかの端点の位置をある座標系において修正量分だけ移動させる、等の手法もある。
キャラクターの全体形状は、上記のように「筋肉」によってシミュレーションされているため、1つの関節についてだけ、上記のような修正を行ったとしても、キャラクターの全身に微小に影響が及ぶこととなる。修正量は、もともと、ユーザの心臓の鼓動や呼吸の周期に連動していると考えられるから、キャラクターの全身が微小に振動することで、キャラクターとユーザとの連関を強めることができるのである。もちろん、複数の関節について、上記の修正を行うこととしても良い。
このほか、もっと単純に、キャラクター全体の位置を修正量分だけ移動する、という手法もありうる。キャラクター全体が1つのボーンや1枚のビットマップ画像として構成されているときなど、これらの単純な構成のオブジェクトからなるキャラクターの場合に好適であり、ユーザの生理的状況に合わせて微小に振動させることで、キャラクターとユーザとの一体感を高めることができる。
なお、キャラクターのオブジェクトが1枚のビットマップ画像として構成されている場合には、ステップS413における物理シミュレーションは不要であり、画像501内の基準位置からどれだけずらして配置するか、が、修正量によって定められることになる。
このほか、修正量は、当該キャラクターに印加される外力に相当する、と考え、ステップS413とステップS414とをまとめてシミュレーションを行う手法もありうる。
このように、CPU 101は、RAM 103と共働して、指標値に基づいてオブジェクトの位置や向きを修正する修正部308として機能する。
ステップS414における修正が終わったら、ステップS402に戻る。すなわち、本処理は全体としてループ構造をなしており、その周期は、垂直同期割込の周期に一致している。
このように、本実施形態によれば、ユーザの意識的な動作と無意識の動作とを分別し、無意識の動作をキャラクターの表示に反映させて、キャラクターとユーザとの無意識的な連関をより一層高めて画面に表示することができるようになる。
また、ユーザが意識的な動作をしている場合には、過去に測定された無意識の動作をキャラクターの表示に反映させることで、キャラクターの表示が不自然に変化することを防止できるようになる。
以上説明したように、本発明によれば、ユーザの意識的な動作と無意識の動作とを分別し、無意識の動作をキャラクターの表示に反映させるのに好適なキャラクター表示装置、キャラクター表示方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
プログラムを実行することにより、本発明のキャラクター表示装置の機能を果たす典型的な情報処理装置の概要構成を示す模式図である。 現実の空間における位置や姿勢などの種々のパラメータが測定できるようなコントローラと情報処理装置との外観を示す説明図である。 本実施形態に係るキャラクター表示装置の概要構成を示す説明図である。 キャラクター表示装置において実行されるキャラクター表示処理の制御の流れを示すフローチャートである。 本実施形態において生成される画像の例を示す説明図である。 仮想空間内におけるボーン、制御点、スキンの関係を示す説明図である。
符号の説明
100 情報処理装置
101 CPU
102 ROM
103 RAM
104 インターフェイス
105 コントローラ
106 外部メモリ
107 画像処理部
108 DVD−ROMドライブ
109 NIC
110 音声処理部
111 マイク
201 把持モジュール
202 CCDカメラ
203 十字形キー
204 Aボタン
205 Bボタン
206 各種ボタン
207 インジケータ
208 電源ボタン
251 発光モジュール
252 発光ダイオード
291 テレビジョン装置
301 キャラクター表示装置
302 記憶部
303 測定部
304 決定部
305 表示部
306 保持部
307 指標部
308 修正部
501 画像
502 カーソル画像
503 キャラクター画像
504 選択対象画像
505 無効領域
1200 仮想空間
1201 ボーン
1202 端点
1203 突端
1204 座標系
1205 制御点
1206 スキン
1207 ポリゴン

Claims (8)

  1. 仮想空間に配置されるキャラクターの形状を定めるオブジェクトの位置および向きが記憶される記憶部、
    ユーザが把持するコントローラの位置・向きのいずれか少なくとも1つ(以下「第1測定量」という。)と、当該コントローラの位置・向き・速度・加速度・角速度・角加速度のいずれか少なくとも1つ(以下「第2測定量」という。)と、を測定する測定部、
    前記測定された第1測定量により、指示標識を表示すべき位置を決定する決定部、
    前記決定された位置に当該指示標識を配置し、前記記憶されたオブジェクトの位置および向きにより定められる形状で当該キャラクターを配置した画像を生成して画面に表示する表示部、
    前記測定された第2測定量のうち、前記決定された位置が当該画面内の所定の無効領域に含まれない期間に測定された第2測定量の履歴を、所定の保持時間長分保持する保持部、
    前記決定された位置が、当該画面内の無効領域に
    (a)含まれない場合、前記保持された履歴のうち、最新の第2測定量を指標値とし、
    (b)含まれる場合、前記決定された位置が当該画面内の所定の無効領域に含まれ始めてからの経過時間を計測し、当該保持時間から当該経過時間を減算した結果を当該保持時間で除算した剰余時間を計算し、前記保持された履歴のうち、当該剰余時間分過去の第2測定量を指標値として、
    当該指標値を出力する指標部、
    前記出力された指標値により、前記記憶されたオブジェクトの位置・向きのいずれか少なくとも1つを修正する修正部
    を備えることを特徴とするキャラクター表示装置。
  2. 請求項1に記載のキャラクター表示装置であって、
    前記表示部は、当該画面内に配置される指示標識によって指定され、ユーザによる当該コントローラを介した選択入力操作によって選択される選択対象を表す選択対象画像を、当該画像にさらに配置して生成し、
    当該画面内の所定の無効領域は、当該選択対象画像が表示される表示領域、もしくは、当該選択対象画像が表示される領域に外接する所定の周辺領域である
    ことを特徴とするキャラクター表示装置。
  3. 請求項1または2に記載のキャラクター表示装置であって、
    当該第2測定量は、当該コントローラの速度・加速度・角速度・角加速度のいずれか少なくとも1つであり、
    前記測定部は、当該第1測定量と、当該第2測定量と、を、異なるセンサーにより測定する
    ことを特徴とするキャラクター表示装置。
  4. 請求項3に記載のキャラクター表示装置であって、
    前記修正部は、当該指標値にあらかじめ対応付けられる変位量を、前記記憶部に記憶されるいずれかのオブジェクトの位置または向きに加算することにより、当該オブジェクトの位置・向きのいずれか少なくとも1つを修正する
    ことを特徴とするキャラクター表示装置。
  5. 請求項4に記載のキャラクター表示装置であって、
    当該あらかじめ対応付けられる変位量は、当該指標値に所定の比例定数を乗じた量である
    ことを特徴とするキャラクター表示装置。
  6. 請求項5に記載のキャラクター表示装置であって、
    当該あらかじめ対応付けられる変位量は、当該指標値に、前記決定された位置が当該画面内の所定の無効領域に含まれ始めてからの経過時間に対して減衰する所定の係数を乗じた量である
    ことを特徴とするキャラクター表示装置。
  7. 仮想空間に配置されるキャラクターの形状を定めるオブジェクトの位置および向きが記憶される記憶部、測定部、決定部、表示部、測定された測定量の履歴が保持される保持部、指標部、修正部を有するキャラクター表示装置にて実行されるキャラクター表示方法であって、
    前記測定部が、ユーザが把持するコントローラの位置・向きのいずれか少なくとも1つ(以下「第1測定量」という。)と、当該コントローラの位置・向き・速度・加速度・角速度・角加速度のいずれか少なくとも1つ(以下「第2測定量」という。)と、を測定する測定工程、
    前記決定部が、前記測定された第1測定量により、指示標識を表示すべき位置を決定する決定工程、
    前記表示部が、前記決定された位置に当該指示標識を配置し、前記記憶されたオブジェクトの位置および向きにより定められる形状で当該キャラクターを配置した画像を生成して画面に表示する表示工程、
    前記保持部に、前記測定された第2測定量のうち、前記決定された位置が当該画面内の所定の無効領域に含まれない期間に測定された第2測定量の履歴を、所定の保持時間長分保持させる保持工程、
    前記指標部が、前記決定された位置が、当該画面内の無効領域に
    (a)含まれない場合、前記保持された履歴のうち、最新の第2測定量を指標値とし、
    (b)含まれる場合、前記決定された位置が当該画面内の所定の無効領域に含まれ始めてからの経過時間を計測し、当該保持時間から当該経過時間を減算した結果を当該保持時間で除算した剰余時間を計算し、前記保持された履歴のうち、当該剰余時間分過去の第2測定量を指標値として、
    当該指標値を出力する指標工程、
    前記修正部が、前記出力された指標値により、前記記憶されたオブジェクトの位置・向きのいずれか少なくとも1つを修正する修正工程
    を備えることを特徴とするキャラクター表示方法。
  8. コンピュータを、
    仮想空間に配置されるキャラクターの形状を定めるオブジェクトの位置および向きが記憶される記憶部、
    ユーザが把持するコントローラの位置・向きのいずれか少なくとも1つ(以下「第1測定量」という。)と、当該コントローラの位置・向き・速度・加速度・角速度・角加速度のいずれか少なくとも1つ(以下「第2測定量」という。)と、を測定する測定部、
    前記測定された第1測定量により、指示標識を表示すべき位置を決定する決定部、
    前記決定された位置に当該指示標識を配置し、前記記憶されたオブジェクトの位置および向きにより定められる形状で当該キャラクターを配置した画像を生成して画面に表示する表示部、
    前記測定された第2測定量のうち、前記決定された位置が当該画面内の所定の無効領域に含まれない期間に測定された第2測定量の履歴を、所定の保持時間長分保持する保持部、
    前記決定された位置が、当該画面内の無効領域に
    (a)含まれない場合、前記保持された履歴のうち、最新の第2測定量を指標値とし、
    (b)含まれる場合、前記決定された位置が当該画面内の所定の無効領域に含まれ始めてからの経過時間を計測し、当該保持時間から当該経過時間を減算した結果を当該保持時間で除算した剰余時間を計算し、前記保持された履歴のうち、当該剰余時間分過去の第2測定量を指標値として、
    当該指標値を出力する指標部、
    前記出力された指標値により、前記記憶されたオブジェクトの位置・向きのいずれか少なくとも1つを修正する修正部
    として機能させることを特徴とするプログラム。
JP2007067966A 2007-03-16 2007-03-16 キャラクター表示装置、キャラクター表示方法、ならびに、プログラム Active JP4408910B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007067966A JP4408910B2 (ja) 2007-03-16 2007-03-16 キャラクター表示装置、キャラクター表示方法、ならびに、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007067966A JP4408910B2 (ja) 2007-03-16 2007-03-16 キャラクター表示装置、キャラクター表示方法、ならびに、プログラム

Publications (2)

Publication Number Publication Date
JP2008233946A JP2008233946A (ja) 2008-10-02
JP4408910B2 true JP4408910B2 (ja) 2010-02-03

Family

ID=39906704

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007067966A Active JP4408910B2 (ja) 2007-03-16 2007-03-16 キャラクター表示装置、キャラクター表示方法、ならびに、プログラム

Country Status (1)

Country Link
JP (1) JP4408910B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4815521B2 (ja) * 2009-09-18 2011-11-16 株式会社コナミデジタルエンタテインメント 画像処理装置、画像処理方法、ならびに、プログラム
JP6756236B2 (ja) 2016-10-31 2020-09-16 富士通株式会社 アクション指示プログラム、アクション指示方法及び画像生成装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5359703A (en) * 1990-08-02 1994-10-25 Xerox Corporation Moving an object in a three-dimensional workspace
JPH10222698A (ja) * 1997-02-12 1998-08-21 Matsushita Electric Ind Co Ltd 3次元仮想空間の通信装置、および通信方法
JPH1199284A (ja) * 1997-09-30 1999-04-13 Sony Corp コントローラ
JP2000300843A (ja) * 1999-04-19 2000-10-31 Taito Corp ゲーム機の入力装置
JP2001209820A (ja) * 2000-01-25 2001-08-03 Nec Corp 感情表出装置及びプログラムを記録した機械読み取り可能な記録媒体
JP4027031B2 (ja) * 2000-11-16 2007-12-26 株式会社コナミデジタルエンタテインメント 対戦式3dビデオゲーム装置
JP2005202809A (ja) * 2004-01-19 2005-07-28 Fujitsu Component Ltd システムおよび情報処理方法
JP4741909B2 (ja) * 2004-11-02 2011-08-10 任天堂株式会社 ゲーム装置及びゲームプログラム
JP4961112B2 (ja) * 2005-03-14 2012-06-27 任天堂株式会社 ゲームプログラム、ゲーム装置、ゲームシステム、およびゲーム処理方法
JP4907128B2 (ja) * 2005-08-30 2012-03-28 任天堂株式会社 ゲームシステムおよびゲームプログラム
JP4907129B2 (ja) * 2005-09-01 2012-03-28 任天堂株式会社 情報処理システムおよびプログラム

Also Published As

Publication number Publication date
JP2008233946A (ja) 2008-10-02

Similar Documents

Publication Publication Date Title
JP5085059B2 (ja) 画像生成システム、プログラム及び情報記憶媒体
JP5639646B2 (ja) スケルトン・データーのゲーム・アバターへのリアル・タイム・リターゲティング
JP5089079B2 (ja) プログラム、情報記憶媒体及び画像生成システム
JP5519591B2 (ja) 情報表示装置、情報表示方法、ならびに、プログラム
JP2008136694A (ja) プログラム、情報記憶媒体及びゲーム装置
JP2008096776A (ja) 表示装置、表示方法、ならびに、プログラム
JP2006122241A (ja) ゲーム装置およびゲームプログラム
JP2011008350A (ja) 画像処理方法及び画像処理装置
JP2013127683A (ja) プログラム、情報記憶媒体、端末、サーバ及びネットワークシステム
JP4976473B2 (ja) 画像生成装置、画像生成方法、ならびに、プログラム
JP4129036B1 (ja) 入力装置、入力制御方法、ならびに、プログラム
JP4408910B2 (ja) キャラクター表示装置、キャラクター表示方法、ならびに、プログラム
JP3542795B1 (ja) 模擬実験装置、模擬実験方法、ならびに、プログラム
JP2002216146A (ja) 情報処理装置における表示物体生成方法、これを実行制御するプログラム及びこのプログラムを格納した記録媒体
JP5307060B2 (ja) 画像処理装置、画像処理方法、ならびに、プログラム
JP2011239937A (ja) ゲーム装置、ゲーム処理方法、ならびに、プログラム
JP5479686B2 (ja) ゲームプログラム及びゲームシステム
JP4413911B2 (ja) ゲーム装置、ゲーム処理方法、ならびに、プログラム
JP2009061159A (ja) プログラム、情報記憶媒体、及び、ゲームシステム
JP4575937B2 (ja) 画像生成装置、画像生成方法、ならびに、プログラム
JP2018128851A (ja) プログラム、オブジェクト配置システム及びオブジェクト配置方法
JP2012055637A (ja) ゲーム装置、ゲーム処理方法、ならびに、プログラム
JPH11272157A (ja) 物体の把持動作シミュレーション装置
JP2000047563A (ja) 物体の把持動作シミュレーション装置
JP2021109015A (ja) 動作情報呈示装置および動作情報呈示方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090519

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090703

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090811

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091007

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

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4408910

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20121120

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20131120

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250