以下、実施の形態に従って本発明を詳細に説明する。
〔1〕本発明に関連するアニメーションパス作成装置の概要について
本発明の実施の形態の説明に入る前に、本発明に関連するアニメーションパス作成装置について説明する。
図2に、本発明に関連するアニメーションパス作成装置1の装置構成を図示する。ここで、図中、図1に示したものと同じものについては同一の記号で示してある。
この図に示す本発明に関連するアニメーションパス作成装置1は、パス通過点設定手段10と、パス情報格納手段11と、パス作成手段12と、干渉検出手段13と、迂回パス生成手段14とを備える。
このパス通過点設定手段10は、ユーザとの対話処理等に従って、パスを構成するパス通過点を設定する。パス情報格納手段11は、パス通過点設定手段10の設定したパス通過点を格納する。パス作成手段12は、パス情報格納手段11の格納するパス通過点の間を直線又は曲線補間することで、それらを結ぶパスを作成する。干渉検出手段13は、パス作成手段12の作成したパスと直接的、間接的に干渉する干渉物体が存在するのか否かを検出する。迂回パス生成手段14は、干渉検出手段13が干渉物体を検出するときに、干渉物体を迂回するパスを生成する。
このように構成される本発明に関連するアニメーションパス作成装置1では、パス通過点設定手段10は、ユーザと対話すること等で、視点等のパスを構成するパス通過点を設定してパス情報格納手段11に格納する。
パス作成手段12は、パス作成要求があると、パス情報格納手段11に格納されているパス通過点の間を直線又は曲線補間することで、それらを結ぶパスを作成する。このとき、干渉検出手段13は、パス作成手段12の作成したパスと直接的、間接的に干渉する干渉物体が存在するのか否かを検出する。
干渉検出手段13により干渉物体の存在が検出されると、迂回パス生成手段14は、迂回パスを形成する平面を設定し、その平面によりスライスされる干渉物体のバウンディング円を求めて、そのバウンディング円を回避するパスを求めたり、その平面によりスライスされる干渉物体の断面形状を求めて、その断面形状を回避するパスを求めたり、その平面に干渉物体を回避するベクトル場を作成して、そのベクトル場に従って干渉物体を回避するパスを求めることで、干渉物体を迂回するパスを生成する。
このように、図2に図示する本発明に関連するアニメーションパス作成装置1では、障害物を自動的に回避できるパスを作成できるようになることから、利用者は、従来のように障害物を回避するパスを作成するために短い時間間隔のパス通過点を設定することもなくなって、簡単にパスを作成できるようになるとともに、パス情報の格納に要するメモリ容量を大幅に削減できるようになる。
そして、障害物を回避するパスを動的に作成できるようになることから、移動する物体が複数ある場合や、パスの設定後に障害物の状態が変化することが起きても、それらに衝突することのないパスアニメーションを実現できるのである。
〔2〕本発明を具備するアニメーション表示装置の装置構成について
図3に、本発明を具備するアニメーション表示装置の装置構成を図示する。
図中、3は本発明を具備するアニメーション表示装置であって、コンピュータグラフィックスに従って仮想世界を現出するもの、4はアニメーション表示装置3の備える端末であって、仮想世界を表示するとともに、ユーザとの対話手段となるものである。
このアニメーション表示装置3は、アニメーションデータ管理機構30と、アニメーションパス入力機構31と、アニメーションパス作成機構32と、アニメーション生成機構33と、表示用データ格納機構34と、アニメーション描画機構35とを備える。
このアニメーションデータ管理機構30は、仮想世界を構成する各物体の持つ形状や質感等の物体データと、各物体の時刻による変化を表すアニメーションデータと、アニメーションパスの作成に必要となる情報とを管理する。
アニメーションパス入力機構31は、利用者と対話しつつアニメーションパスの作成に必要となる情報を作成して、アニメーションデータ管理機構30に格納する。
アニメーションパス作成機構32は、アニメーション生成機構33に展開され、アニメーションデータ管理機構30の管理するアニメーションパスの作成に必要となる情報を使って、パスアニメーションに使用するアニメーションパスを作成する。
アニメーション生成機構33は、アニメーションパス作成機構32の作成したアニメーションパスと、アニメーションデータ管理機構30の管理データとを使って、各時刻の物体の位置や状態を算出することでアニメーションを作成する。
表示用データ格納機構34は、アニメーション生成機構33の生成したアニメーションの表示用データを格納する。アニメーション描画機構35は、アニメーション生成機構33からの描画指示を受けて、表示用データ格納機構34から表示用データを読み出して端末4のディスプレイ画面に表示することで、アニメーションを描画する。
〔3〕本発明に関連するアニメーションパス作成装置の詳細について
次に、このように構成されるアニメーション表示装置3により実現される、図2に図示した本発明に関連するアニメーションパス作成装置1の詳細について説明する。
図2に図示した本発明に関連するアニメーションパス作成装置1を実現する場合には、上述のアニメーションパス入力機構31は、利用者と対話することで、3次元座標位置で指定されるパス通過点を設定して、これをそのままアニメーションデータ管理機構30に格納する処理を行う。
このパス通過点の入力処理は、従来技術と変わることなく行われるのであるが、図2に図示した本発明に関連するアニメーションパス作成装置1では、アニメーションパス上に干渉物体があるときには、それを自動的に回避する構成を採るものであることから、利用者は、従来技術のような困難を伴うことなく簡単にこれらのパス通過点を入力できることになる。
アニメーションパス作成機構32は、アニメーションデータ管理機構30に格納されるこれらのパス通過点を使って、アニメーションパスを作成する処理を実行する。
図4に、このアニメーションパス作成機構32の実行する処理フローの基本構成を図示する。
この処理フローに示すように、アニメーションパス作成機構32は、アニメーションパスの作成に入ると、先ず最初に、ステップ1(s1)で、パス通過点P(n)からパス通過点P(n+1)へ移動対象の物(例えば視点)を移動させるときに、他の物体と干渉するのか否かを判断して、干渉しないことを判断するときには、ステップ2(s2)に進んで、その移動対象の物をパス通過点P(n)からパス通過点P(n+1)へ移動させる。
一方、ステップ1(s1)で、他の物体と干渉することを判断するときには、ステップ5(s5)に進んで、その干渉物体を回避するパスを生成してから、ステップ2(s2)に進んで、その生成した回避パスに従って、移動対象の物をパス通過点P(n)からパス通過点P(n+1)へ移動させる。
そして、ステップ2(s2)の処理を終了すると、続いて、ステップ3(s3)で、変数nの値を1つインクリメントし、続くステップ4(s4)で、変数nの値が最終のパス通過点Nに到達したのか否かを判断して、到達したことを判断するときには、アニメーションパスの作成処理を終了し、到達していないことを判断するときは、ステップ1(s1)に戻っていく。
図5に、このアニメーションパス作成機構32の実行する回避パス生成処理の処理フローの一例を図示する。
この処理フローに従う場合、アニメーションパス作成機構32は、先ず最初に、ステップ1(t1)で、パス通過点P(n),P(n+1)を面上に置く回避パス生成用の面PLを決定する。
続いて、ステップ2(t2)で、物体を囲むバウンディング球をその面PLでスライスすることで求まるバウンディング円を求めて、それらの内で、パス通過点P(n)とパス通過点P(n+1)とを結ぶ直線と干渉するものを求めるとともに、更に、それらに干渉するバウンディング円を求めて、これらをバウンディング円リストCLに格納する。
図6の例で説明するならば、パス通過点P(n)とパス通過点P(n+1)とを結ぶ直線と干渉するバウンディング円C1,C2を求めるとともに、それらに干渉するバウンディング円C3,C4を求めて、これらのバウンディング円C1,C2,C3,C4をバウンディング円リストCLに格納するのである。
続いて、ステップ3(t3)で、パス通過点P(n)とパス通過点P(n+1)とを結ぶ直線と、バウンディング円リストCLに格納されるバウンディング円との交点を求めて、それらの内で、パス通過点P(n)に最も近い点Aと、パス通過点P(n+1)に最も近い点Bとを求める。図6のように、点A,Bを求めるのである。
続いて、ステップ4(t4)で、移動対象の物をパス通過点P(n)から点Aまで移動させる。続いて、ステップ5(t5)で、パス通過点P(n)とパス通過点P(n+1)とを結ぶ直線で区切られる面PL上の2つの面の中から、回避パスを生成する側の面PL2を決定する。この決定処理は、利用者に右側というように指定させる構成を採ってもよいが、少ないバウンディング円を持つ面という定義に従ってシステムが動的に選択する構成を採ることも可能である。
続いて、ステップ6(t6)で、点Aと点Bとの間の点Cを設定する。続いて、ステップ7(t7)で、点Cを通り、かつ、点Aと点Bとを結ぶ直線に垂直な面PL上に位置する直線Vと、バウンディング円リストCLに格納されるバウンディング円との交点を求めて、それらの内で、面PL2上に位置するものを特定する。
続いて、ステップ8(t8)で、ステップ7で特定した交点の数が“0”であることを判断するときには、Cを「次の点」として設定し、特定した交点の数が“1”であることを判断するときには、その特定した交点を「次の点」として設定し、特定した交点の数が“1”よりも大きいことを判断するときには、それらの交点の内で点Aと点Bとを結ぶ直線から最も遠い交点を「次の点」として設定する。
続いて、ステップ9(t9)で、移動対象の物をステップ8で設定した「次の点」まで移動させる。続いて、ステップ10(t10)で、点Cを点B側へ動かし、続くステップ11(t11)で、点Cがパス通過点P(n+1)を越えたのか否かを判断して、越えたことを判断するときには、処理を終了し、越えないことを判断するときには、ステップ7に戻っていく。
このようにして、図6の例で説明するならば、「パス通過点P(n)→A→K1→K2→K3→K4→B→パス通過点P(n+1)」という回避パスが自動作成されることになる。
この図5の処理フローに従う場合、アニメーションパス作成機構32は、バウンディング円を用いて、干渉物体を回避するアニメーションパスを作成していく構成を採ることから、高速に回避パスを生成できるという利点がある。
図7に、アニメーションパス作成機構32の実行する回避パス生成処理の処理フローの他の一例を図示する。
この処理フローに従う場合、アニメーションパス作成機構32は、先ず最初に、ステップ1(t1)で、パス通過点P(n),P(n+1)を面上に置く回避パス生成用の面PLを決定する。
続いて、ステップ2(t2)で、物体をその面PLでスライスすることで求まる断面形状を求めて、それらの内で、パス通過点P(n)とパス通過点P(n+1)とを結ぶ直線と干渉する障害物の断面形状を求めるとともに、更に、それらに干渉する障害物の断面形状を求めて、これらを障害物リストOLに格納する。
図8の例で説明するならば、パス通過点P(n)とパス通過点P(n+1)とを結ぶ直線と干渉する障害物の断面形状D1,D2を求めるとともに、それらに干渉する障害物の断面形状D3を求めて、これらの断面形状D1,D2,D3を障害物リストOLに格納するのである。
続いて、ステップ3(t3)で、パス通過点P(n)とパス通過点P(n+1)とを結ぶ直線と、障害物リストOLに格納される断面形状との交点を求めて、それらの内で、パス通過点P(n)に最も近い点Aと、パス通過点P(n+1)に最も近い点Bとを求める。図8のように、点A,Bを求めるのである。
続いて、ステップ4(t4)で、移動対象の物をパス通過点P(n)から点Aまで移動させる。続いて、ステップ5(t5)で、パス通過点P(n)とパス通過点P(n+1)とを結ぶ直線で区切られる面PL上の2つの面の中から、回避パスを生成する側の面PL2を決定する。この決定処理は、利用者に右側というように指定させる構成を採ってもよいが、少ない断面形状を持つ面という定義に従ってシステムが動的に選択する構成を採ることも可能である。
続いて、ステップ6(t6)で、点Aと点Bとの間の点Cを設定する。続いて、ステップ7(t7)で、点Cを通り、かつ、点Aと点Bとを結ぶ直線に垂直な面PL上に位置する直線Vと、障害物リストOLに格納される断面形状との交点を求めて、それらの内で、面PL2上に位置するものを特定する。
続いて、ステップ8(t8)で、ステップ7で特定した交点の数が“0”であることを判断するときには、Cを「次の点」として設定し、特定した交点の数が“1”であることを判断するときには、その特定した交点を「次の点」として設定し、特定した交点の数が“1”よりも大きいことを判断するときには、それらの交点の内で点Aと点Bとを結ぶ直線から最も遠い交点を「次の点」として設定する。
続いて、ステップ9(t9)で、移動対象の物をステップ8で設定した「次の点」まで移動させる。続いて、ステップ10(t10)で、点Cを点B側へ動かし、続くステップ11(t11)で、点Cがパス通過点P(n+1)を越えたのか否かを判断して、越えたことを判断するときには、処理を終了し、越えないことを判断するときには、ステップ7に戻っていく。
このようにして、図8の例で説明するならば、「パス通過点P(n)→A→K1→K2→K3→K4→B→パス通過点P(n+1)」という回避パスが自動生成されることになる。
この図8の処理フローに従う場合、アニメーションパス作成機構32は、干渉物体の形状を用いて、干渉物体を回避するアニメーションパスを作成していく構成を採ることから、干渉物体の形状の起伏に沿ったリアルな回避パスを生成できるという利点がある。
図9に、アニメーションパス作成機構32の実行する回避パス生成処理の処理フローの他の一例を図示する。
この処理フローに従う場合、アニメーションパス作成機構32は、先ず最初に、ステップ1(t1)で、パス通過点P(n),P(n+1)を面上に置く回避パス生成用の面PLを決定する。
続いて、ステップ2(t2)で、物体をその面PLでスライスすることで求まる断面形状を求めて、それを例えば1.2倍というように拡大スケーリングして、それらのスケーリングした断面形状の内で、パス通過点P(n)とパス通過点P(n+1)とを結ぶ直線と干渉するものを求めるとともに、更に、それらに干渉するスケーリングした断面形状を求めて、これらを障害物リストSLに格納する。
図10の例で説明するならば、パス通過点P(n)とパス通過点P(n+1)とを結ぶ直線と干渉するスケーリングした障害物の断面形状E1,E2を求めるとともに、それらに干渉するスケーリングした障害物の断面形状E3を求めて、これらの断面形状E1,E2,E3を障害物リストSLに格納するのである。ここで、図10中の破線は、スケーリングする前の障害物の断面形状である。
続いて、ステップ3(t3)で、パス通過点P(n)とパス通過点P(n+1)とを結ぶ直線と、障害物リストSLに格納されるスケーリングした断面形状との交点を求めて、それらの内で、パス通過点P(n)に最も近い点Aと、パス通過点P(n+1)に最も近い点Bとを求める。図10のように、点A,Bを求めるのである。
続いて、ステップ4(t4)で、移動対象の物をパス通過点P(n)から点Aまで移動させる。続いて、ステップ5(t5)で、パス通過点P(n)とパス通過点P(n+1)とを結ぶ直線で区切られる面PL上の2つの面の中から、回避パスを生成する側の面PL2を決定する。この決定処理は、利用者に右側というように指定させる構成を採ってもよいが、少ない断面形状を持つ面という定義に従ってシステムが動的に選択する構成を採ることも可能である。
続いて、ステップ6(t6)で、点Aと点Bとの間の点Cを設定する。続いて、ステップ7(t7)で、点Cを通り、かつ、点Aと点Bとを結ぶ直線に垂直な面PL上に位置する直線Vと、障害物リストSLに格納されるスケーリングした断面形状との交点を求めて、それらの内で、面PL2上に位置するものを特定する。
続いて、ステップ8(t8)で、ステップ7で特定した交点の数が“0”であることを判断するときには、Cを「次の点」として設定し、特定した交点の数が“1”であることを判断するときには、その特定した交点を「次の点」として設定し、特定した交点の数が“1”よりも大きいことを判断するときには、それらの交点の内で点Aと点Bとを結ぶ直線から最も遠い交点を「次の点」として設定する。
続いて、ステップ9(t9)で、移動対象の物をステップ8で設定した「次の点」まで移動させる。続いて、ステップ10(t10)で、点Cを点B側へ動かし、続くステップ11(t11)で、点Cがパス通過点P(n+1)を越えたのか否かを判断して、越えたことを判断するときには、処理を終了し、越えないことを判断するときには、ステップ7に戻っていく。
このようにして、図10の例で説明するならば、「パス通過点P(n)→A→K1→K2→K3→K4→B→パス通過点P(n+1)」という回避パスが自動生成されることになる。
この図9の処理フローに従う場合、アニメーションパス作成機構32は、拡大した干渉物体の形状を用いて、干渉物体を回避するアニメーションパスを生成していく構成を採ることから、干渉物体を避けながら歩いていくといような実世界の感覚により近い回避パスを生成できるという利点がある。
図11に、アニメーションパス作成機構32の実行する回避パス生成処理の処理フローの他の一例を図示する。
この例は、流速場を使って、パス通過点P(n)とパス通過点P(n+1)とを結ぶ回避パスを作成するものであって、この処理フローに従う場合、アニメーションパス作成機構32は、先ず最初に、ステップ1(t1)で、パス通過点P(n),P(n+1)を面上に置く回避パス生成用の面PLを決定する。続いて、ステップ2(t2)で、その面PL上で、パス通過点P(n)に湧き出し口、パス通過点P(n+1)に吸い込み口を配置する。
続いて、ステップ3(t3)で、物体をその面PLでスライスすることで求まる断面形状を求めて、それらの断面形状の内で、パス通過点P(n)とパス通過点P(n+1)とを結ぶ直線と干渉するものと、更に、それらに干渉する断面形状を求めて、これらの障害物(干渉物体)の位置に、パス通過点P(n)に近い側に湧き出し口、パス通過点P(n+1)に近い側に吸い込み口を配置する形態に従って、湧き出し口と吸い込み口とのペアーを配置する。
このペアーとなる湧き出し口と吸い込み口は、障害物を流体力学的に等価表現するものであって、図12(a)に示すように、1つのペアーのもので等価表現したり、障害物の断面形状のアスペクト比に合わせて複数のペアーのもので等価表現することがある。また、このペアーとなる湧き出し口と吸い込み口の強さは、障害物の大きさを流体力学的に等価表現するものであって、図12(b)に示すように、障害物の断面形状やバウンディング円が大きいときには大きな値を示し、小さいときには小さな値を示すようにと調節する。
このようにすると、公知の流体力学の原理に従って、図13に示すように、始点となるパス通過点P(n)と終点となるパス通過点P(n+1)との間に、湧き出し口と吸い込み口とのペアーで等価表現される障害物を回避する流速場が形成される。ここで、図中の○は湧き出し口を表し、●は吸い込み口を表している。
この流速場での任意の観測点でのx方向の流速Ux と、y方向の流速Uy とは、流体力学で知られているように、次式に従って導出される。
ここで、図14に示すように、r
i は観測点と各湧き出し口/吸い込み口との間の距離、K
i は各湧き出し口/吸い込み口の強さ、θ
i は観測点と各湧き出し口/吸い込み口とのなす角度である。
これから、この流速場を形成すると、続いて、ステップ4(t4)で、この〔数1〕式に従って、パス通過点P(n)での流速ベクトルを求め、続くステップ5(t5)で、この求めたパス通過点P(n)での流速ベクトルとタイムステップとから、次の観測点となる面PL上の位置Cを求める。
続いて、ステップ6(t6)で、その位置Cがパス通過点P(n+1)の近傍に到達したのか否かを判断して、到達したことを判断するときには、処理を終了し、到達していないことを判断するときには、ステップ7(t7)に進んで、〔数1〕式に従って、その位置Cでの流速ベクトルを求めてから、ステップ5に戻っていく。ここで、ステップ5で使用するタイムステップは、利用者が予め与えておくとか、前回のフレーム処理に要した時間を用いることで決定する。
このようにして、図13の例で説明するならば、図中の始点で示すパス通過点P(n)から、図中の終点で示すパス通過点P(n+1)に到るいずれかの流線で表される回避パスが自動生成されることになる。
この図11の処理フローに従う場合、アニメーションパス作成機構32は、始点となるパス通過点P(n)と終点となるパス通過点P(n+1)とが与えられると、パス途中の通過点を知らなくても自動的に回路パスを生成できるという利点があることから、回避パス生成に要する手間を大幅に削減できるとともに、回避パス生成に要するメモリを大幅に削減できるようになる。
なお、この図11の処理フローでは、パス通過点P(n),P(n+1)を面上に置く回避パス生成用の面PLを決定して、その面PL上に流速場を形成することで、パス通過点P(n)とパス通過点P(n+1)とを結ぶ回避パスを生成するという構成を開示したが、面PLを使わずに流速場を形成して、3次元処理に従ってこの回避パスを生成する構成を採ることも可能である。
〔4〕本発明の実施の形態について
次に、実施の形態に従って本発明を詳細に説明する。
本発明を実現する場合には、上述のアニメーションパス入力機構31は、先ず最初に、利用者と対話することで、仮想世界を構成する平面の中から、アニメーションパスを設定する平面を選択して、その平面上でパス通過点を設定することで移動物体の平面的なアニメーションパスを設定する。
例えば、移動物体が鳥である場合には、図15に示すように、重力方向に直交する平面を表示する画面を選択し、その画面上にパス通過点を設定することで、鳥のアニメーションパスを設定するのである。ここで、この図15は、本発明者らが使用している3次元画像表示ライブラリで描かれた画面を表しており、建物の上を鳥が移動していくことを想定している。
このときのアニメーションパス設定に使用する平面は、移動する物体の属性に合わせて利用者が選択することになるものであって、例えば、移動する物体が鳥である場合には、鳥が重力方向に直交する平面を移動することを基本動作としているので、利用者は、パス設定に使用する平面として、上述のように、重力方向に直交する平面を選択し、また、移動する物体が犬である場合には、犬が建物に沿って移動することを基本動作としているので、パス設定に使用する平面として、重力方向に平行な平面を選択するというように処理することになる。
アニメーションパス入力機構31は、移動物体の平面的なアニメーションパスを設定すると、続いて、その設定した平面的なアニメーションパスのCG世界での位置を算出して、それをアニメーションデータ管理機構30に登録する。例えば、XY平面を表示する画面で設定された点(xw,yw )は、CG世界では(xc,yc,zc ) という3次元座標値を持つので、このCG世界での位置を算出するのである。
この算出処理は、具体的には、次の手順により行われる。すなわち、本発明者らが使用している3次元画像表示ライブラリでは、図16に示すように、2つの変換行列A,Bを用いて、CG世界での視野ボリュームを正規化投影座標系に変換し、その正規化投影座標系のどの部分を画面上に表示するかを指定する構成を採っている。従って、画面上で指定された点の持つCG世界での位置は、この逆変換を行うことで求めることができる。
正規化投影座標系から画面への変換規約に従って、画面上の点(xw,yw )は、正規化投影座標系では(xn,yn,zmax )となる。ここで、正規化投影座標系のz値は視点からの奥行きを示す値で、zmax は表示範囲の一番手前の値である。これから、CG世界での位置(xc,yc,zc ) は、正規化投影座標系での位置(xn,yn,zmax )に、2つの変換行列A,Bへの逆行列を掛けることで求めることができ、
(xc,yc,zc ) =(AB)-1(xn,yn,zmax )
と求めることができる。但し、このようにして求まるz値は、利用者の希望するアニメーションパスの持つべき値ではなく、あくまで、このようにして求まるx/y値のみが、そのアニメーションパスの持つべき値なのである。
このようにして、本発明を実現する場合には、アニメーションパス入力機構31は、利用者と対話することで、仮想世界を構成する平面の中から、アニメーションパスを設定する平面を選択して、その平面上でパス通過点を設定することで移動する物体の平面的なアニメーションパス(その平面上の座標値のみが有効となる)を設定し、その設定したアニメーションパスのCG世界での位置を算出して、それをアニメーションデータ管理機構30に登録するのである。
図17に、このアニメーションパス入力機構31の処理に従ってアニメーションデータ管理機構30に格納されるパス情報の一例を図示する。
この図に示すように、アニメーションデータ管理機構30には、図中の(a)に示すように、第1フレームでの物体の位置、第3フレームでの物体の位置というようにして、アニメーションパス入力機構31の設定したアニメーションパスの位置情報が格納されるとともに、図中の(b)に示すように、このアニメーションパスの設定にあたってアニメーションパス入力機構31の選択した平面の持つ法線の方向データが格納される。そして、これらに加えて、アニメーションパス入力機構31では決定されていないこの方向データ上のパス位置を決定することになる変位データが格納される。ここで、この変位データの値は、システムで定義されたり、利用者により設定されることになる。
アニメーションパス作成機構32は、アニメーションデータ管理機構30に格納されるこれらのパス情報を使って、最終のアニメーションパスを作成する処理を実行し、アニメーション生成機構33は、この作成されたアニメーションパスを使ってアニメーションを生成して表示用データ格納機構34に格納していくことで、ディスプレイ画面に表示するよう処理する。
すなわち、アニメーション生成機構33は、図18の処理フローに示すように、先ず最初に、ステップ1(u1)で、アニメーションの開始時刻を初期化し、続いて、ステップ2(u2)で、アニメーションの終了時刻か否かを判断して、終了時刻に到達したことを判断するときには処理を終了する。一方、終了時刻に到達していないことを判断するときには、ステップ3(u3)に進んで、アニメーションパス作成機構32により作成されるアニメーションパスを参照しつつ、時刻Tにおける各物体の状態を算出して表示用データ格納機構34に格納していくことでディスプレイ画面に表示し、続くステップ4(u4)で、時刻Tをインクリメントしてからステップ2に戻っていくことを繰り返していくのである。
図19に、アニメーションパス作成機構32の実行するアニメーションパス作成機構の処理フローの一例を図示する。
ここで、この処理フローでは、利用者が移動物体として飛ぶ物を想定し、重力方向に直交する平面を表示する画面を選択して、その画面上でその飛ぶ物のアニメーションパスを設定したことを想定している。すなわち、図17に示した方向データは、重力方向を表しており、図17に示した変位データは、アニメーションパス入力機構31では決定されていない重力方向のパス位置を決定するものとなる。
この処理フローに示すように、アニメーションパス作成機構32は、アニメーションパスの作成に入ると、先ず最初に、ステップ1(v1)で、アニメーションデータ管理機構30の管理データに従って、アニメーション生成機構33の設定した時刻Tにおける移動物体の位置を算出する。図17に示したように、アニメーションデータ管理機構30は、利用者の設定した離散的な時刻(フレーム)での移動物体の位置を管理していることから、時刻Tにおける物体位置がアニメーションデータ管理機構30に管理されていないときには、管理されている時刻の物体位置を補間することで求めることになる。
時刻Tの移動物体の位置を求めると、続いて、ステップ2(v2)で、アニメーションデータ管理機構30の管理する方向データの指す方向と、その逆方向とで規定される直線を特定し、その物体位置からその直線を延長していって、それと交差する物体との交差位置を求める。この例では、方向データとして重力方向を想定しているので、このステップ2の処理に従って、時刻Tの移動物体の上下方向にある物体との交差位置が求められることになる。
続いて、ステップ3(v3)で、ステップ2で求めた物体の交差位置の内で、方向データの指す方向の逆方向に位置する最も端の交差位置を求める。この例では、方向データとして重力方向を想定しているので、このステップ3の処理に従って、ステップ2で求めた物体の交差位置の内の一番上にある交差位置が求められることになる。
続いて、ステップ4(v4)で、ステップ3で求めた物体の交差位置から、方向データの指す方向の逆方向に向けて、アニメーションデータ管理機構30の管理する変位データの値分変位する位置データを求めて、ステップ1で求めた移動物体の持つ位置データの内のその方向の位置データを、その求めた位置データに置き換えることで補正する。
この例では、方向データとして重力方向を想定しているので、このステップ4の処理に従って、ステップ1で求めた移動物体の持つ位置データの内の重力方向の位置データが、ステップ2で求めた交差位置から変位データ分上にある位置データへと補正されることになる。
続いて、ステップ5(v5)で、ステップ4で求めた補正後の位置から規定されるアニメーションパスを表示用データ格納機構34に格納して処理を終了する。
このようにして、アニメーションパス作成機構32は、この図19の処理フローを実行することで、図20に示すように、ステップ1で、時刻Tにおける移動物体の平面的な位置(xf,yf,zf )を求めると、重力方向を示す方向データ(xd,yd,zd )に従って、ステップ3で、その移動物体の上下方向に位置する一番上の物体との交差位置(xg,yg,zg )を求め、ステップ4で、ステップ1で求めた位置(xf,yf,zf )を、その位置(xg,yg,zg )から変位データH分高い位置(xh,yh,zh )にあるようにと補正するのである。
すなわち、次式に従って、ステップ1で求めた時刻Tにおける移動物体の位置(xf,yf,zf )を、位置(xh,yh,zh )へと補正することになる。
そして、上述したように、アニメーション生成機構33は、このアニメーションパス作成機構32により作成されたアニメーションパスを使って、アニメーションを生成して表示用データ格納機構34に格納していくことで、ディスプレイ画面に表示するように処理していくことになる。
このように、アニメーションパス作成機構32は、アニメーションパス入力機構31が、図21(a)に示すように、利用者と対話することで重力方向に直交する平面で飛ぶ物のアニメーションパスを設定すると、図21(b)に示すように、その重力方向に直交する平面でのパス位置をそのままとしながら、図21(c)に示すように、その設定したパスに直交する直線上に位置する一番上の物体からの距離が変位データの指すものとなるようにと、そのアニメーションパスを補正していくことで、アニメーション生成機構33の使用するアニメーションパスを作成していくのである。
このようにして、物体のパスを3次元的に設定しなくても、物体を地面や建物に沿って移動させるアニメーションを作成できるようになる。
図22に、アニメーションパス作成機構32の実行するアニメーションパス作成処理の処理フローの他の一例を図示する。
ここで、この処理フローでもまた、図19の処理フローと同様に、利用者が移動物体として飛ぶ物を想定し、重力方向に直交する平面を表示する画面を選択して、その画面上でその飛ぶ物のアニメーションパスを設定したことを想定している。すなわち、図17に示した方向データは、重力方向を表しており、図17に示した変位データは、アニメーションパス入力機構31では決定されていない重力方向のパス位置を決定するものとなる。
この処理フローに従う場合には、アニメーションパス作成機構32は、アニメーションパスの作成に入ると、先ず最初に、ステップ1(v1)で、図19の処理フローのステップ1と同様に、アニメーションデータ管理機構30の管理データに従って、アニメーション生成機構33の設定した時刻Tにおける移動物体の位置を算出する。
時刻Tの移動物体の位置を求めると、続いて、ステップ2(v2)で、図19の処理フローのステップ2と同様に、アニメーションデータ管理機構30の管理する方向データの指す方向と、その逆方向とで規定される直線を特定し、その物体位置からその直線を延長していって、それと交差する物体との交差位置を求める。この例では、方向データとして重力方向を想定しているので、このステップ2の処理に従って、時刻Tの移動物体の上下方向にある物体との交差位置が求められることになる。
続いて、ステップ3(v3)で、ステップ2で求めた物体の交差位置の内で、方向データの指す方向に位置し、かつ、ステップ1で求めた移動物体の位置に最も近い交差位置を求める。この例では、方向データとして重力方向を想定しているので、このステップ3の処理に従って、ステップ2で求めた物体の交差位置の内、下方向(重力方向)にあり、かつ一番上にある交差位置が求められることになる。
ここで、ステップ2で求めた物体が下方向にある物体なのか上方向にある物体なのかは、重力方向を示す方向データを(xd,yd,zd )、ステップ1で求めた移動物体の位置を(xf,yf,zf )、ステップ2で求めた物体との交差位置を(xg,yg,zg )で表すならば、
(xg −xf )×xd ≧0
(yg −yf )×yd ≧0
(zg −zf )×zd ≧0
という3つの条件の全てが成立する場合には下方向にある物体、それが成立しない場合には上方向にある物体ということで判断される。
続いて、ステップ4(v4)で、ステップ3で求めた物体の交差位置から、方向データの指す方向の逆方向に向けて、アニメーションデータ管理機構30の管理する変位データの値分変位する位置データを求めて、ステップ1で求めた移動物体の持つ位置データの内のその方向の位置データを、その求めた位置データに置き換えることで補正する。
この例では、方向データとして重力方向を想定しているので、このステップ4の処理に従って、ステップ1で求めた移動物体の持つ位置データの内の重力方向の位置データが、ステップ2で求めた交差位置から変位データ分上にある位置データへと補正されることになる。
続いて、ステップ5(v5)で、ステップ4で求めた補正後の位置から規定されるアニメーションのパスを表示用データ格納機構34に格納して処理を終了する。
そして、上述したように、アニメーション生成機構33は、このアニメーションパス作成機構32により作成されたアニメーションのパスを使って、アニメーションを生成して表示用データ格納機構34に格納していくことで、ディスプレイ画面に表示するように処理していくことになる。
このように、アニメーションパス作成機構32は、アニメーションパス入力機構31が、利用者と対話することで重力方向に直交する平面で飛ぶ物のアニメーションパスを設定すると、その重力方向に直交する平面でのパス位置をそのままとしながら、その設定したパスに直交する下向きの直線上に位置する一番上の物体からの距離が変位データの指すものとなるようにと、そのアニメーションパスを補正していくことで、アニメーション生成機構33の使用するアニメーションパスを作成していくのである。
このようにして、物体のパスを3次元的に設定しなくても、物体をビル等の中の床面や天井に沿って移動させるアニメーションを作成できるようになる。
図17では、アニメーションデータ管理機構30の管理する方向データ及び変位データが全ての移動物体で共通となる構成を開示したが、この方向データ及び変位データは、本来、移動物体の属性に合わせて登録される必要がある。
これから、移動物体が複数となる場合には、図23に示すように、この方向データ及び変位データからなる拘束ベクトルを移動物体毎に別々に管理する構成を採る。この構成を採ることで、ある物体は、下方向にある物体から一定距離離れて移動し、別の物体は、横方向にある物体から一定距離離れて移動するというアニメーションを実現できることになる。
また、図19及び図22の処理フローでは、ステップ1で時刻Tの移動物体の位置を求めると、続くステップ2で、アニメーションデータ管理機構30の管理する方向データの指す方向と、その逆方向とで規定される直線を特定し、その物体位置からその直線を延長していって、それと交差する全ての物体を求めるという構成を開示したが、例えば、小さな物体についてはこの検索処理から外すことで、高速処理を実現する構成を採ることも可能である。
この構成を採る場合には、図24に示すように、CG世界を構成する物体の内のどれとどれとを検索対象とするのかということを管理する物体リストを用意して、その物体リストに登録されている物体を検索対象とすることで実現できることになる。
また、図19及び図22の処理フローに従う場合、補正したパスに急激な変化が出ることがある。例えば、図25(a)に示す補正パスが求まるとすると、位置aから位置bへはアニメーション実行中に一瞬にして移動してしまうし、位置cから位置dへはアニメーション実行中に一瞬にして移動してしまうことになる。
この不都合を解消するために、前フレームと今回フレームとの補正データの差が閾値よりも大きい場合には、前フレームと今回フレームを補間するパスデータを作成していく構成を採る。この構成を採ると、図25(a)に示す補正パスは、図25(b)に示すものとなって現実に則したものとなる。
この構成は、次式の下線部分をフレーム毎に確保して、前フレームの確保値と、今回フレームの確保値との差が閾値よりも大きくなるか否かを判断していくことで実現できることになる。
図示実施形態例に従って本発明を詳細に説明したが、本発明はこれに限られるものではない。例えば、実施形態例に示した方向データの指す方向は、あくまで一例に過ぎないのである。