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