(58)【調査した分野】(Int.Cl.,DB名)
前記第1従属グラフの第1組のノードは、前記第1制御要素の状態に基づき前記ゲームの実行中に表示される、前記第1構造要素及び前記第1オブジェクトの1つ以上の他の構造要素の状態を記述する、請求項1に記載のシステム。
前記ゲームエンジンは、前記第1オブジェクトの1つ以上の他の構造要素に関係して前記第1構造要素の向きを表すデータを発生させるように構成され、前記第1構造要素及び前記1つ以上の他の構造要素は、前記ゲーム内に提示される前記第1オブジェクトの少なくとも一部分の構造を定義する、請求項1に記載のシステム。
前記第1従属グラフの第1記述は、前記第1従属グラフの第1ノードを記憶する第1データ構造を備え、前記第1ノードは、前記第1従属グラフに関する第1オブジェクトの第1構造要素の第1の空間的又は時間的値を表し、前記第1従属グラフの第1記述は、前記第1従属グラフの第2ノードを記憶する第2データ構造を更に備え、前記第2ノードは、前記第1の時間的又は空間的値と、前記第1従属グラフに関する第1オブジェクトの第1構造要素の第2の時間的又は空間的値との間の関係を表し、前記第2データ構造は前記第1データ構造とは異なる、請求項1に記載のシステム。
前記複数のプロセッサのそれぞれは、前記第1従属グラフの少なくとも1つのサブネットワークのノードを、前記サブネットワーク内にない前記第1従属グラフにおけるノードの評価とは独立して評価するように構成され、前記サブネットワークにおけるノードは、前記第1構造要素及び前記第1オブジェクトの異なる構造要素の経時的な動きを記述する、請求項7に記載のシステム。
ゲームを実行するコンピュータ実装方法であって、前記方法は、1つ以上の物理プロセッサを備えるゲームエンジン及び不揮発性メモリを含むコンピュータシステムにおいて実施され、前記ゲームは第1オブジェクト及び第2オブジェクトを含み、前記第1オブジェクトは第1制御要素及び第1構造要素に関連付けられ、前記第2オブジェクトは第2制御要素及び第2構造要素に関連付けられ、前記方法は、
第1源アニメーション曲線データを識別する工程であって、前記第1源アニメーション曲線データは前記第1オブジェクトの第1アニメーション曲線を表し、前記第1源アニメーション曲線データは前記第1制御要素の状態の経時的な変化を記述し、前記第1制御要素の状態の変化は前記ゲーム内の第1オブジェクトの第1構造要素の位置及び/又は向きに影響し、前記第1オブジェクトの第1構造要素は前記第1オブジェクトの模擬された物理的な部分である、工程と、
第2源アニメーション曲線データを識別する工程であって、前記第2源アニメーション曲線データは前記第2オブジェクトの第2アニメーション曲線を表し、前記第2オブジェクトは、個別で、離散的で、且つ前記ゲーム内の第1オブジェクトに接続されておらず、前記第2源アニメーション曲線データは第2制御要素の第2状態の経時的な変化を記述する、工程と、
第1従属グラフの第1記述を識別する工程であって、前記第1従属グラフは前記第1源アニメーション曲線データについての変換を定義し、前記第1従属グラフは前記第1オブジェクトの階層的に相関する構造要素を記述する第1組のノードを含み、前記第1組のノードは、前記第1オブジェクトの構造要素が前記第1オブジェクトの他の構造要素に対してどのように動くかを記述する、前記不揮発性メモリ内に記憶された第1組のプロセッサ実行可能な指示を備える、工程と、
第2従属グラフの第2記述を識別する工程であって、前記第2従属グラフは前記第2源アニメーション曲線データについての変換を定義し、前記第2従属グラフは前記第2オブジェクトの階層的に相関する構造要素を記述する第2組のノードを含み、前記第2組のノードは、前記第2オブジェクトの構造要素が前記第2オブジェクトの他の構造要素に対してどのように動くかを記述する、前記不揮発性メモリ内に記憶された第2組のプロセッサ実行可能な指示を備える、工程と、
前記第1従属グラフ及び前記第2従属グラフに基づいて、前記第1オブジェクト及び前記第2オブジェクトの間の接触の模擬の提示を実現する工程であって、模擬された接触は、前記第1オブジェクトの第1構造要素及び前記第2オブジェクトの第2構造要素の、前記ゲーム内での動きの模擬を含み、前記第1構造要素及び前記第2構造要素の動きの模擬は、前記不揮発性メモリ内に記憶されたプロセッサ実行可能な指示に対応する機能ノードにより実行され、前記機能ノードは、グラフィカルプログラム内のアイコンであり、それにより、前記ゲームエンジンによる前記機能ノードに関連するグラフィカルプログラムの実行は、前記ゲームエンジンに、前記第1組のノードを使う前記第1構造要素の動きの第1模擬、及び前記第2組のノードを使う前記第2構造要素の動きの第2模擬の、前記ゲーム内での提示を実現させる、工程と、
を備える、方法。
前記第1制御要素の現在の状態に基づいて前記第1従属グラフに関する第1オブジェクトを表示し、前記第2制御要素の現在の状態に基づいて前記第2従属グラフに関する第2オブジェクトを表示する工程をさらに備える、請求項9に記載の方法。
前記第1オブジェクトを表示する工程は、前記第1従属グラフのノードにより記述された複数の構造要素の全体に網目又は皮膚をアニメーション化することをさらに備える、請求項10に記載の方法。
前記第1従属グラフの第1組のノードにおけるノードのうち1つにおけるカウンタが前記第1従属グラフの第1組のノードにおけるノードのうち1つの親におけるカウンタと同等ではないことを定める工程と、前記第1従属グラフの第1組のノードにおけるノードのうち1つを更新するよう要求する工程と、をさらに備える、請求項10に記載の方法。
前記第1従属グラフの第1記述を評価することにより派生するデータに少なくとも部分的に基づいて、前記第1従属グラフに関する第1オブジェクトの少なくとも一部分をアニメーション化する工程と、
前記第1従属グラフを評価する工程に続く切り替え事象を識別する工程と、
前記第2従属グラフの第2記述を評価することにより派生するデータに少なくとも部分的に基づいて、前記第1従属グラフに関する第1オブジェクトの少なくとも一部分をアニメーション化する工程であって、前記第2従属グラフの第2記述を評価することは前記切り替え事象を識別する工程に続く、工程と、
をさらに備える、請求項9に記載の方法。
2つの源アニメーション曲線を組み合わせる工程であって、前記第1従属グラフの評価は組み合わされた源アニメーション曲線に基づく、工程、をさらに備える、請求項9に記載の方法。
前記第1源アニメーション曲線データを使って源計算機上にアニメーション化された時の第1オブジェクトの動きと比較して、動きの損失を全く伴わずにオブジェクトをアニメーション化する工程をさらに備える、請求項9に記載の方法。
【発明を実施するための形態】
【0009】
以下の詳細な記載は特定の例及び実施形態に関するものである。しかし、本発明の構造及び動作は、ここに記載された例及び実施形態に限定されない。加えて、このような例や実施形態及びこれに関して記載された態様を実施するための多くの異なる方法がある。ここで開示されたいずれの具体的構造および/または機能も単に代表的なものであることは明らかである。当業者は、開示された態様を種々の方法で省略、分割、又は組み合わせてよいことを理解するであろう。例えば、ここに記載される態様のひとつ以上に加え又はそれ以外に他の構造、機能性、又は構造及び機能性を使って装置が実施されてよいし、方法が実行されてよい。
【0010】
ゲーム機のユーザは、より複雑なゲームプレイ及びこのようなゲームプレイに関連付けられたより複雑なグラフィックスを期待するようになった。ゲームはもはや各画面の最後にゴールがある2次元風景ではなく、むしろ多くの場合、架空の世界や宇宙全体を表したり入り組んだプロットに関連付けられた3次元風景である。多くのゲームでは、ユーザへの視覚的な衝撃が、ゲームの他の側面と同様に重要であり、ユーザに関心を起こしプロットの説明において支援がなされる。より複雑なグラフィックスによって、ゲーム内での相互作用がより詳細になる。
【0011】
ゲーム機のユーザからの、改善したゲームグラフィックスへの高まる期待が、グラフィックスをデザイン作成するアニメータにかかる責任も同様に高めた。アニメータは、グラフィックスが色彩豊か及び視覚的に刺激的であるよう保証しなければならず、また以前はゲーム機を使ってアニメーション化するのが不可能であった微細な部分を含まなければならい。加えて、ユーザは、キャラクターの体が正確に動き、またゲーム内での相互作用が信用できることを求める。人間のキャラクターを含むゲームは、一般に人間のキャラクターを実物そっくりに描写しなければならない。
【0012】
しかし、改善したゲームグラフィックスが、ゲーム開発に問題を起こした。例えば、アニメータがゲーム機ユーザの期待に応えるよう奮闘するにつれ、グラフィックスの詳細すべてをエンコードするのに必要なデータの量が増えてしまった。このようなデータの増加により、データを記憶及び移動させるといったロジステックの問題が起こった。多くの場合、アニメータにより作成されたような、グラフィックスを表すデータは圧縮されたり場合によっては量を減らさなければならない。結果として、ユーザが眺めるアニメーション及びグラフィックスは、アニメータにより作成されたものとは異なってしまう。
【0013】
一実施形態において、アニメータ又は他の人は、少なくともオブジェクトの一部分をアニメーション化する際に使う源で従属グラフを作成する。加えて、アニメータは、制御要素の状態の変化を表す少なくともひとつのアニメーション曲線を作成する。この従属グラフ及びアニメーション曲線はゲーム機へエキスポートされる。ゲーム機は、ゲームの実行中に従属グラフを評価して、アニメーション曲線を使用するオブジェクトに関連付けられた要素をアニメーション化する。動きは、アニメータにより作成された動きと比べて損失なくゲーム機ユーザにより眺められる。
【0014】
一実施形態において、従属グラフは少なくともふたつのデータ構造内にエキスポート又は記憶され、第1データ構造には空間的又は時間的値を表すグラフのノードが含まれ、第2データ構造には関係を表すグラフのノードが含まれる。他の実施形態において、従属グラフはゲーム機の複数のプロセッサにより評価されてよい。さらに他の実施形態において、従属グラフのサブネットワークが別々に識別され及び操作されてよい。さらに他の実施形態において、アニメーション曲線は従属グラフを使って評価のために組み合わせることができ、また、再構成された従属グラフや個別の従属グラフを使って逆運動学を行うことができる。
【0015】
図1は、ゲームアニメーション用装置100の例を説明する図である。ゲーム機100は、ゲームを実行し、ゲームの実行中にアニメーションを生み出すように構成される。ゲーム機100は、更にユーザからの入力を受信して処理し、このようなユーザ入力の結果を表示するためのデータを提供するように構成される。
【0016】
ユーザはコマンドを入力装置114を使って入力する。入力装置114はユーザをゲーム機100と相互作用させるものであればどのような装置でもよい。例えば、入力装置114は、他の装置や機構のほかにキーボード、ジョイスティック、コントローラ、マイク、カメラ、キーパッド、又は一連のボタン、を備えてよい。
【0017】
ゲーム機100はグラフィックス及びアニメーションを表示装置116へ出力する。表示装置116は、表示用データを受信しそれを視覚的にユーザに提示するものであればどのような装置でもよい。例えば、表示装置116には、他の装置や機構のほかに陰極管、複数の発光ダイオード(LEDs)、液晶ディスプレー(LCD)、又はプロジェクタが含まれてよい。
【0018】
ゲーム機100には、複数のプロセッサ(104a、104b、104c、及び104d)を有する中央処理装置(CPU)102が含まれる。プロセッサ104a-104dはコアとも呼ばれる。4つのプロセッサ104a-104dが
図1に図解さているが、ゲーム機100にはそれより多くの又は少ないプロセッサが含まれてよい。プロセッサはCPU102の内部又は外部に設けられてよい。CPU102には1つ以上のプロセッサが含まれてよい。例えば、CPU102にはひとつのプロセッサ、3つのプロセッサ、又は8つ以上のプロセッサが含まれてよい。CPU102および/またはプロセッサ104a-104dのうち少なくともひとつは、入力装置114及び表示装置116と通信状態にある。
【0019】
ゲーム機100には、CPU102および/またはプロセッサ104a-104dのうち少なくともひとつと通信状態にある揮発メモリ106がさらに含まれてよい。揮発メモリ106はダイナミックランダムアクセスメモリ(DRAM)又はスタティックランダムアクセスメモリ(SRAM)といったある種類のランダムアクセスメモリ(RAM)を備えてよいし、また他のタイプの揮発メモリを備えてよい。揮発メモリ106を使用して、CPU102および/またはプロセッサ104a-104dのひとつの動作中にデータおよび/または指示を記憶してもよい。当業者は他のタイプの揮発メモリ及びそれを使うことを認めるであろう。
【0020】
ゲーム機100には、CPU102および/またはプロセッサ104a-104dのうち少なくともひとつと通信状態にある不揮発メモリ108がさらに含まれてよい。不揮発メモリには、フラッシュメモリ、磁気記憶装置、ハードディスク、又は消去可能プログラマブル読取り専用メモリ(EPROM)といった読取り専用メモリ(ROM)、又は他のどんなタイプの不揮発メモリが含まれてよい。不揮発メモリ108を使用して、ゲーム指示、キャラクター情報、ゲーム状況情報、又はゲーム機100への電力が除去された場合に保持されるべき他のどんな情報を記憶してよい。ゲーム機100は、追加の不揮発メモリを装着したり一時的に設置するためのインターフェースを備えてよい。当業者は、他のタイプの不揮発メモリ及びそれを使うことを認めるであろう。
【0021】
CPU102および/またはプロセッサ104a-104dのうち少なくともひとつと通信状態にあるグラフィックス処理装置(GPU)110は、プロセッサのひとつにより供給された表示装置上116に表示するデータを描画する。GPU110は、表示装置116上に表示するデータを提供する事に関する機能をいくつでも行うよう構成されてよい。例えば、GPU110は、他の機能のほかに複数の多角錐を描画する、影やテクスチャを加える、3次元環境を表すデータを作成する、座標空間の間を変換するように構成されてよい。GPU110は
図1に図解されるようにCPU102の外部にあってもよいし、および/またはCPU102の内部あるいはCPUtと一体化してもよい。当業者は、GPU110の他の構成及び機能性を認めるであろう。
【0022】
ゲーム機l00には、CPU102および/またはプロセッサ104a-104dのうち少なくともひとつと通信状態にあるディスク駆動装置112がさらに含まれてよい。ひとつ以上のプロセッサディスク駆動装置112に挿入されたディスクからのデータを読み出してよい。ある実施形態では、ゲーム機100は、ディスク駆動装置112を使ってディスク上のデータを記録するように構成されている。このようにして、ゲームプレイ及びアニメーションに関するデータはゲーム機100へ又はゲーム機100から送られてよい。例えば、多くのゲームはコンパクトディスク(CD)又はデジタルバーサタイルディスク(DVD)のかたちで販売される。これらゲームの大多数は、ゲームをするのに必要なすべての情報(キャラクター、プロット、及びアニメーションデータ)がディスクに含まれるかたちで生産される。このように、ユーザはゲーム機100で実行するためのゲームが入ったディスクを購入することがある。ゲームは不揮発メモリ108に記憶されてもよい。
【0023】
ゲームエンジンはゲーム機100に記憶されている。ゲームエンジンには、ゲームを実行するのに使うことができる指示やデータが備えられている。ゲームが初期化されると、ゲームエンジンはゲームプレイを開始する。ゲームプレイ中は、エンジンは、ゲーム内の場面や瞬間に関連付けられたグラフィックス及びアニメーションを提供する。これらグラフィックス及びアニメーションは、表示装置116上に表示される。ユーザが入力装置114を使ってコマンドを入力する時、ゲームエンジンはコマンドを評価してゲームの実行へのコマンドの効果を定める。これら効果は、ユーザに表示されるグラフィックス及びアニメーション内に反映されてよい。例えば、ユーザはキーパッド上のボタンを押してゲームのキャラクターにドアを開けさせてよい。
【0024】
ゲームエンジン100は、CPU102、プロセッサ104a-104d、GPU110、又は不揮発メモリ108のいずれにおいても完全に又は部分的に実施又は記憶されてよい。ゲームエンジンには一組の指示やデータが備えられてよいし、複数組が備えられてよい。例えば、ゲームエンジンはグラフィックスまたは描画エンジンといったアニメーションエンジンとして、及びユーザの入力がゲームのプロットにどう影響するかを定めるための個別のエンジンとして実施されてよい。
【0025】
ゲームエンジンに加え、ゲーム機100には他の機能性及びゲームを実行するためのサブシステムが記憶又は実施されてよい。例えば、このようなサブシステムには描画システム、ゲーム保存システム、物理システム、及び特殊効果システムが含まれる。
【0026】
ゲーム機100は上述の装置、構成、及び機能性に限定されない。例えば、揮発メモリ106、不揮発メモリ108、GPU110、ディスク駆動装置112、入力装置114、及び表示装置116が単数で図解されているが、装置のいずれもゲーム機100の内部又は外部に複数で実施されてよい。加えて、ゲーム機l00には電源又はネットワークアクセス装置が備えられてよい。当業者はゲーム機100の他のこのような構成を認めるであろう。
【0027】
ここに記載された構成部品は種々のシステム及び装置で実施されてよい。例えば、ゲーム機100には、アーケード機器、ソニープレイステーション3、又はマイクロソフトXBOX360といったゲームを実行するために設計されたコンソールが備えられてよい。ゲーム機100にはまた、ラップトップ、デスクトップ、又はパソコンといった、ゲームを実行するために構成された一般の計算機が備えられてよい。
【0028】
ゲーム機100による表示用グラフィックス及びアニメーションは、いくつもの方法及び装置を使っても作成することができる。オートデスク社が販売するMAYA等のモデリングソフトウエアはたいてい、特に3次元環境を表すグラフィックス及びアニメーション生成する時に使用される。このようなソフトウエアを使って、アニメータはゲーム機100のゲームエンジンで使うことができるオブジェクト及びオブジェクトについての動きを作成して、表示装置116上に表示用データを提供することができる。
【0029】
図2は、上述のようにソフトウエアを使って作成されたオブジェクト200の一部分の一例を説明する図である。図解の実施形態において、オブジェクト200は人間の形として表され、またオブジェクトの一部分には、その肩及び腕を備えられている。しかし、オブジェクト200はどのようなオブジェクトでもよい。例えば、オブジェクトには、人間又は人間以外のキャラクター、武器又は食べ物といった物、建物を含む壁又は構造物、岩又は木等の風景要素、又はアニメータが図解したいと思う他のどんなオブジェクトが備えられてもよい。ここでのオブジェクトの記載はすべてのこのようなオブジェクトに同様に当てはまる。
【0030】
オブジェクト200の構造は複数の相関要素(202a、202b、204a、204b、206)を使って定義されてよい。これら相関要素を使ってオブジェクト200の“骨組み”を作成する。この要素によりオブジェクト200の形状及び物理的制約条件を定義する。
【0031】
図解の実施形態において、要素(202a、202b)は位置及び向きを変更するように構成されるが、その形状及び大きさは実質的に固定されている。しかし、要素(204a、204b)は、要素(202a、202b)を回転させる位置を定義する関節として構成される。
【0032】
オブジェクトを定義する相関要素は従属グラフにより関連付けてよい。従属グラフは、各要素がどのように他要素に接続しているか及び各要素が他要素に対してどのように動くかを定義する階層ノードを含んでいる。このようにして、アニメータは、ゲーム内で起こりうるあらゆる場面又は構成についてのオブジェクトのあらゆる詳細を図解又はアニメーション化する必要はない。例えば、人が自分の肩を回す時、その人の前腕及び手が動くと理解される。同様に、
図2で図解されるオブジェクト200は、要素204aの周りの回転要素202aが要素(202b、204b)の位置又は向きを変化させるように構成することができる。従属グラフの内容及び動作は以下により詳細に記載される。
【0033】
アニメータは各オブジェクトについて従属グラフを作成することができる。加えて、オブジェクトの部分又は複数のオブジェクトは従属グラフにより関連付けてよい。ゲーム中に表示されるどんな場面においても、複数の従属グラフが表されてよい。例えば、ある場面での各キャラクターはアニメータにより個別の従属グラフでモデル化されている可能性がある。従属グラフ内の各ノードに値及び制約条件を割り当てることで、アニメータはオブジェクトがどのように形成され及びオブジェクトがどのように動くかを制御できる。もしアニメータがオブジェクトを動かしたくないなら、これも従属グラフ内で定義することができる。例えば、アニメータは骨組みを作成して壁の形状を定義してよく、壁の要素が相互に関係して動けないように、値をその壁についての従属グラフのノードに割り当てる。
【0034】
要素206は制御要素である。これには要素(202又は204)のいずれかのタイプ又は別なタイプの要素が備えられてよい。アニメータは制御要素を定義して、オブジェクト200の位置又は向きを調節する工程を簡素化してよい。各オブジェクト及び従属グラフは複数の制御要素を有してよい。
【0035】
制御要素の状態の変化はアニメーション曲線により記述することができる。図解の実施形態において、制御要素206の位置変化はアニメーション曲線208により記述することができる。制御要素206は最初に時間t
1において第1位置210aに位置する。制御要素206は、アニメーション曲線208に沿って経時的に動かしてよい。
図3に図解されるように、時間t
6において、制御要素206は第2位置210bに位置するようにアニメーション曲線208に沿って動かされた。
【0036】
制御要素が状態を変化させると、ひとつ以上の他要素が影響を受ける可能性がある。図解の実施形態において、アニメーション曲線208に沿った制御要素206の移動により要素(202a、202b、204a、204b)が動かされる。このような他要素の移動は、オブジェクト200についての従属グラフで定義される制約条件により起こる。このように、
図2及び3に図解されるように、キャラクターの手の動きによりキャラクターの腕及び肩の適切な解剖学的移動が行われるように、従属グラフを構成することができる。したがって、異なる位置に制御要素206を図解したいと思うたびに、アニメータは各要素(202a、202b、204a、204b)の位置を手動で設定する必要がなく、オブジェクト200の従属グラフを評価することで自動的に算出できる。
【0037】
制御要素は空間の単一点に限定されず、アニメーション曲線は要素の経時的な経路に限定されない。制御要素及びアニメーション曲線を定義して、いくつもの要素に対しても何種類の方法でも作用することができる。例えば、制御要素キャラクターの手を記述する従属グラフについて定義して、制御要素の状態を調節して手が幾分か開くか閉じた状態にすることができる。アニメーション曲線は制御要素の変化を記述し、そして抽象的値を備えてよい。例として、キャラクターの手を開いたり閉じたりするための制御要素は、制御要素が1から10までのどの値に割り当てられてもよいように定義されている(1が手が開いていることを表し、10が手が閉じていることを表す)。1と10の間のどの値も手が部分的に開いているか閉じていることを表す。この制御要素についてのアニメーション曲線は、一定時間にわたる、所定組の手を開ける又は閉じる動作を記述する一連の時系列の数字を備えていてもよく、各数字は1から10までのある値を有する。このように、手を握りしめる繰り返し動作を定義するアニメーション曲線は、一連の数{8、9、10、9、8、7、8、9、10、9、8、9、10}を有するかもしれない。同様に、1から10までのある値に割り当てられてよい制御要素は、1がドアが閉じていることを表し、10はドアがいっぱいに開いていることを表すように、ドアに関連付けられてよい。ある実施形態では、制御要素を使用してある要素又は複数要素の色、影、又はテクスチャを調節する。
【0038】
アニメーション曲線は所定の行動についての動きを表してよい。図解の実施形態において、アニメーション曲線208は、キャラクターが自分の手を伸ばして別のキャラクターと握手することを表してよい。別の例として、制御要素はキャラクターの足及びキャラクターが歩くのをアニメーション化するために定義されたアニメーション曲線に定義されてよい。ゲームプレイ中に、ユーザがキーパッドの左ボタンを押すことでこのアニメーション曲線が呼び出されてよく、キャラクターの足の制御点を動かすことでアニメーション曲線に沿ってキャラクターを左へ歩かせる。
【0039】
アニメーション曲線は何種類の方法によっても記憶したり表すことができる。例えば、アニメーション曲線は一連の値、データ構造、又は制御要素を操作するための一組の実行可能な指示として記憶されてよい。アニメーション曲線はプロットされた機能又は他の視覚的方法で表されることがあり、あるいは任意のアニメーション曲線を視覚的に表す理解しやすい方法がないことがある。当業者は、アニメーション曲線が記憶され、定義され、又は表されてよい他の方法を認めるであろう。ここで記載されたアニメーション曲線は、特定のモデリングソフトウエアプログラム、例えばMAYAで実施されてよい。
【0040】
骨組みは皮膚又は網目212と重ねられまたは結合されてよい。網目212はオブジェクト200の外観を定義してよく、一方、骨組みは下にある構造及びオブジェクト200の移動を定義する。このように、骨組み又はその一部分は、網目が骨組み又はその部分を覆うと視聴者から見えなくなる可能性がある。図解の実施形態において、網目212はオブジェクト200の図解部分に人間の肩、腕、及び手の外観を与えるように構成される。いずれかの要素(202a、202b、204a、204b、又は206)が動かされると、網目が新しい位置を覆って、腕が位置を変えたという外観を作り出す。
【0041】
網目212は、要素(202a、202b、204a、204b、206)が伝えるよりも、更に認識しやすい像をユーザに伝えるだけでなく、網目212は要素(202a、202b、204a、204b、206)の移動により影響を受けない微細な部分を図解するために使用してもよい。例えば、骨組みは車の構造を表すために定義されてよい。車が位置を変える間、車の大部分はドア、ボンネット、トランク、タイヤ、及び窓を除いて、その車の残りの部分に応じては動かない。網目は、場面内で位置が変わることがある入り組んだ曲線及びモールディングを定義する車の骨組みに結合させることができるが、さもなければ車の他の部分に対しては決して向きが変わることがない。これら曲線又はモールディングの細部のそれぞれについて構造要素を定義することは、アニメータに更なる利益をもたらさない。
【0042】
定義された制約条件及び動き、制御要素、及び網目を伴う骨組みは「リグ」と呼んでよい。これら要素を作成すること及びこれらを一緒に関連付けることを「リギング」と呼んでよい。リギング処理が完了すると、オブジェクトは一般にアニメーション化する準備ができる。アニメータは、制御要素を調節及びアニメーション曲線を定義して、オブジェクトについての動き及び行動をアニメーション化することができる。「リグ」はまた時として網目のないこのような骨組み及び制御要素を指すこともある。当業者はリグ及び従属グラフを作成する種々の方法、またこのようなリグ及び従属グラフを作成できることを認めるであろう。
【0043】
図4は、
図3の骨組みの要素206等の要素又はリグをアニメーション化するための従属グラフ400の一部分の例を説明するブロック図である。従属グラフ400の図解部分には複数ノード402-416が含まれる。ノードには、ノード(402、406、408、412、416)等の値を記憶するノード及びノード(404、410、414)等の機能ノードの両方が含まれる。
図2に記載された値ノード(402、406、408、412、416)がオブジェクトに関連する情報を記憶している場合、値ノード(402、406、408、412、416)は空間的又は時間的値を記憶してよい。機能ノードは値ノードにおけるデータに基づいた結果を算出してよく、値ノード間の関係を定義してよい。
【0044】
値ノードは、変数又は浮動小数点数等の値、データ構造、又はデータの列又は集積として記憶又は実施されてよい。機能ノードは、演算、数学関数、コマンドの集合、又は実行可能な指示として記憶されてよい。ある実施形態では、値ノードは機能ノードの属性等において機能ノードと一体化してよい。ある実施形態では、従属グラフのノードは形状又は地形情報、色情報、又はテクスチャ情報を保持してよい。同様に、このようなノードを含む従属グラフ又はこのような従属グラフの一部分はデータ構造又は一連のデータ構造、コマンド又は実行可能な指示、又は一連のつながったノードとして記憶又は実施されてよい。当業者は、従属グラフ及びそのノードが記憶され、定義され、表され、又は実施されてよい他の方法、またノードが記憶してよい追加情報を認めるであろう。ここに記載した従属グラフ及びノードは特定のモデリングソフトウエアプログラム、例えばMAYAによって実施されてよい。
【0045】
図解の実施形態において、従属グラフ400の一部分は左から右へ評価されてよい。このようにして、従属グラフ400の一部分は評価されゲーム内の時間t
gを要素の最終的な向きに変換してよい。こうするには、従属グラフ400の一部分によりアニメーション曲線についての変換が定義される。ある実施形態では、従属グラフ400の一部分もまたあるいは代わりに右から左へ評価されてよく、又は右から左へ評価できるように再構成されてよい。
【0046】
ゲーム内の時間t
gはノード402で記憶又は識別される。ノード404では、t
gはアニメーション曲線に沿った時間t
cに変換され、ノード406で記憶又は識別される。例えば、アニメーション曲線は上述のようにキャラクターが歩くのを表してよい。しかし、アニメーション曲線に関連付けられた動きをアニメーション化するにはわずか5秒しか要さない。キャラクターの前の動作又はキャラクターが歩いた時間の量に基づき、ノード404では、例えばキャラクターがアニメーション曲線に3秒間変化している又はアニメーション曲線が60%完了したと定められてよい。
図2に関して、ユーザがゲームを20分(したがってt
gは20分に等しい)行ってきたかもしれないが、アニメーション曲線208に関連付けられた動きは始まったばかりだと定められてよく、そこでt
cはt
1に等しいと定められる。この値はノード406で記憶されてよい。
【0047】
ノード410では、アニメーション曲線に沿った時間はアニメーション曲線408又はその一部分と共に評価されてその時間での要素の位置を定める。
図2に関して、アニメーション曲線208は、それぞれノード408x、408y及び408zで表された、x平面内の曲線、y平面内の曲線、z平面内の曲線に分割されてよい。これら各曲線部分408x、408y及び408zは、時間t
cにおいてノード410x、410y及び410zでそれぞれ評価される。要素のx、y及びz位置は、それぞれノード412x、412y及び412zで記憶されてよい。このように、ノード412x、412y及び412zは、それぞれ要素206のx、y及びz位置を時間t
1において記憶する。
【0048】
要素の向きは、それぞれノード414及びノード412x、412y及び412zで識別されたx、y及びz位置を使ってノード416で記憶又は識別できる。この向きには、他のこのような向きデータのほかにあらかじめ識別されたx、y及びz値等の向きを記述するどんな量のデータおよび/または要素の回転が備えられてもよい。
図3に関して、ノード416は時間t
1における要素の向き206を記憶又は識別するが、これは位置210aに等しい。
【0049】
当業者は、従属グラフには
図4に図解するものより多いノードが含まれてよく、又は従属グラフには上記に記載されたものより多いか少ない値又は機能が備えられてよいと認めるであろう。例えば、従属グラフ400の部分の多くがつながってオブジェクト200等のオブジェクトの動きを定義してよい。例えば、
図2の要素204aを回転させることを考える。要約すると、要素204aの回転で以下のようになる。要素204aの回転に基づき従属グラフの一部分を評価することにより、要素202aの新たな位置が定められる可能性があり、要素の位置202aに基づき従属グラフの一部分を評価することにより、要素204bの新たな位置が定められる可能性があり、要素の位置204b及び要素の回転204bに基づき要素202bの新たな位置が定められる可能性があり、及び要素の位置202bに基づき要素206の位置が定められる可能性がある。このように、従属グラフが評価されて、従属グラフで表されたオブジェクトのどんな要素の向きを定めてよい。
【0050】
上述のように従属グラフを評価する時、「親」ノード(従属グラフの階層で高位に位置するどれかのノード、
図2に図解するオブジェクト200の実施形態においては、任意の図解された要素の左に位置するオブジェクト200の要素を表す従属グラフのどれかのノードが、その任意の要素を表すノードに対する親ノードとなる)の値が変化する時に、ノードの値が変化することがある。このように、あらかじめ定められた値はもはやどのノードについての値でもないことがある。これを示すためには、各値ノードにはその中の値がまだ有効であるかどうかのインジケータが含まれてよい。例えば、以下により詳細に記載されるように、ノードにはノードが汚れている(すなわち値が変化した)ことを示すフラグ、又は値が変化したかを定めるために使用してよいカウンタや妥当性インジケータが含まれてよい。
【0051】
図5は、アニメーションゲーム中について
図4に図解する従属グラフの一部分等、の従属グラフを作成及び評価するための方法500の例を図解したフローチャートである。ブロック502において、アニメータは従属グラフを作成する。アニメータは、ラップトップ、デスクトップ、又はパソコン等の計算機を使って又は従属グラフを作成させるどれか他の装置、又はここに記載したリグを使って従属グラフを作成してよい。このような装置を源と呼んでよい、というのはアニメータの作成の源だからである。
【0052】
ブロック504において、アニメータは源装置又は他の源装置を使って従属グラフに関連付けられたアニメーション曲線を作成する。以下、このようなアニメーション曲線源アニメーション曲線と呼んでよい、というのは源装置で作成されるからである。上述のように、アニメーション曲線は従属グラフの制御要素の状態変化を記述してよい。従属グラフは、今度は、アニメーション曲線についての変換を記述してよい。
【0053】
ブロック506において、アニメーション曲線及び従属グラフデータがエキスポートされる。これには、アニメーション曲線と従属グラフが
図1に図解されたゲーム機100等のゲーム機により使用してもよいように、アニメーション曲線及び従属グラフをまとめること、又はアニメーション曲線や従属グラフを圧縮することを伴ってよい。ある実施形態では、ブロック506には従属グラフとアニメーション曲線データをディスクに焼くことが備えられる。他の実施形態において、ブロック506には従属グラフとアニメーション曲線データをゲーム機100で読取り可能な実行可能ファイルにまとめることが備えられる。
【0054】
ブロック508において、アニメーション曲線及び従属グラフデータがゲーム機にロードされる。図解のゲーム機100において、従属グラフとアニメーション曲線データはひとつ以上の揮発メモリ106、不揮発メモリ108、CPU102、又はプロセッサ104a-104dのいずれかにロードされ又は記憶されてよい。従属グラフデータ及びアニメーション曲線データは種々の方法を使ってゲーム機100に送られてよい。例えば、従属グラフとアニメーション曲線データはディスクに記憶されてよく、ディスクはディスク駆動装置112にロードされて、ゲーム機100に従属グラフとアニメーション曲線データを供給してよい。ある実施形態では、従属グラフとアニメーション曲線データはネットワークを介して送信されて、ネットワークインターフェースを使ってゲーム機100で受信される。
【0055】
ブロック510におけるゲームの実行中に従属グラフが評価される。一実施形態において、従属グラフはゲームエンジンにより評価される。このような実施形態において、ゲームエンジンはグラフ内の各ノードを順次評価してよい、又は汚れたノードのみを評価してよい。評価には他の演算のほかにノード内に記憶された指示を読み取ること又はゲームエンジンで定義された処理をノードに記憶された値又は機能を使って行うことが備えられてよい。この評価にはまた階層的実行可能な指示を処理したり引き起こすことが備えられてよい。従属グラフを評価する方法例の実施形態はより詳細に以下に記載される。
【0056】
上述のように、従属グラフが源装置で作成された。当業者は、源装置で作成されたこの従属グラフがゲーム機で評価されると理解するであろう。従属グラフは、ゲーム機ユーザとの相互作用を維持するようにリアルタイムに評価されてよい。このようにして、ユーザの入力に対するゲーム機の応答又はゲーム要素のアニメーションは滞ったり遅れることはない。このように、従属グラフはゲーム実行中の従属グラフの評価によって、ゲームの実行又はユーザからの入力に対するゲームの応答に実質的中断が生じないようにインタラクティブレートで評価されてよい。
【0057】
図6は、
図1に図解された装置100に関して記載されたゲームエンジン等のゲームエンジンとともに従属グラフを評価する方法600の例を更に説明するフローチャートである。この方法600は
図5のブロック510を実行中に行ってよい。
【0058】
ブロック602において、ノード値が要求される。例えば、
図2-4に関して上述したように、ノード値は、アニメーション曲線に照らしてオブジェクト又はその一部分をアニメーション化するために要求されてよい。複数要素の向きはアニメーション曲線に沿った各点で変化することがあるので、エンジンによりノードの値が要求される。ノードで返送された値を使用して表示用アニメーションデータを
図1に図解された表示装置l16上等に供給してもよい。
【0059】
ブロック604において、ノード値が有効かどうかが定められる。このような決定には上述のような妥当性インジケータを利用する。例えば、ゲームエンジンは汚れたフラグをチェックしてノードの現在値が例えば親ノードが変化したことによりそこに記憶されたものと異なるかをみてよい。ゲームエンジンは、以下により詳細に記載されるように、ノード内カウンタに少なくとも部分的に基づきこのような決定を行う。
【0060】
ノードが有効なら、ゲームエンジンはブロック612に進み、そこでノードの値が返送される。ノード値が無効なら、ゲームエンジンはブロック606に進む。
【0061】
ブロック606において、ノードを有効にするよう要求される。ノードを有効にするには、現行ノードが依存するノード(たとえば、ブロック602において値が要求されたノード)がブロック608において定められる。ここで記載された従属グラフについて、現行ノードよりも従属グラフの上の階層にあるノードはブロック608において識別される。
【0062】
そして、この方法600は現行ノードが依存するどのノードについても反復される。現行ノードが依存するノードが有効であるなら、その値は返送される。無効であるなら、上述のように有効にするよう要求される。
【0063】
現行ノードが依存するノードがその値を返送したら、現行ノードが依存するノードの値を参照してブロック610において現行ノードの値を算出することができる。この算出された値が現行ノードに記憶される。ブロック612において、この算出された値が返送される。それから、この値は、現行ノードにより表された要素をアニメーション化するために使うことができる。
【0064】
例えば
図6に関して上述したようにゲーム機100のゲームエンジンを使って、ゲーム機とともに従属グラフを評価して、少なくともオブジェクトの一部分をアニメーション化することが多くの利点がもたらす。オブジェクトをアニメーション化するためのデータを供給する他の方法には、キャラクターの骨組みにおける要素の位置決めを多くの構成において“焼くこと”が含まれる。例えば、あらゆる要素の値のスナップショットがアニメーション曲線の各点で取られる。このデータには各要素について12まで又はそれ以上の値が含まれてよい、つまり、要素の3次元の回転を表す9個の値及びx、y及びz座標での要素の位置を表す3個の値である。オブジェクトの移動をとらえるために、各要素の値はあらゆるアニメーション曲線についてのアニメーション曲線の各点に対し記憶される必要がある。
【0065】
当業者が理解するように、焼く処理により大量のデータが作成される。データの量はたいていゲームの実行中に読んだり利用するのには扱いにくく、またゲームを移動するために一枚のディスクに収容するにはたいてい大きすぎる。したがって、オブジェクトの動作を表すデータはたいてい圧縮され、また焼いたデータのいくつかを省略するのが一般的である。この圧縮され又は不完全なデータに基づきオブジェクトをアニメーション化する際には、オブジェクトの動作は源で作成されたアニメーションのせいぜい概算であり、ゲーム実行中のアニメーションを修正することは難しい。
【0066】
焼いたデータを利用することとは逆に、ゲーム機とともに従属グラフ及び源アニメーション曲線を評価することで、オブジェクトをアニメーション化するのに要求されるデータの量が減り、またアニメーションの美意識が増える。アニメーションデータ上で使用される圧縮の量を制限したり除去することができ、またオブジェクトの動きを源で作成されたオブジェクトの動作と比べて損失なく表示させることができる。
【0067】
以下の記載により、上述のシステム及び方法の詳細な利点をさらに議論する。このような利点には、ゲーム機へエキスポートされるデータの量を減少させること、そのデータを評価する効率を上げること、より正確にアニメーション化すること、及び源アニメーションを適合及び修正できることが含まれる。加えて、システム及び方法の更に詳細及び実施についてこれら利点に照らして記載する。
データ量の減少
【0068】
アニメーションに使用されるためにゲーム機へエキスポートされたデータの量は減らすことができる。あらゆるアニメーション曲線でのあらゆる位置におけるオブジェクト又はその一部分のあらゆる要素の値をエキスポートする代わりに、オブジェクト又はその一部分のあらゆる要素を記述する従属グラフをエキスポートすることができ、源アニメーション曲線をエキスポートできる。各要素の値は源アニメーション曲線に対する従属グラフを評価することにより定められてよく、各要素の値をエキスポートする必要がなくなる。
【0069】
従属グラフをエキスポートするのに使われたデータの量は、従属グラフにおけるノードを適切にエキスポートすることによりさらに減らしてよい。
図7は、
図4に図解される従属グラフ400の一部分等の、従属グラフにおけるノードを源からエキスポートする方法の例を図解したフローチャートである。この方法700は、
図5に図解される方法500ブロック506において使用してもよい。
【0070】
ブロック702において、空間的又は時間的値といった値を表す第1従属グラフノードが識別される。従属グラフ400の一部分に関して、値ノード(402、406、408、412)がブロックに702において識別される。
【0071】
ブロック704において、第1ノードが記憶される。第1ノードは、
図1に図解されたゲーム機100等のゲーム機で読取り可能な第1データ構造に記憶されてよい。
【0072】
ブロック706において、第1ノード間の関係を表す第2従属グラフノードが識別される。従属グラフ400の一部分に関して、機能ノード(404、410、414)がブロックに706において識別される。識別されたノードにより、従属グラフで表された要素の第1の空間的又は時間的値と従属グラフで表されたひとつの要素の第2の時間的又は空間的値間の関係を表してよい。例えば、ノードブロック706において識別されたを使用して、第1要素が接続された第2要素の位置又は向きに基づき第1要素の位置又は向きを定めてもよい。
【0073】
ブロック708において、第2ノードは第1ノードから分離して記憶される。第2ノードはゲーム機で読取り可能な第2データ構造に記憶されてよく、第2データ構造は第1データ構造とは明確に区別される。このようにして、ふたつのデータ構造が記憶されてよく、従属グラフで表された値が従属グラフで表された機能性と分離する。このような分離は、この情報を記憶するよう求められたデータの量を減らす適切なデータ構造と組み合わされたり、オブジェクト又はその一部分をアニメーション化する時に、ゲーム機に有用ではない従属グラフに記憶された超過情報を選抜除去するのを助けてよい。
【0074】
ある実施形態では、方法700を使用して従属グラフをふたつの分離したデータ構造にエキスポートする。他の実施形態において、複数の第1データ構造および/または複数の第2データ構造が記憶される。複数の第1データ構造には異なるノード値を表すデータが記憶されてよく、又は第1データ構造には冗長性及び誤差補正の目的で、少なくともいくつかの同じノード値を表すストアデータが含まれてよい。エキスポート後、このような第1データ構造及び第2データ構造は、ディスク駆動装置112に挿入されたディスクから読み取られた後に、ゲーム機100の不揮発メモリ108等のゲーム機又は揮発メモリ106に記憶されてよい。
【0075】
方法700を使ってノードエキスポートすることが、従属グラフを作成する時に源で使われるが、従属グラフで表されたオブジェクト又はその一部分をアニメーション化する時にゲーム機で使われない、データの量を減少させるのを助ける。例えば、以下により詳細に記載されるように、ゲーム機に要素の局所座標のみが必要な時に、源装置にはあらゆる要素の世界座標が記憶されてよい。これら世界座標は時としてノード値から省略されてよい。源装置には、従属グラフ及びリグを設計する際に有用な制約条件や外部データが記憶されてよいが、ただ要素の移動にとっては比較的役に立たない。これら制約条件及び外部データは従属グラフをエキスポートする時に省略してよい。
【0076】
当業者は、上述の方法700を使うことも含め、何種類の方法によってでも従属グラフがエキスポート及び記憶されてよいと理解するであろう。従属グラフは、源で作成されたのと同じ形態でゲーム機に記憶できず、従属グラフの記述又は源従属グラフを表すデータが代わりに記憶されてよい。上述のように、これが従属グラフを記憶するのに必要なデータの量を減少させ、またゲーム機の実行を容易にしてよい。同様に、源アニメーション曲線の記述又は源アニメーション曲線を表すデータが、源において定義された通りのアニメーション曲線の代わりにゲーム機に記憶されてよい。
【0077】
当業者は、
図7に関する上述の方法例700及びゲーム機による従属グラフの評価を使って、装置にエキスポートする必要があるデータの量を減らすことができると理解するであろう。このように、より詳細なアニメーションが達成でき、より少ないデータが必ず送られ又は記憶される。
より効率的なデータ評価
【0078】
ゲーム機で使う従属グラフをエキスポートすることで、ゲーム機の性能を向上させることができる。ゲーム機はそれ程多くのデータをキャッシングやページングせずにオブジェクト又はその一部分をアニメーション化できるだけでなく、従属グラフは
図1に図解されたプロセッサ104a-104d等の複数の処理によって更に容易に評価について平行化できる。
【0079】
図8は、プロセッサ104a-104d等の複数のプロセッサを使って従属グラフを評価するための方法800の例を説明したフローチャートである。ブロック802において、互いに独立して評価することができる従属グラフのサブネットワークが識別される。例えば、
図2及び3に関して、先に議論した車のリグについて考える。車の骨組みを定義する各要素は従属グラフにおけるノードで表される。これらノードは複数のネットワークにグループ分けでき、ここでは従属グラフ全体の一部分を備えているのでサブネットワークと呼ばれ、互いに比較的独立して評価することができる。例えば、各ドアを他のドアや車の残りと独立して開いたり閉じたりしてよい。窓、トランク、及びボンネットは同様に独立している。
【0080】
一実施形態において、ブロック802におけるサブネットワークの識別は、
図1に関して上述したゲームエンジン等のゲームエンジンにより行われる。他の実施形態において、サブネットワークは源装置で識別され、分離したデータ構造は各サブネットワークに対してエキスポートされる。例えば、方法700のブロック702には、値を表すサブネットワークの第1従属グラフノードを識別することが備えられてよい。ブロック704には、サブネットワークのこれら識別されたノードを記憶することが備えられてよい。同様に、ブロック706及び708には、第1サブネットワークのノード間の関係を表すサブネットワークのノードを識別し記憶することが備えられてよい。本実施形態において、ゲームエンジンは分離したデータ構造を識別することだけが必要で、それにより分離したサブネットワークを識別する。
【0081】
ブロック804において、各サブネットワークはプロセッサ104a-104d等の複数のプロセッサのひとつに割り当てられる。サブネットワークは、プロセッサの間で均一に又は不均一に分配されてよく、このような分配はランダムに定められてよく、例えばサブネットワークの大きさや複雑度に基づき、サブネットワークを評価するための作業負荷が概算されてよい。
【0082】
ブロック806において、サブネットワークにおけるノードは、そのサブネットワークが割り当てられたプロセッサとともに評価される。当業者は、複数のサブネットワークがこの方法を使ってゲーム機の分離したプロセッサの数を上限に同時に評価されてよいことを理解するであろう。このように、従属グラフをより効率的に評価することができ、またどのプロセッサへの負担も減らすことができる。
【0083】
ブロック802で識別されたサブネットワークを使用して他の方法で従属グラフの評価効率を向上させてもよい。このような方法の一つは、各ノードの値が変更又は更新された回数を表すそのノードにおけるカウンタを維持することによる。そのノードについての値が有効かどうかを定める際に、カウンタをサブネットワークにおける他のノードのカウンタと比較することができる。現行ノードのカウンタがいずれの親ノードのカウンタより低ければ、現行ノードにおける値は無効で、返送される前に更新される必要がある。そして、現行ノードのカウンタは親ノードにおけるカウンタと同等に更新されてよく、又はカウンタは共通値にリセットされてよい。
【0084】
従属グラフを評価する他の方法には、各ノードの汚れたフラグがそのノードにおける値はもはや有効ではないと示すよう設定することが必要となる。このように、親ノードにおける値が変更されると、従属グラフが横移動されされる必要があり、汚れたフラグをその親ノードの各子の中に設定する。しかし、上述のカウンタ方式において、親ノードのカウンタだけが更新されて、子ノードは(従属グラフ全体ではなく)そのサブネットワークの他のノードに照合する必要があるだけである。あるいは、サブネットワークにおけるノードだけの汚れたフラグは、サブネットワークにおける親ノードの値が変更されるたびに設定されてよく、このように残りの従属グラフを横移動する必要性が排除される。これにより、従属グラフで表されたオブジェクトをアニメーション化するのに要する処理の量が大幅に減少し、このようなアニメーションに要する時間の量が減少する。
【0085】
汚れたノードを効率的に識別するのに使用してもよい他の方法には、従属グラフの各ノードにおける妥当性インジケータを定義することはもちろん、グローバルおよび/またはグループ妥当性インジケータを定義することが含まれる。各妥当性インジケータは値を保持、記憶又は定義する。従属グラフにおけるノードの値が要求される時に、そのノードについての妥当性インジケータはグローバル妥当性インジケータと比較される。ふたつのノードの値が異なると、ノードが汚れており更新されなければならない。
【0086】
従属グラフのノードが従属グラフの外から受信した入力が理由で変更又は修正される時、例えば、ユーザの入力やゲーム内の時間経過グローバル妥当性インジケータが新たな値に設定され、また変更されたノードの妥当性インジケータがグローバル妥当性インジケータの新たな値に等しい値に設定される。しかし、従属グラフのノードが従属グラフの中から受信した入力が理由で変更される時、そのノードの妥当性インジケータだけがグローバル妥当性インジケータの値に等しい値に設定される。グローバル妥当性インジケータは新たな値に設定されない。このように、従属グラフのノードが従属グラフ内での他のノードの移動が理由で更新されると、新たなグローバル妥当性インジケータは設定されない。外部からの入力が理由で従属グラフのノードが修正されてから変化したノードだけが最新のグローバル妥当性インジケータを反映する。このようにして、グローバル妥当性インジケータとの単一の比較により、ノードが汚れていると定めることができ、また従属グラフ全体を横移動して汚れたフラグを設定する必要がない。
【0087】
グローバル妥当性インジケータに加え又はグローバル妥当性インジケータの代わりに、1つ以上のグループ妥当性インジケータが定義されてよい。グループ妥当性インジケータは、従属グラフにおけるノードのどの分類を表すためにも定義されてよい。例えば、グループ妥当性インジケータは従属グラフにおける各サブネットワークについて定義されてよく、又はグループ妥当性インジケータはサブネットワークの集積について定義されてよい。グループ妥当性インジケータはまた、ふたつの従属グラフをつなぐメタネットワークについて定義されてよい。メタネットワークについて以下により詳細に記載する。グループ妥当性インジケータの使用はグローバル妥当性インジケータの使用と同様である。グループの外部からの入力によるノードの変化によってグループ妥当性インジケータが更新される。
【0088】
妥当性インジケータはノードに記憶されてよい。ノードに記憶されたグローバル又はグループ妥当性インジケータは、それぞれの従属グラフ、グループ、又はサブネットワークの親ノードを定義するように、1つ以上の従属グラフ、グループ、および/またはサブネットワークに接続されていよい。グローバル又はグループ妥当性インジケータはまた、いずれの従属グラフ、グループ、又はサブネットワークとも独立して記憶されてよい。加えて、妥当性インジケータにはカウンタが備えられてよく、比較に適した他のどんな値が備えられてもよい。例えば、数値グローバル妥当性インジケータは、それが変更されるたびにひとつの値を増加させてよい。当業者は、カウンタ(ノード妥当性インジケータを表すために使用してもよいもの等)がそれを変更するたびに増加させるのに限定されず、また一定速度で増加させるのに限定されないと、理解するであろう。カウンタは、どんな値を増加させても減少させてもよい。
【0089】
ブロック802で識別されたサブネットワークにより、オブジェクト又はその一部分をアニメーション化するために使われる座標系を単純化させることで従属グラフの評価効率を更に向上させる。従属グラフは一般に世界座標において評価され、またゲーム機は一般に焼いた要素の世界座標を利用してアニメーションについてのデータを供給する。しかし、サブネットワークを使用して局所座標を定義してもよい。
【0090】
図9は、
図2に最初に図解され、世界座標空間に定められた位置を有する要素206の一例を説明する図である。上述のように、要素206はオブジェクト200の構造を定義する骨組みの一部分である。
図9に図解された実施形態において、オブジェクト200の人間の全体形が見える。
図2において、要素206を含む肩及び腕を備えたその形の一部分のみが見える。
【0091】
図解の実施形態において、場面又は環境に対して世界座標を定義する座標系902は、オブジェクト200の骨組み内で要素の位置決めを指定するために使用される。このように、要素206の位置210aは世界座標系を使って定義される。要素206の親(要素204a等)が移動するたびに、要素206aの世界座標が再算出されなければならない。同様に、いつどんなノードが移動しても、そのノードのあらゆる子の座標が再算出されなければならない。
【0092】
サブネットワークはその自身の局所座標系に関連付けられてよい。
図10は局所座標空間において定められた位置を有する要素206の一例を説明する図である。図解の実施形態において、座標系1002は原点を要素204bに有する局所座標を定義する。要素206の位置210aはこの局所座標系において算出できる。このようにして、要素206の局所座標は要素204aおよび/または要素202aが移動する時に変化できない。この状況での従属グラフの評価には、要素206の局所座標の再算出を要せず、計算の複雑度や従属グラフを評価するのに要する時間が減少する。
【0093】
局所座標は要素の親に対して又は任意のノードのサブネットワークにおける他のどんな要素に対しても定義されてよい。サブネットワークを実質的に他のサブネットワークとは独立して評価することができるので、サブネットワークの局所座標を、世界座標を更新する必要があるほど最新に更新する必要がない。サブネットワーク内のノードの局所座標が更新される時、従属グラフにおける他のどんな要素の座標ではなく、一般にサブネットワーク内の要素の局所座標だけを更新する必要がある。世界座標は中央処理や定義で算出されてよく、又は
図1に関して記載されたゲームエンジンにより算出されてよく、そしてたいてい要素が他のオブジェクトの要素と相互作用している時だけ算出する必要がある。
【0094】
当業者は、
図8に関する上述の例方法800及びそこで定義されたサブネットワークを使って従属グラフを評価する効率を向上することができると、理解するであろう。このように、より高速のアニメーションを達成でき、またそのアニメーションを表示するためのデータを供給する時にゲーム機に重い負担をかけることがない。
より高いアニメーション精度
【0095】
上述のように、アニメーションデータはエキスポートされ焼いた後によく省略される。このように、要素の動きにおける微細な部分が失われることがある。例えば、データが圧縮又は省略されている時は振動動作を実質的に直線動作に減らしてよい。このようにして、源で作成された動きはゲーム機と通信状態にある表示装置、例えば表示装置116上で正確に再作成されない。データが失われない時でも、ゲーム機によりアニメーションに対して供給されたデータは源データではなく要素の向きから得た値に基づいており、源で作成された動きを正確に反映しないことがある。
【0096】
しかし、従属グラフをゲーム機で評価することによりオブジェクト又はその一部分をアニメーション化することで、もともと源で作成された動きが再生される。このように、ゲーム機ユーザに対して表示された動きがオブジェクトの動作における微細な部分を保持し、アニメータにより吹き込まれた芸術性を保持する。これは、もっぱら機械によりアニメーション化された時に硬い又は不正確に見える人間の動作を再生するために特に重要である。しかし、アニメータはキャラクターの動きを実物そっくりに見えるように作ることができ、またこれらの動きをゲーム機により動きを犠牲にすることなく再生することができる。
【0097】
上述の改善された精度に加え、場面内での要素の相互作用が複数の従属グラフを使って改善できる。焼いた値が利用される時、別のオブジェクトの要素との間で衝突が検出される必要がある。このような衝突を検出するのはコストがかかり、また完全に正確ではない。しかし、従属グラフが評価される時、相互作用をより容易にそしてより詳細に定めることができる。
【0098】
図11は、相互作用することがあるふたつの従属グラフの部分の例を説明するブロック図である。従属グラフ1101には、座標x1、y1及びz1で定義されるように、向き
1を有する第1オブジェクトの第1要素が記述されてよい。同様に、従属グラフ1102には、座標x2、y2及びz2で定義されるように、向き
2を有する第2オブジェクトの第2要素が記述されてよい。
【0099】
このふたつの要素が相互作用する時、これらはメタネットワーク1104に分類されてよく、また機能ノード1106が
図12に図解されるように両者の間に定義される。
図1に関して記載されたゲームエンジンを使用してこのような分類を識別し、および/またはこのような機能ノードを定義してもよい。メタネットワークは、他のどんな従属グラフ又はサブネットワークの評価とも同様に評価することができる。例えば、向き
1又は向き
2のいずれかの値が更新されたかどうかを表すカウンタを提供することができる。ひとつの要素における移動を使用して他要素における移動を定めてよいので、このふたつの要素の相互作用はさらに大幅に正確で本物となる。加えて、コストがかかる衝突検出を避けることができる。
【0100】
例として、向き
1で第1キャラクターの手を記述してよい。向き
2で第2キャラクターの手を記述してよい。ゲームの実行中にふたつのキャラクターは握手することがある。各キャラクターが相手のキャラクターとは独立したあらかじめ定義されたアニメーションを実行する代わりに、ひとつのキャラクターがアニメーション曲線で定義された握手を実行することができ、もう一方のキャラクターは適切に反応することができる。
【0101】
別の例として、向き
1で第1キャラクターの手を記述して、向き
2でドアを記述してよい。ドアが閉まっている時、機能ノード1106を定義して、キャラクターの手でドアを動かしたりドアを通過するのを防ぐことができる。キャラクターの手がドアノブにに触れているなら、例えば、機能ノード1106を定義してキャラクターの手でドアノブを回させることができる。
【0102】
当業者は、上述例及び
図ll及び12に関して記載されたメタネットワークを使ってゲーム機によるアニメーションの精度を向上できることを理解するであろう。アニメーションにおいて使用するコストがかかる作用の数を減らしたり避けたりすることができ、また結果として生じるアニメーションはより正確で自然になることがある。
より適合可能なアニメーション
【0103】
ゲームにおける全ての相互作用又は事象があらかじめ定義できるわけではない。ゲームの結末及びその結末に至る事象は、ユーザからの入力で定められる。これらの入力は状況により予測不可能でありうるし、また変動することもある。このような入力の数及びゲーム実行中のオブジェクトの可能な構成は無限である。このように、多くのアニメーションは源であらかじめ決められるよりもゲームの実行中に定められる必要がある。
【0104】
図13は、ふたつの異なるアニメーション曲線により異なる位置に配置されたオブジェクト1300の例図である。
図13において、オブジェクト1300はバットとして図解される。例として、キャラクターがバットを振ることがある。第1アニメーション曲線を追ってバットを高く振る時、バット1300aが図示のとおり上方を指すように制御要素1304は点1302aに置かれる。第2アニメーション曲線を追ってバットを低く振る時、バット1300aが図示のとおり下方を指すように制御要素1304は点1302bに置かれる。
【0105】
アニメーションを焼く時、未定義の構成はふたつの既存構成を混ぜることにより作成される必要がある。よって、キャラクターが高いスイングアニメーション曲線と低いスイングアニメーション曲線の中間でバットを振るとすると、バット1300aのアニメーションとバット1300bのアニメーションが組み合わせられて、あるバットが両者の間に置かれた状態を作り出す。焼いたアニメーションを組み合わせてこの結果を生み出す方法によって、ふたつの位置(1302a、1302b)でのオブジェクト1300の平均であるオブジェクトが簡単に作成される。このように、バット1300cがバット1300aとバット1300b空間的平均として
図14に図解されるようにアニメーション化される。しかし、このような均分化は、平均されたアニメーションが動いている間、不正確アニメーションになったりアーチファクトが作成されたりする。
図14に見られるように、バット1300cはバット1300aや1300cのいずれより短い。
【0106】
制御要素についてのアニメーション曲線を組み合わせることで、より正確なアニメーションを作成することができる。このように、オブジェクトのふたつの像を空間的に均分する代わりに、これら像のアニメーション曲線が均分化でき、そしてオブジェクトを組み合わせたアニメーション曲線とともに図解することができる。あらかじめ定義されていない動きをこのように図解することがアーチファクトを減少させ、結果として生じるアニメーションの美的品質を向上させることできる。例えば、第1アニメーション曲線を定義して平坦地を歩くキャラクターをアニメーション化してよく、また第2アニメーション曲線を定義して急坂を登るキャラクターをアニメーション化してよい。第1及び第2アニメーション曲線を組み合わせて、キャラクターが緩やかな坂を登るのをアニメーション化してよい。
【0107】
図15は、
図13の位置(1302a、1302b)でのオブジェクト1300の他の図である。しかし、
図15において、バット1300dは点l302dに置かれた制御要素1304を使ってアニメーション化されている。
図15に見られるように、位置1302は点1302a及び1302bでの制御要素1304の位置及び向きを均分化することで定められてよい。結果として生じるバット1300dはより正確になることがあり、加えて、ふたつのアニメーション曲線の平均を使ってアニメーション化された動きはユーザにとってより自然又は信用できるものになることがある。
【0108】
加えて、制御要素の従属グラフは、制御要素及び組み合わせたアニメーション曲線を使った要素をアニメーション化する時に評価することができる。従属グラフを評価することで、他の従属グラフで表された要素が適切に図解され、そして要素の調和した相互作用が維持されてよい。例えば、第1アニメーション曲線を追うキャラクターの腕はキャラクターの体の前に置かれてよく、一方、第2アニメーション曲線を追う同じ腕がキャラクターの体の後ろに置かれてよい。一緒に均分される時、腕はキャラクター体を通り過ぎるように見える。このような調和のとれないアニメーションは、焼いたアニメーションを使うゲーム機では、アニメーションと一緒に使うように設計された球面直線補間等の均分化方法を使ってもあまり防ぐことができない。しかし、腕及び体について従属グラフにおいて定義された制約条件により、腕が体と交差するのを防いだり、制御点及び従属グラフを使って腕の位置を定める時に体を邪魔にならないところに移動してよい。
【0109】
アニメーション曲線は何種類の方法でも組み合わせることができる。ある実施形態では、アニメーション曲線が均分される。他の実施形態において、アニメーション曲線の重み付き平均が定められる。重み付き平均はアニメータにより源において又はゲームにおける要因によって定められてよい。上述の、キャラクターが緩やかな坂を登る例では、例えば、キャラクターは第1及び第2アニメーション曲線の重み付き平均を使ってアニメーション化されてよく、重み付き平均は、平坦地又は急坂と比較した緩やかな坂の傾斜度により定められる。重み付き平均は一定であってよく、又は経時的に調節されてよい。例えば、ゲームエンジンにより、各従属グラフ又は所定の機能の相対的重み付けの変動性を定めてよく、これはアニメータにより作成又は設計されてよいし、経時的重み付けを変動させるのに使用してもよい。
【0110】
ゲーム機における従属グラフを評価することが、逆運動学をゲームの実行中に行うことができる容易さをも向上させるであろう。逆運動学とは、要素の位置及び向きに基いて、所望の最終位置及び向きを定めることである。順運動学ソルバのように各要素に対する調節を受信する代わりに、逆運動学ソルバは手続的入力を受信し、その手続的入力を満たす調節を定める必要がある。
【0111】
例えば、従属グラフが
図4に関して記載されるように評価される時、要素の位置及び向きは各時間t
gについてのアニメーション曲線を使って定められる。しかし、逆運動学ソルバには任意のアニメーション曲線は与えられず、各位置及び向きをアニメーション曲線がない状態で定めたりアニメーション曲線を一意的に定義する必要がある。例えば、ゲーム機ユーザは指示を入力してキャラクターにひとつの食べ物等のアイテムをテーブルから手に取らせることがある。逆運動学ソルバは、キャラクターの手の最終位置(食べ物アイテムの位置に等しい)を受信し、その後、手の位置、向きや動き、及び手でその最終位置をつかませる接続要素を定めてよい。
【0112】
逆運動学的解法が、ゲーム機によりアニメーション化された時に美学的に心地よいことを保証するために、アニメータは源において逆運動学リグ及び従属グラフを定め又は作成してよい。ゲーム機で逆運動学従属グラフを使って、手続的入力に基づき逆運動学解法を定めてよい。このように、あらかじめ定義されたアニメーション曲線に関連付けられていない状況になった時でも、アニメータのもともとの芸術性を使ってその状況における事象をアニメーション化することができる。
【0113】
逆運動学従属グラフは、方法500例のブロック506においてエキスポートされた従属グラフに応じて定義されてよい。本実施形態において、アニメーション曲線とともにオブジェクト又はその一部分をアニメーション化するために使用される従属グラフは、逆運動学問題を解決するのに使うために再構成されてよい。例えば、従属グラフ400の一部分における値ノード408x、408y及び408z(それぞれx、y及びz平面におけるアニメーション曲線を表す)は、従属グラフ400の一部分で表された要素の次の所望座標を表す値を保持するノードに置き換えられてよい。機能ノード(410x、410y、410z)は、このような要素の所望座標を生み出す角度又は向きを定める機能を保持するノードに同様に置き換えられてよい。当業者は、従属グラフ、又は特に従属グラフ400の一部分、が逆運動学と一緒に使うために再構成することができる他の方法を認めるであろう。
【0114】
逆運動学従属グラフはまた、完全に個別の従属グラフとして定義されてよい。アニメータは源においてこの従属グラフを作成してよく、またこの従属グラフの記述は方法500のブロック506にてエキスポートされてよく、ブロック508にてゲーム機にロードされてよい。加えて、従属グラフとアニメーション曲線データはエキスポート及びロードされたとしてあらかじめ記載される。逆運動学従属グラフはゲームの実行中にインタラクティブレートで評価されてよい。
【0115】
図1に関して記載されたゲームエンジン等のゲームエンジンにより、逆運動学を使うべきだということを示す事象が識別されてよい。この事象により従属グラフが再構成され、又は個別の従属グラフが使われることがある。例えば、上述のように、ユーザがコマンドを入力してキャラクターにアイテムを手に取らせる時、エンジンを逆運動学従属グラフに切り替えてキャラクターの手及びその手でアイテムの位置をつかませる接続要素を定めてよい。ある実施形態では、ふたつの従属グラフを使用して逆運動学をアニメーション化し、定められた逆運動学解法が平滑であることを保証する。例えば、第1逆運動学グラフを使って定められた動きを第2逆運動学グラフを使って定められた動きと混ぜてよい。動きを混ぜることは、ふたつの従属グラフの平均、ふたつの従属グラフの一定の重み付き平均、又は経時的に変動したりずれたりするふたつの従属グラフの重み付き平均により定められてよい。
【0116】
ゲーム機にて逆運動学従属グラフを評価することで多くの利点がもたらされる。例えば、アニメータが源において作成した従属グラフを、ゲーム機に逆運動学アルゴリズム定めさせるよう要求する代わりに使用してもよい。ゲーム機により定義されたこのような逆運動学解法では、アニメータの芸術性が保持できないことがあり、ゲーム機に重い負担をかける。加えて、逆運動学解法は逆運動学従属グラフを使ってより正確になり、またより多くの要素を伴ってよく、それにより結果として生じるアニメーションがユーザにとってより信用できるものとなる。例えば、キャラクターがアイテムを場面の床から手に取っていると、ゲームが定義した逆運動学解法はキャラクターを下に手を伸ばすか腰で硬く曲がるようアニメーション化してよい。逆運動学従属グラフを使って、しゃがんでアイテムをより実物そっくりに拾うようにキャラクターをアニメーション化できる。
【0117】
当業者は、
図13-15に関して記載されたアニメーション曲線を混ぜること及び逆運動学従属グラフを含む上述例を使って、ゲームが生み出したアニメーションの適合性を向上させることができると理解するであろう。アニメータによりはっきりとアニメーション化されていない状況は、ゲーム機を使って調和がとれて簡単な方法でアニメーション化できる。
【0118】
当業者は、例示システム、装置、方法、及び上述の実施形態を使って源従属グラフ及びアニメーション曲線をゲーム機とともに評価することができると理解するであろう。従属グラフは、ゲーム機によりゲームの実行中にインタラクティブレートで評価されてよい。従属グラフの評価により、オブジェクト又はその一部分をアニメーション化するためのデータが、例えばゲーム機と通信状態にある表示装置上に供給されることがある。従属グラフの記述により、ゲーム機へ転送する必要があるデータの量を減少することがある。従属グラフのサブネットワークを特定することで、従属グラフが評価される効率が向上することがある。従属グラフは複数の並列プロセッサにより評価されてよい。機能を定義してふたつの従属グラフを関連付けすることができ、また従属グラフのアニメーション曲線を組み合わせることができる。切り替え事象により、ゲーム機に逆運動学従属グラフを使わせてよい。これによりゲーム機は、より早く、より少ないリソースを使って、より正確に、そしてより多様な状況でアニメーションを生み出してよい。
【0119】
当業者は、ここで記載された例及び実施形態のいくつかが要素の位置又は向きにおける変化に関連するが、ここでの記載が制御要素および/またはアニメーション曲線により定義され、表され、又は特定されたどの状態の変化にも同等に適用することができる、と認めるであろう。例えば、状態の変化が運動、向き、位置、色、形状、影、又はテクスチャの修正された経路を表してよく、又は選択された行動や複数の選択された行動についてのトリガをも表してよい。
【0120】
当業者は、記載されたシステム、装置、構成部品、方法、又はアルゴリズムは種々の構成又はステップを使って実施されてよいと認めるであろう。上述例のいずれによっても構成やステップの数の制限を生じるものではない。例えば、ゲーム機l00の構成は、その構成部品の記載例が、電子ハードウエア、コンピュータソフトウエア、又は両者の組み合わせとして実施されるかたちで存在する。図解例が機能性の一般的用語で上記に記載された。本開示の範囲を逸脱することなく、より多い又は少ない構成部品やステップが実施されてよい。当業者は、記載された機能性を実施する様々な方法を認めるであろうが、このような実施は本開示の範囲からの逸脱と解釈されるべきではない。
【0121】
上記詳細な記載が種々の態様に適用されるよう、新規特徴を表示、記載、及び指摘した一方、当業者によって図解された装置、装置、又は方法における形及び細部に種々の省略、代替、及び変更を本開示の範囲を超えることなく加えてもよい、と理解されるであろう。認識されるであろうが、態様及び態様の変更が、いくつかの特徴を他のものとは別々に使用又は実行してもよいように、ここに示した特徴及び利点の全てを提供しない形の範囲内で具現化されてよい。本開示の範囲は添付の請求項、上記説明、又はその両方により定義される。