(57)【特許請求の範囲】
【請求項１】
干渉するオブジェクトを示す起動側データと当該起動側データで示される干渉が生じた時または干渉が生じなくなった時に引き起こされるオブジェクトの運動の起動を示す反応側データとを有する干渉スイッチ・データ・ユニットの１個または複数個を記憶する干渉スイッチ・データ記憶部と、
オブジェクトの運動を起動または終了させる原因となる状態を示す起動側データと当該起動側データで示された状態が生じた時に引き起こされるオブジェクトの運動の起動または終了を示す反応側データとを有する状態スイッチ・データ・ユニットの１個または複数個を記憶する状態スイッチ・データ記憶部と、
仮想世界における運動中のオブジェクトの動きを仮更新するオブジェクト仮更新計算部と、オブジェクト仮更新計算部によって仮更新された状態で、干渉が生ずるか否かを判定する干渉判定部と、
干渉スイッチ・データ記憶部の内容および干渉判定部の判定結果を参照して、オブジェクトの運動を起動するか否かを調べる干渉スイッチ判定部と、
干渉スイッチ判定部によってオブジェクトの運動を起動する必要ありと判定されたときに、対応する運動を起動する干渉スイッチ起動処理部と、
干渉の有無によって仮更新状態の採用または却下または再計算を行うオブジェクト仮更新確定部と、
オブジェクト仮更新確定部によって確定された仮想世界の状態が状態スイッチ・データ・ユニットの起動側データで示された状態と等しいか否かを判定する状態スイッチ判定部と、
状態スイッチ判定部によって等しいと判定された時に、対応する反応側データで示されるオブジェクトの運動を起動または終了させる状態スイッチ起動処理部と、更新された仮想世界の画像を表示する結果表示部とを具備する
ことを特徴とするＣＧアニメーション編集装置。
【請求項２】
オブジェクトを起動する時刻，起動されるオブジェクトおよび当該オブジェクトが行う運動を示すタイムスケジュール・データ・ユニットの１個または複数個を記憶するタイムスケジュール・データ記憶部と、
オブジェクトの運動を起動または終了させる原因となる状態を示す起動側データと当該起動側データで示された状態が生じた時に引き起こされるオブジェクトの運動の起動または終了を示す反応側データとを有する状態スイッチ・データ・ユニットの１個または複数個を記憶する状態スイッチ・データ記憶部と、
次のタイム・ステップ後の時刻を計算するタイム・ステップ更新部と、タイムスケジュール・データ記憶部の内容を参照して、タイム・ステップ更新部によって計算された時刻において起動されるオブジェクトがあるか否かを調べるタイムスケジュール判定部と、
タイムスケジュール判定部によってありと判定された場合に、該当するオブジェクトの運動を起動するタイムスケジュール起動処理部と、
仮想世界における運動中のオブジェクトについて、上記計算された時刻での運動結果を計算するオブジェクト更新計算部と、
オブジェクト更新計算部によって計算された仮想世界の状態が状態スイッチ・データ・ユニットの起動側データで示された状態と等しいか否かを判定する状態スイッチ判定部と、
状態スイッチ判定部によって等しいと判定された時に、対応する反応側データで示されるオブジェクトの運動を起動または終了させる状態スイッチ起動処理部と、
更新された仮想世界の画像を表示する結果表示部とを具備する
ことを特徴とするＣＧアニメーション編集装置。
【請求項３】
ディスプレイ画面上における指定されたオブジェクトの属性値を取得する運動データ取得部を有し、
上記取得した属性値から所望の属性値を選択して、状態スイッチデータの起動側データを作成する
ことを特徴とする請求項１または請求項２のＣＧアニメーション編集装置。
【請求項４】
オブジェクトの運動を起動または終了させる原因となる状態と当該状態が生じた時に引き起こされるオブジェクトの運動の起動または終了を表す一般プログラムで記述された条件式を、自動的に状態スイッチ・データに解釈して、解釈結果を状態スイッチ・データ記憶部の中に設定する状態スイッチ・データ解釈設定手段を有する
ことを特徴とする請求項１または請求項２のＣＧアニメーション編集装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、オブジェクトの状態が指示された状態と等しくなったならば、オブジェクトの運動を起動または終了させるＣＧアニメーション編集装置に関するものである。
昨今、計算機技術の向上と共に、容易に仮想世界を体験できるＣＧアニメーションの利用が増えてきており、その結果、これらのアニメーションも、視線（自分）以外の物体は止まっている静止世界から、他の物体も動く、より現実感のある複雑な世界を体験できるものへと進化してきている。
【０００２】
現状では、これらの仮想世界を構築する物体の動きのうち、動き方自体を詳細に編集するアニメーション編集装置はあっても、「いつ運動を起動するか」などの動き同士の流れを編集するものとしては、コマ落としによるアニメーション作成方法に基づく簡単な編集装置しかないのが現状である。
【０００３】
また、ＣＧ描画ハードウェアの性能向上により、リアルタイムに仮想世界の物体の動きが描画できるようになり、そのままアニメーションとして使用できる環境が整ってきたため、このリアルタイムな描画を効果的に使用して、ユーザの思い通りに、簡単に物体の動きを実現／編集できる、ＣＧアニメーション編集装置が切望されている。
【０００４】
【従来の技術】
アニメーションにおける物体の動きの流れとは、物体の動きが如何なる条件で起動されるのかと言うことである。従来のＣＧアニメーション編集技術では、アニメーションがコマ落としで作成されているため、物体の動きの起動タイミングとしては、作り込みか，接触か或いは各コマ単位のタイマーによる簡単なものしか編集設定できなかった。
【０００５】
しかし、リアルタイムな描画が実現できるようになると、描画する映像をそのままアニメーションとして使用できるようになったため、もっと複雑な動きの流れの編集が必要となり、物体の運動のタイミングとしても、より広範囲な条件に対応でき、詳細な設定ができるアニメーション編集装置が必要になってきた。
【０００６】
【発明が解決しようとする課題】
従来の技術では、コマ落としアニメーション用に物体同士の接触か，タイマーによる動きの起動タイミングを使った編集機能しか用意されておらず、複雑な物体の起動タイミング（すなわち、各動き同士の流れの編集）を、ユーザの思い通りに設定することが出来なかった。
本発明は、この課題を解決し、より複雑な動きの流れの編集を利用者が簡単に行い得るＣＧアニメーション編集装置を提供することを目的とする。
【０００８】
【課題を解決するための手段】
請求項１のＣＧアニメーション編集装置は、干渉するオブジェクトを示す起動側データと当該起動側データで示される干渉が生じた時または干渉が生じなくなった時に引き起こされるオブジェクトの運動の起動を示す反応側データとを有する干渉スイッチ・データ・ユニットの１個または複数個を記憶する干渉スイッチ・データ記憶部と、オブジェクトの運動を起動または終了させる原因となる状態を示す起動側データと当該起動側データで示された状態が生じた時に引き起こされるオブジェクトの運動の起動または終了を示す反応側データとを有する状態スイッチ・データ・ユニットの１個または複数個を記憶する状態スイッチ・データ記憶部と、仮想世界における運動中のオブジェクトの動きを仮更新するオブジェクト仮更新計算部と、オブジェクト仮更新計算部によって仮更新された状態で、干渉が生ずるか否かを判定する干渉判定部と、干渉スイッチ・データ記憶部の内容および干渉判定部の判定結果を参照して、オブジェクトの運動を起動するか否かを調べる干渉スイッチ判定部と、干渉スイッチ判定部によってオブジェクトの運動を起動する必要ありと判定されたときに、対応する運動を起動する干渉スイッチ起動処理部と、干渉の有無によって仮更新状態の採用または却下または再計算を行うオブジェクト仮更新確定部と、オブジェクト仮更新確定部によって確定された仮想世界の状態が状態スイッチ・データ・ユニットの起動側データで示された状態と等しいか否かを判定する状態スイッチ判定部と、状態スイッチ判定部によって等しいと判定された時に、対応する反応側データで示されるオブジェクトの運動を起動または終了させる状態スイッチ起動処理部と、更新された仮想世界の画像を表示する結果表示部とを具備することを特徴とするものである。
【０００９】
請求項２のＣＧアニメーション編集装置は、オブジェクトを起動する時刻，起動されるオブジェクトおよび当該オブジェクトが行う運動を示すタイムスケジュール・データ・ユニットの１個または複数個を記憶するタイムスケジュール・データ記憶部と、オブジェクトの運動を起動または終了させる原因となる状態を示す起動側データと当該起動側データで示された状態が生じた時に引き起こされるオブジェクトの運動の起動または終了を示す反応側データとを有する状態スイッチ・データ・ユニットの１個または複数個を記憶する状態スイッチ・データ記憶部と、次のタイム・ステップ後の時刻を計算するタイム・ステップ更新部と、タイムスケジュール・データ記憶部の内容を参照して、タイム・ステップ更新部によって計算された時刻において起動されるオブジェクトがあるか否かを調べるタイムスケジュール判定部と、タイムスケジュール判定部によってありと判定された場合に、該当するオブジェクトの運動を起動するタイムスケジュール起動処理部と、仮想世界における運動中のオブジェクトについて、上記計算された時刻での運動結果を計算するオブジェクト更新計算部と、オブジェクト更新計算部によって計算された仮想世界の状態が状態スイッチ・データ・ユニットの起動側データで示された状態と等しいか否かを判定する状態スイッチ判定部と、状態スイッチ判定部によって等しいと判定された時に、対応する反応側データで示されるオブジェクトの運動を起動または終了させる状態スイッチ起動処理部と、更新された仮想世界の画像を表示する結果表示部とを具備することを特徴とするものである。
【００１０】
請求項３のＣＧアニメーション編集装置は、請求項１または請求項２のＣＧアニメーション編集装置において、ディスプレイ画面上における指定されたオブジェクトの属性値を取得する運動データ取得部を有し、上記取得した属性値から所望の属性値を選択して、状態スイッチデータの起動側データを作成することを特徴とするものである。
【００１１】
請求項４のＣＧアニメーション編集装置は、請求項１または請求項２のＣＧアニメーション編集装置において、オブジェクトの運動を起動または終了させる原因となる状態と当該状態が生じた時に引き起こされるオブジェクトの運動の起動または終了を表す一般プログラムで記述された条件式を、自動的に状態スイッチ・データに解釈して、解釈結果を状態スイッチ・データ記憶部の中に設定する状態スイッチ・データ解釈設定手段を有することを特徴とするものである。
【００１２】
【作用】
本発明は、各物体の動きの起動に際して、従来の干渉やタイマーによる起動スイッチの他に、新たに「状態スイッチ」と言う概念を導入することで、複雑な動きの流れのＣＧアニメーションを実現するものである。
【００１３】
ＣＧアニメーションにおいて、物体運動の流れの編集とは、予め設定された各運動を何時，何処で起動するかの編集である。本発明は、状態スイッチと言う概念を新たに導入することで、従来の技術における物体同士の干渉やタイム・スケジュールによる起動のような簡単なものでは実現できない，複雑な条件下の運動の起動を実現する。すなわち、起動条件として、１個または複数個のオブジェクトの状態を状態スイッチ・データとして保持し、各オブジェクトの更新時に、更新結果がその状態か否かを判定し、同じ状態が実現された時だけ対象運動を起動する。
【００１４】
例として、ある空間に侵入するオブジェクトが存在した場合にのみ起動する運動を設定する場合を考える。これは、以前は作り込みでしか実現できなかった。しかし、本発明の状態スイッチ・データとして、全稼働オブジェクトがスイッチ判定対象であり、対象空間として、侵入に反応させたい空間を設定することで、簡単に実現することが出来る。
【００１５】
また、ユーザがクリックする度に色変化する物体など，予め予測できない不規則な質感変化を行う物体が或る質感値の時のみ運動を起動させることは、以前では不可能であった。また、規則的な質感変化であっても、対象質感値の生じる時刻を正確に予測して、その時刻に起動するようにタイマー・スケジュール登録しなければならず、大変な手間と苦労が必要であった。
【００１６】
しかし、本発明を使用することで、この対象運動の起動を簡単に実現することが出来る。即ち、対象物体の質感を状態スイッチ・データとして設定すれば、その物体の質感が更新される度に同じ状態かどうかの判定が行われ、等しければ運動が起動される。このため、質感変化の規則的／不規則的に関わらず、簡単な設定で容易に実現することが出来る。このように、本発明により、以前では困難／不可能であった条件下での運動の起動を、簡単に実現することが出来る。
【００１７】
請求項１のＣＧアニメーション編集装置の作用を説明する。状態スイッチ・データ記憶部に、人間が指定された空間に侵入したならばランプを点灯すると言う状態スイッチ・データ・ユニットが記憶されていると仮定する。オブジェクト更新計算部によって、仮想世界において人間が指定された空間に侵入したシーンが生成されると、状態スイッチ判定部によって仮想世界の状態が状態スイッチ・データ・ユニットの起動側データと等しいと判定される。等しいと判定されると、状態スイッチ起動処理部によって、仮想世界におけるランプが点灯される。仮想世界の画像は、結果表示部により、ディスプレイ画面に表示される。
【００１８】
また、干渉スイッチと言う概念と，状態スイッチと言う概念を使用し、ボールが光源板に当たると光源板が光り、これを繰り返すことで増す部屋の明るさに応じて扉を開けると言うアニメーションを実現する。
【００１９】
請求項２のＣＧアニメーション編集装置の作用を説明する。請求項２のＣＧアニメーション編集装置は、タイムスケジュールによる運動起動と，状態スイッチによる運動起動を併用するものである。
請求項２のＣＧアニメーション編集装置によれば、或る時間帯で扉の色が赤くなり、扉の色が赤の状態の下で視線が扉の前空間に入った時に扉を開くと言うアニメーションを実現することが出来る。
【００２０】
請求項３のＣＧアニメーション編集装置の作用について説明する。ディスプレイ画面を見ているときに、このシーンを状態スイッチ・データの起動側データとして使用したいと言う場合がある。このような場合には、アニメーションを止め、ディスプレイ画面上におけるオブジェクトを指定し、そのオブジェクトの属性値を得る。そして、所望の属性値を選択して、状態スイッチ・データの起動側データを作成する。
【００２１】
請求項４のＣＧアニメーション編集装置の作用について説明する。請求項５のＣＧアニメーション編集装置は、状態スイッチ・データを示す条件式を例えばＩＦ−ＴＨＥＮルールのプログラムで作成し、このプログラム文を解釈して所定フォーマットの状態スイッチ・データを作成し、この所定フォーマットの状態スイッチ・データを状態スイッチ・データ記憶部に設定する。
【００２２】
【実施例】
図１は本発明の第１実施例の機能ブロック図である。同図において、１は状態スイッチ・データ設定手段、２はオブジェクト更新計算部、３は状態スイッチ判定部、４は状態スイッチ起動処理部、５は結果表示部をそれぞれ示している。
第１実施例のＣＧアニメーション編集装置は、状態スイッチ・データ設定手段１、オブジェクト更新計算部２、状態スイッチ判定部３、状態スイッチ起動処理部４および結果表示部５から構成されている。
【００２３】
状態スイッチ・データ設定手段１では、設定済みの各オブジェクトの運動を起動させるトリガとなる条件（状態スイッチ・データ）を設定する。設定されたデータは、状態スイッチ・データ記憶部（図示せず）に格納される。状態スイッチとは、１個または複数個のオブジェクトの或る状態を状態スイッチ・データとして保存しておき、アニメーション中にその状態が発生すると、対応する運動を起動させるスイッチのことである。例えば、この状態データとして、オブジェクト・データとして保存できる各属性値の一部／全部を参照する。
【００２４】
オブジェクト更新計算部２は、仮想世界の各オブジェクトの運動をアニメーション開始時刻から一定タイム・ステップで更新修正する処理部である。
状態スイッチ判定部３では、オブジェクト更新計算部２による更新結果が、状態スイッチ・データ設定手段１で設定された状態スイッチ・データの状態であるか否かの判定を行う。
【００２５】
状態スイッチ起動処理部４では、状態スイッチ判定部３での判定結果を用いて、実際にスイッチと対になっている運動の起動を行う。この結果、起動された運動は、次のタイムステップから、更新計算の結果にしたがう。
【００２６】
結果表示部５では、現在の更新された仮想世界のオブジェクトの描画を行う。以上、オブジェクト更新計算部２の処理，状態スイッチ判定部３の処理，状態スイッチ起動処理部４の処理，結果表示部５の処理を、アニメーション中断／終了が指示されるまで、繰り返し行う。
【００２７】
図２は仮想世界の例を示す図である。同図において、６は空間、７は人間、８は自動車、９は青信号灯、１０は黄信号灯、１１は赤信号灯をそれぞれ示している。
遠方の人間７が横断歩道に近づいて空間６に侵入すると、信号灯９〜１１が変更され、自動車８が止まると言うアニメーションを実現する場合を想定する。各オブジェクトの動きは設定済とする。
従来の動き編集装置を使用した場合では、人間７が空間６にいつ侵入するかを予め知らないと、信号灯９〜１１や自動車８の運動の起動／終了は出来なかった。また、信号灯の点灯や消灯も作り込みでしか実現できなかった。
【００２８】
今回は、上述した空間侵入に対する運動の起動を使って、車／信号の動きの制御を行い、複数条件に対する運動の起動を使って、各信号灯の点灯制御を行うことで、複雑な動きの流れを状態スイッチと言う機能を使って簡単に実現できることを示す。
【００２９】
予め設定してある動きをする物体として、自動車８（車道を動く）、信号灯９〜１１（点灯，消灯の運動）がある。人間７は、ユーザのインタラクティブな動きで移動するものと考えられるが、今回は、説明を簡単にするため、遠方から横断歩道に向かって空間６に向けて進行する運動のみを考慮する。
【００３０】
黄信号灯１０の運動の長さは設定されており、起動してから設定時間を過ぎると、消灯する。他の運動は、起動すると、終了（停止）命令が出るまで運動を続ける。これら人間７，自動車８，信号灯９〜１１の運動を状態スイッチを使って起動させることで、仮想世界の構築を行う。
【００３１】
各運動の起動条件として、以下が実現されれば、実行したいアニメーションが実現できる。
▲１▼  青信号９は、人間７が設定済の空間６に侵入すると、消灯する。
▲２▼  黄信号１０は、人間７が設定済の空間６に侵入すると、点灯する。
▲３▼  自動車８の運動は、人間７が設定済の空間６に侵入すると、終了（減速、停止）する。
▲４▼  赤信号１１は、青信号９と黄信号１０が消灯したときのみ、点灯する。
ただし、最初の状態では、青信号灯９が点灯されており、自動車８は運動していると仮定する。
【００３２】
図３は状態スイッチ・データのフォーマットの例を示す図である。状態スイッチ・データ・リストは、複数個の状態スイッチ・データ・ユニットから構成されている。各スイッチ・データ・ユニットは、１個または複数個の起動側データと、１個または複数個の反応側データとから構成されている。起動側データとは項目１〜項目４のデータであり、反応側データとは項目５〜７のデータである。
【００３３】
項目１はスイッチ・オブジェクトを示し、項目２はスイッチ・タイプ（位置範囲，質感，その他）を示し、項目３は詳細データ（オブジェクトの属性全部または一部）を示し、４は起動フラグ（〜したら又は〜しなかったら）を示す。項目５は起動されるオブジェクトを示し、項目６は起動される反応運動を示し、項目７は待ち状態フラグ（起動待ち又は終了待ち）を示す。
【００３４】
図３に示すように、状態スイッチ・データは、例えば状態スイッチ・データ・ユニットのリストとして保持される。各状態スイッチ・データ・ユニットは、運動を起動する条件の原因となるスイッチ・オブジェクト自身と状況データ等（図３の項目１〜３）のセットを１個または複数個保持し、また、該当条件で起動される反応オブジェクトとその動きのデータなど（図３の項目４〜７）を１個または複数個保持する。
【００３５】
図３に示す項目２のスイッチ・タイプは、状態スイッチ・データとして保持される項目３の詳細データの属性種類を示す。項目２のスイッチ・タイプが「位置範囲」であれば、項目３の詳細データが示すものは位置範囲情報となり、項目３の詳細データで示される位置範囲内に項目１のスイッチ・オブジェクトが到達した時を反応運動処理のトリガ時点とする。項目３の詳細データは、位置範囲，位置，質感，光源状態，形状など，あらゆるオブジェクトの属性値を表現するために使用できる。本明細書で言うオブジェクトとは、形のある一般の物体だけでなく、光源や視線，風など環境まわりのものも含む概念である。
【００３６】
図３の項目４の起動フラグは、状態スイッチの条件（図３の項目１〜３）が真または偽のいずれの時に反応運動を処理するかを示す。
図３の項目７の待ち状態フラグは、設定スイッチ状態が発生した時、設定された反応運動（図３の項目４〜６）を開始するか，終了（一時停止）するかを示すフラグである。
【００３７】
図４は第１実施例の状態スイッチ・データの具体例を示すものである。この状態スイッチ・データは、図２において人間７が空間６に入ったならば、信号灯９〜１１が点灯または消灯し、自動車が止まると言うアニメーションを実現するためのものである。図示の例では、状態スイッチ・データ・ユニット１の項目１は人物７とされ、項目２は位置とされ、項目３は空間６の位置（例えば（２０，２０，０）  −（１００，１００，１００）  で規定される立方体）とされ、項目４は「〜したら」とされている。
【００３８】
状態スイッチ・データ・ユニット１の反応側データは３個存在する。１番目の反応側データにおいては、項目５は青信号９とされ、項目６は消灯する運動とされ、項目７は起動待ちとされている。２番目の反応側データにおいては、項目５は黄信号１０とされ、項目６は点灯する運動とされ、項目７は起動待ちとされている。３番目の反応側データにおいては、項目５は車８とされ、項目６は減速運動とされ、項目７は起動待ちとされている。
【００３９】
状態スイッチ・データ・ユニット２においては、項目１は黄信号１０とされ、項目２は光源状態とされ、項目３は消灯とされ、項目４は「〜したら」とされ、項目５は赤信号１１とされ、項目６は点灯する運動とされ、項目７は起動待ちとされている。
【００４０】
図５は本発明の第１実施例の状態スイッチ・データの処理例を示す図である。ステップＳ１では、更新未処理の稼働中オブジェクトがあるか否かを調べる。ＹＥＳの場合はステップＳ２に進み、ＮＯの場合はステップＳ６に進む。
ステップＳ２では、稼働中運動についてタイム・ステップΔｔで更新する。
ステップＳ３では、更新されたオブジェクトを状態スイッチとする状態データがあるか否かを調べる。ＹＥＳの場合はステップＳ４に進み、ＮＯの場合はステップＳ１に戻る。
【００４１】
ステップＳ４では、状態データでの詳細状態は現在の状態と等しいか否かを調べ、ＹＥＳの場合はステップＳ５に進み、ＮＯの場合はステップＳ１に戻る。
ステップＳ５では、対応する反応オブジェクトの運動をフラグに従って起動または終了させる。次に、ステップＳ１に戻る。
ステップＳ６では、更新結果を表示する。
【００４２】
図１の機能手段と図５の処理フローの関係について説明する。ステップＳ１とＳ２の処理はオブジェクト更新計算部２で行われ、ステップＳ３とＳ４の処理は状態スイッチ判定部３で行われ、ステップＳ５の処理は状態スイッチ起動処理部４で行われ、ステップＳ６の処理は結果表示部５で行われる。
【００４３】
図６は本発明の第２実施例の機能ブロック図である。同図において、２１は状態スイッチ・データ設定手段、２２は干渉スイッチ・データ設定手段、２３はオブジェクト仮更新計算部、２４は干渉判定部、２５は干渉スイッチ判定部、２６は干渉スイッチ起動処理部、２７はオブジェクト仮更新確定部、２８は状態スイッチ判定部、２９は状態スイッチ起動処理部、３０は結果表示部をそれぞれ示している。
【００４４】
本発明の第２実施例は、状態スイッチによる運動の設定／起動実施以外に、物体同士の干渉による起動も同時に行うものである。
第２実施例のＣＧアニメーション編集装置は、状態スイッチ・データ設定手段２１、干渉スイッチ・データ設定手段２２、オブジェクト仮更新計算部２３、干渉判定部２４、干渉スイッチ判定部２５、干渉スイッチ起動処理部２６、オブジェクト仮更新確定部２７、状態スイッチ判定部２８、状態スイッチ起動処理部２９および結果表示部３０から構成されている。干渉スイッチ・データ設定手段２２は、干渉スイッチ・データを設定する。設定されたデータは、干渉スイッチ・データ記憶部（図示せず）に格納される。
【００４５】
第１実施例と異なり、第２実施例では、干渉スイッチを使用するために、干渉スイッチ・データ設定手段２２，オブジェクト仮更新計算部２３，干渉判定部２４，干渉スイッチ判定部２５，干渉スイッチ起動処理部２６が新たに加わっている。また、第２実施例では、オブジェクト更新計算部２（図１を参照）の処理を、オブジェクト仮更新計算部２３とオブジェクト仮更新確定部２７に分けて処理する。これは、運動仮更新の結果、物体同士が干渉する時は、仮更新した運動を取り消してしまう（壁にめり込まない移動などを表現するには、仮更新した運動結果のうち、壁と干渉しないものだけを更新する）場合を配慮したためで、干渉スイッチの起動確認をオブジェクトを更新確定する前に行うためである。
【００４６】
図７は本発明の第２実施例の処理フローを示す図である。
ステップＳ２では、稼働中オブジェクトがあるか否かを調べる。ＹＥＳの場合はステップＳ３に進み、ＮＯの場合はステップＳ１２に進む。
ステップＳ３では、次のタイム・ステップ後の運動後の状態を予測計算（仮更新）する。
【００４７】
ステップＳ４では、仮更新された状態で、他の物体と干渉するか否かを調べる。ＹＥＳの場合はステップＳ５に進み、ＮＯの場合はステップＳ６に進む。
ステップＳ５では、干渉した結果、他の物体の運動を起動する必要があるか否か（干渉するのを待ってた物体はないか）を調べる。ＹＥＳの場合はステップＳ７に進み、ＮＯの場合はステップＳ８に進む。
ステップＳ６では、干渉しなかった結果、他の物体の運動を起動する必要があるか否か（干渉しなくなるのを待っている物体はないか）を調べる。ＹＥＳの場合はステップＳ７に進み、ＮＯの場合はステップＳ８に進む。
【００４８】
ステップＳ７では、他の物体の運動を起動する。
ステップＳ８では、他の物体の干渉有無によって、仮更新状態の採用または却下または再計算を決定する。
ステップＳ９では、採用判定後の状態を調べ、その状態になるのを待っている物体はいるか否かを調べる。ＹＥＳの場合はステップＳ１０に進み、ＮＯの場合はステップＳ１１に進む。
ステップＳ１０では、待っていた物体の運動を起動する。
ステップＳ１１では、更新された世界を画面に表示する。次にステップＳ２に戻る。
【００４９】
図６の機能手段と図７の処理の関係について説明する。オブジェクト仮更新計算部２３はステップＳ２とＳ３の処理を行い、干渉判定部２４はステップＳ４の処理を行い、干渉スイッチ判定部２５はステップＳ５とＳ６の処理を行い、干渉スイッチ起動処理部２６はステップＳ７の処理を行い、オブジェクト仮更新確定部２７はステップＳ８の処理を行い、状態スイッチ判定部２８はステップＳ９の処理を行い、状態スイッチ起動処理部２９はステップＳ１０の処理を行い、結果表示部３０はステップＳ１１の処理を行う。
【００５０】
図８は本発明の第２実施例によるアニメーション例を示す図である。このアニメーション例においては、運動している物体は、ボールである。このボールは、部屋の中をインタラクティブにユーザの指示した方向に転がる。干渉起動待ち物体は、部屋の各所に設けられた光源板である。各光源板は、ボールと干渉する度に明るさを増す。状態起動待ち物体は、扉である。この扉は、部屋の光源によって照らされた扉の色が制限値を越えると、開く。
【００５１】
図８において、初期状態では部屋の中は真っ暗であり、扉は閉まっている。ボールが光源板に衝突すると、その光源板が光り、部屋の中は少し明るくなる。ボールが全ての光源板に衝突し、全ての光源板が光ると、扉の明るさが制限値を越え、扉が開く。
【００５２】
図９は図８のアニメーションを実現する場合の状態スイッチ・データを示すものである。図示の例では、状態スイッチ・データ・ユニット１における項目１のスイッチ・オブジェクト＝「扉」とされ、項目２のスイッチ・タイプ＝「質感」とされ、項目３の詳細データ＝（色ＲＧＢの合計値≧制限値）とされ、項目４の起動フラグ＝「〜したら」とされている。また、項目５の起動されるオブジェクト＝「扉」とされ、項目６の起動される反応運動＝「扉を回転して開く」とされ、項目７の待ち状態フラグ＝「起動待ち」とされている。
【００５３】
図１０は図８のアニメーションを実現する場合の干渉スイッチ・データを示すものである。図示の例では、干渉スイッチ・データ・ユニット１における項目１の干渉元オブジェクト１＝「ボール」とされ、項目２の干渉元オブジェクト２＝「光源板Ａ」とされ、項目３の起動されるオブジェクト＝「光源板Ａ」とされ、項目４の起動される反応運動＝「光源の色値を増加」とされ、項目５の待ち状態フラグ＝「干渉待ち」とされている。干渉スイッチ・データ・ユニット２には、干渉スイッチ・データ・ユニットの「光源板Ａ」を「光源板Ｂ」に置き換えたデータが書き込まれている。
【００５４】
図１１は本発明の第３実施例の機能ブロック図である。同図において、３１はタイマ・スケジュール設定手段、３２は状態スイッチ・データ設定手段、３３はタイム・ステップ更新部、３４はタイム・スケジュール判定部、３５はタイム・スケジュール起動処理部、３６はオブジェクト更新計算部、３７は状態スイッチ判定部、３８は状態スイッチ起動処理部、３９は結果表示部をそれぞれ示している。
【００５５】
第３実施例のＣＧアニメーション編集装置は、タイマ・スケジュール設定手段３１、状態スイッチ設定手段３２、タイム・ステップ更新部３３、タイム・スケジュール判定部３４、タイム・スケジュール起動処理部３５、オブジェクト更新計算部３６、状態スイッチ判定部３７、状態スイッチ起動処理部３８および結果表示部３９から構成されている。タイマ・スケジュール設定手段３１は、タイムスケジュール・データを設定する。設定されたデータは、タイムスケジュール・データ記憶部（図示せず）に格納される。
【００５６】
第１実施例と異なり、第３実施例では、タイム・スケジュールによる運動起動を併用するために、タイマ・スケジュール設定手段３１，タイム・ステップ更新部３３，タイム・スケジュール判定部３４，タイム・スケジュール起動処理部３５が新たに加わっている。
【００５７】
また、第３実施例では、第１実施例のオブジェクト更新計算部２で行われる処理を、時刻の更新を行うタイム・ステップ更新部３３と実際の更新計算／確定を行うオブジェクト更新計算部３６とに分けて処理する。これは、タイム・ステップΔｔだけ更新された現在の時刻を参照して、タイム・スケジケール内の時刻表内を探索し、該当する運動の起動を行うためであるが、タイム・スケジュール起動処理部３５とオブジェクト更新計算部３６を状態スイッチ起動処理部３８の後に配置しても構わない。
【００５８】
図１２は本発明の第３実施例の処理フローを示す図である。
ステップＳ１では、次のタイム・ステップ後の時刻を計算する。
ステップＳ２では、計算された時刻において、運動起動される物体があるか否かを調べる。ＹＥＳの場合はステップＳ３に進み、ＮＯの場合はステップＳ４に進む。
ステップＳ３では、運動を起動する。
【００５９】
ステップＳ４では、稼働中オブジェクトがあるか否かを調べる。ＹＥＳの場合はステップＳ５に進み、ＮＯの場合はＥＮＤとする。
ステップＳ５では、計算された時刻での物体の運動結果を予測計算（仮更新）する。
ステップＳ６では、計算結果を採用する。
【００６０】
ステップＳ７では、採用後の状態を調べ、その状態になるのを待っていた物体があるか否かを調べる。ＹＥＳの場合はステップＳ８に進み、ＮＯの場合はステップＳ９に進む。
ステップＳ８では、待っていた物体の運動を起動する。
ステップＳ９では、更新された世界を画面に表示する。次にステップＳ１に戻る。
【００６１】
図１１の機能手段と図１２の処理の関係について説明する。タイム・ステップ更新部３３はステップＳ１の処理を行い、タイム・スケジュール判定部３４はステップＳ２の処理を行い、タイム・スケジュール起動処理部３５はステップＳ３の処理を行い、オブジェクト更新計算部３６はステップＳ４〜Ｓ６の処理を行い、状態スイッチ判定部３７はステップＳ７の処理を行い、状態スイッチ起動処理部３８はステップＳ８の処理を行い、結果表示部３９はステップＳ９の処理を行う。
【００６２】
図１３は本発明の第３実施例によるアニメーション例を示す図である。このアニメーション例においては、運動している物体は、視線である。この視線は、部屋の中をインタラクティブにユーザの指示した方向に動く。タイマ起動待ち物体は、部屋の各所に設けられた扉Ａ〜Ｅである。各扉は時刻をずらして起動され、一定時間だけ色が白から赤に変化する。状態起動待ち物体は扉である。扉は、色が赤のときに視線が扉前の空間に入れば、開く。
【００６３】
図１３において、初期状態では扉Ａ，Ｃ，Ｄの色は白であり、扉Ｂ，Ｅの色は赤である。視線が扉Ａの指定空間に入った時においては、扉Ａ，Ｃ，Ｄの色は赤であり、扉Ｂ，Ｅの色は白である。扉Ａの色が赤で且つ視線が扉Ａの指定空間に入ったので、扉Ａは開く。
【００６４】
図１４は図１３のアニメーションを実現する場合の状態スイッチ・データを示すものである。状態スイッチ・データ・ユニット１には、２個の起動側データと１個の反応側データが存在する。１番目の起動側データにおいては、項目１のスイッチ・オブジェクト＝「扉Ａ」とされ、項目２のスイッチ・タイプ＝「質感」とされ、項目３の詳細データ＝「（色＝赤）」とされ、項目４の起動フラグ＝「〜したら」とされている。２番目の起動側データにおいては、項目１のスイッチ・オブジェクト＝「視線」とされ、項目２のスイッチ・タイプ＝「位置」とされ、項目３の詳細データ＝「扉Ａ前空間」とされ、項目４の起動フラグ＝「〜したら」とされている。
【００６５】
状態スイッチ・データ・ユニット１の反応側データにおいては、項目５の起動されるオブジェクト＝「扉」とされ、項目６の起動される反応運動＝「扉を回転して開く」とされ、項目７の待ち状態フラグ＝「起動待ち」とされている。
状態スイッチ・データ・ユニット２には、状態スイッチ・データ・ユニット１の「扉Ａ」を「扉Ｂ」に置き換えたデータが格納されている。
【００６６】
図１５は図１３のアニメーションを実現する場合のタイム・スケジュール・データを示すものである。タイム・スケジュール・データは、リスト構造をしている。スケジュール・リストは、複数のユニットから構成されている。図示の例では、ユニット１の項目１の時刻＝「０．０（開始時）」とされ、項目２の起動オブジェクト＝「扉Ｂ，Ｅ」とされ、項目３の反応運動＝「色変化→赤」とされている。
【００６７】
ユニット２の項目１の時刻＝「５．０」とされている。項目２には、２個の反応側データが存在する。１番目の反応側データにおいては、項目３の起動オブジェクト＝「扉Ｂ，Ｅ」とされ、項目３の反応運動＝「色変化→白」とされている。２番目の反応側データにおいては、項目２の起動オブジェクト＝「扉Ａ，Ｂ，Ｄ」とされ、項目３の反応運動＝「色変化→赤」とされている。
【００６８】
図１６は本発明の第４実施例の機能ブロック図である。同図において、４１はスイッチ・データ設定部、４２はオブジェクト更新計算部、４３は状態スイッチ判定部、４４は状態スイッチ起動処理部、４５は運動データ取得部、４６は結果表示部をそれぞれ示している。
【００６９】
第４実施例のＣＧアニメーション編集装置は、状態スイッチ・データ設定部４１、オブジェクト更新計算部４２、状態スイッチ判定部４３、状態スイッチ起動処理部４４、運動データ取得部４５及び結果表示部４６から構成されている。
【００７０】
第４の実施例においては、オブジェクト更新計算部４２→状態スイッチ判定部４３→状態スイッチ起動処理部４４→結果表示部４６を順番に行ってオブジェクト更新計算部４２に戻る処理の流れを行うことが出来る。また、ユーザの指示により、オブジェクト更新計算部４２→状態スイッチ判定部４３→状態スイッチ起動処理部４４→結果表示部４６→運動データ取得部４５→状態スイッチ・データ設定部４１を順番に行ってオブジェクト更新計算部４２に戻る処理の流れを行うことが出来る。
【００７１】
第５実施例では、更新されたばかりのシーンの全部または一部のオブジェクトを指定し、その現在の値をサンプリング取得することで、現在のシーンをそのまま状態スイッチ・データとして取り込むことを行う。運動データ取得部４５においてサンプリングされたオブジェクトの現在の属性値は、状態スイッチ・データ設定部４１に戻ることで、そのまま状態スイッチのスイッチ・データとして保存される。
【００７２】
このように、第４実施例では、アニメーション実行途中において状態スイッチ・データを取得できるので、実際に動かして見なければ判らないような複雑な条件も、簡単に状態スイッチ・データとして設定することが可能になる。
【００７３】
図１８は本発明の第４実施例の処理フローを示す図である。
ステップＳ１では、稼働中オブジェクトがあるか否かを調べる。ＹＥＳの場合はステップＳ２に進み、ＮＯの場合はＥＮＤとする。
ステップＳ２では、計算された時刻での物体の運動結果を予測計算（仮更新）する。
ステップＳ３では、計算結果を採用する。
【００７４】
ステップＳ４では、採用後の状態を調べ、その状態になるのを待っている物体はあるか否かを調べる。ＹＥＳの場合はステップＳ５に進み、ＮＯの場合はステップＳ６に進む。
ステップＳ５では、待っていた物体の運動を起動する。
ステップＳ６では、更新された世界を画面に表示する。
【００７５】
ステップＳ７では、現在表示されている指定オブジェクト／シーンの状態をスイッチとして利用したいか否かを調べ、ＹＥＳの場合はステップＳ８に進み、ＮＯの場合はスイッチＳ１に戻る。
ステップＳ８では、利用したいオブジェクトを指定する。
ステップＳ９では、指定オブジェクトの属性を、ユーザＭＭＩ（マン・マシン・インタフェース）を用いて取得し、状態スイッチ・データの起動側データに登録する。次にステップＳ１に戻る。
【００７６】
図１６の機能手段と図１７の処理の関係について説明する。状態スイッチ・データ設定部４１はステップＳ８とステップＳ９の処理を行い、オブジェクト更新計算部４２はステップＳ１〜Ｓ３の処理を行い、状態スイッチ判定部４３はステップＳ４の処理を行い、状態スイッチ起動処理部４４はステップＳ５の処理を行い、運動データ取得部４５はステップＳ７の処理を行い、結果表示部４６はステップＳ６の処理を行う。
【００７７】
図１８は本発明の第４実施例によるアニメーション例である。図示の例は、旗のアニメーションを実行し、気に入った紫色の状態を，状態スイッチの起動状態としてサンプリングし、新しく状態スイッチを設定するものである。状態スイッチとなるオブジェクトは旗であり、旗は赤から紫，青へと色変化する。状態スイッチ起動したいオブジェクトはボールであり、ボールは旗が紫になったら動き始める。
【００７８】
初期アニメーション試動時においては、ユーザがクリックする度に旗の色が変化する。気に入った状態（旗の色が紫になった状態）でアニメーションを止め、編集モードにする。編集モードになると、編集ウィンドウが表示される。ユーザは、編集モードにおいて、気に入った状態をサンプリングし、サンプリングした状態を参照して、旗が紫色になったならばボールを運動させるための状態スイッチ・データ・ユニットを新たに作成し、アニメーションを再開させる。
【００７９】
図１９は本発明の第４実施例の保持データの具体例を示す図である。第４実施例のＣＧアニメーション編集装置は、状態スイッチ・データ・リストと状態サンプリング・データ・リストとを保持している。
図１９（ａ）  は状態スイッチ・データ・リストを示すものである。図示の例では、状態スイッチ・データ・ユニット１における項目１のスイッチ・オブジェクト＝「旗」とされ、項目２のスイッチ・タイプ＝「質感」とされ、項目３の詳細データ＝「（色＝紫）」とされ、項目４の起動フラグ＝「〜したら」とされ、項目５の起動されるオブジェクト＝「ボール」とされ、項目６の起動される反応運動＝「動く」とされ、項目７の待ち状態フラグ＝「起動待ち」とされている。
【００８０】
図１９（ｂ）  は状態サンプリング・データ・リストを示すものである。図示の例では、状態サンプリング・データ・ユニット１における項目１のオブジェクト＝「旗」とされ、項目２のオブジェクト・タイプ＝「一般」とされ、項目３のデータ・タイプ＝「色」とされ、項目４の詳細データ＝「色」とされている。
【００８１】
図２０はサンプリング時の編集ウィンドウとエディタの例を示すものである。図２０（ａ）  は本発明におけるプルダウン・メニューの例を示す図である。グローバル・メニューの状態スイッチの所をドラッギングすると、「スイッチ・リスト」，「サンプル・リスト」，「サンプリング」と書かれたプルダウン・メニューが表示される。「スイッチ・リスト」は設定済状態スイッチのリストの表示／編集エディタを開示するためのものであり、「サンプル・リスト」はサンプリングされたオブジェクトの表示／編集エディタを開示するためのものであり、「サンプリング」はオブジェクトを指定してサンプリングするためのものである。
【００８２】
図２０（ｂ）  は状態スイッチ・リスト編集エディタの例を示す図である。プルダウン・メニューの「スイッチ・リスト」が選択されると、図示のような状態スイッチ・リスト編集エディタが表示される。「新規」は状態スイッチ・データ・ユニットをリストに新たに追加する場合に選択され、「編集」は状態スイッチ・データ・ユニットの内容を変更する場合に選択され、「削除」は状態スイッチ・データ・ユニットを削除する場合に選択される。
【００８３】
図２０（ｃ）  は状態サンプリング編集エディタの例を示す図である。プルダウン・メニューの「サンプリング」を選択して画面上のオブジェクトを指定すると、図示のような状態サンプリング編集エディタが表示される。図示の例では、オブジェクトとしては「旗」が指定され、「旗」に関する情報が表示されている。状態サンプリング編集エディタの「編集」をクリックした後、表示されている情報中の必要なものを指示する。
【００８４】
図２１は本発明の第５実施例の機能ブロック図である。同図において、５１はＩＦ−ＴＨＥＮルール設定部、５２は状態スイッチ・データ翻訳部、５３は状態スイッチ・データ設定部、５４はオブジェクト更新計算部、５５は状態スイッチ判定部、５６は状態スイッチ起動処理部、５７は結果表示部をそれぞれ示している。
【００８５】
本発明の第５実施例は、運動の流れを普通のプログラムで表現した場合の処理例である。普通のプログラム言語における各条件の表現方法である所の動きの起動に関する広範囲なＩＦ−ＴＨＥＮ文に対応するためには、従来のタイマや干渉スイッチ以外に、本発明の状態スイッチが不可欠になる。
【００８６】
本発明の第５実施例は、ＩＦ−ＴＨＥＮルール設定部５１，状態スイッチ・データ翻訳部５２，状態スイッチ・データ設定部５３，オブジェクト更新計算部５４，状態スイッチ判定部５５，状態スイッチ起動処理部５６および結果表示部５７から構成されている。
【００８７】
ＩＦ−ＴＨＥＮルール設定部５１で、ＩＦ−ＴＨＥＮルールを使用して動きをプログラムとして作成する。ここでＩＦ−ＴＨＥＮと言っているが、これは一例であり、実際には各プログラム言語で同様な意味を持つ条件式であれば良い。これを、状態スイッチ・データ翻訳部５２で本発明の状態スイッチに解釈する。
【００８８】
例として、ＩＦ−ＴＨＥＮ文内を以下のように解釈する。即ち、「何が（主語＝状態スイッチ・オブジェクト）どういう状況（条件状況＝状態スイッチの属性値）になったら、何は（反応主語＝反応オブジェクト、運動）どうする（述語＝反応運動の処理。但し、起動終了のみ）」と言うように解釈する。
【００８９】
このように、一般的な思考方法であるＩＦ−ＴＨＥＮルールのプログラムを、自動的に状態スイッチに置き換えて実行すると言う、以前のような運動編集方法では実現不可能であったことを実現できる。
【００９０】
【発明の効果】
以上の説明から明らかなように、本発明によれば、アニメーション（動きの流れ）の編集において、状態スイッチと言う概念を導入／処理することで、従来の編集方法では不可能であった複雑な条件下での運動の起動と言う課題を解決できる。また、複数の状態が重なりあった条件をも考慮したことで、より広範な編集に対応し、一般的なＩＦ−ＴＨＥＮ文をそのまま状態スイッチとして使用することも出来、利用者のイメージ通りのシーンを簡単に作成することが出来る。
【図面の簡単な説明】
【図１】本発明の第１実施例の機能ブロック図である。
【図２】仮想世界の例を示す図である。
【図３】状態スイッチ・データのフォーマットの例を示す図である。
【図４】本発明の第１実施例の状態スイッチ・データの具体例を示す図である。
【図５】本発明の第１実施例の状態スイッチ・データの処理例を示す図である。
【図６】本発明の第２実施例の機能ブロック図である。
【図７】本発明の第２実施例の処理フローを示す図である。
【図８】本発明の第２実施例によるアニメーション例を示す図である。
【図９】本発明の第２実施例の状態スイッチ・データの具体例を示す図である。
【図１０】本発明の第２実施例の干渉スイッチ・データの具体例を示す図である。
【図１１】本発明の第３実施例の機能ブロック図である。
【図１２】本発明の第３実施例の処理フローを示す図である。
【図１３】本発明の第３実施例によるアニメーション例を示す図である。
【図１４】本発明の第３実施例の状態スイッチ・データの具体例を示す図である。
【図１５】本発明の第３実施例におけるタイム・スケジュール・データの具体例を示す図である。
【図１６】本発明の第４実施例の機能ブロック図である。
【図１７】本発明の第４実施例の処理フローを示す図である。
【図１８】本発明の第４実施例によるアニメーション例を示す図である。
【図１９】本発明の第４実施例の保持データの具体例を示す図である。
【図２０】サンプリング時の編集ウィンドウ，エディタ例を示す図である。
【図２１】本発明の第５実施例の機能ブロック図である。
【符号の説明】
１    状態スイッチ・データ設定手段
２    オブジェクト更新計算部
３    状態スイッチ判定部
４    状態スイッチ起動処理部
５    結果表示部
２１  状態スイッチ・データ設定手段
２２  干渉スイッチ・データ設定手段
２３  オブジェクト仮更新計算部
２４  干渉判定部
２５  干渉スイッチ判定部
２６  干渉スイッチ起動処理部
２７  オブジェクト仮更新確定部
２８  状態スイッチ判定部
２９  状態スイッチ起動処理部
３０  結果表示部
３１  タイマ・スケジュール設定手段
３２  状態スイッチ・データ設定手段
３３  タイム・ステップ更新部
３４  タイム・スケジュール判定部
３５  タイム・スケジュール起動処理部
３６  オブジェクト更新計算部
３７  状態スイッチ判定部
３８  状態スイッチ起動処理部
３９  結果表示部
４１  状態スイッチ・データ設定部
４２  オブジェクト更新計算部
４３  状態スイッチ判定部
４４  状態スイッチ起動処理部
４５  運動データ取得部
４６  結果表示部
５１  ＩＦ−ＴＨＥＮルール設定部
５２  状態スイッチ・データ翻訳部
５３  状態スイッチ・データ設定部
５４  オブジェクト更新計算部
５５  状態スイッチ判定部
５６  状態スイッチ起動処理部
５７  結果表示部
【図１】
0003578491.tif 000002
【図２】
0003578491.tif 000003
【図３】
0003578491.tif 000004
【図４】
0003578491.tif 000005
【図５】
0003578491.tif 000006
【図６】
0003578491.tif 000007
【図７】
0003578491.tif 000008
【図８】
0003578491.tif 000009
【図９】
0003578491.tif 000010
【図１０】
0003578491.tif 000011
【図１１】
0003578491.tif 000012
【図１２】
0003578491.tif 000013
【図１３】
0003578491.tif 000014
【図１４】
0003578491.tif 000015
【図１５】
0003578491.tif 000016
【図１６】
0003578491.tif 000017
【図１７】
0003578491.tif 000018
【図１８】
0003578491.tif 000019
【図１９】
0003578491.tif 000020
【図２０】
0003578491.tif 000021
【図２１】
0003578491.tif 000022