(57)【要約】  本発明は、仮想環境内におけるユーザ制御エンティティのアニメーションのための方法及び装置に関する。仮想環境内におけるエンティティの運動を追跡するためにエンティティトラッキングデータをサーバに格納する。ユーザはそれらのエンティティに対する所望の動作をクライアントで入力することができ、そのデータをクライアントからサーバに送信することができる。サーバは受信データを用いてエンティティに対して適切なアニメーションを選択する。サーバは次に選択したアニメーションを識別するデータをクライアントに送信し、よってクライアント上のエンティティのアニメーションを制御する。仮想環境内におけるエンティティの運動の正確な表現を維持するとともにアニメーションデータを用いてエンティティの運動をシミュレートすることによって、サーバはエンティティを正確に制御でき、よってエンティティのアニメーションをよりリアルにすることができる。
2011508290.tif 000002
【特許請求の範囲】
【請求項１】
仮想環境内におけるユーザ制御エンティティのクライアント上のアニメーションを制御するサーバベース方法であって、前記ユーザ制御はクライアントベースである、ものにおいて、前記方法は、
サーバに、前記仮想環境内における第１エンティティのトラッキングと関連する第１エンティティのトラッキングデータを格納するステップと、
前記サーバで、第１クライアントから、前記仮想環境内における前記第１エンティティのユーザ制御と関連するエンティティ制御入力データを受信するステップと、
前記サーバで、前記第１クライアントから受信した前記入力データに基づいて、第１の複数のアニメーションから前記第１クライアントでアニメートすべき第１アニメーションを選択するステップと、
前記サーバから前記第１クライアントへ、前記仮想環境内における前記第１エンティティの前記選択された第１アニメーションを識別する第１データを送信するステップと、
前記第１クライアントでアニメートすべき前記選択された第１アニメーションと関連する一つ以上のエンティティ変化特性を検索するステップと、
前記第１クライアントでアニメートすべき前記選択された第１アニメーションと関連する前記検索されたエンティティ変化特性に基づいて、前記格納された第１エンティティのトラッキングデータを更新するステップと、
を備える、方法。
【請求項２】
前記第１クライアントでアニメートすべき前記第１アニメーションは、前記格納された第１エンティティのトラッキングデータに基づいて選択する、請求項１記載の方法。
【請求項３】
前記格納された第１エンティティのトラッキングデータは、一連のアニメーション中の前記第１エンティティの位置のトラッキングと関連する位置データを含む、請求項１又は記載の方法。
【請求項４】
前記格納された第１エンティティのトラッキングデータは、一連のアニメーション中の前記第１エンティティの向きのトラッキングと関連する向きデータを含む、請求項１−３の何れかに記載の方法。
【請求項５】
前記格納された第１エンティティのトラッキングデータは、一連のアニメーション中の前記第１エンティティのタイミングのトラッキングと関連するタイミングデータを含む、請求項１−４の何れかに記載の方法。
【請求項６】
前記サーバで、前記第１の複数のアニメーションから前記第１クライアントでアニメートすべき追加のアニメーションを選択するステップと、
前記サーバから前記第１クライアントへ、前記第１クライアントでアニメートすべき前記追加のアニメーションを識別する追加のデータを送信するステップと、
前記選択された追加のアニメーションと関連する一つ以上の追加のエンティティ変化特性を検索するステップと、
前記検索された追加のエンティティ変化特性に基づいて前記格納された第１エンティティのトラッキングデータを更新するステップと、
を備える、請求項１−５の何れかに記載の方法。
【請求項７】
前記選択された第１及び追加のアニメーションはアニメーションに対して順に選択する、請求項６記載の方法。
【請求項８】
前記複数のアニメーションはモーションキャプチャデータから導出する、請求項１−７の何れかに記載の方法。
【請求項９】
前記サーバで、前記仮想環境内における第２エンティティのトラッキングと関連する第２エンティティのトラッキングデータを格納するステップと、
前記サーバで、第２クライアントから、前記仮想環境内における前記第２エンティティのユーザ制御と関連するエンティティ制御入力データを受信するステップと、
前記サーバで、前記第２クライアントから受信した前記入力データに基づいて、第２の複数のアニメーションから前記第２クライアントでアニメートすべき第１アニメーションを選択するステップと、
前記サーバから前記第２クライアントへ、前記仮想環境内における前記第２クライアントでアニメートすべき前記選択された第１アニメーションを識別するデータを送信するステップと、
前記第２クライアントでアニメートすべき前記選択された第１アニメーションと関連する一つ以上のエンティティ変化特性を検索するステップと、
前記第２クライアントでアニメートすべき前記選択された第１アニメーションと関連する前記検索されたエンティティ変化特性に基づいて、前記格納された第２エンティティのトラッキングデータを更新するステップと、
を更に備える、請求項１−８の何れかに記載の方法。
【請求項１０】
前記第２クライアントでアニメートすべき前記第１アニメーションは前記格納された第２エンティティのトラッキングデータに基づいて選択する、請求項９記載の方法。
【請求項１１】
前記検索された変化特性は前記サーバ上のメモリストレージから検索される、請求項１−１０の何れかに記載の方法。
【請求項１２】
前記第１及び第２の複数のアニメーションは一つ以上のエンティティアニメーションを共通に含む、請求項９−１１の何れかに記載の方法。
【請求項１３】
前記第１エンティティ及び前記第２エンティティが前記仮想環境内で相互作用する場合、前記第１の複数のアニメーションの選択が前記第２の複数のアニメーションの選択に依存する、請求項９−１２の何れかに記載の方法。
【請求項１４】
仮想環境内におけるユーザ制御エンティティのクライアント上の運動アニメーションのためのクライアントベース方法であって、前記ユーザ制御はクライアントベースである、ものにおいて、前記方法は、
第１クライアントに、第１の複数のエンティティアニメーションを含むアニメーションデータを格納するステップと、
第１クライアントで、仮想環境内における第１エンティティのトラッキングと関連する第１エンティティのトラッキングデータを処理するステップと、
前記第１クライアントからサーバへ、前記仮想環境内における第１エンティティのユーザ制御と関連するエンティティ制御入力データを送信するステップと、
前記第１クライアントで、前記サーバから前記第１の複数のエンティティアニメーションのうちの一つを識別する選択データを含む第１データを受信するステップと、
前記第１クライアントで、前記受信された第１データ、前記第１クライアントに格納された前記アニメーションデータ及び前記第１エンティティのトラッキングデータに基づいて前記仮想環境内における前記第１エンティティをアニメートするステップと、
を備える、方法。
【請求項１５】
前記クライアントで、前記サーバから前記第１エンティティのトラッキングデータを受信するステップを備える、請求項１４記載の方法。
【請求項１６】
前記クライアントに、前記第１エンティティのトラッキングデータを格納するステップを備え、前記エンティティトラッキングデータを処理するステップは、前記エンティティトラッキングデータを前記クライアントの前記格納データから検索するステップを備える、請求項１４又は１５記載の方法。
【請求項１７】
前記クライアントで、前記識別されたエンティティアニメーションと関連するエンティティ変化特性を処理するステップと、
前記処理されたエンティティ変化特性に基づいて前記第１エンティティのトラッキングデータを更新するステップと、
前記第１クライアントで、前記更新された第１エンティティのトラッキングデータに基づいて前記仮想環境内における前記第１エンティティを更にアニメートするステップと、
を備える、請求項１４−１６の何れかに記載の方法。
【請求項１８】
前記クライアントで、前記サーバから前記エンティティ変化特性を受信するステップを備える、請求項１７記載の方法。
【請求項１９】
前記エンティティ変化特性を前記クライアントに格納するステップを備え、前記エンティティ変化特性を処理するステップは、前記エンティティ変化特性を前記クライアントの前記格納データから検索するステップを備える、請求項１７又は１８記載の方法。
【請求項２０】
前記第１エンティティのトラッキングデータは、一連のアニメーション中の前記第１エンティティの位置のトラッキングと関連する位置データを含む、請求項１４−１９の何れかに記載の方法。
【請求項２１】
前記第１エンティティのトラッキングデータは、一連のアニメーション中の前記第１エンティティの向きのトラッキングと関連する向きデータを含む、請求項１４−２０の何れかに記載の方法。
【請求項２２】
前記格納された第１エンティティのトラッキングデータは、一連のアニメーション中の前記第１エンティティのタイミングのトラッキングと関連するタイミングデータを含む、請求項１４−２１の何れかに記載の方法。
【請求項２３】
前記受信された第１データは前記第１の複数のアニメーションのうちの一つの追加のエンティティアニメーションを識別する追加の選択データを含み、前記識別されたアニメーションを順にアニメートするステップを備える、請求項１４−２２の何れかに記載の方法。
【請求項２４】
前記格納アニメーションデータはモーションキャプチャデータから導出される、請求項１４−２３の何れかに記載の方法。
【請求項２５】
前記第１クライアントから遠く離れた第１クライアントに、第２の複数のエンティティアニメーションを含むアニメーションデータを格納するステップと、
前記第２クライアントで、仮想環境内における第２エンティティのトラッキングと関連する第２エンティティのトラッキングデータを処理するステップと、
前記第２クライアントから前記サーバへ、前記仮想環境内における第２エンティティのユーザ制御と関連するエンティティ制御入力データを送信するステップと、
前記第２クライアントで、前記サーバから前記第２の複数のエンティティアニメーションのうちの一つを識別する第２選択データを含む第２データを受信するステップと、
前記第２クライアントで、前記受信された第２データ、前記第２クライアントに格納された前記アニメーションデータ及び前記第２エンティティのトラッキングデータに基づいて前記仮想環境内における前記第２エンティティをアニメートするステップと、
を備える、請求項１４−２４の何れかに記載の方法。
【請求項２６】
前記第１及び第２の複数のアニメーションは一つ以上のエンティティアニメーションを共通に含む、請求項２５の何れかに記載の方法。
【請求項２７】
前記第１エンティティ及び前記第２エンティティが前記仮想環境内で相互作用する場合、前記第１の複数のアニメーションの選択が前記第２の複数のアニメーションの選択に依存する、請求項２５又は２６記載の方法。
【請求項２８】
仮想環境内におけるユーザ制御エンティティの運動アニメーションのための方法において、前記方法は、
モーションキャプチャデータから導出されるアニメーションデータであって、前記エンティティの個々の体部分に対する体部分運動データを含むエンティティ運動アニメーションを含むアニメーションデータを格納するステップと、
前記仮想環境内における前記エンティティのユーザ制御運動と関連するエンティティ制御入力データを受信するステップと、
前記仮想環境内における前記エンティティを前記格納アニメーションデータに従って３人称パースペクティブビューでアニメーションするステップとを備え、
前記三人称パースペクティブビューの位置及び向きは前記体部分運動データの少なくとも一部分により決定される、方法。
【請求項２９】
前記モーションキャプチャデータは複数のモーションキャプチャフレームを含み、前記３人称パースペクティブビューの位置及び向きは、前記モーションキャプチャフレーム間を平滑化することによって前記モーションキャプチャデータから導出される体部分に対する体部分運動データにより決定される、請求項２８記載の方法。
【請求項３０】
前記エンティティ運動アニメーションは複数のキーフレームを含み、キーフレームに対する前記３人称パースペクティブビューの位置は前記モーションキャプチャフレームの一つ以上のフレームにおける前記体部分の位置から導出し、キーフレームに対する前記３人称パースペクティブビューの向きは前記モーションキャプチャフレームの一つ以上のフレームにおける前記体部分の向きから導出する、請求項２９記載の方法。
【請求項３１】
前記一つ以上のモーションキャプチャフレームは前記複数のモーションキャプチャフレームの最初及び／又は最後のモーションキャプチャフレームを含む、請求項３０記載の方法。
【請求項３２】
キーフレームに対する前記３人称パースペクティブビューの向きを導出するステップは、一以上のモーションキャプチャフレーム内の前記体部分の向きと関連する一以上の方向を決定することを含む、請求項３０又は３１記載の方法。
【請求項３３】
キーフレームに対する前記３人称パースペクティブビューの向きを導出するステップは、前記仮想環境内における前記一以上の体部分の向き方向と基準との関係を決定することを含む、請求項３２記載の方法。
【請求項３４】
前記基準は前記仮想環境内における基準方向である、請求項３３記載の方法。
【請求項３５】
前記関係は前記体部分の向き方向と前記基準方向との間の一以上の角度である、請求項３４記載の方法。
【請求項３６】
前記一以上の角度をキーフレームに対する前記３人称パースペクティブビューを決定するのに使用する、請求項３５記載の方法。
【請求項３７】
前記アニメーション中のキーフレームに対する前記３人称パースペクティブビューの向きは前記アニメーション中の２以上の他のキーフレームの３人称パースペクティブビューの向きを用いて計算する、請求項３０−３６の何れかに記載の方法。
【請求項３８】
前記２以上の他のキーフレームは前記アニメーション中の最初と最後のキーフレームとする、請求項３７記載の方法。
【請求項３９】
前記アニメーション中のキーフレームに対する前記３人称パースペクティブビューの向きを前記アニメーション中の２以上の他のキーフレームの３人称パースペクティブビューの向きを用いて計算するステップは、最初と最後のキーフレームからのエンティティの向きを中間フレームにわたって平滑化することを含む、請求項３７又は３８記載の方法。
【請求項４０】
前記平滑化は線形補間を含む、請求項３９記載の方法。
【請求項４１】
キーフレームに対する前記３人称パースペクティブビューの位置を導出するステップは、一以上のモーションキャプチャフレーム内の前記体部分の位置を移動させることを含む、請求項３０−４０の何れかに記載の方法。
【請求項４２】
前記移動は、仮想環境内のエンティティの垂直高さ平面を固定量だけ減じることを含む、請求項４１記載の方法。
【請求項４３】
前記移動は前記仮想環境内において基準の高さで制限される、請求項４１又は４２記載の方法。
【請求項４４】
前記エンティティはオステオイドキャラクタである、請求項２８−４３の何れかに記載の方法。
【請求項４５】
前記体部分は前記エンティティの腰骨に対応する２つの体部分を含む、請求項３１−４４の何れかに記載の方法。
【請求項４６】
仮想環境内においてユーザ制御エンティティの運動アニメーションを行う方法において、前記方法は、
複数のエンティティ運動アニメーションを含むアニメーションデータであって、前記エンティティ運動アニメーションの各々は関連するエンティティ変化特性を有しているアニメーションデータを格納するステップと、
前記仮想環境内における前記エンティティのユーザ制御運動と関連するエンティティ制御入力データを受信するステップと、
前記入力データに基づいて、前記複数のエンティティ運動アニメーションから一つのエンティティ運動アニメーションを選択し、前記選択されたアニメーションを、前記選択されたアニメーションと関連するエンティティ変化特性が修正されるように修正するステップと、
前記仮想環境内の前記エンティティを前記修正されたアニメーションに従ってアニメートするステップと、
を備える、方法。
【請求項４７】
前記エンティティ変化特性は前記エンティティ運動アニメーション内の前記エンティティの位置及び／又は向きを含み、前記選択されたアニメーションの修正は前記選択されたアニメーション中の前記エンティティの位置及び／又は向きを修正することを含む、請求項４６記載の方法。
【請求項４８】
前記エンティティ運動アニメーションは複数のキーフレームを含み、
前記エンティティ変化特性は前記エンティティ運動アニメーション中の第１及び第２キーフレーム間の前記エンティティの位置及び／又は向きの変化を含む、請求項４６又は４７記載の方法。
【請求項４９】
前記格納アニメーションデータはモーションキャプチャデータから導出される、請求項４６−４８の何れかに記載の方法。
【請求項５０】
前記エンティティ運動アニメーションは前記エンティティの個々の体部分に対する体部分運動データを含み、
前記エンティティ運動アニメーションと関連するエンティティ変化特性は、前記エンティティの前記体部分の一以上の位置及び／又は向きを含む、請求項４６−４９の何れかに記載の方法。
【請求項５１】
前記選択されたアニメーションの修正は、前記選択されたアニメーション中の前記エンティティの一以上の体部分の位置及び／又は向きを修正することを含む、請求項５０記載の方法。
【請求項５２】
エンティティ運動アニメーションと関連する前記エンティティ変化特性は、前記第１及び第２キーフレーム間の前記一以上の体部分の位置及び／又は向きの変化を含む、請求項５０又は５１記載の方法。
【請求項５３】
前記第１及び／又は前記第２のキーフレームは前記アニメーション中の最初及び／又は最後のキーフレームである、請求項４８又は５２記載の方法。
【請求項５４】
前記格納アニメーションデータはオブジェクアニメーションデータを含み、前記オブジェクアニメーションデータは前記エンティティ運動アニメーション内の一以上のオブジェクの運動と関連し、
前記修正は前記一以上の体部分の位置及び／又は向きを前記一以上のオブジェクに関して修正することを含む、請求項５０−５３の何れかに記載の方法。
【請求項５５】
前記修正は、エンティティ運動アニメーションのキーフレームのうちで前記修正を加えるべきサブセットを識別することを含む、請求項４８−５４の何れかに記載の方法。
【請求項５６】
前記キーフレームのサブセットとして、前記エンティティの所定の体部分が所定の位置及び／又は所定の向きにあるキーフレームを識別する、請求項５５記載の方法。
【請求項５７】
前記キーフレームのサブセットとして、所定のオブジェクが所定の位置及び／又は所定の向きにあるキーフレームを識別する、請求項５５又は５６記載の方法。
【請求項５８】
前記所定の体部分は前記エンティティの足及び／又は頭とし、前記所定のオブジェクはボールとし、前記修正は前記足又は頭の位置及び／又は向きを前記ボールの位置及び／又は向きに関して修正することを含む、請求項５７記載の方法。
【請求項５９】
前記修正は、前記キーフレームのサブセット内の前記エンティティの一以上の脚部の位置及び／又は向きを修正するために逆脚運動学を使用することを含む、請求項５５−５８の何れかに記載の方法。
【請求項６０】
前記修正は、前記エンティティ運動アニメーション中の一以上のキーフレームのタイミングを修正することを含む、請求項４８−５９の何れかに記載の方法。
【請求項６１】
コンピュータで実行されるマルチプレーヤスポーツゲームであって、請求項１−６０の何れかに記載の方法に従ってデータ通信網を介してアニメーションが実行され、各プレーヤは前記ゲーム内の一以上のエンティティを前記通信網を介してクライアントで制御することができるマルチプレーヤスポーツゲーム。
【請求項６２】
請求項１−６０の何れかに記載の方法を実行するように構成された装置。
【請求項６３】
請求項１−６０の何れかに記載の方法を実行するように構成されたコンピュータソフトウェア。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、運動アニメーション方法及び装置に関する。特に、本発明はユーザ制御エンティティの運動アニメーションに関する。
【背景技術】
【０００２】
既知のサーバベースゲームシステムにおいて、サーバはキャラクタ運動を、キャラクタがユーザ制御により指示された線又は曲線に沿って移動する単純な質点であるかのように実行している。クライアントで使用されるアニメーションはキャラクタの手足をリアリな運動の外観を与えるようにできるだけ最良に運動させる。しかし、これは多くの場合「フフットスライディング」を生じ、キャラクタの足は地面を滑るように見え、両者のアニメーションが混ざり合ったぎこちない動きに見える。
【０００３】
サッカーゲームのような没入型アクションアプリケーションに対して、このような既知のシステムはゲーム環境にリアルな外観と雰囲気を与えない。例えば、プレーヤが足でボールと一緒に１８０度回転する場合、プレーヤは単純な一定速度のスポット回転と全く異なる複雑な動きを行う。
【０００４】
アニメーションはモーションキャプチャ技術を用いて生成される。これらの技術において、行動するアクタの運動はモーションキャプチャスタジオで記録され、コンピュータゲームのキャラクタの運動をモデル化するために使用される。アクタの運動の持続時間に亘ってアクタの各身体部分の運動が検出され、運動を規定する一連のモーションキャプチャフレームを生成するために使用される。異なるアニメーションをゲーム内で順に一緒につなぎ合わせる（しばしばスプライシングと呼ばれている）ために、各アニメーションは「ポーズ」として知られる複数の所定の体位のうちの一つで開始及び終了させるのが望ましい。これはアニメーション間の移行を滑らかにしてより自然に見えるようにすることによってアニメーション間の連続性を与えるのに役立つ。モーションキャプチャスタジオには各ポーズを規定するデータ及び各アニメーションがどのポーズで開始及び終了すべきかを規定するデータを与えることができる。モーションキャプチャスタジオは次にモーションキャプチャデータを処理し、アニメーションを最初と最後のキーフレームが所望のポーズと一致するキーフレームのシーケンスとして規定するデータファイルを提供する。
【０００５】
アクタ及び彼の運動は、ここでは「骨」という部位の階層を有するエンティティとしてモデル化することができる。この階層の頂部はアクタの腰部を表す骨とすることができる。生のモーションキャプチャデータにおいて、すべての他の運動は典型的には腰骨（寛骨）体部分に対して決定される。
【０００６】
モーションキャプチャされる任意のエンティティ位置に対して未知であるのはエンティティに対して正確な前方向である。モーションキャプチャデータはその水平前方向を含む腰骨の運動を規定する。ループ歩行又は走行アニメーション中、エンティティが一方の脚を他方の脚の後で前に動かすときに腰は左右にねじれる。これは、腰前方向が左右に揺れることを意味する。
【０００７】
アニメートされたエンティティはディスプレイ上で、エンティティ位置にリンクした３人称パースペクティブ視点から見ることができる。これは、腰前方向をエンティティの前方向として直接用いる場合（エンティティが前方に走っている場合）、視点は腰の運動と一致して左右に揺れる。このような運動は仮想環境内でエンティティの運動を制御するユーザをまごつかせる。
【０００８】
特許文献１は、グラフィックインタフェース上にオブジェクトを含む３次元（３Ｄ）アニメーショングラフィックイメージを生成する方法を開示している。グラフィックイメージはユーザによりリアルタイムでインタラクティブにアニメートされるように設計されている。この方法は、オブジェクを選択し、それらをグラフィックインタフェースにディスプレイし、オブジェクに外部プロンプトにインタラクティブに反応する特性を有する運動を割り当て、オブジェク及びそれらに割り当てられた運動をシンボライズする可視要素をグラフィックインタフェース上で組み立てる。
【０００９】
特許文献２は、２次元ゲームにおいてキャラクタのアニメーションを達成するアニメーションシステムを開示している。ゲームキャラクタは異なるエリアに分割され、それらのエリアに異なるアニメーション技術が与えられる。一つのエリアでは、骨格アニメーション技術が使用され、オブジェクの運動を制御するためにロジックが使用される。別のエリアでは、セルアニメーション技術が使用される。次に異なるアニメーション技術を用いるエリアがキャラクタをアニメートするために結合される。
【００１０】
特許文献３は３次元オンラインゲームのキャラクタの形を変更するシステムを開示している。キャラクタのアニメーションはキャラクタの個々の骨のアニメーションにより達成される。一つのキャラクタの骨格アニメーションモデルは、一つのキャラクタの骨格に基づく形態を他のキャラクタにエクスポートすることによって、他のキャラクタモデルに拡張することができる。キャラクタアニメーションのリアリティをプレーヤによるキャラクタの操作に応答して向上させるために逆運動学を適用することができる。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】米国特許第６，９７２，７６５号明細書
【特許文献２】特開２００８−０３８０１０号公報
【特許文献３】韓国特許出願第２００４００８７７８７号明細書
【発明の概要】
【００１２】
ユーザ制御エンティティの運動の外観と雰囲気を改善し、エンティティを仮想環境内でもっとリアルにアニメートすることができるゲームシステム用の技術を提供することが望まれている。
【００１３】
本発明の第１の態様によれば、仮想環境内におけるユーザ制御エンティティのクライアント上のアニメーションを制御するサーバベース方法であって、前記ユーザ制御はクライアントベースである、方法が提供される。前記方法は、
サーバに、前記仮想環境内における第１エンティティのトラッキングと関連する第１エンティティのトラッキングデータを格納するステップと、
前記サーバで、第１クライアントから、前記仮想環境内における前記第１エンティティのユーザ制御と関連するエンティティ制御入力データを受信するステップと、
前記サーバで、前記第１クライアントから受信した前記入力データに基づいて、第１の複数のアニメーションから前記第１クライアントでアニメートすべき第１アニメーションを選択するステップと、
前記サーバから前記第１クライアントへ、前記仮想環境内における前記第１エンティティの前記選択された第１アニメーションを識別する第１データを送信するステップと、
前記第１クライアントでアニメートすべき前記選択された第１アニメーションと関連する一つ以上のエンティティ変化特性を検索するステップと、
前記第１クライアントでアニメートすべき前記選択された第１アニメーションと関連する前記検索されたエンティティ変化特性に基づいて、前記格納された第１エンティティのトラッキングデータを更新するステップと、
を備える。
【００１４】
エンティティトラッキングデータは仮想環境内におけるエンティティの運動を追跡するためにサーバに格納される。ユーザは、クライアントを介して、エンティティに対する所望の動作を入力し、次いでクライアントによりサーバへ送信することができる。サーバは受信したデータを用いてエンティティに対する適切なアニメーションを選択する。サーバは次に選択したアニメーションを識別するデータをクライアントへ送信し、よってクライアント上のエンティティのアニメーションを制御することができる。
【００１５】
選択されたアニメーションと関連するエンティティ変化特性は、例えばサーバ上のメモリストレージからサーバにより検索することができる。エンティティ変化特性は、アニメーションの最中に変化する、例えばエンティティの位置及び向き及びアニメーションのタイミングなどの所定の特性に関連させることができる。エンティティ変化特性の使用により、エンティティがアニメーションの最中にどのように変化するかに関する情報、例えばエンティティがアニメーション中、アニメーションの開始に対して、特にアニメーション終了時にどこにあるのか及び／又はどっちを向いているかに関する情報をサーバに与える。サーバは格納するエンティティトラッキングデータを選択されたアニメーションのエンティティ変化特性を考慮して更新する。
【００１６】
従って、サーバは仮想環境内におけるエンティティの動きを追跡することができ、またクライアントでエンティティをアニメートするために使用できる複数のエンティティアニメーションの知識も持っている。アニメーションデータを用いて、仮想環境内におけるエンティティの運動の正確な表現を維持しながら、エンティティの運動をシミュレートすることによって、サーバはエンティティを正確に制御でき、よってエンティティのアニメーションをよりリアルにすることができる。
【００１７】
サーバとクライアントが通信しうるネットワークは不必要に多量のアニメーションデータでオーバロードにならない。アニメーションデータ自体をサーバとクライアントとの間で伝送する必要はなく、アニメーションの識別と関連するデータのみを伝送すればよく、このデータはクライアントで関連するアニメーションを識別するために使用される。
【００１８】
好ましくは、本方法は、前記第１クライアントでアニメートすべき前記第１アニメーションを前記格納された第１エンティティのトラッキングデータに基づいて選択する。従って、サーバはエンティティに対する適切なアニメーションを選択するために格納トラッキングデータを使用することもできる。よって、アニメーション選択は仮想環境内におけるエンティティの運動の知見に基づいて実行することができ、これによりアニメーション品質を更に向上させることができる。
【００１９】
好ましくは、前記格納された第１エンティティトラッキングデータは、一連のアニメーション中の前記第１エンティティの位置のトラッキングと関連する位置データを含む。例えば、位置データはアニメーション中のエンティティの開始位置を含むことができる。
【００２０】
好ましくは、前記格納された第１エンティティトラッキングデータは、一連のアニメーション中の前記第１エンティティの向きのトラッキングと関連する向きデータを含む。例えば、向きデータはアニメーション中のエンティティの開始向きを含むことができる。
【００２１】
好ましくは、前記格納された第１エンティティトラッキングデータは、一連のアニメーション中の前記第１エンティティのタイミングのトラッキングと関連するタイミングデータを含む。例えば、タイミングデータはアニメーション中のエンティティの開始時刻を含むことができる。
【００２２】
従って、仮想環境内におけるエンティティの位置、向き及びタイミングを選択されたアニメーションに基づいてサーバで追跡することができるため、エンティティがクライアントでアニメートされる際に、仮想環境内におけるエンティティの運動のより正確な表現を与えることができる。
【００２３】
好ましくは、本方法は、
前記サーバで、前記第１の複数のアニメーションから前記第１クライアントでアニメートすべき追加のアニメーションを選択するステップと、
前記サーバから前記第１クライアントに、前記第１クライアントでアニメートすべき前記追加のアニメーションを識別する追加のデータを送信するステップと、
前記選択された追加のアニメーションと関連する一つ以上の追加のエンティティ変化特性を検索するステップと、
前記検索された追加のエンティティ変化特性に基づいて前記格納された第１エンティティのトラッキングデータを更新するステップと、
を備える。
【００２４】
好ましくは、前記選択された第１及び追加のアニメーションはアニメーションのために順に選択し、その結果のトラッキングはアニメーションのシーケンスに対してサーバで実行する。
【００２５】
好ましくは、前記複数のアニメーションはモーションキャプチャデータから導出する。従って、モーションキャプチャスタジオ内におけるアクタの運動と関連するデータを運動アニメーションのためのソースデータとして利用することができる。
【００２６】
好ましくは、本方法は、更に、
前記サーバで、前記仮想環境内における第２エンティティのトラッキングと関連する第２エンティティトラッキングデータを格納するステップと、
前記サーバで、第２クライアントから、前記仮想環境内における前記第２エンティティのユーザ制御と関連するエンティティ制御入力データを受信するステップと、
前記サーバで、前記第２クライアントから受信した前記入力データに基づいて、第２の複数のアニメーションから前記第２クライアントでアニメートすべき第１アニメーションを選択するステップと、
前記サーバから前記第２クライアントへ、前記仮想環境内における前記第２クライアントでアニメートすべき前記選択された第１アニメーションを識別するデータを送信するステップと、
前記第２クライアントでアニメートすべき前記選択された第１アニメーションと関連する一つ以上のエンティティ変化特性を検索するステップと、
前記第２クライアントでアニメートすべき前記選択された第１アニメーションと関連する前記検索されたエンティティ変化特性に基づいて、前記格納された第２エンティティトラッキングデータを更新するステップと、
を備える。
【００２７】
従って、本発明は、ネットワークを介してマルチユーザ機能を提供するのに使用することができる。各クライアントは他のクライアントから遠く離れて位置することができ、仮想空間内の一つ以上のエンティティを制御するために各クライアントをユーザが操作することができる。一つ以上のサーバが多数のクライアントと、それぞれのエンティティのアニメーションを制御するために通信することができ、その間それぞれのエンティティは選択されたアニメーションに基づいて一つ以上のサーバで追跡される。
【００２８】
好ましくは、本方法は、更に、前記第２クライアントでアニメートすべき前記第１アニメーションを前記格納された第２エンティティトラッキングデータに基づいて選択するステップを備える。従って、サーバは２つ以上のエンティティに対する適切なアニメーションを選択するために格納トラッキングデータを使用することができる。従って、アニメーション選択は仮想環境内における複数のエンティティの運動の知見に基づいて実行することができる。
【００２９】
好ましくは、前記第１及び第２の複数のアニメーションは、一つ以上のエンティティアニメーションを共通に含む。従って、各クライアントは関連するエンティティをアニメートし得る同一又は類似のアニメーションセットを有することができる。
【００３０】
好ましくは、前記第１エンティティ及び前記第２エンティティが前記仮想環境内で相互作用する場合には、前記第１の複数のアニメーションの選択は前記第２の複数のアニメーションの選択に依存させる。
【００３１】
従って、各エンティティのユーザ制御に依存して、各クライアントと関連するエンティティは仮想環境内の他のエンティティと相互作用するようにアニメートすることが可能になる。よって、サーバはそれに応じてそれぞれのエンティティのためのアニメーションを選択することができる。
【００３２】
本発明の第２の態様によれば、仮想環境内におけるユーザ制御エンティティのクライアント上の運動アニメーションのためのクライアントベース方法であって、前記ユーザ制御はクライアントベースである、方法が提供される。前記方法は、
第１クライアントに、第１の複数のエンティティアニメーションを含むアニメーションデータを格納するステップと、
第１クライアントで、仮想環境内における第１エンティティのトラッキング関連する第１エンティティのトラッキングデータを処理するステップと、
前記第１クライアントからサーバへ、前記仮想環境内における第１エンティティのユーザ制御と関連するエンティティ制御入力データを送信するステップと、
前記第１クライアントで、前記サーバから前記第１の複数のエンティティアニメーションのうちの一つを識別する選択データを含む第１データを受信するステップと、
前記第１クライアントで、前記受信された第１データ、前記第１クライアントに格納された前記アニメーションデータ及び前記第１エンティティのトラッキングデータに基づいて前記仮想環境内における前記第１エンティティをアニメートするステップと、
を備える。
【００３３】
従って、本発明は、仮想空間内でユーザ制御エンティティをクライアントに格納されたアニメーションデータに従ってアニメートすることができる。ユーザはクライアントによりエンティティの所望の運動を入力し、ついでサーバに送信することができる。クライアントは次にサーバから、どのエンティティ運動アニメーションがサーバにより識別されたかを知らせるデータを受信する。クライアントは識別されたアニメーションの間エンティティを追跡するためにエンティティトラッキングデータを処理することができる。
【００３４】
従って、サーバは仮想環境内におけるエンティティの動きを追跡することができ、またクライアントでエンティティをアニメートするのに使用できる複数のエンティティアニメーションの知識も持っている。アニメーションデータを用いてエンティティの運動をシミュレートすることによって、仮想環境内におけるエンティティのアニメーションをよりリアルにシミュレートすることができる。
【００３５】
好ましくは、本方法は、前記クライアントで、前記サーバから前記第１エンティティトラッキングデータを受信するステップを備える。従って、クライアントはエンティティトラッキングデータをサーバにより供与されることができる。
【００３６】
好ましくは、本方法は、前記クライアントに、前記第１エンティティトラッキングデータを格納するステップを備え、前記エンティティトラッキングデータを処理するステップは前記エンティティトラッキングデータを前記クライアントの前記格納データから検索するステップを備える。従って、クライアントはエンティティトラッキングデータ自体を格納することができる。クライアントは、サーバからエンティティトラッキングデータを受信する代わりに、エンティティトラッキングデータの自己バージョンを保持することができる。代わりに又は加えて、クライアントはサーバからエンティティトラッキングデータを受信し、これを直接用いてエンティティをアニメートすることができ、またクライアントはサーバから受信したエンティティトラッキングデータを用いて自己格納したエンティティトラッキングデータを更新することができる。
【００３７】
好ましくは、本方法は、前記クライアントで、前記識別されたエンティティアニメーションと関連するエンティティ変化特性を処理するステップと、
前記処理されたエンティティ変化特性に基づいて前記第１エンティティトラッキングデータを更新するステップと、
前記第１クライアントで、前記更新された第１エンティティトラッキングデータに基づいて前記仮想環境内における前記第１エンティティを更にアニメートするステップと、
を備える。
【００３８】
従って、クライアントは識別されたアニメーションと関連するエンティティ変化特性を処理することができる。エンティティ変化特性を用いて、エンティティがアニメーション中にどのように変化するかに関連する情報をクライアントに与えることができる。
【００３９】
好ましくは、本方法は、前記クライアントで、前記サーバから前記エンティティ変化特性を受信するステップを備える。従って、クライアントはエンティティ変化特性をサーバにより供与されることができる。
【００４０】
好ましくは、本方法は、前記エンティティ変化特性を前記クライアントに格納するステップを備え、前記エンティティ変化特性を処理するステップは前記エンティティ変化特性を前記クライアントの前記格納データから検索するステップを備える。従って、クライアントはエンティティトラッキングデータ自体を格納することができる。クライアントはエンティティトラッキングデータの自己バージョンを保持することができる。また、クライアントはサーバからエンティティトラッキングデータを供与されることができ、この場合にはクライアントは格納したエンティティトラッキングデータを更新することができる。
【００４１】
本発明の第３の態様によれば、仮想環境内におけるユーザ制御エンティティの運動アニメーションのための方法が提供される。前記方法は、
モーションキャプチャデータから導出されるアニメーションデータであって、前記エンティティの個々の体部分に対する体部分運動データを含むエンティティ運動アニメーションを含むアニメーションデータを格納するステップと、
前記仮想環境内における前記エンティティのユーザ制御運動と関連するエンティティ制御入力データを受信するステップと、
前記仮想環境内における前記エンティティを前記格納アニメーションデータに従って３人称パースペクティブビューでアニメーションするステップとを備え、
前記三人称パースペクティブビューの位置及び向きは前記体部分運動データの少なくとも一部分により決定される。
【００４２】
従って、ユーザは仮想環境内のエンティティの運動を３人称パースペクティブから見ることができる。ユーザがエンティティを見るこの視角又はカメラアングルはその体部分運動データに従ってエンティティを追跡することができる。
【００４３】
本発明は仮想環境内のエンティティの運動アニメーション中に３人称パースペクティブビューを提供するのに使用できる。アニメーションデータはモーションキャプチャスタジオ内で記録されたアクタの運動から導出することができる。体部分運動データはモーションキャプチャデータから導出することができ、少なくともその一部分を用いて、仮想環境内のエンティティのアニメーション中により安定でリアルなビューを与える３人称パースペクティブビューを決定することができる。
【００４４】
好ましくは、モーションキャプチャデータは複数のモーションキャプチャフレームを含み、３人称パースペクティブビューの位置及び向きは、前記モーションキャプチャフレーム間を平滑化することによって前記モーションキャプチャデータから導出される体部分に対する体部分運動データにより決定される。
【００４５】
従って、アニメーション中に３人称パースペクティブビューを生成するためにモーションキャプチャデータのフレーム間の平滑化を用いることができる。これは、３人称パースペクティブビューに不所望に現れるモーションキャプチャデータと関連する振動、ウォブル、ジッターなどを回避するのに役立つ。これらの不所望の効果は、例えばアクタの運動が記録されている間に左右に動くアクタの一以上の部分に起因し、例えばランニング動作の受理苦衷におけるアクタの腰骨の振動に起因する。
【００４６】
好ましくは、エンティティ運動アニメーションは複数のキーフレームを含み、キーフレームに対する前記３人称パースペクティブビューの位置は前記モーションキャプチャフレームの一つ以上のフレームにおける前記体部分の位置から導出され、キーフレームに対する前記３人称パースペクティブビューの向きは前記モーションキャプチャフレームの一つ以上のフレームにおける前記体部分の向きから導出される。
【００４７】
好ましくは、前記一つ以上のモーションキャプチャフレームは前記複数のモーションキャプチャフレームの最初及び／又は最後のモーションキャプチャフレームを含む。
【００４８】
従って、アニメーションのキーフレームに対する３人称パースペクティブビューの位置及び／又は向きは、一以上のモーションキャプチャフレーム、例えば記録動作と関連する最初及び／又は最後のモーションキャプチャフレームにおける体部分の位置及び／又は向きから導出することができる。
【００４９】
好ましくは、キーフレームに対する３人称パースペクティブビューの向きは、一以上のモーションキャプチャフレーム内の前記体部分の向きと関連する一以上の方向を規定するものとする。
【００５０】
好ましくは、キーフレームに対する３人称パースペクティブビューの向きの導出は、仮想環境内における前記体部分の向き方向と基準との関係を決定することを含む。
【００５１】
好ましくは、前記基準は前記仮想環境内における基準方向とする。
【００５２】
好ましくは、前記関係は前記体部分向き方向と前記基準方向との間の一以上の角度とすることができる。
【００５３】
従って、一以上のモーションキャプチャフレーム内の体部分の向きを用いてアニメーション中の一以上のキーフレーム内のエンティティの向きを計算できる。体部分の向きは仮想環境内の基準の向きと比較することができる。これにより仮想環境内の体部分と基準方向との間の角度のような関係を決定することができる。
【００５４】
このプロセスは体部分運動データの正規化の一例とみなせ、体部分の向きは仮想環境内の基準方向に関して正規化される。アクタがモーションキャプチャ運動中に向いている真の方向は一般に未知である。本発明の正規化プロセスによれば、アニメーション中にエンティティが仮想環境内で向いている方向の指示を計算することができる。次に、導出したエンティティの方向を用いてエンティティのアニメーションの間中安定でリアルな３人称パースペクティブビューを与えることができる。
【００５５】
エンティティの向きの知識は、サーバが、アニメーションの開始時及び／又は終了時にエンティティがどの方向に向くか又は向くべきかを計算する際に利用することがで、この知識はモーションキャプチャデータから明示的にすることができる。これは、複数のアニメーションを一緒に配列する必要があるとき特に有用である。
【００５６】
好ましくは、前記一以上の角度はキーフレームに対する前記３人称パースペクティブビューを決定するのに使用される。従って、一以上の対部分と仮想環境の基準方向との間で計算された一以上の角度を用いてアニメーションにおける３人称パースペクティブビューを決定することができる。
【００５７】
好ましくは、前記アニメーション中のキーフレームに対する３人称パースペクティブビューの向きは前記アニメーション中の２以上の他のキーフレームの３人称パースペクティブビューの向きを用いて計算する。従って、３人称パースペクティブビューの方向は個別に各キーフレームに対する体部分の向きから直接計算する必要はない。代わりに、３人称パースペクティブビューの向きは、例えばたった２つのキーフレームに対する体部分の向きから直接計算することができ、これらの２つのキーフレームに対する３人称パースペクティブビューの向きは、アニメーションの他のキーフレームに対する３人称パースペクティブビューの向きを計算するのに使用することができる。
【００５８】
好ましくは、前記２以上の他のキーフレームは前記アニメーション中の最初と最後のキーフレームとする。最初と最後のキーフレームの３人称パースペクティブビューの向きは、例えばアプリケーション中の他のキーフレームの３人称パースペクティブビューの向きを計算するのに使用することができる。
【００５９】
エンティティの向きをアニメーションの最初と最後のキーフレームの体部分向きデータから計算する場合、この情報を用いて一つ以上又はすべての中間キーフレームのエンティティの向きを計算することができる。これは、最初と最後のキーフレームからのエンティティの向きを中間フレームにわたって平滑化することを含むことができる。この平滑化は、最初と最後のキーフレームからのエンティティの向きを中間キーフレームにわたって、例えば線形補間を用いて平均化することにより実行することができる。
【００６０】
好ましくは、キーフレームに対する前記３人称パースペクティブビューの位置を導出することは、一以上のモーションキャプチャフレーム内の前記体部分の位置を移動させることを含む。
【００６１】
このプロセスは、体部分運動データの正規化の一例とみなすことができ、体部分の位置は仮想環境内の位置に関して正規化される。アクタがモーションキャプチャ運動内に位置する真の位置は一般に未知である。本発明の正規化プロセスによれば、アニメーション中の仮想環境内のエンティティの位置の指示を計算することができる。次に、導出したエンティティの位置を用いてエンティティのアニメーションの中安定でリアルな３人称パースペクティブビューを与えることができる。
【００６２】
この正規化プロセスの移動は、仮想環境内のエンティティの垂直高さ平面を固定量だけ減じることを含むことができる。３人称パースペクティブビュー位置が負の高さになるのを避けるために、移動は前記仮想環境内において基準の高さ、例えば仮想環境内のグランドの高さで制限することができる。
【００６３】
好ましくは、エンティティはオステオイドモデルとする。従って、エンティティは骨格とすることができ、各エンティティは体部分に取り付けられた一以上のセンサを有し、モーションキャプチャスタジオ内のアクタの対応する骨の運動を表す。各骨の個々の運動が記録され、それに応じてエンティティをアニメートするために使用される。
【００６４】
好ましくは、体部分は前記エンティティの腰骨に対応する２つの体部分とする。従って、アクタの腰骨の運動を用いて、仮想環境内のエンティティのアニメーション中に３人称パースペクティブビューを導出することができる。モーションキャプチャデータは一般にアクタの腰骨の運動と関連するデータを含み、このデータを用いてアニメーション中のエンティティの位置及び向きを計算することができる。
【００６５】
本発明の第４の態様によれば、仮想環境内においてユーザ制御エンティティの運動アニメーションを行う方法が提供される。前記方法は、
複数のエンティティ運動アニメーションを含むアニメーションデータであって、前記エンティティ運動アニメーションの各々は関連するエンティティ変化特性を有しているアニメーションデータを格納するステップと、
前記仮想環境内における前記エンティティのユーザ制御運動と関連するエンティティ制御入力データを受信するステップと、
前記入力データに基づいて、前記複数のエンティティ運動アニメーションから一つのエンティティ運動アニメーションを選択し、前記選択したアニメーションと関連するエンティティ変化特性が修正されるように前記選択したアニメーションを修正するステップと、
前記仮想環境内の前記エンティティを前記修正されたアニメーションに従ってアニメートするステップと、
を備える。
【００６６】
エンティティ制御入力データを受信すると、格納アニメーションデータから適切なエンティティ運動アニメーションを選択することができる。しかし、選択されたアニメーションは、エンティティを仮想環境内でもっとリアルにアニメートするために、エンティティをアニメートする前に修正することができる。エンティティ運動アニメーションは、エンティティがアニメーション中にどのように変化するかに関する関連のエンティティ変化特性を有することができる。従って、エンティティを選択されたアニメーションに対応する格納アニメーションデータに従ってアニメートする代わりに、その関連のエンティティ変化特性を変化させるために選択されたアニメーションを最初に修正することができる。
【００６７】
これは、アニメーションの概観と雰囲気をよりリアルにするために、例えばアニメーションが仮想環境内でアニメートすべき別のエンティティ又はオブジェクのアニメーションと調和するようにエンティティの位置及び向きを調整するために用いることができる。
【００６８】
エンティティ運動のすべての可能な変化に対するアニメーションデータを、水平及び垂直移動、方向、タイミングなどに関して与えるのが実用的である。これは、特にアニメーションデータがモーションキャプチャデータから導出される場合であり、それは所定の運動タイプの多くの異なる変化を演じるアクタを任意の高精度又は正確さで得ることは難しいからである。
【００６９】
従って、本発明を使用すれば、エンティティのアニメーションを提供されるアニメーションに正確に限定する必要はなく、選択されたアニメーションをエンティティの所望の運動とより密接に一致するように修正することができる。これは、仮想環境内の別のエンティティまたはオブジェクと相互作用するために、例えばエンティティがアニメーション中に特定の位置、角度及び時間に到達するのが望ましい場合に起こる。
【００７０】
好ましくは、エンティティ変化特性は前記エンティティ運動アニメーション内の前記エンティティの位置及び／又は向きを含み、前記修正は前記選択されたアニメーション内の前記エンティティの位置及び／又は向きの修正を含む。従って、アニメーションが選択されたら、そのエンティティ変化特性を検査して、選択されたアニメーションがエンティティの所望の運動に十分に近似し、仮想環境における直接アニメーションに適切であるかどうかを確かめることができる。アニメーションが直接アニメーションにふさわしくなく、例えばエンティティの位置及び／又は向きを改善すべきことが認識された場合には、アニメーションのエンティティ変化特性を仮想環境内のエンティティのアニメーティングに使用する前に変化させるためにこのアニメーションを修正することができる。
【００７１】
好ましくは、エンティティ運動アニメーションは複数のキーフレームを含み、前記エンティティ変化特性は前記エンティティ運動アニメーション中の第１及び第２キーフレーム間の前記エンティティの位置及び／又は向きの変化を含む。従って、アニメーション中の所定の点間のエンティティの位置及び／又は向きなどのエンティティ変化特性は、アニメーションが所望のエンティティ運動にどのくらい密接に従うかの尺度として用いることができる。
【００７２】
好ましくは、エンティティ運動アニメーションは、前記エンティティの個々の体部分に対する体部分運動データを含み、前記エンティティ運動アニメーションと関連するエンティティ変化特性は、前記エンティティの前記体部分の一以上の位置及び／又は向きを含む。
【００７３】
アニメーションのエンティティ変化特性が、アニメーション中の一以上の体部分の位置及び／又は向きを前記体部分の運動が所望のエンティティ動作にもっと密接に一致するように改善できることを示す場合には、アニメーション中の前記一以上の体部分の位置及び／又は向きを、エンティティが仮想環境内でアニメートされる前に修正することができる。
【００７４】
好ましくは、前記選択されたアニメーションの修正は、前記選択されたアニメーション中の前記エンティティの一以上の体部分の位置及び／又は向きを修正することを含む。従って、エンティティの一以上の体部分の位置及び／又は向きを修正することによってアニメーションの概観と雰囲気を改善することができる。
【００７５】
好ましくは、エンティティ運動アニメーションと関連するエンティティ変化特性は前記第１及び第２キーフレーム間の前記一以上の体部分の位置及び／又は向きの変化を含む。従って、アニメーションの所定の点間のエンティティの一以上の体部分の位置及び／又は向きなどのエンティティ変化特性の変化は、アニメーションが所望のエンティティ運動にどのくらい密接に従うかの尺度として用いることができる。
【００７６】
好ましくは、前記第１及び／又は前記第２のキーフレームは前記アニメーション中の最初及び／又は最後のキーフレームとする。従って、アニメーション中のエンティティ又はその一以上の体部分の開始及び終了位置及び／又は向きを、当該アニメーションと当該エンティティの前及び次のアニメーションとのつなぎ合わせ又は仮想環境内の他のエンティティ及び／又はオブジェクと関連するアニメーションとのつなぎ合わせを改善するために調整することができる。
【００７７】
好ましくは、格納アニメーションデータはオブジェクアニメーションデータを含み、前記オブジェクアニメーションデータは前記エンティティ運動アニメーション内の一以上のオブジェクの運動と関連し、前記修正は前記一以上の体部分の位置及び／又は向きを前記一以上のオブジェクに関して修正することを含む。
【００７８】
従って、修正は、エンティティ又はその一以上の体部分の位置又は向きを、ボールなどのオブジェクに関して又はその逆に、エンティティがボールともっとリアルに相互作用するように、例えばエンティティがもっとリアルにボールをキックまたはヘッディングするように修正することを含むことができる。
【００７９】
好ましくは、修正は、エンティティ運動アニメーション中のキーフレームのうち前記修正を加えるべきサブセットを識別することを含む。修正はアニメーション全体よりもアニメーション中のキーフレームのサブセットによりリアルに加えることができる。これは、例えばエンティティの回転その他の運動の大部分がアニメーション中の数キーフレームのみにわたり起こる場合に有用であり、この場合には修正は数キーフレームのみにわたり最適に加えることができる。アニメーションのサブセットはアニメーションデータをクライアント及び／又はサーバに格納する前に識別でき、また画像処理技術を用いてさ又はクライアントにより識別することができる。
【００８０】
好ましくは、キーフレームのサブセットは、前記エンティティの所定のたいぶぶんが所定の位置及び／又は所定の向きにあるキーフレームで識別される。従って、キーフレームのサブセットは、例えばボールなどのオブジェクが地面の上にある又は所定の方向に向いているキーフレームとして識別することができる。
【００８１】
好ましくは、キーフレームのサブセットは、所定のオブジェクが所定の位置及び／又は所定の向きにあるキーフレームで識別される。従って、キーフレームのアブセットは、例えばボールなどのオブジェクが地上にある又はエンティティの高さに匹敵する所定の高さにあるキーフレームとして識別することができる。
【００８２】
好ましくは、所定の体部分は前記エンティティの足及び／又は頭とし、前記所定のオブジェクはボールとし、前記修正は前記足又は頭の位置及び／又は向きを前記ボールの位置及び／又は向きに関して修正することを含む。従って、前記修正によってサッカー試合のプレーヤのようなスポーツゲームのユーザにより制御されているエンティティをリアルにアニメートすることができる。
【００８３】
好ましくは、修正は、前記キーフレームのサブセット内の前記エンティティの一以上の脚部の位置及び／又は向きを修正するために逆脚運動学を使用することを含む。従って、修正が、例えばエンティティの足が地上にある点を修正することを含む場合には、エンティティの脚部の位置及び向きを修正されたアニメーションにおいて脚がもっと自然に見えるように修正することができる。エンティティの大腿部、膝、ふくらはぎ、足首又は足などをこのような逆脚運動学に含めることができる。
【００８４】
好ましくは、修正は、前記エンティティ運動アニメーション中の一以上のキーフレームのタイミングを修正することを含む。従って、修正は、例えばエンティティがより自然にオブジェク又は他のエンティティに到達する又はから離れるようにアニメーションを加速又は減速することを含むことができる。これは、例えばボールをキックする又は別のエンティティにタックルすることを含むことができる。
【００８５】
本発明の第５の態様によれば、コンピュータで実行されるマルチプレーヤスポーツゲームが提供され、このゲームはデータ通信網を介して本発明の上記の態様に従って実行されるアニメーションを備え、各プレーヤは前記ゲーム内の一以上のエンティティを前記通信網を介してクライアントで制御する。
【００８６】
従って、本発明は、多数のプレーヤによってそれらのエンティティをそれらのクライアント及び各エンティティの運動アニメーションを制御するサーバでインターネットを介してプレイされる大規模マルチプレーヤオンライン（ＭＭＯ）ゲームにおいてプレーヤをアニメートするのに用いることができる。
【００８７】
本発明の第６の態様によれば、本発明の第１、第２、第３及び第４の態様のいずれかの方法を実行するように構成された装置が提供される。
【００８８】
本発明の第７の態様によれば、本発明の第１、第２、第３及び第４の態様のいずれかの方法を実行するように構成されたコンピュータソフトウェアが提供される。
【００８９】
本発明の他の特徴及び利点は、添付図面を参照して例示としてのみ以下に与えられる本発明の好適実施例の説明から明らかになる。
【図面の簡単な説明】
【００９０】
【図１】本発明の一実施例によるネットワークゲーム環境のシステム図を示す。
【図２】本発明の一実施例によるゲームのためのデータファイルの作成に含まれるステップを示すフローチャートである。
【図３】本発明の一実施例によるモーションキャプチャデータ編集システムを示す。
【図４】本発明の一実施例によるモーションキャプチャデータの編集に含まれるステップを示すフローチャートである。
【図５】図５ａ及び５ｂは本発明の一実施例によるキーフレームに対するエンティティ向きの計算を示す。
【図６】本発明の一実施例によるサーバの機能要素を示す。
【図７】本発明の一実施例によるクライアントの機能要素を示す。
【図８】本発明の一実施例によるサーバベースのアニメーションデータストレージを示す。
【図９】本発明の一実施例によるクライアントベースのアニメーションデータストレージを示す。
【図１０】本発明の一実施例によるエンティティのアニメーション中にクライアント及びサーバで実行されるステップを示すフローチャートである。
【図１１】図１１ａおよび１１ｂは本発明の一実施例によるアニメーションのキーフレームの変更を示す。
【発明を実施するための形態】
【００９１】
ゲームシステム
図１は本発明の一実施例によるネットワークゲーム環境のシステム図を示す。サーバ１００は通信ネットワーク１０４を経て多数のクライアント１０６，１０８，１１０に接続される。クライアント１０６，１０８，１１０は、パーソナルコンピュータ（ＰＣ），携帯情報端末（ＰＤＡ），ラップトップ又はデータ処理及びゲーム機能を提供しうる他の任意のコンピュータデバイスを含むことができる。サーバ１００及びクライアント１０６，１０８，１１０はデータ記憶装置１０２，１１２，１１４，１１６にそれぞれアクセスでき、これらの記憶装置にはゲーム環境に関するデータが記憶される。これらのデータ記憶装置はサーバ又はクライアントの内部又は外部装置とすることができる。
【００９２】
サーバ１００はマルチプレーヤゲームをネットワークを介して制御する責任を持つ。ゲームはキャラクタやアバタなどのエンティティがクライアント１０６，１０８，１１０のユーザにより制御される仮想世界又は他の仮想環境を含む。クライアント１０６，１０８，１１０のユーザは仮想環境内でそれらのエンティティを動き回らせるためにキーボード、マウス、ジョイスティック又は他の入力デバイスによりエンティティ制御データを入力する。
【００９３】
サーバ１００は、エンティティが参加するゲームのための仮想環境をシミュレートするとともに、エンティティがどのように動いて相互作用すべきかを決定するために各クライアントからの入力データを処理する責任を持つ。このようなシミュレーションはサッカーボール又はバスケットボール試合又は冒険ゲームのようなマルチプレーヤスポーツゲームを含むことができる。
【００９４】
アニメーション編集システム
図２は、本発明の一実施例による運動アニメーションのためのデータファイルの作成に含まれるステップを示すフローチャートである。ステップ２００はモーションキャプチャスタジオにおけるモーションキャプチャデータの生成であり、ここではエンティティがゲーム内で実行し得る運動アニメーションを規定するためにアクタの運動が記録される。モーションキャプチャデータはステップ２０２で３Ｄグラフィックソフトウェアにエクスポートされ、データをコンピュータスクリーン又は他のグラフィックディスプレイデバイスで見ることができる。モーションキャプチャスタジオから受信したモーションキャプチャデータは、Ａｕｔｏｄｅｓｋ社により開発された３dsＭａｘ（登録商標）（３ＤスタジオＭａｘ（登録商法）としても知られている）のようなモーションキャプチャデータファイルを処理できる３Ｄグラフィック機能を有するコンピュータソフトウェアアニメーションで見ることができる。ステップ２０４は本発明によるアニメーションデータを生成するためにモーションキャプチャデータを編集する。モーションキャプチャデータの編集は図３および図４を参照して後に詳細に説明される。編集されたデータは次にステップ２０６においてゲームのプレイに必要な他のゲームデータファイルと照合される。
【００９５】
次に、仮想環境内でエンティティをアニメートするために必要とされるクライアント及びサーバのためのデータファイルを作成するために自動ビルドプロシージャがステップ２０８で使用される。エンティティは、データ通信ネットワークを介してサーバにより制御されプレイされるゲームの間中アニメートされ、多数の各プレーヤはクライアントデバイスを介して一以上のエンティティを制御することができる。ビルドプロシージャの一部分はサポートされるすべてのエンティティ運動に対するアニメーションを規定する単一のデバイスファイルを生成する。スポーツゲームの一例では、このファイルは一以上のアニメーション中のボール、パックなどの動きと関連するデータも含む。ビルドプロシージャは出力データを生成し、この出力データはサーバ及び各クライアントの両方に格納し使用することができる。
【００９６】
図３は本発明の一実施例によるモーションキャプチャデータ編集システムを示す。モーションキャプチャデータ３０２は編集システム３００に入力し、システム３００はモーションキャプチャデータを編集してアニメーションデータファイル３０４を出力として生成する。編集システム３００はモーションキャプチャデータを処理し得る３Ｄグラフィックソフトウェア３０６、例えば上記の３ＤスタジオＭａｘ（登録商標）を含む。モーションキャプチャデータを編集し得るアニメーション編集モジュール３０８は３Ｄグラフィックエディタとインタフェースする。アニメーション編集モジュール３０８は３Ｄグラフィックソフトウェア３０６にプラグインするものとすることができる。エンティティ変化特性抽出器３１０は、モーションキャプチャデータからエンティティ変化特性を抽出するために３Ｄグラフィックソフトウェア３０６及びアニメーション編集モジュール３０８とインタフェースする。エンティティ変化特性は後に詳細に説明される。
【００９７】
運動平滑化
図４は、本発明の一実施例によるモーションキャプチャデータの編集に含まれるステップを示すフローチャートである。編集プロセスは、モーションキャプチャデータを本発明の実施例による運動アニメーションに使用できるアニメーションデータファイルに変換する。アニメーションデータファイルは各エンティティアニメーションに対して複数のキーフレームを含むことができる。アニメーション中の各キーフレームに必要とされるデータはモーションキャプチャデータから直接得る必要はない。代わりに、アニメーション中の一以上のキーフレームのデータは計算することができ、例えば中間キーフレームに必要とされるデータは最初及び最後のキーフレームから以下に記載する平滑化処理により得ることができる。
【００９８】
アニメーションの編集は、モーションキャプチャデータ中の一以上のモーションキャプチャフレームを識別することにより始まる。本例では、最初と最後のモーションキャプチャフレームがステップ４００で識別されるが、任意の他のモーションキャプチャフレーム又は単一のモーションキャプチャフレームを識別することもできる。最初と最後のモーションキャプチャフレーム内のエンティティのポーズ、即ちエンティティの位置及び向きがステップ４０２で識別される。エンティティはステップ４０４で３Ｄグラフィックソフトウェアアニメーション（例えば上記の３ＤスタジオＭａｘ（登録商標））により生成される３Ｄ環境内に置かれる。エンティティは、例えば３Ｄグラフィックソフトウェアにより規定される仮想環境の名目上の原点に置くことができる。エンティティの向きは３Ｄグラフィックソフトウェアにより規定される仮想環境内の名目上の基準方向の向きと一致させることができる。
【００９９】
アニメーション中の最初のキーフレームに対するエンティティの位置及び向きデータはステップ４０６で計算される。最後のキーフレームに対するエンティティの位置及び向きデータはステップ４０８で計算される。アニメーションの最初及び最後のキーフレーム間の一以上の中間キーフレームに対するエンティティの位置及び向きデータはステップ４１０で計算される。中間キーフレームに対するエンティティの位置及び向きデータは、最初及び最後のキーフレームからのエンティティ位置及び向きデータを用いて計算できる。
【０１００】
本発明の実施例では、腰骨の運動と関連するモーションキャプチャデータを処理して、階層的に腰骨より上に位置する新しい平滑化された運動骨の運動と関連するデータを生成する。平滑化された運動骨の運動は仮想環境内の地上のアクタの位置及び向きを表すのに使用される。そして、腰骨の運動よりもむしろ平滑化された運動骨の運動をエンティティの運動を表すのに使用する。
【０１０１】
平滑化された運動骨データが腰骨データから抽出されたとき、修正された腰骨データはそのままである。新しい平滑化された運動骨データと修正された腰骨データの複合効果は、アニメーションの総合外観を保存するために変更されてない元の腰骨データと同じになる。そうでない場合には、エンティティアニメーションは平滑化された運動骨の分離による骨階層の変化のために同じに見えない。
【０１０２】
本発明の実施例によれば、平滑化された運動骨の位置及び向きは３人称パースペクティブビューにリンクされ、このビューにより制御するユーザがエンティティを見ることができる。平滑化された運動骨は仮想空間内を滑らかに動き回るため、腰骨のような他の骨が生じるかく乱運動を生成することなくより自然な３人称パースペクティブビューが提供される。
【０１０３】
各アニメーションに対して平滑化された運動骨の運動に関するデータを含む一つ以上のエンティティ運動の基準ファイルを生成することができる。このエンティティ運動データはエンティティの位置及び向きを規定するデータを含むことができる。
【０１０４】
本発明の一実施例においては、各キーフレームにおける平滑化された運動骨に対するエンティティ位置データは腰骨位置より固定距離下にあるものとして計算され、例えばその高さは当該キーフレームにおける任意の骨の最低位置より固定の小距離下に設定できる。平滑化された運動骨の位置は仮想空間のゼロハイトグランド位置より低くならないように制限できる。
【０１０５】
本発明の一実施例においては、一つ以上のキーフレームにおける平滑化された運動骨の向きと関連するエンティティ向きデータを計算する。平滑化された運動骨は垂直に向き、一般にエンティティに対して前進中に回転できる。各キーフレームに対する平滑化された運動骨の向きは、エンティティを３ＤスタジオＭａｘ（登録商標）などの３Ｄグラフィックソフトウェアにより生成される仮想環境内に位置させることにより計算される。エンティティは仮想環境の名目上の原点に、名目上の基準方向、例えば３ＤスタジオＭａｘ（登録商標）における負のｙ軸がアニメーションの開始ポーズの前方向、即ちアニメーションの最初のキーフレームにおける前方向とみなせるよう位置させることができる。
【０１０６】
特定のポーズに対する前方向は当該ポーズに対する基準ファイルから得ることができる。例えば、「ランアニメーション開始ポーズ」という名称のポーズで開始するランアニメーションを取る。ランアニメーションに対するモーションキャプチャスタジオからのデータはワールド座標の原点に立ち前を向いているアクタで開始するものとみなせる。そして、ランアニメーション開始ポーズで開始するアニメーションの初期フレームは基準フレームとして使用される。従って、腰骨が該当フレームにおいていかなる角度でも、腰骨の開始角度は前方向に対して決定される。
【０１０７】
図５ａ及び５ｂは本発明の一実施例によるキーフレームにおけるエンティティ向きデータの計算を示す。
【０１０８】
アニメーション中の最初のフレームに対して基準方向と腰骨に垂直の方向との間の角度を計算し、アニメーション用の基準ファイルに記憶する。本発明の一実施例によるこの処理は図５ａに示されている。
【０１０９】
アニメーション中の最初のキーフレーム５００はアニメーションの最初のキーフレームにけるエンティティのみなし前方向と一致する基準方向５０６を示す。
【０１１０】
エンティティの腰骨は要素５１０として示され、その向きは方向５０４で規定される。基準方向５０６と腰骨向き方向５０４との間の角度θ1は５０８で示されている。
【０１１１】
同様に、アニメーション中の最後のキーフレームに対して基準方向と腰骨向き方向との間の角度が計算され、アニメーション用の基準ファイルに記憶される。本発明の一実施例によるこの処理は図５ｂに示されている。
【０１１２】
アニメーション中の最後のキーフレーム５０２はアニメーションの最初のキーフレームの基準方向５０６と一致する基準方向５１４を含む。エンティティの腰骨は要素５１８として示され、腰骨はアニメーションの最初のキーフレームにおける腰骨と異なる方向に向いており、この場合には方向５１２である。基準方向５１４と腰骨向き方向５１２との間の角度θ2は５１６で示されている。
【０１１３】
角度θ1及びθ2はアニメーションの最初及び最後のフレームに対するエンティティの平滑化された運動骨のオフセットを規定する。それぞれのオフセットをモーションキャプチャされた腰前方向に加えて平滑化された運動骨の方向、即ちこれらのキーフレームに対するエンティティの向きを与える。
【０１１４】
本発明の一実施例においては、最初及び最後のキーフレーム間の中間キーフレームに対する平滑化された運動骨の向きは最初及び／又は最後のキーフレームにおける平滑化された運動骨の向きから計算される。これは、最初及び最後のキーフレームにおける平滑化された運動骨の向きの間で角度を平均化することにより達成できる。これは、最初及び最後のキーフレームにおける平滑化された運動骨の向きの間で角度の線形補間を行うことにより達成することもできる。
【０１１５】
この処理は、アニメーション中にエンティティの平滑化された運動骨の滑らかな回転を提供する（なお、基準方向で規定される前方向に動くアニメーションに対して回転は与えられない）。
【０１１６】
本発明の実施例によれば、エンティティのアニメーション中、クライアントでユーザが見る３人称パースペクティブビュー又は「カメラアングル」は平滑化された運動骨の運動にリンクされる。従って、ランアニメーションの例では、カメラはエンティティの背後を滑らかに前方へ移動し、不所望の左右の揺動を生じない。腰骨自体はそれでもまだアニメーション中自然に左右に揺動するため、エンティティのアニメーションはリアルなままとなる。
【０１１７】
キーフレーム内の平滑化された運動骨の位置及び向きを決定したら、マトリックス乗算のような変換を用いて修正腰位置を決定する。各キーフレームに対する平滑化された運動骨データ及び各キーフレームに対する修正腰骨データをアニメーションデータファイル（図３の３０４）に書き込み、編集プロセスを完了する。各エンティティの運動アニメーション又は一緒に単一のアニメーションデータファイルにグループ化された複数のアニメーションに対して別個のアニメーションデータファイルを生成することができる。
【０１１８】
骨階層内の修正されない骨と関連するデータ又はアニメーション内のオブジェクトの運動と関連するデータ、例えばボールや必要に応じ他の物体の運動を規定するデータを含む他のデータをアニメーションデータに付加することができる。このような他の物体は、アニメーション中でエンティティが手に持ったり、投げたり、落としたする剣や石などの武器又はバッグなどの物品を含むことができ、それらの運動もモーションキャプチャスタジオでアクタによりキャプチャすることができる。
【０１１９】
ゲームデータ
本発明の一実施例では、一つ以上のサーバがエンティティのアニメーションを一つ以上のクライアント上で制御する。このようなエンティティアニメーションを実行するために、サーバ及びクライアントは所定の機能要素を備え、所定のデータへのアクセスを必要とし、これらについて以下に図６−９を参照して説明する。
【０１２０】
図６は、本発明の一実施例によるサーバ機能要素を示す。サーバ６００は、ネットワークを介して多数のクライアント間でプレイされるゲームを制御するゲーム制御モジュール６１２を含む。ゲーム制御モーション６１２はクライアントからネットワーク及び入力／出力インタフェース６１６を介して受信したユーザ制御入力を処理する。各エンティティの所望の運動及びシミュレートされる仮想環境を支配する多数のルールに基づいて、ゲーム制御モーション６１２は、各エンティティを仮想空間内でどのようにアニメートすべきかを決定し、適切な制御信号を入力／出力インタフェース６１６を介して各エンティティに送る。
【０１２１】
ゲーム制御モーション６１２が仮想環境をシミュレートするルールは特定のアプリケーションに依存する。サッカー試合の例では、ルールは各プレーヤの技量、経験又は身体能力に関連するルール又はどのプレーヤがタックルに成功又は失敗したか、またどのプレーヤが最初にボールに到達したかなどを決定するルールを含むことができる。このようなルールには確率関数を用いることができる。他のルールはピッチのサイズ、ゴールの位置、ゲームの長さ又は各チームのプレーヤの数などに関係する。ゲーム制御ルールはゲーム制御モジュール６１２がアクセスできるゲーム制御ルールデータベース６０４に格納される。
【０１２２】
サーバ６００は、各クライアント上のエンティティに対して適切なアニメーションを選択するアニメーション選択モジュール６１０を含む。アニメーション選択モジュール６１０は、アニメーション選択ルールデータベース６０２に格納されたアニメーション選択ルールに従ってアニメーションを選択する。サーバ６００は、仮想環境内における各エンティティの運動、例えば位置及び向き、をトラッキングするエンティティトラッキングモジュール６１４を含む。サーバ６００は、エンティティトラッキングデータを格納するエンティティトラッキングデータデータベース６０６を含む。
【０１２３】
サーバ６００は、アニメーションの最中におけるエンティティの位置及び向きの変化のようなエンティティ変化特性を格納するエンティティ変化特性データベース６０８も含む。エンティティ変化特性データベース６０８の内容の詳細は以下の図７の記載を参照されたい。
【０１２４】
図７は、本発明による一実施例によるサーバベースのアニメーションデータストレージを示す。サーバベースのアニメーションは図６に示すデータベース６０８に格納され、このデータベースはサーバ自体に位置させることができ、またサーバによりリモートアクセス可能にすることもできる。
【０１２５】
表７００内の「アニメーション識別子」の見出しを有する第１列は多数のアニメーションを識別するデータを含む。第２列７１０、第３列７１２及び第４列７１４はアニメーションに関連するエンティティ変化特性を含む。エンティティ変化特性はアニメーション中に変化する所定の特性、例えばエンティティの位置、向き及びタイミングに関係する。変化特性の使用により、エンティティがアニメーション中にどのように変化するかに関する情報、例えばアニメーション中、特にアニメーション終了時にエンティティがどこにあるか及び／又はどっちを向いているかに関する情報をサーバに与える。
【０１２６】
「Δ（ｘ、ｙ、ｚ）」の見出しを有する第２列７１０は、仮想環境内におけるエンティティの位置のｘ，ｙ及びｚ方向（左右、前後及び上下）の変化（記号Δで示される）に関するアニメーションのエンティティ変化特性を含む。表に与えられるｘ、ｙ、ｚの値は仮想環境における名目上の距離単位又はメトリックであり、適度の距離精度を与える。「Δ（θ）」の見出しを有する第３の列７１２は、仮想環境内におけるエンティティの向きの変化に関するアニメーションのエンティティ変化特性を含む。表に与えられるθの値は仮想環境における名目上の角度単位又はメトリックであり、適度の角度精度（この場合には度）を与える。「Δ（ｔ）」の見出しを有する第４列は、仮想環境内におけるエンティティのタイミング変化に関するアニメーションのエンティティ変化特性を含む。表に与えられるｔの値は仮想環境における名目上の時間単位又はメトリックであり、適度の時間制度（この場合には秒）を与える。
【０１２７】
代表的な表７００には、アニメーション識別子Ａ１及びＡ２を有する２つのアニメーションのみが含まれるが、本発明の実施例ではもっと多くのアニメーション７０８が存在し得る。表７００の第２行７０４は、ｘ方向に１、ｙ方向に２及びｚ方向に１の位置変化、４５°の向き変化、及び３秒のタイミング変化を有するアニメーションＡ１含む。表７００の第３行７０６は、ｘ方向に２、ｙ方向に５及びｚ方向に０の位置変化、９０°の向き変化、及び４秒のタイミング変化を有するアニメーションＡ２を含む。
【０１２８】
図８は本発明の一実施例によるクライアント機能要素を示す。クライアント８００は、サーバ上のゲーム制御モジュール６１２により制御されないゲームの局面を制御するゲーム制御モジュール８１０を含む。クライアントゲーム制御ルールはゲーム制御モジュール８１０がアクセスし得るゲーム制御ルールデータベース８０２に格納される。
【０１２９】
クライアント８００は、エンティティ変化特性を格納するエンティティ変化特性データベース８０６も含む。エンティティ変化特性データベース８０６の内容の詳細は以下の図９の説明を参照されたい。
【０１３０】
クライアント８００は、仮想環境内におけるクライアントと関連する一以上のエンティティの運動、例えば位置及び方向、をトラッキングするエンティティトラッキングモジュール８１２を含む。クライアント８００はエンティティトラッキングデータを格納するエンティティトラッキングデータベース８０４を含む。
【０１３１】
クライアント８００は、仮想環境に３Ｄグラフィックをレンダリングする３Ｄグラフィックプロセッサ８０８を含む。クライアント８００は、仮想環境のレイアウト、構造及び操作を規定する仮想環境エンジン８１４を含む。これは、例えばタッチライン、コーナフラッグ、広告板、ゴールポストなどのピッチの外観及び雰囲気を規定することを含み、また各エンティティ及びオブジェクを関連するアニメーションデータファイルに従ってその空間内でどのようにアニメートすべきかを規定することを含む。
【０１３２】
図９は本発明の一実施例によるクライアントベースのアニメーションデータストレージを示す。そのデータは図８に示すデータベース８０６に格納することができ、このデータベースはクライアント自体に位置させることができ、またクライアントによりリモートアクセス可能にすることもできる。
【０１３３】
表９００は、図７の表７００に示されるサーバに格納されるデータとほぼ同じデータを含み、従って同じ参照番号を使用している。しかし、表９００は、仮想世界内にエンティティをアニメートするために使用する実際のデータを含むアニメーションデータファイルを含む追加の列９１６を備える。これらのアニメーションデータファイルはサーバに格納する必要はないが、サーバはどのアニメーションが所望のエンティティ運動の各々に対して適切であるかを決定するために各アニメーションに対するエンティティ変化特性の知識を持つことができる。
【０１３４】
本発明の一実施例では、クライアントはサーバに格納されたエンティティ変化特性のコピーを格納する。この場合には、サーバはクライアントに対してアニメーションを識別するだけでよく、クライアントは関連するアニメーションデータファイル（列９１６）及びその対応するエンティティ変化特性（９１０，９１２，９１４）ルックアップし、それに応じてエンティティを仮想環境内でアニメートすることができる。ここで、クライアントは前のアニメーションにより暗示される終了位置及び終了時間から一つのアニメーションの開始位置（場所及び方向）及び開始時間を推測する。これらの終了位置及び終了時間は選択されたアニメーションに対するエンティティ変化特性に基づいて計算され、各エンティティに対して直前に格納されたトラッキングデータに供給される。
【０１３５】
本発明の代替実施例では、いつどこからアニメーションを仮想環境内でアニメートすべきかを仮想環境エンジン８１４に命令するために、アニメーションに対する開始位置（場所及び方向）及び開始時間の形の開始特性がサーバからクライアントへ送られる。
【０１３６】
本発明の他の実施例では、クライアントはアニメーションデータファイル及び対応するアニメーション識別子を格納するだけでよい。この例では、サーバは、クライアントで仮想環境内にエンティティをアニメートするのに必要とされるエンティティ変化特性をクライアントに通知し、このようなデータをクライアントに予め格納する必要なない。この場合、各エンティティのトラッキングデータはエンティティ変化特性をクライアントに格納する実施例において上述したように計算することができる。
【０１３７】
本発明のこれらのすべての実施例では、サーバは、仮想環境内でエンティティをアニメートするためにどのアニメーション又は一連のアニメーションを使用すべきかをクライアントに少なくとも命令する、例えば一以上のデータパケットの形の間欠的なメッセージを、必要に応じ開始特性及び／又はエンティティ変化特性と一緒に送る。このようなメッセージは規則的な時間インターバルで、又はサーバが必要と判断するとき、又は各クライアントからの更新要求に応答して送ることができる。
【０１３８】
エンティティのトラッキングがクライアントでエンティティ変化特性を用いて計算に基づいて実行される上述の実施例では、開始特性を含むメッセージも比較的長いインターバル（アニメーションメッセージ間のインターバルに比較して）で送ることができる。このようなメッセージはネットワークデータ伝送において起こり得る丸め誤差の影響を低減するのに役立ち、さもなければ仮想環境のサーバシミュレーションとクライアントシミュレーションとの不一致を生じ得る。
【０１３９】
ゲームプレイ
図１０は、本発明の一実施例による仮想環境内におけるエンティティのアニメーション中にクライアント及びサーバで実行されるステップを示すフローチャートである。
【０１４０】
サーバベースのゲームデータはステップ１０００で初期化される。これは、所定のデータ、例えばゲーム用の制御データ及びエンティティトラッキングデータなど、をサーバのランダムアクセスメモリ（ＲＡＭ）にローディングすることを含むことができる。
【０１４１】
クライアントベースのゲームデータはステップ１００２で初期化される。同様に、これも、所定のデータをクライアントのランダムアクセスメモリ（ＲＡＭ）にローディングすることを含むことができる。
【０１４２】
ユーザが仮想環境内でエンティティを動かしたいとき、例えばネットワーク上でゲームをプレイしたいとき、ステップ１００４に示すように、クライアントはユーザ入力をそのクライアントデバイスで供給してそのエンティティが何をすべきかを指示する。ステップ１００６で示すように、ユーザ入力を考慮して仮想環境内におけるエンティティの運動を追跡するためにトラッキングデータがクライアントで処理される。
【０１４３】
この情報は、ステップ１００８において、一以上のエンティティ制御コマンドの形で、サーバにネットワーク（破線１０２４で示されている）を介してサーバに送信される。サーバはステップ１０１０においてエンティティ制御データを受信し、この制御データを解釈し、ステップ１０１２において対応するエンティティ運動アニメーションを選択する。これは、２以上のクライアントからエンティティ制御データを受信し、それに応じて各エンティティに対するエンティティ運動アニメーションを選択することを含むことができる。これは、クライアント上のアニメーションのために単一クライアントに対して２つ以上のアニメーションを順に選択することも含むことができる。
【０１４４】
サーバが各クライアントにどのアニメーションをプレイさせるかを選択する方法は、シミュレートする特定の仮想環境と関連する複数のルールにより決定することができる。このようなルールの例は図６のゲーム制御モジュール６１２に関連して上述されている。
【０１４５】
クライアントから受信されたデータから、サーバはエンティティに対するユーザの所望の運動の知識を得る。サーバはエンティティをアニメートするのに使用可能なアニメーションの総合セットの知識も有する。この情報を用いて、サーバは所望のエンティティ運動に適切なアニメーション、又は必要に応じ、一緒につなぎ合わせすことができる一連のアニメーションを選択する。
【０１４６】
サーバは、エンティティの位置及び方向と関連するエンティティトラッキングデータ、例えばエンティティの平滑化された運動骨の位置及び／又は方向を用いてアニメーションを選択することもできる。このようなエンティティトラッキングデータはサーバに格納することができ、またクライアントに格納することもできる。
【０１４７】
アニメーションデータファイルはサーバ自体に格納する必要はなく、各クライアントにのみ格納される。各アニメーションは単一の整数識別子、例えば図９の最初の２列に示される全セットのアニメーションの表内のインデックスで識別することができる。サーバは、アニメーションデータ自体ではなく、アニメーションを識別するデータ及び他の関連パラメータのみを送ることができる。これは、ネットワークのデータフローを低減しつつエンティティのアニメーションを可能にする。これは、サーバとクライアントとの間のデータフローが多すぎる場合に生じるレイテンシー及び輻輳問題を避けるのに役立つ。サーバは、エンティティの平滑化された運動位置の運動の正確な表現を有し、この表現は各エンティティで表されるものと同じにすることができる。これは、すべてのクライアントが例えば自分及び他のエンティティのアニメーションを含むネットワークゲームにおけるアニメーションの進展の一貫したビューを有するようにするのに役立つ。
【０１４８】
選択されたアニメーションと関連するデータは次にステップ１０１４においてクライアントへネットワーク１０２４を介して送信される。よって、サーバは、どのアニメーション又はアニメーションのシーケンスを実行すべきかを、例えばゲーム開始時間、アニメーション開始時間、アニメーション開始時間における初期エンティティ位置（場所及び方向）及びアニメーション識別データで規定して、各クライアントに通知する。
【０１４９】
サーバはステップ１０１６において選択されたアニメーションに関連する一以上のエンティティ変化特性を検索し、ステップ１０８においてこれに対応してエンティティトラッキングデータを更新する。サーバは次にステップ１０１０に戻り、更なるエンティティ制御データの受信を待つ。
【０１５０】
サーバにより選択された運動アニメーションと関連するデータはステップ１０２０においてクライアントで受信され、ステップ１０２２においてこのデータはクライアントに格納された対応するアニメーションデータファイルに従ってエンティティを仮想環境内でアニメートするために使用される。
【０１５１】
クライアントは、ステップ１０２６において、選択されたアニメーションと関連するエンティティ変化特性を処理し、ステップ１０２８において、それに応じてエンティティトラッキングデータを更新する。クライアントはステップ１００４に戻り、更なるユーザ入力の受信を待つ。
【０１５２】
本発明の実施例では、ステップ１０２６の処理ステップは、サーバから受信したエンティティ変化特性を処理すること又はクライアントに格納されたエンティティ変化特性を処理することを含むことができる。同様に、ステップ１０２８のエンティティトラッキングデータの更新はクライアントに格納されたエンティティトラッキングデータを更新すること又はサーバから受信したエンティティトラッキングデータを更新することを含むことができる。
【０１５３】
ボールゲームにおいてエンティティがアニメートされる場合には、プレーヤの運動は各アニメーションに対する平滑化された運動骨と関連するデータから決定することができる。アニメーションの全部又は一部の間エンティティがボールのような物体をコントロールしている場合、例えば足でボールをドリブルしている場合、ボールの運動は適切なボールアニメーションデータから決定することができる。また、ボールがプレーヤのコントロール下にない場合、ボールの運動は３Ｄ仮想環境の場合には質量の運動を規定する物理的法則を用いてシミュレートすることができ、アニメーションデータを直接使用する必要はない。
【０１５４】
アニメーションの修正
仮想環境内のエンティティを本発明の一実施例に従ってアニメートする際、クライアントでエンティティをアニメートする前にアニメーションデータを修正する必要があり得る。この修正は、仮想環境内の別のエンティティのアニメーションと配列するためにエンティティの運動がアニメーションにわたり滑らかになるように実行することができ、またエンティティがボールなどの物体にもっとリアルに近づくように実行することができる。
【０１５５】
このような修正はアニメーションにおいてエンティティが動く距離の修正を含むことができる。この距離修正はエンティティの前方向又は横方向水平距離又は垂直距離を含むことができ、垂直距離の修正はエンティティがジャンプしてサッカーボールなどをヘッディングするようにアニメートする際に起こる。
【０１５６】
このような修正はアニメーション中のエンティティの動作のタイミングの修正を含むことができ、例えばエンティティをスピードアップ又はスローダウンしてアニメーションが仮想環境内で別のエンティティをタックルできる位置に到達するエンティティなどを示すことができる。
【０１５７】
このような修正はアニメーション中のエンティティが回転する角度の修正を含むことができる。０°〜３６０°のすべての角度に対するエンティティの回転と関連するデータを格納することは実用的でないため、クライアントは毎４５°の回転角度のアニメーションデータだけを格納することができる。ユーザ制御入力が例えば３５°の回転を指示する場合、サーバにより例えば４５°の回転を含む適切なアニメーションを選択し、１０度の回転修正を加えて４５°回転を３５°回転に修正することができる。
【０１５８】
エンティティ運動アニメーションを選択するとき（図１０のステップ１０１２）、サーバはアニメーション修正が必要であることを判断することができる。このような場合には、サーバは修正識別データ及びアニメーション修正に必要なパラメータを選択された運動アニメーションと関連するデータと一緒にクライアントに送る（図１のステップ１０１４）。
【０１５９】
格納されたアニメーションデータは複数のエンティティ運動アニメーションを含むことができ、各アニメーションは関連するエンティティ変化特性を有する。このような特性は例えばエンティティの位置又は向きがアニメーションの最中にどのように変化するかを規定する。別の例として、このような特性はエンティティの一以上の体部分の位置がアニメーションの最中にどのように変化するかを規定する。
【０１６０】
ユーザがエンティティ制御データを入力するとき、複数のエンティティ運動アニメーションから適切なエンティティ運動アニメーションを選択することができる。しかし、選択されたエンティティアニメーションは所望のエンティティ運動に十分に一致しないことがある。このような場合には、選択されたエンティティアニメーションは、エンティティ変化特性が所望のエンティティ動作に十分に適合するように修正することができる。
【０１６１】
回転修正はアニメーション全体にわたり線形に加えることができる。しかし、原回転の大部分はアニメーション中の一部分のキーフレームに集中させることができる。多くの場合、これは特にボールがエンティティにコントロールされ、複雑な操作が含まれるかもしれない場合とすることができる。
【０１６２】
回転修正をアニメーション全体にわたり加える場合、クライアントはエンティティが最初に左に回転し次に右に回転して戻ることを認識することができるが、これは望ましくない。
【０１６３】
それ故、回転の大部分が起こるアニメーションの部分を識別し、このタイミングデータをアニメーションと一緒に記録するのが望ましい。これはモーションキャプチャデータの編集（図２のステップ２０４）中に実行することができる。このプロセス部分は人間オペレータが３ｄｓＭａｘ（登録商標）のようなソフトウェアを用いて実行して回転が開始し終了するアニメーション中の時間オフセットを識別することができ、またこのプロセス部分はコンピュータ実行イメージ処理技術を用いて半又は全自動的に実行することもできる。
【０１６４】
このアニメーション部分を識別するタイミングデータは、編集されたアニメーションデータが一緒に照合されるときに（図２のステップ２０６）付加することができる。自動ビルドプロシージャ中に、タイミングデータはサーバ及びクライアント双方が利用し得る出力ファイルに格納することもできる。
【０１６５】
次に回転修正をアニメーションの識別部分にわたり加えることができる。回転修正は例えばアニメーションの識別部分にわたり線形に加えることができる。
【０１６６】
回転角度の修正は地上における平滑化された運動骨の最終変位も修正する可能性が高い。それ故、回転角度修正が加えられるとき平滑化された運動骨の変位を修正することも望ましい。
【０１６７】
このような変位は、すべての回転修正が回転開始時に加えられるものと仮定することによって、回転修正の開始後の任意の時間に表すことができる。これは以下の擬似コードで記述することができる。
【０１６８】
クランプ関数は、クランプ（ｘ，ａ，ｂ）が最近値をａ≦ｘ≦ｂとなるようなｘに戻すものと定義する。
【０１６９】
アニメーションの開始からの時間ｔにおける平滑化された運動骨の位置（場所及び方向）はＴ(t)と定義する。位置は、典型的には４×４マトリックスで表される変換の形の数学的表現として与えることができる。
【０１７０】
エンティティの垂直軸を中心とする角度θの回転は変換Ｒ(θ)として示す。
【０１７１】
アニメーション中の回転期間の開始及び終了はそれぞれ時間オフセットｔ0及びｔ1として示す。
【０１７２】
アニメーション中の時間ｔにおける修正角度(θ)を有する修正された平滑化運動骨位置Ｔmod(t)を表す変換は次のように構成する。
mod-_time = clamp(t, t0, t1)
mod_angle =θ*(mod_time−t0)/( t1−t０)
Tmod(t)  =T(t０)*Tz(mod_angle)*inverse(T(t０))*T(t)
【０１７３】
図１１ａ及び１１ｂは本発明の一実施例によるアニメーションの水平修正を示す。
【０１７４】
アニメーション中のエンティティの水平移動を修正する必要があるかもしれない。これは、例えばエンティティが静止しているボールに向かって走っている場合に起こる。エンティティがボールをコントロールするためには、多数のランアニメーションサイクルがプレイされた後にボールコントロールアニメーションがプレイされる必要がある。ボールコントロールアニメーションは、エンティティの足が丁度よいタイミング及び位置でボールに接触するような位置から開始するのが望ましい。従って、一般に、エンティティが所望の位置に到達するようにランアニメーションを短くしたり長くしたりする必要がある。
【０１７５】
図１１ａはボール１１００に接近するエンティティのステップを描写するアニメーションの３つの無修正のキーフレームのシーケンスを示す。ステップはエンティティの足が仮想環境の地面に接地する点である。この図に示される３つのキーフレームの間に、プレーヤの足が他の位置にある他のキーフレームが存在しうるが、これらのキーフレームはこの例では示されていない。
【０１７６】
第１キーフレーム１１２８では、エンティティの左足１１０２がアイテム１１０４と一致している。第２キーフレーム１１３０では、エンティティの右足１１０６がアイテム１１０８と一致している。第３キーフレーム１１３２では、エンティティの左足１１１０がアイテム１１１２と一致する。
【０１７７】
ボールが右足得意の人によりキックされる場合には、その人は通常ボールへの助走を、ボールを右足でキックする際に左足の中心がボールの左側にボールの中心とほぼ一致する位置に接地するように調整する。
【０１７８】
図１１ａにおいて、サーバが、ボールのキックをキーフレーム３（又は次のキーフレーム）で開始すべきであることを計算した場合、アニメーションはリアルに見えない。これは、左足１１１０の中心１１１４がボール１１００の中心１１１６と一致しないためである。ボール１１００の中心１１１６はエンティティの左足の中心から距離１１１８だけ離れている。
【０１７９】
従って、ボールキックの前のキーフレーム内のエンティティのステップを、エンティティがボールに近づき足をアニメーションの第３キーフレーム１１３２においてボールと整列して接地するように調整するのが望ましい。
【０１８０】
従って、サーバは所望のシーケンスを達成するためにはアニメーション移動をどのくらい調整すべきかを決定する。次に、この移動量をクライアントに知らせ、クライアントはこれに従ってアニメーションを処理する。この移動量は、任意の所定のアニメーションに対して妥当な限界値内に制限してアニメーションが許容可能な概観及び雰囲気を有するにすべきである。
【０１８１】
図１１ｂは所要の修正をエンティティのステップに加えるとアニメーションはどのように見えるかを示す。
【０１８２】
第１キーフレーム１１２８では、エンティティの左足１１０２が今やアイテム１１０４より距離１１２０だけ先に位置するように修正される。第２キーフレーム１１３０では、エンティティの右足１１０６が今やアイテム１１０８より距離１１２２だけ先に位置するように修正される。第３キーフレーム１１３２では、エンティティの左足１１１０が今やアイテム１１１２より距離１１２４だけ先に位置するように修正される。この修正は、ボールがキックされるとき又はキックされようとしているときにエンティティの左足１１１０とボール１１００の中心１１２６が今や整列するという所望の効果を生じる。
【０１８３】
他のアクションがなければ、修正されたアニメーションをプレイするとき、エンティティの足はグランド上を滑るように見える。例えば、ランアニメーションがプレーヤを１．５メートルだけ前方に自然に移動させるものとし、その前方移動を０．５メートルだけ短くし、０．２５メートルの横方向移動を付加する修正が加えられるものとする。プレーヤの足は修正が加えられるにつれてグランド上を滑るように見える。
【０１８４】
この問題は、各足がグランドに接地するアニメーション期間を識別することによって解決することができる。この場合には、逆脚運動学（インバースレッグキネマティクス）を用いてエンティティの脚運動を、各足が同じ期間だけ接地したままになるように調整することができる。これは、エンティティの大腿部、ひざ、ふくらはぎ、足首、足などの脚部分を修正された足配置に対して自然に見えるポーズになるように修正することを含むことができる。このような逆脚運動学補償を実行するために使用される数学及びアルゴリズムの詳細は当業者に明らかであり、ここには詳細に記載しない。
【０１８５】
サーバは、アニメーション修正を一以上のエンティティに関するアニメーション又はアニメーションのシーケンスに加えるべきであることを計算したら、この修正と関連するデータを関連するクライアントに送る。次にこの修正を、サーバあるいはクライアントの平滑化された運動骨の運動に対応するエンティティトラッキングデータに加えることができる。
【０１８６】
上述の実施例は本発明の説明のための例として理解されたい。本発明の他の実施例も想定される。
【０１８７】
以上の記載は、アニメーションの最初及び最終キーフレームに対する平滑化された運動骨データを計算し、このデータを用いて中間キーフレームに対する平滑化された運動骨データを計算することを説明している。代替実施例では、アニメーションの最初及び最終キーフレーム以外のキーフレーム、例えば中間キーフレームに対する平滑化運動骨データを最初に計算し、このデータを用いて最初及び最終キーフレームを含む他のキーフレームに対する平滑化運動骨データを生成してよい。他の代替実施例では、平滑化を実行せず、平滑化運動骨データはすべてのキーフレームに対して個別に計算してよい。
【０１８８】
模範的な図１１ａ及び図１１ｂに示される移動修正はアニメーション中の３つより少ない又は多いキーフレームにわたり、あるいはアニメーション全体にわたり適用することができる。移動修正はこれらのキーフレームにわたり線形に又は非線形に加えていくつかのキーフレームにおいて他のキーフレームよりも大きな移動を生成することができる。移動修正には、図１１ａ及び図１１ｂのアイテム１１０４,１１０８及び１１１２に垂直の方向のエンティティの移動を修正することも含むことができる。
【０１８９】
クライアント−サーバベース構成について記載された本発明の実施例は他の構成に実現することもでき、その逆も可能である。
【０１９０】
いずれか一つの実施例に記載されたどの特徴も単独で又は記載された他の特徴と組み合わせて使用することがで、また他の任意の実施例又はそれらの任意の組み合わせの一つ以上の特徴と組み合わせて使用することもできると理解されたい。更に、上記されてない等価物及び変更例も添付の特許請求の範囲に特定されている本発明の範囲から離れることなく使用することができる。
【図１】
2011508290.tif 000003
【図２】
2011508290.tif 000004
【図３】
2011508290.tif 000005
【図４】
2011508290.tif 000006
【図５】
2011508290.tif 000007
【図６】
2011508290.tif 000008
【図７】
2011508290.tif 000009
【図８】
2011508290.tif 000010
【図９】
2011508290.tif 000011
【図１０】
2011508290.tif 000012
【図１１】
2011508290.tif 000013
【国際調査報告】
2011508290.tif 000014
2011508290.tif 000015
2011508290.tif 000016
2011508290.tif 000017
2011508290.tif 000018