(57)【要約】      （修正有）【課題】処理負荷が低く、かつ、オブジェクト間の衝突判定を行うことが一般的に難しい状況においても衝突判定を行うことが可能なプログラムを提供する。【解決手段】コンピュータ装置を、オブジェクトが有する仮想骨格の位置に関する位置情報を取得する位置情報取得手段と、取得したオブジェクトが有する仮想骨格の位置に関する位置情報が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定する衝突判定手段として機能させるプログラムである。【選択図】図２
2018088102.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ装置を、
オブジェクトが有する仮想骨格の位置に関する位置情報を取得する位置情報取得手段、
取得した位置情報が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定する衝突判定手段
として機能させるプログラム。
【請求項２】
コンピュータ装置を、
衝突判定手段によりオブジェクトが他のオブジェクトと衝突したと判定されたタイミングにおいて、発音処理を実行する発音手段
として機能させる、請求項１に記載のプログラム。
【請求項３】
衝突判定手段が、仮想骨格の位置、移動速度、及び／若しくは、加速度、並びに／又は、仮想骨格と仮想骨格から形成される仮想関節の角度及び／若しくは角速度が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定するものである、請求項１又は２に記載のプログラム。
【請求項４】
発音手段が、衝突したと判定されたオブジェクトに応じて異なる音を発音する、請求項２又は３に記載のプログラム。
【請求項５】
発音手段が、衝突したと判定された他のオブジェクトに応じて異なる音を発音する、請求項２〜４のいずれかに記載のプログラム。
【請求項６】
オブジェクトがキャラクタの足部であり、
衝突判定手段が、位置情報取得手段により取得した位置情報に基づいて算出される、足部の仮想骨格の移動速度、及び、足部の仮想骨格と脚部の仮想骨格により形成される仮想関節の角度が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定する、請求項１〜５のいずれかに記載のプログラム。
【請求項７】
オブジェクトが有する仮想骨格の位置に関する位置情報を取得する位置情報取得手段と、
取得した位置情報が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定する衝突判定手段と
を備える、コンピュータ装置。
【請求項８】
コンピュータ装置において実行される判定方法であって、
オブジェクトが有する仮想骨格の位置に関する位置情報を取得するステップと、
取得した位置情報が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定するステップと
を有する判定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理負荷の低い、オブジェクト間の衝突を判定するプログラム、コンピュータ装置、及び、判定方法に関する。
【背景技術】
【０００２】
ビデオゲームにおいて、アニメーションを容易に制作する方法として、人間等の現実の動きを測定してコンピュータ装置に取り込み、仮想空間においてオブジェクトにアニメーションさせるモーションキャプチャという手法がある。
【０００３】
また、アニメーションをリアルに描写するために、コンピュータ制御によりキャラクタのモーションを補正する技術もある（例えば、特許文献１）。モーションを補正する技術として、例えば、インバース・キネマティクスや、プロシージャル・アニメーションが挙げられる。これらの方法は、コンピュータ制御によりモーションを自動的、あるいは半自動的に生成することにより、自然なアニメーションを実現するものである。
【０００４】
さらに、アニメーション制作において、オブジェクト同士が衝突したか否かをオブジェクトのモーション情報から判定する衝突判定に関する技術がある。オブジェクトが衝突した場合には、オブジェクトの動きに関する変化等の効果が生じる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００１−３５１１２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
モーションキャプチャにより制作されたモーションを用いて衝突判定を行うには、開発者が衝突判定における、いわゆる当たり判定とよばれる範囲を設定したうえで判定を行う必要があった。モーションが変更になれば、再度開発者の設定が必要となり、作業コストは甚大であった。また、衝突判定の処理も、レイキャスト等の物理的衝突判定方法が用いられるが、物理的衝突判定は処理負荷が高く、高い性能を有するコンピュータ装置が必要であった。さらに、例えば、カットシーンにおいて、モーションキャプチャを用いてオブジェクトのモーションを制作する場合に、モーションの原点をオブジェクトの基準座標とすると、仮想空間内の地面との衝突（接触）判定ができない状況があった。
【０００７】
コンピュータ制御によるモーションの自動生成技術は、自然なアニメーションを提供する一方、オブジェクトが衝突するタイミングを開発者が把握できず、衝突により生じる視覚的効果や音響等を自然に表現することが困難であった。また、生成されたアニメーションにおいて、本来は起立しているはずのキャラクタ等の足が、予期せず地面の座標から離れてしまった場合に、地面との衝突判定である接地判定ができず、足音が発せられない等、不自然な状況があった。
【０００８】
本発明の少なくとも１つの実施の形態の目的は、処理負荷が低く、かつ、オブジェクト間の衝突判定を行うことが一般的に難しい状況においても衝突判定を行うことが可能なプログラム、コンピュータ装置、及び、判定方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
非限定的な観点によると、コンピュータ装置を、オブジェクトが有する仮想骨格の位置に関する位置情報を取得する位置情報取得手段、取得した位置情報が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定する衝突判定手段として機能させるプログラムである。
【００１０】
非限定的な観点によると、オブジェクトが有する仮想骨格の位置に関する位置情報を取得する位置情報取得手段と、取得した位置情報が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定する衝突判定手段とを備える、コンピュータ装置である。
【００１１】
非限定的な観点によると、コンピュータ装置において実行される判定方法であって、オブジェクトが有する仮想骨格の位置に関する位置情報を取得するステップと、取得した位置情報が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定するステップとを有する判定方法である。
【発明の効果】
【００１２】
本発明の各実施形態により１または２以上の不足が解決される。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態の少なくとも１つに対応する、コンピュータ装置の構成を示すブロック図である。
【図２】本発明の実施の形態の少なくとも１つに対応する、プログラム実行処理のフローチャートである。
【図３】本発明の実施の形態の少なくとも１つに対応する、コンピュータ装置の構成を示すブロック図である。
【図４】本発明の実施の形態の少なくとも１つに対応する、プログラム実行処理のフローチャートである。
【図５】本発明の実施の形態の少なくとも１つに対応する、コンピュータ装置の構成を示すブロック図である。
【図６】本発明の実施の形態の少なくとも１つに対応する、プログラム実行処理のフローチャートである。
【図７】本発明の実施の形態の少なくとも１つに対応する、オブジェクトが衝突したか否か判定するための衝突条件マスタテーブルを表す図である。
【図８】本発明の実施の形態の少なくとも１つに対応する、オブジェクトの歩行モーション中における接地判定方法を説明する図である。
【図９】本発明の実施の形態の少なくとも１つに対応する、シミュレーションにより動作するオブジェクトの発音タイミングについて説明する図である。
【図１０】本発明の実施の形態の少なくとも１つに対応する、発音する音を決定するための発音マスタテーブルを表す図である。
【発明を実施するための形態】
【００１４】
以下、添付図面を参照して、本発明の実施の形態について説明する。以下、効果に関する記載は、本発明の実施の形態の効果の一側面であり、ここに記載するものに限定されない。また、以下で説明するフローチャートを構成する各処理の順序は、処理内容に矛盾や不整合が生じない範囲で順不同である。
【００１５】
［第一の実施の形態］
本発明の第一の実施の形態について説明をする。図１は、本発明の実施の形態の少なくとも１つに対応する、コンピュータ装置の構成を示すブロック図である。コンピュータ装置１は、位置情報取得部１０１、及び、衝突判定部１０２を少なくとも備える。
【００１６】
位置情報取得部１０１は、オブジェクトが有する仮想骨格の位置に関する位置情報を取得する機能を有する。衝突判定部１０２は、取得した位置情報が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定する機能を有する。
【００１７】
本発明の第一の実施の形態におけるプログラム実行処理について説明する。図２は、本発明の実施の形態の少なくとも１つに対応する、プログラム実行処理のフローチャートである。
【００１８】
コンピュータ装置１は、オブジェクトが有する仮想骨格の位置に関する位置情報を取得する（ステップＳ１）。ステップＳ１において取得した位置情報が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定し（ステップＳ２）、終了する。
【００１９】
第一の実施の形態の一側面として、オブジェクトが有する仮想骨格の位置情報に基づいて衝突判定を行うことで、処理負荷が低く、かつ、地面との衝突判定を行うことが一般的に難しい状況においても衝突判定を行うことができる。
【００２０】
第一の実施の形態において、「コンピュータ装置」とは、例えば、デスクトップ型又はノート型パーソナルコンピュータ、タブレットコンピュータ、又は、ＰＤＡ等をいい、表示画面にタッチパネルセンサを備える携帯型端末であってもよい。
【００２１】
「オブジェクト」とは、例えば、仮想空間内で有形の物体をいう。「仮想骨格」とは、例えば、オブジェクトの骨格であって、オブジェクトの動作や姿勢を定義する際に用いられるものをいう。「位置情報」とは、例えば、３次元仮想空間を形成する座標系の座標に基づいて定めることができる位置に関する情報である。
【００２２】
［第二の実施の形態］
次に、本発明の第二の実施の形態の概要について説明をする。図３は、本発明の実施の形態の少なくとも１つに対応する、コンピュータ装置の構成を示すブロック図である。コンピュータ装置１は、位置情報取得部１１１、衝突判定部１１２、及び、発音部１１３を少なくとも備える。
【００２３】
位置情報取得部１１１は、オブジェクトが有する仮想骨格の位置に関する位置情報を取得する機能を有する。衝突判定部１１２は、取得した位置情報が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定する機能を有する。発音部１１３は、衝突判定手段によりオブジェクトが他のオブジェクトと衝突したと判定されたタイミングにおいて、発音処理を実行する機能を有する。
【００２４】
本発明の第二の実施の形態におけるプログラム実行処理について説明する。図４は、本発明の実施の形態の少なくとも１つに対応する、プログラム実行処理のフローチャートである。
【００２５】
コンピュータ装置１は、オブジェクトが有する仮想骨格の位置に関する位置情報を取得する（ステップＳ１１）。次に、ステップＳ１１において取得した位置情報が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定する（ステップＳ１２）。オブジェクトが他のオブジェクトと衝突したと判定されたタイミングにおいて（ステップＳ１２においてＹＥＳ）、発音処理を実行し（ステップＳ１３）、終了する。
【００２６】
第二の実施の形態の一側面として、オブジェクトが衝突したと判定されたタイミングにおいて発音することで、衝突判定を行うことが難しい状況においても、違和感のないタイミングで発音させることができる。
【００２７】
第二の実施の形態において、「コンピュータ装置」、「オブジェクト」、「仮想骨格」、及び、「位置情報」とは、それぞれ第一の実施の形態において記載した内容と同一である。
【００２８】
第二の実施の形態において、「発音処理」とは、例えば、音を発生させる処理をいう。
【００２９】
［第三の実施の形態］
次に、本発明の第三の実施の形態の概要について説明をする。第三の実施の形態のコンピュータ装置は、図１のブロック図に示されるものと同じ構成を採用することができる。また、第三の実施の形態のプログラム実行処理のフローは、図２のフローチャートに示されるものと同じ構成を採用することができる。
【００３０】
第三の実施の形態において、衝突判定部１０２が、仮想骨格の位置、移動速度、及び／若しくは、加速度、並びに／又は、仮想骨格と仮想骨格から形成される仮想関節の角度及び／若しくは角速度が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定するものである。
【００３１】
第三の実施の形態の一側面として、仮想骨格の位置、移動速度、加速度、仮想骨格と仮想骨格から形成される仮想関節の角度、角速度のいずれかを用いて、オブジェクトの衝突を判定することにより、オブジェクトの様々な状態に応じた衝突タイミングを、柔軟に設定することができる。
【００３２】
第三の実施の形態において、「コンピュータ装置」、「オブジェクト」、「仮想骨格」、及び、「位置情報」とは、それぞれ第一の実施の形態において記載した内容と同一である。また、「発音処理」とは第二の実施の形態において記載した内容と同一である。
【００３３】
第三の実施の形態において、「移動速度」とは、例えば、オブジェクトが移動する速度をいい、速度の正負によりオブジェクトの移動する方向を表すものである。「加速度」とは、例えば、オブジェクトの移動速度の変化の度合いをいう。「仮想関節」とは、例えば、オブジェクトを形成する骨格同士をつなぐ部分をいい、骨格間の動きを伝達する役割をもつものをいう。「角速度」とは、例えば、オブジェクトを形成する仮想骨格が回転する速さをいう。
【００３４】
［第四の実施の形態］
本発明の第四の実施の形態の概要について説明する。図５は、本発明の実施の形態の少なくとも１つに対応する、コンピュータ装置の構成を示すブロック図である。
【００３５】
コンピュータ装置１は、制御部１１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１２、ストレージ部１３、サウンド処理部１４、グラフィックス処理部１５、ＤＶＤ／ＣＤ−ＲＯＭドライブ１６、通信インタフェース１７、及びインタフェース部１８からなり、それぞれ内部バスにより接続されている。
【００３６】
制御部１１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）から構成される。制御部１１は、ストレージ部１３や記録媒体２４に格納されたプログラムを実行し、コンピュータ装置１の制御を行う。また、制御部１１は時間を計時する内部タイマを備えている。
【００３７】
ＲＡＭ１２は、制御部１１のワークエリアである。ストレージ部１３は、プログラムやデータを保存するための記憶領域である。
【００３８】
ＤＶＤ／ＣＤ−ＲＯＭドライブ１６は、ＤＶＤ−ＲＯＭやＣＤ−ＲＯＭなどのプログラムが格納された記録媒体２４を装着することが可能である。記録媒体２４には、ゲームの実行やコンテンツの再生を行うためのプログラム及びデータが記憶されている。ＤＶＤ／ＣＤ−ＲＯＭドライブ１６により、コンテンツの進行に必要なプログラム及びデータが記録媒体２４から読み出され、ＲＡＭ１２にロードされる。
【００３９】
制御部１１は、コンテンツの進行に必要なプログラム及びデータをＲＡＭ１２から読み出して処理を行う。制御部１１は、ＲＡＭ１２にロードされたプログラム及びデータを処理することで、サウンド出力の指示をサウンド処理部１４に出力し、描画命令をグラフィックス処理部１５に出力する。
【００４０】
サウンド処理部１４は、スピーカであるサウンド出力装置２１に接続されている。制御部１１がサウンド出力の指示をサウンド処理部１４に出力すると、サウンド処理部１４はサウンド出力装置２１にサウンド信号を出力する。
【００４１】
グラフィックス処理部１５は表示装置２２に接続されている。表示装置２２は表示画面２３を有している。制御部１１が描画命令をグラフィックス処理部１５に出力すると、グラフィックス処理部１５は、フレームメモリ（フレームバッファ）１９に画像を展開し、表示画面２３上に画像を表示するためのビデオ信号を出力する。グラフィックス処理部１５は、フレーム単位で１枚の画像の描画を実行する。画像の１フレーム時間は、例えば３０分の１秒である。
【００４２】
インタフェース部１８には、例えば、コントローラやキーボード等の入力部２０が接続される。ユーザによる入力部２０に対する入力情報は、ＲＡＭ１２に格納され、制御部１１は入力情報をもとに各種の演算処理を実行する。また、インタフェース部１８には、メモリカード等の外部記憶媒体を接続することも可能である。インタフェース部１８は、制御部１１からの指示にしたがって、ＲＡＭ１２に記憶されているコンテンツの進行状況に関するデータを外部記憶媒体に記憶させる処理や、外部記憶媒体に記憶されているデータを読み出してＲＡＭ１２に転送する処理を行う。
【００４３】
通信インタフェース１７は無線又は有線により通信ネットワーク２に接続されており、外部のコンピュータ装置と必要に応じて操作指示情報やコンテンツの進行状況に関する情報の送受信を行う。
【００４４】
第四の実施の形態の一例として、ユーザが操作するキャラクタが３次元仮想空間内を自由に動き回ることができるロールプレイングゲーム（Ｒｏｌｅ  Ｐｌａｙｉｎｇ  Ｇａｍｅ。以下、ＲＰＧという）のプログラムを挙げる。ゲームは、ユーザの操作によりキャラクタを動作させる場面と、予めストレージ部１３に記録された動画を再生する場面とから構成されるものであってもよい。
【００４５】
続いて、本発明の第四の実施の形態におけるプログラム実行処理について説明をする。図６は、本発明の実施の形態の少なくとも１つに対応する、プログラム実行処理のフローチャートである。
【００４６】
プログラムの実行処理が開始されると、ストレージ部１３に記録された衝突したか否か判定するための条件である衝突条件を取得する（ステップＳ２１）。衝突条件については、後述する。
【００４７】
次に、表示画面２３に表示されるフレームの演算を行う（ステップＳ２２）。ステップＳ２２において演算されたフレームを生成し、表示画面２３に表示する（ステップＳ２３）。
【００４８】
次に、ステップＳ２３において生成されたフレームから、オブジェクトの仮想骨格情報を取得する（ステップＳ２４）。オブジェクトの仮想骨格情報には、仮想空間内に存在するキャラクタや、キャラクタが身に着けている服、アクセサリ等の小物、その他仮想骨格により形成されるオブジェクトに関する情報が含まれる。さらに、仮想骨格及び仮想関節に設定された位置座標、前フレームと現フレームとの位置座標の変化量、移動速度、前フレームと現フレームとの速度の変化量を表す加速度、仮想関節の角度、あるいは、角速度に関する情報が含まれる概念である。ここで、移動速度とは、仮想空間を形成する座標系の軸ごとに設定されるものであってもよく、移動する方向を知ることができるベクトル情報であってもよい。
【００４９】
続いて、取得した仮想骨格情報が衝突条件を満たすか判定する（ステップＳ２５）。図７は、本発明の実施の形態の少なくとも１つに対応する、オブジェクトが衝突したか否か判定するための衝突条件マスタテーブルを表す図である。
【００５０】
衝突条件マスタテーブル３０は、条件ＮＯ３１に関連付けて、チェック対象３２、及び、条件内容３３が記憶されている。チェック対象３２は、衝突条件を判定する対象に関する情報である。条件内容３３は、チェック対象３２が条件内容に記載された条件を満たしている場合に、衝突したと判定するための条件である。同一の条件ＮＯ３１に関連付けられた複数の条件内容３３は、論理積（ＡＮＤ）により判定される。すなわち、１つの条件ＮＯ３１に、複数の条件内容３３が存在する場合には、すべての条件内容３３を満たした場合に限り、衝突したと判定される。
【００５１】
条件内容３３について具体的に説明する。例えば、条件ＮＯ３１が「０００１」の場合には、オブジェクトの仮想骨格あるいは仮想関節（以下、仮想骨格等という）の移動速度が、前フレームにおける同じ仮想骨格等の移動速度と比較した場合に、移動速度の符号が反転したときは、衝突したものと判定する。ここで、オブジェクトが、他のオブジェクトと実際には衝突していない場合であっても、衝突したものとして効果を生じさせてもよい。
【００５２】
次に、条件ＮＯ３１が「０００２」の場合であって、オブジェクトが地面に接したか否か判定する接地判定を行う場面について説明する。図８は、本発明の実施の形態の少なくとも１つに対応する、オブジェクトの歩行モーション中における接地判定方法を説明する図である。
【００５３】
接地判定は、人型のオブジェクトが両足で歩行する際に、足部及び脚部の仮想骨格に関する情報に基づいて、接地したか否か判定するものである。なお、実線で描いた脚部を右脚、破線で描いた脚部を左脚とする。
【００５４】
図８（ａ）は、右足が地面４５に接する瞬間のフレームを表す図である。足部及び脚部には、仮想関節４０ａ、４０ｂ、及び４０ｃがそれぞれ設定されている。また、仮想関節４０ａ及び４０ｂの間の仮想骨格４１ａと、仮想関節４０ｂ及び４０ｃの間の仮想骨格４１ｂとが成す角度として、角度４２が定義されている。右脚は移動しているため、右足の仮想骨格４１ａは所定の移動速度にて移動している。
【００５５】
図８（ｂ）は、図８（ａ）の状態から所定の時間が経過した後のフレームを表す図である。左脚を前に進める際に、右足は地面４５に接地している。このとき、右足の仮想骨格４１ａの移動速度は０、すなわち静止している。また、角度４２は所定の範囲内の角度を維持している。
【００５６】
図８（ｃ）は、図８（ｂ）の状態から所定の時間が経過した後のフレームを表す図である。左脚が右脚より前に進められた状態であっても、右足は地面４５に接地したままであり、角度４２は図８（ｂ）に示された所定の範囲内の角度を維持したままである。
【００５７】
図８（ｄ）は、図８（ｃ）の状態から所定の時間が経過した後のフレームを表す図である。左足が接地すると、右足の接地状態は解除され、右足の仮想骨格４１ａの移動速度は０より大きくなる。また、角度４２は図８（ｂ）及び（ｃ）に示された所定の範囲外の角度となる。
【００５８】
つまり、足部の仮想骨格４１ａの移動速度が、所定の速度以下である状態が複数フレームに渡って継続する場合に、足が接地しているものと判定することができる。さらに、接地したと判定する条件に、仮想関節４０ｂの角度４２について、所定の範囲内の角度である状態が複数フレームに渡り継続しているか否かという条件を追加してもよい。なお、オブジェクトの移動速度は、例えば水平方向の移動速度のみに限定して判定するようにしてもよい。
【００５９】
同様に、手部及び腕部の仮想骨格等の情報を用いて、オブジェクトと壁オブジェクトとの接触判定を行うこともできる。これは、図７において、条件ＮＯ３１が「０００３」の条件内容３３を満たす場合である。図示はしないが、手部の仮想骨格の移動速度が所定の条件を満たす場合には、手部が壁オブジェクトに接触していると判定することができる。また、より細かくオブジェクトの動作を区別するために、他の条件を追加してもよい。他の条件とは、例えば、手部を形成する仮想骨格と腕部を形成する仮想骨格とが成す角度が所定の範囲内であること等である。
【００６０】
続いて、条件ＮＯ３１が「０００４」の場合であって、キャラクタが身に着けているオブジェクト（例えばカバン）について、発音するタイミングを判定する場面について説明する。図９は、本発明の実施の形態の少なくとも１つに対応する、シミュレーションにより動作するオブジェクトの発音タイミングについて説明する図である。オブジェクト５１は、仮想関節５２ａ、５２ｂ、並びに５２ｃ、及び、仮想関節５２ａと５２ｂとの間に存在する仮想骨格５３ａ、並びに、仮想関節５２ｂと５２ｃとの間に存在する仮想骨格５３ｂにより形成され、シミュレーションにより動作する。
【００６１】
図９（ａ）は、オブジェクトを身に着けたキャラクタが、静止している様子を表す図である。キャラクタがオブジェクト５１を身に着けているため、オブジェクト５１を形成する仮想骨格５３ｂはキャラクタに矢印方向への力を受け、キャラクタの身体に寄り添うように位置する。
【００６２】
ここで、キャラクタの移動等の動作により、オブジェクトがキャラクタの身体から離れた状況になった場合を説明する。図９（ｂ）は、オブジェクトがキャラクタの身体から離れた様子を表す図である。オブジェクト５１はキャラクタの身体から離れる方向に移動しているため、仮想骨格５３ｂは、キャラクタの身体から離れる方向である矢印方向への力を受ける。つまり、仮想骨格５３ｂの移動速度は、図９（ａ）における移動速度とは異なり、重力に反する方向へ移動することとなる。
【００６３】
この場合に、図７の条件３３「速度の正負が逆転したら」という条件を満たし、キャラクタとオブジェクトとの衝突が発生したものとみなすことができる。さらに正確に衝突を判定するために、他の条件を追加してもよい。他の条件とは、例えば、キャラクタを形成する特定の仮想骨格と、オブジェクトを構成する特定の仮想骨格の相対的な位置関係に関する条件や、移動方向に関する条件、あるいは、仮想関節の角度に関する条件等が挙げられる。
【００６４】
次に、条件ＮＯ３１が「０００６」の場合であって、コンピュータ制御により自動生成されたモーションによりキャラクタが転倒した場合に、発音するタイミングを判定する場面について説明する。図示はしないが、複数のフレームに渡り、例えば、水平方向に対してキャラクタの背骨の仮想骨格が成す角度が所定の角度の範囲内（０°以上、２０°以下）となり、かつ、背骨の仮想骨格の移動速度の符号が反転した場合には、キャラクタが転倒したと判定することができ、発音させることができる。
【００６５】
このように、物理的衝突判定を行うことなく、オブジェクトの仮想骨格等に関する情報から、衝突判定やオブジェクトの状態を特定することが可能となる。
【００６６】
図６に戻り、衝突判定後の発音処理について説明する。ステップＳ２５において衝突条件を満たした場合（ステップＳ２５にてＹＥＳ）には、発音させるために使用される環境情報を取得する（ステップＳ２６）。環境情報とは、例えば、衝突したオブジェクト（衝突元オブジェクト）と、衝突された他のオブジェクト（衝突先オブジェクト）に関する情報や、オブジェクトが存在する仮想空間に関する情報を含む情報である。環境情報は、表示画面２３に表示されたフレームに含まれる情報、あるいは、フレームを生成する際に用いられる情報から取得することができる。
【００６７】
ステップＳ２６において取得した環境情報を用いて、発音処理を行う（ステップＳ２７）。図１０は、本発明の実施の形態の少なくとも１つに対応する、発音する音を決定するための発音マスタテーブルを表す図である。発音マスタテーブル６０には、条件ＮＯ６１、衝突元６２、衝突先６３、及び、存在空間６４に関連付けて、音６５が記憶されている。
【００６８】
条件ＮＯ６１は、衝突条件マスタテーブル３０に含まれる条件ＮＯ３１に対応する。衝突元６２は、衝突したオブジェクトに関する情報である。衝突先６３は、衝突されたオブジェクトに関する情報である。存在空間６４は、オブジェクトが存在する仮想空間に関する情報である。衝突元６２、衝突先６３、及び存在空間６４は、ステップＳ２６において取得された環境情報に含まれる情報に対応する。
【００６９】
音６５は、衝突したと判定された際に発せられる音に関する情報である。音６５は、音源に関するデータファイル自体であってもよいし、音源データファイルがストレージ部１３等に格納されている場合には格納先に関する情報であってもよい。
【００７０】
発音する音６５の決定について説明する。ステップＳ２５において、条件ＮＯ３１が「０００１」を満たすことにより衝突したと判定された場合には、条件ＮＯ６１が「０００１」であって、後述するが、衝突元６２、衝突先６３、及び、存在空間６４をステップＳ２６において取得した環境情報から特定することにより、音６５を決定することができる。
【００７１】
例えば、革靴を履いた人型オブジェクトが砂地の大地を歩くシーンでは、ステップＳ２６において取得された環境情報により、衝突元６２は「革靴」、衝突先６３は「砂」、存在空間６４は「通常」と定められる。そして、音６５の「砂を踏む音」が決定される。
【００７２】
存在空間６４には、「通常」、「水中」、「洞窟」、「山脈」等、オブジェクトが存在する周囲の環境を表す情報が含まれる。例えば、通常の大気中にいるよりも、水中にいる場合には、音の伝わる速度が速く、発せられる音の聞こえ方が変化することを表現するものである。
【００７３】
図６に戻り、ステップＳ２７において発音した後、あるいは、ステップＳ２５において衝突条件を満たさないと判定された場合（ステップＳ２５にてＮＯ）には、現在のフレームを次に更新する処理を行う（ステップＳ２８）。ステップＳ２２からステップＳ２８までの処理は、オブジェクトがモーションを実行している間、繰り返し実行される。モーションが終了すると、本実施の形態のプログラム実行処理は終了する。
【００７４】
第四の実施の形態では、ＲＰＧについて述べたが、これに限定されない。すなわち、オブジェクトのモーションを使用するゲームであれば適用可能であり、アクションゲーム、パズルゲーム、シミュレーションゲーム等であってもよい。
【００７５】
第四の実施の形態では、発音処理について、発音マスタテーブルを用いる方法を記載したが、これに限定されない。マスタテーブルを使用せず、特定の条件の場合には特定の音を発するように設計するものであってもよい。
【００７６】
第四の実施の形態の一側面として、オブジェクトの仮想骨格等の情報に基づいて衝突判定を行うことで、オブジェクトの動作を検出することができ、オブジェクトのモーションが変更になった場合であっても開発者の設定が不要で、作業コストを削減することができる。また、物理的衝突判定を毎フレーム行うよりも、処理負荷を低く抑えることができる。さらに、階段や自然地形等で上下に起伏の大きい地面に対して、正確な接地判定ができないような状況や、コンピュータ制御により生成されたアニメーションにおいて予期せず接地判定ができずに足音が発せられないような不自然な状況においても、接地判定をすることができ、違和感なく発音処理を行うことができる。加えて、キャラクタがはしごを登る等、特殊な移動状況にあっても、自動的に足部の接地（はしごを踏み込んだタイミング等）を検出することができる。
【００７７】
第四の実施の形態の一側面として、衝突先の他のオブジェクトの素材等に応じた、違和感のない音を発することができる。また、衝突元のオブジェクトに応じて異なる音を発音させることで、衝突元のオブジェクトの素材等に応じた、違和感のない音を発することができる。さらに、第四の実施の形態の一側面として、衝突先の他のオブジェクトに応じて異なる音を発音させることで、衝突先の他のオブジェクトの素材等に応じた、違和感のない音を発することができる。
【００７８】
第四の実施の形態の一側面として、衝突元のオブジェクト及び衝突先の他のオブジェクトに応じて異なる音を発音させることで、衝突し合うオブジェクトに応じた音を発することができ、より現実的な音を提供することができる。
【００７９】
第四の実施の形態の一側面として、仮想骨格の位置、移動速度、及び／若しくは、加速度、並びに／又は、仮想骨格と仮想骨格から形成される仮想関節の角度及び／若しくは角速度が所定の条件を満たす場合に衝突したと判定することで、シミュレーションにより動作するオブジェクトのモーション等、衝突のタイミングが固定されないモーションに対して、衝突タイミングを自動的に検出することが可能となる。
【００８０】
第四の実施の形態の一側面として、仮想骨格等が所定の条件を満たす場合に衝突したと判定することで、シミュレーションにより動作するオブジェクトのモーション等、衝突のタイミングが固定されないモーションに対して、衝突タイミングを自動的に検出することが可能となる。
【００８１】
第四の実施の形態において、「コンピュータ装置」、「オブジェクト」、「仮想骨格」、及び、「位置情報」とは、それぞれ第一の実施の形態において記載した内容と同一である。また、「発音処理」とは、それぞれ第二の実施の形態において記載した内容と同一である。
【００８２】
第四の実施の形態において、「移動速度」、「加速度」、「仮想関節」、及び、「角速度」とは、第三の実施の形態において記載した内容と同一である。
【００８３】
［付記］
上で述べた実施の形態の説明は、下記の発明を、発明の属する分野における通常の知識を有する者がその実施をすることができるように記載した。
【００８４】
［１］  コンピュータ装置を、
オブジェクトが有する仮想骨格の位置に関する位置情報を取得する位置情報取得手段、
取得した位置情報が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定する衝突判定手段、
として機能させるプログラム。
【００８５】
［２］  コンピュータ装置を、
衝突判定手段によりオブジェクトが他のオブジェクトと衝突したと判定されたタイミングにおいて、発音処理を実行する発音手段
として機能させる、［１］に記載のプログラム。
【００８６】
［３］  衝突判定手段が、仮想骨格の位置、移動速度、及び／若しくは、加速度、並びに／又は、仮想骨格と仮想骨格から形成される仮想関節の角度及び／若しくは角速度が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定するものである、［１］又は［２］に記載のプログラム。
【００８７】
［４］  発音手段が、衝突したと判定されたオブジェクトに応じて異なる音を発音する、［２］又は［３］に記載のプログラム。
【００８８】
［５］  発音手段が、衝突したと判定された他のオブジェクトに応じて異なる音を発音する、［２］〜［４］のいずれかに記載のプログラム。
【００８９】
［６］  オブジェクトがキャラクタの足部であり、
衝突判定手段が、位置情報取得手段により取得した位置情報に基づいて算出される、足部の仮想骨格の移動速度、及び、足部の仮想骨格と脚部の仮想骨格により形成される仮想関節の角度が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定する、［１］〜［５］のいずれかに記載のプログラム。
【００９０】
［７］  オブジェクトがキャラクタの手部であり、
衝突判定手段が、位置情報取得手段により取得した位置情報に基づいて算出される、手部の仮想骨格の移動速度、及び、手部の仮想骨格と腕部の仮想骨格により形成される仮想関節の角度が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定する、［１］〜［６］のいずれかに記載のプログラム。
【００９１】
［８］  オブジェクトが有する仮想骨格の位置に関する位置情報を取得する位置情報取得手段と、
取得した位置情報が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定する衝突判定手段と
を備える、コンピュータ装置。
【００９２】
［９］  コンピュータ装置において実行される判定方法であって、
オブジェクトが有する仮想骨格の位置に関する位置情報を取得するステップと、
取得した位置情報が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定するステップと
を有する判定方法。
【符号の説明】
【００９３】
１      コンピュータ装置
１１    制御部
１２    ＲＡＭ
１３    ストレージ部
１４    サウンド処理部
１５    グラフィックス処理部
１６    ＣＤ−ＲＯＭドライブ
１７    通信インタフェース
１８    インタフェース部
２      通信ネットワーク
２０    入力部
２１    サウンド出力装置
２２    表示装置
２３    表示画面
２４    記録媒体
３０    衝突条件マスタテーブル
６０    発音マスタテーブル
【図１】
2018088102.tif 000003
【図２】
2018088102.tif 000004
【図３】
2018088102.tif 000005
【図４】
2018088102.tif 000006
【図５】
2018088102.tif 000007
【図６】
2018088102.tif 000008
【図７】
2018088102.tif 000009
【図８】
2018088102.tif 000010
【図９】
2018088102.tif 000011
【図１０】
2018088102.tif 000012
【手続補正書】
【提出日】平成29年12月25日(2017.12.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータ装置を、
オブジェクトが有する仮想骨格の移動速度、及び／若しくは、加速度、並びに／又は、仮想骨格と仮想骨格とから形成される仮想関節の角度及び／若しくは角速度に関する仮想骨格情報を取得する仮想骨格情報取得手段、
取得した仮想骨格情報が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定する衝突判定手段
として機能させる、プログラム。
【請求項２】
コンピュータ装置を、
衝突判定手段によりオブジェクトが他のオブジェクトと衝突したと判定されたタイミングにおいて、発音処理を実行する発音手段
として機能させる、請求項１に記載のプログラム。
【請求項３】
発音手段が、衝突したと判定されたオブジェクトに応じて異なる音を発音する、請求項２に記載のプログラム。
【請求項４】
発音手段が、衝突したと判定された他のオブジェクトに応じて異なる音を発音する、請求項２又は３に記載のプログラム。
【請求項５】
オブジェクトがキャラクタの足部であり、
衝突判定手段が、仮想骨格情報取得手段により取得した仮想骨格情報に含まれる、足部の仮想骨格の移動速度、及び、足部の仮想骨格と脚部の仮想骨格により形成される仮想関節の角度が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定する、請求項１〜４のいずれかに記載のプログラム。
【請求項６】
オブジェクトが有する仮想骨格の移動速度、及び／若しくは、加速度、並びに／又は、仮想骨格と仮想骨格とから形成される仮想関節の角度及び／若しくは角速度に関する仮想骨格情報を取得する仮想骨格情報取得手段と、
取得した仮想骨格情報が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定する衝突判定手段と
を備える、コンピュータ装置。
【請求項７】
コンピュータ装置において実行される判定方法であって、
オブジェクトが有する仮想骨格の移動速度、及び／若しくは、加速度、並びに／又は、仮想骨格と仮想骨格とから形成される仮想関節の角度及び／若しくは角速度に関する仮想骨格情報を取得するステップと、
取得した仮想骨格情報が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定するステップと
を有する判定方法。
【手続補正書】
【提出日】平成30年3月27日(2018.3.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータ装置を、
オブジェクトが有する仮想骨格の移動速度、及び／若しくは、加速度、並びに／又は、仮想骨格と仮想骨格とから形成される仮想関節の角速度に関する仮想骨格情報を取得する仮想骨格情報取得手段、
取得した仮想骨格情報が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定する衝突判定手段
として機能させる、プログラム。
【請求項２】
コンピュータ装置を、
オブジェクトが有する仮想骨格の移動速度、及び、仮想骨格と仮想骨格とから形成される仮想関節の角度に関する仮想骨格情報を取得する仮想骨格情報取得手段、
取得した仮想骨格情報が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定する衝突判定手段
として機能させ、
オブジェクトがキャラクタの足部であり、
衝突判定手段が、仮想骨格情報取得手段により取得した仮想骨格情報に含まれる、足部の仮想骨格の移動速度、及び、足部の仮想骨格と脚部の仮想骨格により形成される仮想関節の角度が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定する、プログラム。
【請求項３】
コンピュータ装置を、
衝突判定手段によりオブジェクトが他のオブジェクトと衝突したと判定されたタイミングにおいて、発音処理を実行する発音手段
として機能させる、請求項１又は２に記載のプログラム。
【請求項４】
発音手段が、衝突したと判定されたオブジェクトに応じて異なる音を発音する、請求項３に記載のプログラム。
【請求項５】
発音手段が、衝突したと判定された他のオブジェクトに応じて異なる音を発音する、請求項３又は４に記載のプログラム。
【請求項６】
仮想骨格情報取得手段が、さらに、仮想骨格と仮想骨格とから形成される仮想関節の角度に関する情報を取得するもので、
オブジェクトがキャラクタの足部であり、
衝突判定手段が、仮想骨格情報取得手段により取得した仮想骨格情報に含まれる、足部の仮想骨格の移動速度、及び、足部の仮想骨格と脚部の仮想骨格により形成される仮想関節の角度が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定する、請求項１又は請求項３〜５のいずれかに記載のプログラム。
【請求項７】
オブジェクトが有する仮想骨格の移動速度、及び／若しくは、加速度、並びに／又は、仮想骨格と仮想骨格とから形成される仮想関節の角速度に関する仮想骨格情報を取得する仮想骨格情報取得手段と、
取得した仮想骨格情報が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定する衝突判定手段と
を備える、コンピュータ装置。
【請求項８】
オブジェクトが有する仮想骨格の移動速度、及び、仮想骨格と仮想骨格とから形成される仮想関節の角度に関する仮想骨格情報を取得する仮想骨格情報取得手段と、
取得した仮想骨格情報が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定する衝突判定手段と
を備え、
オブジェクトがキャラクタの足部であり、
衝突判定手段が、仮想骨格情報取得手段により取得した仮想骨格情報に含まれる、足部の仮想骨格の移動速度、及び、足部の仮想骨格と脚部の仮想骨格により形成される仮想関節の角度が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定する、コンピュータ装置。
【請求項９】
コンピュータ装置において実行される判定方法であって、
オブジェクトが有する仮想骨格の移動速度、及び／若しくは、加速度、並びに／又は、仮想骨格と仮想骨格とから形成される仮想関節の角速度に関する仮想骨格情報を取得するステップと、
取得した仮想骨格情報が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定するステップと
を有する判定方法。
【請求項１０】
コンピュータ装置において実行される判定方法であって、
オブジェクトが有する仮想骨格の移動速度、及び、仮想骨格と仮想骨格とから形成される仮想関節の角度に関する仮想骨格情報を取得するステップと、
取得した仮想骨格情報が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定するステップと
を有し、
オブジェクトがキャラクタの足部であり、
衝突を判定するステップが、仮想骨格情報を取得するステップにおいて取得した仮想骨格情報に含まれる、足部の仮想骨格の移動速度、及び、足部の仮想骨格と脚部の仮想骨格により形成される仮想関節の角度が所定の条件を満たす場合に、オブジェクトが他のオブジェクトと衝突したと判定する、判定方法。