JP3753802B2 - 連結動作物体の処理装置 - Google Patents
連結動作物体の処理装置 Download PDFInfo
- Publication number
- JP3753802B2 JP3753802B2 JP20756696A JP20756696A JP3753802B2 JP 3753802 B2 JP3753802 B2 JP 3753802B2 JP 20756696 A JP20756696 A JP 20756696A JP 20756696 A JP20756696 A JP 20756696A JP 3753802 B2 JP3753802 B2 JP 3753802B2
- Authority
- JP
- Japan
- Prior art keywords
- sphere
- center
- tire
- information
- parts
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Processing Or Creating Images (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は連結動作物体の処理装置に関し、更に詳しくは複数の仮想の部品が連結され、かつその全体がCGアニメーションにより運動し及び又は変形する連結動作物体の処理装置に関する。
例えば、仮想のボディーやフレームと複数のタイヤを備え、該タイヤの回転に伴いサーキット上を走る様にした自動車は一種の連結動作物体で実現できる。係る自動車のCGアニメーションでは、自動車の形態や運動(動き)のリアリティーを要求されると共に、ゲームの進行に伴い、ガードレールや他の自動車と接触するようなアクシデントが発生した場合は、自動車の動きや変形をリアルタイムに処理する必要がある。
【0002】
【従来の技術】
従来のゲーム機等では、物体(自動車,キャラクタ等)の忠実な外観を追求した結果、反面物理則に従う動きや変形のリアリティーが犠牲となっていた。
例えば人が画面を横切る様な場合は、人として忠実に生成された顔や胴体に、まず前向きに振られた手足を付け、次に後ろ向きに振られた手足をつけ替え、これらを繰り返すものに過ぎない。
【0003】
また自動車がガードレールや他の自動車と接触したような場合は、部品(バンパ,タイヤ等)の形状を無視し、ボディー等の大まかな形状に基づき、大まかな当たり判定(接触有無の判定)を行うものに過ぎない。
【0004】
【発明が解決しようとする課題】
しかし、上記物体の大まかな当たり判定を行ったり、物理則に従う運動や変形の処理を犠牲にすると、ゲームのトータルリアリティーが損なわれる。
一方、物体の形態及び運動等のリアリティーを同時に追求すると、処理が極端に複雑となり、リアルタイムな処理を行えない。
【0005】
本発明は、上記従来技術の課題に鑑み成されたものであり、その目的とする所は、簡単な構成及び処理で複雑な形態を有する物体の動きや当たり判定等を高速に処理できる連結動作物体の処理装置を提供することにある。
【0006】
【課題を解決するための手段】
上記の課題は例えば図1(及び図3,図4)の構成により解決される。即ち、本発明(1)の連結動作物体の処理装置は、複数の仮想の部品(例えばボディー,フレーム,タイヤ)A〜Gが連結され、かつその全体がCGアニメーションにより運動し及び又は変形する連結動作物体(例えば自動車)の処理装置において、中心と半径により特定される複数の球体を、各中心上に設定した3次元直交座標軸を介して該軸の周りに回転可能に連結し、全体としてのキャラクタの構造を構成する連結手段と、外部入力の操作情報に従って対応する連結部に回転トルクを与え、キャラクタの全体を運動及び又は変形させる操作手段と、前記球体の中心と、該球体に加えられた回転トルクに従う回転の情報とに基づき各球体を該球体に1対1の割合で内接し乃至外接するような各部品に固有の外形形状(球体,楕円体,タイヤ形状)で表示する表示手段とを備えるものである。
また本発明(2)では、上記本発明(1)において、前記球体の中心と半径の情報に基づき他の物体又はその部品との間の当たり判定を行う当たり判定手段を備える。
また本発明(3)では、上記本発明(1)又は(2)において、 各球体の大きさは同一である。
【0007】
図において、例えばゲームの進行に伴い、後続の連結動作物体(自動車)10が先行する自動車20に追越しを掛けている。この場合に、図の実線で示す如く、夫々にリアルな形態の部品(球体のボディーA、楕円体のフレームB,C、タイヤ形状のタイヤD〜F)から成り、かつ全体としても複雑な形態の自動車10と同じく自動車20との間の正確な当たり判定は、一般に複雑・困難なものとなる。
【0008】
本発明(1)においては、全部品A〜Gを該部品の外形状にそれぞれ1対1の割合で内接し乃至外接するような球体の情報で模擬(骨格構成)する。
この場合に、ボディーAは元々球体なのでこれを球体で模擬しても問題はない。一方、楕円体のフレームB,Cについては、これらを該楕円体外形に内接し乃至外接するような球体で模擬しても、形状の大きな相違(ゲーム上の違和感)は生じない。更に、この考えを進めると、図示の如き幅広のタイヤD〜Gにつき、これらをタイヤ外形に内接し乃至外接するような球体で模擬しても、大きな違和感は生じない。自動車20についても同様である。
更に本発明(1)では、複数の球体を連結すると共に、外部入力の操作情報に従って対応する連結部に回転トルクを与え、キャラクタの全体を運動及び又は変形させると共に、該球体の中心と、該球体に加えられた回転トルクに従う回転の情報とに基づき各球体を該球体に1対1の割合で内接し乃至外接するような各部品に固有の外形形状(球体,楕円体,タイヤ形状)で表示する。
図において、例えばタイヤEはタイヤ独自の形状・構造を備えるが、物体(自動車)10の全体の形状、構造及び動き等の処理に関しては、上記模擬された球体として取り扱われる。フレームB等についても同様である。その結果、自動車10の全体についての形状、構造及び動き等に関しては、これを単純な球体の集合として取り扱え、各球体の中心と回転の情報に基づき比較的容易に生成できる。しかも、本発明(1)によれば、前記球体の中心と回転の情報に基づき各部品A〜G,H〜Nを該部品に固有の形状(球体,楕円体,タイヤ形状)で表示するので、自動車10,20の描画の質(リアリティー)を損なわない。かくして、本発明(1)によれば、簡単な構成と動きや変形の生成処理で、よりリアルな形態と動き等を高速に生成できる。
【0009】
本発明(2)においては、前記球体の中心と半径の情報に基づき他の物体又はその部品との間の当たり判定を行う。
今、自動車10,20間の当たり判定を行うとすると、この例では、2つのフレーム及び4つのタイヤで周囲を囲まれたボディーA/Hが他の自動車の部品に接触するとは考え難い。そこで、ボディーA,Hを除外し、残りの一部の部品B〜G,I〜Nについての当たり判定を行う。これを具体的に言うと、画面の各描画時刻に、任意の部品i,j(B≦i≦G,I≦j≦N)につき、2つの部品の中心間の距離|CiCj|≦2rを満たすものを探査し、存在する場合は当たり判定とする。図示の例では、タイヤE,Mのみが距離|CECM|≦2rを満足し、当たり判定となる。
【0010】
またガードレールとの当たり判定を行う場合は、任意の部品i(B≦i≦G)とガードレールの面(例えばX=k)につき、距離|CiXk|≦rを満たすものを探査し、存在する場合は当たり判定とする。図示の例では、タイヤDのみが距離|CDXk|≦rを満足し、当たり判定となる。
このように、部品形状を球体で模擬した場合の当たり判定は、球体のどの部分についても該球体の中心座標Cと半径rとを使用して容易に行えるので、当たり判定の処理が格段に軽減され、高速化される。しかも、この場合の各球体の大きさは各部品の外形状に内接し乃至外接するように選ばれているので、球体と部品との間の形状誤差を小さくでき、よって当たり判定に関しては大きな違和感を生じない。
【0014】
好ましくは、本発明(3)においては、上記本発明(1),(2)において、図示の如く、各球体(即ち、各部品)の大きさは同一である。従って、当たり判定の閾値が一定(2r又はr)となり、又は各構成部品の大きさを一定と見做して物体のアニメーション(動きや変形)を生成でき、演算は一層簡単になる。
なお、本発明は上記図示の例に限定されないことは言うまでも無い。
【0015】
【発明の実施の形態】
以下、添付図面に従って本発明に好適なる実施の形態を詳細に説明する。
図2は実施の形態によるゲーム機の構成を示す図で、図において、1はゲーム機の本体、2はユーザが操作するための十字キー、A,Bボタン、スタートボタン等を有するコンソール部(CSL)、3はCRT等による表示装置(DISP)、4は本実施の形態による連結動作物体のデータ及びそのアニメーション処理方法等をプログラムで記憶しているコンパクトディスク(CD)、100はネットワーク(公衆網等)、5はゲーム等に関する様々な通信サービスをオンラインで提供するサーバ、6は他のゲーム機である。
【0016】
ゲーム機本体1において、11は本ゲーム機の主制御・処理を行うCPU、12はCPU11が実行するプログラムやデータであって、例えば図5〜図7に示す連結動作物体のデータや処理プログラム等を記憶するRAM,ROM,EEPROM等よりなる主メモリ(MEM)、13は表示装置3を制御する表示制御部(DISPC)、14はコンソール部2をCPU11に接続するインタフェース部(IF)、15はCD4の着脱、駆動及びデータ読取を行うCD駆動部(CDD)、16はゲーム機本体1をネットワーク100に接続する通信制御部(NCC)、17はCPU11の共通バスである。
【0017】
ゲームを行う時には、ゲーム機本体1及び表示装置3に電源投入し、ゲーム用のCD4をCD駆動部15に装填する。更に、CD4から必要なプログラムやデータを主メモリ12にロードし、ゲームをスタートする。そして、表示装置3に表示される生成アニメーション画像を見ながら、コンソール部2を操作して、ゲームを楽しむ。
【0018】
なお、CD4に代え、ROMカードやフロッピーディスク等の他の2次記憶装置を使用しても良い。また、サーバ5から所望のゲームソフトをダウンロードしても良い。更に、他のゲーム機6とオンラインで対戦ゲームを行っても良い。
図3は実施の形態による連結動作固体(部品)を説明する図である。
本実施の形態における連結動作固体(以下、単に固体又は部品とも言う)とは、連結されて連結動作物体を構成する固体を言い、それ自体は変形しないものを言う。固体には様々な形態のものが考えられるが、以下に一例の自動車(物体)を構成する部品について説明する。
【0019】
図3(A)は球体よりなるボディー(操縦席)の斜視図である。
ボディーは、物体に一つ存在し、これに各部品を連結して物体(自動車)を構成する。一例のボディーは半径r=0.5の球体であり、この球体は、その中心点oと、該中心点oを通る直交線xyzと球面との交点にある6つの端点(連結点)p1 〜p6 の情報を備える。
【0020】
ボディーの中心oはユニバーサル座標原点Oからの位置(X,Y,Z)と同ユニバーサル座標における回転(姿勢)とで特定され、各端点p1 〜p6 は自己のローカル座標原点oからの位置(x,y,z)で特定される。初期状態では、中心o(X0 ,Y0 ,Z0 ),端点p1 (0.5,0,0),p2 (0,0.5,0),p3 (−0.5,0,0),p4 (0,−0.5,0),p5 (0,0,0.5),p6 (0,0,−0.5)である。
【0021】
また、このボディーは球体を表す形状属性情報を別途に備えており、該ボディーを画面に表示する際には、その中心点oを基準として、x2 +y2 +z2 =r2 を満足するような球体としてポリゴンにより表示される。
なお、ボディーは上記球体に限らず、任意の形態で良い。但し、球体に近い程、後述のアニメーション(物体の動き、変形、当たり判定等)処理上の形態と、画面に表示される形態とが一致し、ゲーム操作上の違和感が少なくなる。
【0022】
図3(B)は楕円体よりなるフレームの斜視図である。
上記ボディーに複数のフレーム(サブボディー)を連結してF−1レーシングカーの様な車体の骨格を構成する。このフレームは楕円体として表示されるが、該フレームに与えられる処理上の空間は上記ボディーと同様の半径r=0.5の球体である。この球体は、その中心点oと、該中心点oを通る直交線xyzと球面との交点にある6つの端点(連結点)p1 〜p6 の情報を備える。
【0023】
中心oは連結先固体(ボディー等)のローカル座標原点oからの位置(x,y,z)と連結軸回りの回転(姿勢)とで特定され、各端点p1 〜p6 は自己のローカル座標原点oからの位置(x,y,z)で特定される。初期状態では、中心o(x0 ,y0 ,z0 ),端点p1 (0.5,0,0),p2 (0,0.5,0),p3 (−0.5,0,0),p4 (0,−0.5,0),p5 (0,0,0.5),p6 (0,0,−0.5)である。
【0024】
また、このフレームは楕円体を表す形状属性情報を別途に備えており、該フレームを画面に表示する際には、その中心点oを基準として、長径|p5p6|=1,短径|p1p3|=|p2p4|<1を満足するような楕円体としてポリゴンにより表示される。
なお、上記楕円体に外接する球体の代わりに、これより大きな楕円体に内接する同球体を考えても良い。いずれにしても、その形状誤差は小さい。
【0025】
図3(C)は幅広のタイヤの斜視図である。
上記フレームに複数のタイヤを連結して最終的に物体(自動車)を構成する。タイヤはタイヤとして表示されるが、該タイヤに与えられる処理上の空間は上記フレームの場合と同様の半径r=0.5の球体である。その中心oは連結先固体(フレーム等)のローカル座標原点oからの位置(x,y,z)と連結軸回りの回転(姿勢)の情報で特定され、端点p1 〜p6 は自己のローカル座標原点oからの位置(x,y,z)で特定される。
【0026】
また、このタイヤはタイヤの形状属性情報を別途に備えており、基本的には、軸p2p4の回り展開するような予め生成されたタイヤのポリゴンに基づき表示される。
図3(D)は握り拳の斜視図である。
本実施の形態とは直接関係無いが、球体で模擬しても外観との相違が少ない部品の一例として握り拳を示している。他にも、拳闘のグローブ等、様々な部品を球体で模擬できる。また、上記楕円体を有する部品としては、他に人の顔等、様々な部品が考えられる。また複数の楕円体を連結すれば、長尺の胴体や手足等も楕円体(即ち、球体)の集合として表現・処理できる。
【0027】
更に、上記ボディー以外の各部品は、部品間を連結する連結リンク(x/y/z軸)の回りに回転可能であり、これにより各部品の姿勢が変化し、ひいては自動車の形状が変化する。
図4は一例の連結動作物体(自動車)を説明する図で、図4(A)はある姿態の平面図、図4(B)は他の姿態の後面図である。
【0028】
一例のゲームでは、ゲーム開始前の画面に複数の固体(部品)が表示され、ユーザは任意の部品を選択してボディー等に連結する。なお、タイヤやフレームの数を増し、装甲車のような車を構成しても良い。
図4(A)において、ユーザは、例えば、ボディーAにフレームB,Cを連結し、更にフレームB,CにタイヤD,E及びF,Gを連結して、1台の自動車を組み立てる。また同様にして、対戦相手は、不図示の部品H〜Nを使用してもう1台の自動車を組み立てる。
【0029】
係る連結動作物体を構成後、ユーザが操作ボタンを押すと、これが各連結リンク(不図示)における角速度(単位時間当たりの回転角)R,0,−Rの情報に変換され、物体が運動する。Rはリンクを被連結先固体の方向に見て反時計方向CCWの回転、0は回転無し、−Rは時計方向CWの回転を表す。
ユーザが前進を指令すると、各連結リンクに図示のようなトルク(角速度に対応)が生成され、物体は前進する。また後退を指令すると、図示の−R→R,R→−Rとなり、物体は後退する。また右回転を指令すると、図示の−R→Rとなり、物体は右回転する。また左回転を指令すると、図示のR→−Rとなり、物体は左回転する。また右旋回を指令すると、図示の−R→0となり、物体は右旋回する。また左旋回を指令すると、図示のR→0となり、物体は左旋回する。
【0030】
図4(B)において、例えばボディーAとフレームCとの間の連結リンクにトルク(単位時間当たりの回転角に相当)Rを加えると、自動車は図示のような姿態となることが容易に理解できる。ゲーム上では、対戦相手の進行を妨害したり、地面の障害物を跨ぐ行為である。これにより、車体はねじれ、自動車は変形する。
【0031】
図5は実施の形態による連結動作物体のデータ構造を説明する図である。
ここには上記図4(A)の自動車に対応したデータ構造を示す。
ゲームの前置処理(不図示)は、上記ユーザの連結操作に基づき、又は完成された自動車の部品の接続状態を、ボディー(祖)Aから開始し、フレーム(親)B、タイヤ(子)D,Eの如く、世代順にトレースすることにより、所定の連結情報を生成する。この連結情報には2種類有り、自己が他の部品に連結している積極的連結情報と、自己に他の部品が連結されている被連結情報とがある。
【0032】
積極的連結情報は、各部品が有する部品変数行列[U]の中に具現される。但し、ボディーAには積極的連結情報が無いので、ユニバーサル座標原点Oに連結される。即ち、ユニバーサル座標原点Oからの位置(10,10,0)と、該ユニバーサル座標における回転(θ=0°に相当)の情報を備える。但し、地面の座標をZ=−0.5としている。フレームBはボディーAのローカル座標原点oからの位置(0,1,0)と、その連結軸回りの回転(θy =0°に相当)の情報を備える。タイヤDはフレームBのローカル座標原点oからの位置(−1,0,0)と、その連結軸回りの回転(θx =0°に相当)の情報を備え、タイヤEは同フレームBのローカル座標原点oからの位置(1,0,0)と、その連結軸回りの回転(θx =0°に相当)の情報を備える。他の部品C,F,Gについても同様である。このように、各部品B〜Gの位置及び姿勢は、ボディーA又は各連結先部品からの相対位置と連結軸回りの回転とで規定されており、連結動作物体の取扱が容易となる。また、この例の各積極的連結情報には、各部品を模擬する球体の半径r=0.5であることが含まれている。
【0033】
一方、ボディーAの被連結情報は最大6個あり、夫々はポインタ方式によりネスティングされる。但し、プログラム処理上は、この被連結情報を子の世代から親の世代を見た連結情報(木構造記述データ)として取扱い、矢印の向きを図示の如く表す。
ボディーAからフレームBに向かうチャイルド(child) はフレームBがボディーAの最初の子であることを表す。フレームBからフレームCに向かうネクスト(next)はフレームCがボディーAの2番目の子であることを表す。またフレームCのnext=Nullにより、ボディーAの子は合計2人である。フレームBとタイヤD,Eの関係も同様である。ここで、タイヤDから子に向かうchild =NullはタイヤDに子が居ないことを表す。なお、ボディーA以外の各部品はリンクの一つを積極的連結情報に使用した結果、被連結情報は最大5個となる。
【0034】
係るデータ構造では、各部品に関する連結情報の構造(部品変数行列及び木構造記述データ)はどの部品に着目しても同一である。このため、自動車の動きや変形の処理は、後述の共通の演算処理を再帰的に使用して、ボディーAから開始し、かつトップダウン方式によるフィードバック無しで、高速に行える。以下、これを説明する。
【0035】
図6は実施の形態による物体のアニメーション生成処理のフローチャートである。なお、以下の説明では、記号[]は行列(マトリクス)を表す。
ゲームの進行に伴う各描画時刻に、この処理に入力する。このアニメーション生成処理は、部品の形状を変更せずに、その連結情報に従って各部品の姿勢(回転)を変更し、結果として自動車全体を動かし、変形する処理である。
【0036】
ステップS1では祖,親,子等の世代の深さを表すカウンタiを0(祖)に初期化する。ステップS2では、再帰的演算を実現するために、ステップS3で使用する状態変数行列[S(i-1) ]をスタック(不図示)にプッシュ(push) する。添字の(i−1)はiよりも1世代前を指し、最初は(0−1)でユニバーサル座標の状態変数行列を指す。状態変数行列[S(0-1) ]は、同次座標の3次元1次変換行列からなり、以下に示す単位行列となっている。
【0037】
【数1】
【0038】
ステップS3では1世代前の状態変数行列[S(i-1) ]に現代の部品変数行列[U(i) ]を左側から掛け合わせ、現代の状態変数行列[S(i) ]を求める。部品変数行列[U(i) ]は同次座標の3次元1次変換行列からなり、各部品が個々に備える。ステップS4では求めた状態変数行列[S(i) ]の内容に従って部品(最初は祖A)を画面に表示する。表示の際には、各部品が別途に備える形状属性情報が使用される。ステップS5では子の有無を調べるためにカウンタiに+1する。ステップS6ではchild =Nullか否かを判別する。child ≠Nullの場合は、子が居るので、ステップS2に戻り、引き続き子の処理を行う。こうして、祖→親→子→孫の順にchild ≠Nullを直系でたどり、かつステップS3の演算を再帰的に使用して、祖→親→子→孫等の1系統を画面に表示する。
【0039】
また、上記ステップS6の判別でchild =Nullの場合は、直系子孫の終わりである。処理はステップS7に進み、カウンタiに−1する。即ち、兄弟の有無を調べるために1世代前に逆上る。ステップS8では、次のステップS3の演算を現在の世代iに合わせるために、その更に1世代前の状態変数行列[S(i-1) ]をスタックよりポップする。即ち、兄弟の親の状態変数行列[S(i-1) ]をポップする。ステップS9ではi=0か否かを判別する。
【0040】
i=0の場合は、判定が祖の世代まで逆上ったことを示し、祖に兄弟は居ないので、処理を抜ける。なお、この時点ではユニバーサル座標の状態変数行列[S(0-1) ]がポップされており、よってこの変形処理は初期化せずに何度も使用できる。またi≠0の場合は、ステップS10でnext=Nullか否かを判別する。next=Nullの場合は、その世代に兄弟が居ないので、ステップS7に進み、更に1世代前に逆上る。またnext≠Nullの場合は、その世代に兄弟が居るので、ステップS2に戻る。以下、同様にして進み、こうして上記木構造記述データに基づく全部品の生成・表示が能率良く処理される。
【0041】
図7は実施の形態による対戦ゲームの画面を説明する図である。
ユニバーサル座標のXY平面(Z=−0.5)に対戦用のフロア(地面)が設けられている。従って、フロアに接触している部品(球体)の中心のZ座標=0と簡単化される。ゲームの初期状態では、自動車10は画面手前側のスタートラインに位置し、対戦相手の自動車20は画面奥側のスタートラインに位置する。ゲーム開始により、走行を開始し、相手側のスタートラインに先に到達した方が勝者である。
【0042】
以下に、初期状態における自動車10の描画手順につき具体的に説明する。
ボディーAの状態変数行列[S1 ]を次式で求める。
【0043】
【数2】
【0044】
求めた状態変数行列[S1 ]は、ボディーAの状態(姿態)を表しており、ボディーAの中心はユニバーサル座標原点Oからの位置(10,10,0)にあり、かつボディーAのユニバーサル座標における回転角(姿勢)θA =0°である。これに基づき、ボディーAの画像を生成し、画面に表示する。ボディーAの画像は、そのローカル座標原点oを基準として、球体の形状属性情報、x2 +y2 +z2 =r2 (但し、r=0.5)を満足するようなポリゴン等で表示される。次にフレームBの状態変数行列[S2 ]を次式で求める。
【0045】
【数3】
【0046】
[S2 ]によれば、フレームBの中心はユニバーサル座標原点Oからの位置(10,11,0)にあり、かつフレームBのユニバーサル座標における回転角θB =0°である。ボディーAの状態変数行列[S1 ]がユニバーサル座標で表される結果、これに部品変数行列[Ui ]を順次掛け合わせて生成されるフレームB以降の各状態変数行列[Si ]もユニバーサル座標で表される。これに基づき、フレームBの画像を生成し、画面に表示する。フレームBの画像は、そのローカル座標原点oを基準として、楕円体の形状属性情報、x2 /a2 +y2 /a2 +z2 /b2 =1(但し、0<a<b,短軸2a<1,長軸2b=1)を満足するようなポリゴンで表示される。次にタイヤDの状態変数行列[S3 ]を次式で求める。
【0047】
【数4】
【0048】
[S3 ]によれば、タイヤDの中心はユニバーサル座標原点Oからの位置(9,11,0)にあり、かつタイヤDのユニバーサル座標における回転角θD =0°である。これに基づき、タイヤDの画像を生成し、画面に表示する。タイヤDの画像は、そのローカル座標原点oを基準として、タイヤ形状を生成するポリゴン等により表示される。例えば予めタイヤの骨格を成す3次元ワイヤフレーム情報を生成しておき、必要ならこれに回転処理を行い、更に、隠線消去やポリゴン処理を施す事で、タイヤDをどの角度(姿勢)にでも表現できる。次に、タイヤDのchild =Nullにより、タイヤDのnextのタイヤEの状態変数行列[S4 ]を次式で求める。
【0049】
【数5】
【0050】
[S4 ]によれば、タイヤEの中心はユニバーサル座標原点Oからの位置(11,11,0)にあり、かつタイヤEのユニバーサル座標における回転角θE =0である。これに基づき、タイヤEの画像を生成し、画面に表示する。以下同様である。
そして、次回にこのアニメーション生成処理に入力する時は、ゲーム機の操作により、対応する部品A〜Dの部品変数行列[UA ]〜[UG ]の内容が変更(更新)されている。例えばタイヤにトルク(角速度に相当)を加えた場合は、そのタイヤの回転行列が更新されると共に、地面との摩擦による反作用を受けて車体が回転及び又は平行移動した分だけ、ボディーAの回転行列及び又は位置行列が更新される。従って、次の描画タイミングにおける自動車10の位置は前の位置より移動している。こうして、運動及び変形する自動車のアニメーション生成画像が画面にリアルタイムに表示される。
【0051】
図8は実施の形態によるの当たり判定処理のフローチャートである。
画面の各描画時刻(画像の更新時刻)にこの処理に入力する。ステップS21では、任意の部品i,j(B≦i≦G,I≦j≦N)につき、2つの部品の中心間の距離|Ci Cj |≦2rを満たすものを探査する。ステップS22では上記当たり判定条件を満たすものが存在するか否かを判別する。存在しない場合はステップS23で当たりフラグFをリセットし、処理を抜ける。また存在する場合はステップS24で当たりフラグFをセットし、処理を抜ける。
【0052】
なお、ガードレール等の他の物体との当たり判定を行う場合は、上記ステップS21の処理は、任意の部品i(B≦i≦G)とガードレールの面(例えばX=k)につき、距離|CiXk|≦rを満たすものを探査する。
上記何れにしても、当たりフラグF=1の場合は、不図示の外部処理により、物体(自動車)に適当なリバウンド作用や回転の作用等が加えられる。
【0053】
以上の処理を図7の3次元空間につき具体的に説明する。
球体の中心座標をC(CX ,CY ,CZ )で表し、フロア(地面)をZ=−0.5のXY平面とすると、半径r=0.5の球体の地面との衝突判定式はCZ ≦0.0で簡単に行える。
また、球体Eと球体Lとの衝突判定式は、夫々の中心点をE(EX ,EY ,EZ )、L(LX ,LY ,LZ )としたときに、(EX −LX )2 +(EY −LY )2 +(EZ −LZ )2 ≦1.0となる。この衝突判定は、各部品をリアルな形状の凸多面体や凹多面体として取り扱った場合の衝突判定と比べると、非常に単純なものとなる。
【0054】
また上記の場合に、もし半径Er ,Lr が不同の球体で衝突判定する場合は、衝突判定式の右辺は(Er +Lr )2 となる。これに対して上記各球体の半径r=0.5に統一した場合は、衝突判定式の右辺を計算しない分だけ処理効率が良い。
なお、上記実施の形態ではゲ−ム機への適用例を中心に説明したがこれに限らない。本発明はあらゆるCGアニメーション画像における物体の当たり判定及び動きや変形の処理に適用できる。
【0055】
また、上記実施の形態ではバラバラの部品を連結(組立)して構成される一例の連結動作物体を示したがこれに限らない。予め完成している物体でも、可動部が存在し、かつその部分の機能、動き、形態等より該部分が部品と認識できる様な場合は、本発明の連結動作物体に含まれる。
また、上記実施の形態ではボディーA以外の各球体の中心oは連結先固体(ボディー,フレーム等)のローカル座標原点oからの位置(x,y,z)と連結軸回りの回転(姿勢)とで特定されるとしたが、これに限らない。例えば、各球体の中心oは連結先固体(ボディー等)のローカル座標原点oからの位置(x,y,z)と自己のローカル座標原点oの回りの回転(姿勢)とで特定されても良い。こうすれば、ボディーA以外の各球体は、ボディーAと同様の回転の自由度を備えることになり、連結軸(例えばx軸)の回りに回転するのみならず、自己のローカル座標原点oのy軸,z軸の回りにも回転可能となる。これにより、例えば各タイヤは連結先フレームの向き(姿勢)とは独立に自己の向きを変えられ、よりリアルな自動車に近づく。
【0056】
また、上記本発明に好適なる実施の形態を述べたが、本発明思想を逸脱しない範囲内で、各部の構成や処理、及びこれらの組合せの様々な変更が行えることは言うまでも無い。
【0057】
【発明の効果】
以上述べた如く本発明によれば、各部品を同程度の大きさの球体で模擬する簡単な構成及び処理で、複雑(リアル)な形態を有する物体の動き、変形並びに当たり判定等のアニメーション処理を高速に行え、CGアニメーション技術の発展に寄与する所が極めて大きい。
【図面の簡単な説明】
【図1】図1は本発明の原理を説明する図である。
【図2】図2は実施の形態によるゲーム機の構成を示す図である。
【図3】図3は実施の形態による連結動作固体を説明する図である。
【図4】図4は一例の連結動作物体を説明する図である。
【図5】図5は実施の形態による連結動作物体のデータ構造を説明する図である。
【図6】図6は実施の形態による物体のアニメーション生成処理のフローチャートである。
【図7】図7は実施の形態による対戦ゲームの画面を説明する図である。
【図8】図8は実施の形態によるの当たり判定処理のフローチャートである。
【符号の説明】
1 ゲーム機本体
2 コンソール部
3 表示装置
4 コンパクトディスク
5 サーバ
6 他のゲーム機
11 CPU
12 主メモリ
13 表示制御部
14 インタフェース部
15 CD駆動部
16 通信制御部
17 共通バス
100 ネットワーク
【発明の属する技術分野】
本発明は連結動作物体の処理装置に関し、更に詳しくは複数の仮想の部品が連結され、かつその全体がCGアニメーションにより運動し及び又は変形する連結動作物体の処理装置に関する。
例えば、仮想のボディーやフレームと複数のタイヤを備え、該タイヤの回転に伴いサーキット上を走る様にした自動車は一種の連結動作物体で実現できる。係る自動車のCGアニメーションでは、自動車の形態や運動(動き)のリアリティーを要求されると共に、ゲームの進行に伴い、ガードレールや他の自動車と接触するようなアクシデントが発生した場合は、自動車の動きや変形をリアルタイムに処理する必要がある。
【0002】
【従来の技術】
従来のゲーム機等では、物体(自動車,キャラクタ等)の忠実な外観を追求した結果、反面物理則に従う動きや変形のリアリティーが犠牲となっていた。
例えば人が画面を横切る様な場合は、人として忠実に生成された顔や胴体に、まず前向きに振られた手足を付け、次に後ろ向きに振られた手足をつけ替え、これらを繰り返すものに過ぎない。
【0003】
また自動車がガードレールや他の自動車と接触したような場合は、部品(バンパ,タイヤ等)の形状を無視し、ボディー等の大まかな形状に基づき、大まかな当たり判定(接触有無の判定)を行うものに過ぎない。
【0004】
【発明が解決しようとする課題】
しかし、上記物体の大まかな当たり判定を行ったり、物理則に従う運動や変形の処理を犠牲にすると、ゲームのトータルリアリティーが損なわれる。
一方、物体の形態及び運動等のリアリティーを同時に追求すると、処理が極端に複雑となり、リアルタイムな処理を行えない。
【0005】
本発明は、上記従来技術の課題に鑑み成されたものであり、その目的とする所は、簡単な構成及び処理で複雑な形態を有する物体の動きや当たり判定等を高速に処理できる連結動作物体の処理装置を提供することにある。
【0006】
【課題を解決するための手段】
上記の課題は例えば図1(及び図3,図4)の構成により解決される。即ち、本発明(1)の連結動作物体の処理装置は、複数の仮想の部品(例えばボディー,フレーム,タイヤ)A〜Gが連結され、かつその全体がCGアニメーションにより運動し及び又は変形する連結動作物体(例えば自動車)の処理装置において、中心と半径により特定される複数の球体を、各中心上に設定した3次元直交座標軸を介して該軸の周りに回転可能に連結し、全体としてのキャラクタの構造を構成する連結手段と、外部入力の操作情報に従って対応する連結部に回転トルクを与え、キャラクタの全体を運動及び又は変形させる操作手段と、前記球体の中心と、該球体に加えられた回転トルクに従う回転の情報とに基づき各球体を該球体に1対1の割合で内接し乃至外接するような各部品に固有の外形形状(球体,楕円体,タイヤ形状)で表示する表示手段とを備えるものである。
また本発明(2)では、上記本発明(1)において、前記球体の中心と半径の情報に基づき他の物体又はその部品との間の当たり判定を行う当たり判定手段を備える。
また本発明(3)では、上記本発明(1)又は(2)において、 各球体の大きさは同一である。
【0007】
図において、例えばゲームの進行に伴い、後続の連結動作物体(自動車)10が先行する自動車20に追越しを掛けている。この場合に、図の実線で示す如く、夫々にリアルな形態の部品(球体のボディーA、楕円体のフレームB,C、タイヤ形状のタイヤD〜F)から成り、かつ全体としても複雑な形態の自動車10と同じく自動車20との間の正確な当たり判定は、一般に複雑・困難なものとなる。
【0008】
本発明(1)においては、全部品A〜Gを該部品の外形状にそれぞれ1対1の割合で内接し乃至外接するような球体の情報で模擬(骨格構成)する。
この場合に、ボディーAは元々球体なのでこれを球体で模擬しても問題はない。一方、楕円体のフレームB,Cについては、これらを該楕円体外形に内接し乃至外接するような球体で模擬しても、形状の大きな相違(ゲーム上の違和感)は生じない。更に、この考えを進めると、図示の如き幅広のタイヤD〜Gにつき、これらをタイヤ外形に内接し乃至外接するような球体で模擬しても、大きな違和感は生じない。自動車20についても同様である。
更に本発明(1)では、複数の球体を連結すると共に、外部入力の操作情報に従って対応する連結部に回転トルクを与え、キャラクタの全体を運動及び又は変形させると共に、該球体の中心と、該球体に加えられた回転トルクに従う回転の情報とに基づき各球体を該球体に1対1の割合で内接し乃至外接するような各部品に固有の外形形状(球体,楕円体,タイヤ形状)で表示する。
図において、例えばタイヤEはタイヤ独自の形状・構造を備えるが、物体(自動車)10の全体の形状、構造及び動き等の処理に関しては、上記模擬された球体として取り扱われる。フレームB等についても同様である。その結果、自動車10の全体についての形状、構造及び動き等に関しては、これを単純な球体の集合として取り扱え、各球体の中心と回転の情報に基づき比較的容易に生成できる。しかも、本発明(1)によれば、前記球体の中心と回転の情報に基づき各部品A〜G,H〜Nを該部品に固有の形状(球体,楕円体,タイヤ形状)で表示するので、自動車10,20の描画の質(リアリティー)を損なわない。かくして、本発明(1)によれば、簡単な構成と動きや変形の生成処理で、よりリアルな形態と動き等を高速に生成できる。
【0009】
本発明(2)においては、前記球体の中心と半径の情報に基づき他の物体又はその部品との間の当たり判定を行う。
今、自動車10,20間の当たり判定を行うとすると、この例では、2つのフレーム及び4つのタイヤで周囲を囲まれたボディーA/Hが他の自動車の部品に接触するとは考え難い。そこで、ボディーA,Hを除外し、残りの一部の部品B〜G,I〜Nについての当たり判定を行う。これを具体的に言うと、画面の各描画時刻に、任意の部品i,j(B≦i≦G,I≦j≦N)につき、2つの部品の中心間の距離|CiCj|≦2rを満たすものを探査し、存在する場合は当たり判定とする。図示の例では、タイヤE,Mのみが距離|CECM|≦2rを満足し、当たり判定となる。
【0010】
またガードレールとの当たり判定を行う場合は、任意の部品i(B≦i≦G)とガードレールの面(例えばX=k)につき、距離|CiXk|≦rを満たすものを探査し、存在する場合は当たり判定とする。図示の例では、タイヤDのみが距離|CDXk|≦rを満足し、当たり判定となる。
このように、部品形状を球体で模擬した場合の当たり判定は、球体のどの部分についても該球体の中心座標Cと半径rとを使用して容易に行えるので、当たり判定の処理が格段に軽減され、高速化される。しかも、この場合の各球体の大きさは各部品の外形状に内接し乃至外接するように選ばれているので、球体と部品との間の形状誤差を小さくでき、よって当たり判定に関しては大きな違和感を生じない。
【0014】
好ましくは、本発明(3)においては、上記本発明(1),(2)において、図示の如く、各球体(即ち、各部品)の大きさは同一である。従って、当たり判定の閾値が一定(2r又はr)となり、又は各構成部品の大きさを一定と見做して物体のアニメーション(動きや変形)を生成でき、演算は一層簡単になる。
なお、本発明は上記図示の例に限定されないことは言うまでも無い。
【0015】
【発明の実施の形態】
以下、添付図面に従って本発明に好適なる実施の形態を詳細に説明する。
図2は実施の形態によるゲーム機の構成を示す図で、図において、1はゲーム機の本体、2はユーザが操作するための十字キー、A,Bボタン、スタートボタン等を有するコンソール部(CSL)、3はCRT等による表示装置(DISP)、4は本実施の形態による連結動作物体のデータ及びそのアニメーション処理方法等をプログラムで記憶しているコンパクトディスク(CD)、100はネットワーク(公衆網等)、5はゲーム等に関する様々な通信サービスをオンラインで提供するサーバ、6は他のゲーム機である。
【0016】
ゲーム機本体1において、11は本ゲーム機の主制御・処理を行うCPU、12はCPU11が実行するプログラムやデータであって、例えば図5〜図7に示す連結動作物体のデータや処理プログラム等を記憶するRAM,ROM,EEPROM等よりなる主メモリ(MEM)、13は表示装置3を制御する表示制御部(DISPC)、14はコンソール部2をCPU11に接続するインタフェース部(IF)、15はCD4の着脱、駆動及びデータ読取を行うCD駆動部(CDD)、16はゲーム機本体1をネットワーク100に接続する通信制御部(NCC)、17はCPU11の共通バスである。
【0017】
ゲームを行う時には、ゲーム機本体1及び表示装置3に電源投入し、ゲーム用のCD4をCD駆動部15に装填する。更に、CD4から必要なプログラムやデータを主メモリ12にロードし、ゲームをスタートする。そして、表示装置3に表示される生成アニメーション画像を見ながら、コンソール部2を操作して、ゲームを楽しむ。
【0018】
なお、CD4に代え、ROMカードやフロッピーディスク等の他の2次記憶装置を使用しても良い。また、サーバ5から所望のゲームソフトをダウンロードしても良い。更に、他のゲーム機6とオンラインで対戦ゲームを行っても良い。
図3は実施の形態による連結動作固体(部品)を説明する図である。
本実施の形態における連結動作固体(以下、単に固体又は部品とも言う)とは、連結されて連結動作物体を構成する固体を言い、それ自体は変形しないものを言う。固体には様々な形態のものが考えられるが、以下に一例の自動車(物体)を構成する部品について説明する。
【0019】
図3(A)は球体よりなるボディー(操縦席)の斜視図である。
ボディーは、物体に一つ存在し、これに各部品を連結して物体(自動車)を構成する。一例のボディーは半径r=0.5の球体であり、この球体は、その中心点oと、該中心点oを通る直交線xyzと球面との交点にある6つの端点(連結点)p1 〜p6 の情報を備える。
【0020】
ボディーの中心oはユニバーサル座標原点Oからの位置(X,Y,Z)と同ユニバーサル座標における回転(姿勢)とで特定され、各端点p1 〜p6 は自己のローカル座標原点oからの位置(x,y,z)で特定される。初期状態では、中心o(X0 ,Y0 ,Z0 ),端点p1 (0.5,0,0),p2 (0,0.5,0),p3 (−0.5,0,0),p4 (0,−0.5,0),p5 (0,0,0.5),p6 (0,0,−0.5)である。
【0021】
また、このボディーは球体を表す形状属性情報を別途に備えており、該ボディーを画面に表示する際には、その中心点oを基準として、x2 +y2 +z2 =r2 を満足するような球体としてポリゴンにより表示される。
なお、ボディーは上記球体に限らず、任意の形態で良い。但し、球体に近い程、後述のアニメーション(物体の動き、変形、当たり判定等)処理上の形態と、画面に表示される形態とが一致し、ゲーム操作上の違和感が少なくなる。
【0022】
図3(B)は楕円体よりなるフレームの斜視図である。
上記ボディーに複数のフレーム(サブボディー)を連結してF−1レーシングカーの様な車体の骨格を構成する。このフレームは楕円体として表示されるが、該フレームに与えられる処理上の空間は上記ボディーと同様の半径r=0.5の球体である。この球体は、その中心点oと、該中心点oを通る直交線xyzと球面との交点にある6つの端点(連結点)p1 〜p6 の情報を備える。
【0023】
中心oは連結先固体(ボディー等)のローカル座標原点oからの位置(x,y,z)と連結軸回りの回転(姿勢)とで特定され、各端点p1 〜p6 は自己のローカル座標原点oからの位置(x,y,z)で特定される。初期状態では、中心o(x0 ,y0 ,z0 ),端点p1 (0.5,0,0),p2 (0,0.5,0),p3 (−0.5,0,0),p4 (0,−0.5,0),p5 (0,0,0.5),p6 (0,0,−0.5)である。
【0024】
また、このフレームは楕円体を表す形状属性情報を別途に備えており、該フレームを画面に表示する際には、その中心点oを基準として、長径|p5p6|=1,短径|p1p3|=|p2p4|<1を満足するような楕円体としてポリゴンにより表示される。
なお、上記楕円体に外接する球体の代わりに、これより大きな楕円体に内接する同球体を考えても良い。いずれにしても、その形状誤差は小さい。
【0025】
図3(C)は幅広のタイヤの斜視図である。
上記フレームに複数のタイヤを連結して最終的に物体(自動車)を構成する。タイヤはタイヤとして表示されるが、該タイヤに与えられる処理上の空間は上記フレームの場合と同様の半径r=0.5の球体である。その中心oは連結先固体(フレーム等)のローカル座標原点oからの位置(x,y,z)と連結軸回りの回転(姿勢)の情報で特定され、端点p1 〜p6 は自己のローカル座標原点oからの位置(x,y,z)で特定される。
【0026】
また、このタイヤはタイヤの形状属性情報を別途に備えており、基本的には、軸p2p4の回り展開するような予め生成されたタイヤのポリゴンに基づき表示される。
図3(D)は握り拳の斜視図である。
本実施の形態とは直接関係無いが、球体で模擬しても外観との相違が少ない部品の一例として握り拳を示している。他にも、拳闘のグローブ等、様々な部品を球体で模擬できる。また、上記楕円体を有する部品としては、他に人の顔等、様々な部品が考えられる。また複数の楕円体を連結すれば、長尺の胴体や手足等も楕円体(即ち、球体)の集合として表現・処理できる。
【0027】
更に、上記ボディー以外の各部品は、部品間を連結する連結リンク(x/y/z軸)の回りに回転可能であり、これにより各部品の姿勢が変化し、ひいては自動車の形状が変化する。
図4は一例の連結動作物体(自動車)を説明する図で、図4(A)はある姿態の平面図、図4(B)は他の姿態の後面図である。
【0028】
一例のゲームでは、ゲーム開始前の画面に複数の固体(部品)が表示され、ユーザは任意の部品を選択してボディー等に連結する。なお、タイヤやフレームの数を増し、装甲車のような車を構成しても良い。
図4(A)において、ユーザは、例えば、ボディーAにフレームB,Cを連結し、更にフレームB,CにタイヤD,E及びF,Gを連結して、1台の自動車を組み立てる。また同様にして、対戦相手は、不図示の部品H〜Nを使用してもう1台の自動車を組み立てる。
【0029】
係る連結動作物体を構成後、ユーザが操作ボタンを押すと、これが各連結リンク(不図示)における角速度(単位時間当たりの回転角)R,0,−Rの情報に変換され、物体が運動する。Rはリンクを被連結先固体の方向に見て反時計方向CCWの回転、0は回転無し、−Rは時計方向CWの回転を表す。
ユーザが前進を指令すると、各連結リンクに図示のようなトルク(角速度に対応)が生成され、物体は前進する。また後退を指令すると、図示の−R→R,R→−Rとなり、物体は後退する。また右回転を指令すると、図示の−R→Rとなり、物体は右回転する。また左回転を指令すると、図示のR→−Rとなり、物体は左回転する。また右旋回を指令すると、図示の−R→0となり、物体は右旋回する。また左旋回を指令すると、図示のR→0となり、物体は左旋回する。
【0030】
図4(B)において、例えばボディーAとフレームCとの間の連結リンクにトルク(単位時間当たりの回転角に相当)Rを加えると、自動車は図示のような姿態となることが容易に理解できる。ゲーム上では、対戦相手の進行を妨害したり、地面の障害物を跨ぐ行為である。これにより、車体はねじれ、自動車は変形する。
【0031】
図5は実施の形態による連結動作物体のデータ構造を説明する図である。
ここには上記図4(A)の自動車に対応したデータ構造を示す。
ゲームの前置処理(不図示)は、上記ユーザの連結操作に基づき、又は完成された自動車の部品の接続状態を、ボディー(祖)Aから開始し、フレーム(親)B、タイヤ(子)D,Eの如く、世代順にトレースすることにより、所定の連結情報を生成する。この連結情報には2種類有り、自己が他の部品に連結している積極的連結情報と、自己に他の部品が連結されている被連結情報とがある。
【0032】
積極的連結情報は、各部品が有する部品変数行列[U]の中に具現される。但し、ボディーAには積極的連結情報が無いので、ユニバーサル座標原点Oに連結される。即ち、ユニバーサル座標原点Oからの位置(10,10,0)と、該ユニバーサル座標における回転(θ=0°に相当)の情報を備える。但し、地面の座標をZ=−0.5としている。フレームBはボディーAのローカル座標原点oからの位置(0,1,0)と、その連結軸回りの回転(θy =0°に相当)の情報を備える。タイヤDはフレームBのローカル座標原点oからの位置(−1,0,0)と、その連結軸回りの回転(θx =0°に相当)の情報を備え、タイヤEは同フレームBのローカル座標原点oからの位置(1,0,0)と、その連結軸回りの回転(θx =0°に相当)の情報を備える。他の部品C,F,Gについても同様である。このように、各部品B〜Gの位置及び姿勢は、ボディーA又は各連結先部品からの相対位置と連結軸回りの回転とで規定されており、連結動作物体の取扱が容易となる。また、この例の各積極的連結情報には、各部品を模擬する球体の半径r=0.5であることが含まれている。
【0033】
一方、ボディーAの被連結情報は最大6個あり、夫々はポインタ方式によりネスティングされる。但し、プログラム処理上は、この被連結情報を子の世代から親の世代を見た連結情報(木構造記述データ)として取扱い、矢印の向きを図示の如く表す。
ボディーAからフレームBに向かうチャイルド(child) はフレームBがボディーAの最初の子であることを表す。フレームBからフレームCに向かうネクスト(next)はフレームCがボディーAの2番目の子であることを表す。またフレームCのnext=Nullにより、ボディーAの子は合計2人である。フレームBとタイヤD,Eの関係も同様である。ここで、タイヤDから子に向かうchild =NullはタイヤDに子が居ないことを表す。なお、ボディーA以外の各部品はリンクの一つを積極的連結情報に使用した結果、被連結情報は最大5個となる。
【0034】
係るデータ構造では、各部品に関する連結情報の構造(部品変数行列及び木構造記述データ)はどの部品に着目しても同一である。このため、自動車の動きや変形の処理は、後述の共通の演算処理を再帰的に使用して、ボディーAから開始し、かつトップダウン方式によるフィードバック無しで、高速に行える。以下、これを説明する。
【0035】
図6は実施の形態による物体のアニメーション生成処理のフローチャートである。なお、以下の説明では、記号[]は行列(マトリクス)を表す。
ゲームの進行に伴う各描画時刻に、この処理に入力する。このアニメーション生成処理は、部品の形状を変更せずに、その連結情報に従って各部品の姿勢(回転)を変更し、結果として自動車全体を動かし、変形する処理である。
【0036】
ステップS1では祖,親,子等の世代の深さを表すカウンタiを0(祖)に初期化する。ステップS2では、再帰的演算を実現するために、ステップS3で使用する状態変数行列[S(i-1) ]をスタック(不図示)にプッシュ(push) する。添字の(i−1)はiよりも1世代前を指し、最初は(0−1)でユニバーサル座標の状態変数行列を指す。状態変数行列[S(0-1) ]は、同次座標の3次元1次変換行列からなり、以下に示す単位行列となっている。
【0037】
【数1】
【0038】
ステップS3では1世代前の状態変数行列[S(i-1) ]に現代の部品変数行列[U(i) ]を左側から掛け合わせ、現代の状態変数行列[S(i) ]を求める。部品変数行列[U(i) ]は同次座標の3次元1次変換行列からなり、各部品が個々に備える。ステップS4では求めた状態変数行列[S(i) ]の内容に従って部品(最初は祖A)を画面に表示する。表示の際には、各部品が別途に備える形状属性情報が使用される。ステップS5では子の有無を調べるためにカウンタiに+1する。ステップS6ではchild =Nullか否かを判別する。child ≠Nullの場合は、子が居るので、ステップS2に戻り、引き続き子の処理を行う。こうして、祖→親→子→孫の順にchild ≠Nullを直系でたどり、かつステップS3の演算を再帰的に使用して、祖→親→子→孫等の1系統を画面に表示する。
【0039】
また、上記ステップS6の判別でchild =Nullの場合は、直系子孫の終わりである。処理はステップS7に進み、カウンタiに−1する。即ち、兄弟の有無を調べるために1世代前に逆上る。ステップS8では、次のステップS3の演算を現在の世代iに合わせるために、その更に1世代前の状態変数行列[S(i-1) ]をスタックよりポップする。即ち、兄弟の親の状態変数行列[S(i-1) ]をポップする。ステップS9ではi=0か否かを判別する。
【0040】
i=0の場合は、判定が祖の世代まで逆上ったことを示し、祖に兄弟は居ないので、処理を抜ける。なお、この時点ではユニバーサル座標の状態変数行列[S(0-1) ]がポップされており、よってこの変形処理は初期化せずに何度も使用できる。またi≠0の場合は、ステップS10でnext=Nullか否かを判別する。next=Nullの場合は、その世代に兄弟が居ないので、ステップS7に進み、更に1世代前に逆上る。またnext≠Nullの場合は、その世代に兄弟が居るので、ステップS2に戻る。以下、同様にして進み、こうして上記木構造記述データに基づく全部品の生成・表示が能率良く処理される。
【0041】
図7は実施の形態による対戦ゲームの画面を説明する図である。
ユニバーサル座標のXY平面(Z=−0.5)に対戦用のフロア(地面)が設けられている。従って、フロアに接触している部品(球体)の中心のZ座標=0と簡単化される。ゲームの初期状態では、自動車10は画面手前側のスタートラインに位置し、対戦相手の自動車20は画面奥側のスタートラインに位置する。ゲーム開始により、走行を開始し、相手側のスタートラインに先に到達した方が勝者である。
【0042】
以下に、初期状態における自動車10の描画手順につき具体的に説明する。
ボディーAの状態変数行列[S1 ]を次式で求める。
【0043】
【数2】
【0044】
求めた状態変数行列[S1 ]は、ボディーAの状態(姿態)を表しており、ボディーAの中心はユニバーサル座標原点Oからの位置(10,10,0)にあり、かつボディーAのユニバーサル座標における回転角(姿勢)θA =0°である。これに基づき、ボディーAの画像を生成し、画面に表示する。ボディーAの画像は、そのローカル座標原点oを基準として、球体の形状属性情報、x2 +y2 +z2 =r2 (但し、r=0.5)を満足するようなポリゴン等で表示される。次にフレームBの状態変数行列[S2 ]を次式で求める。
【0045】
【数3】
【0046】
[S2 ]によれば、フレームBの中心はユニバーサル座標原点Oからの位置(10,11,0)にあり、かつフレームBのユニバーサル座標における回転角θB =0°である。ボディーAの状態変数行列[S1 ]がユニバーサル座標で表される結果、これに部品変数行列[Ui ]を順次掛け合わせて生成されるフレームB以降の各状態変数行列[Si ]もユニバーサル座標で表される。これに基づき、フレームBの画像を生成し、画面に表示する。フレームBの画像は、そのローカル座標原点oを基準として、楕円体の形状属性情報、x2 /a2 +y2 /a2 +z2 /b2 =1(但し、0<a<b,短軸2a<1,長軸2b=1)を満足するようなポリゴンで表示される。次にタイヤDの状態変数行列[S3 ]を次式で求める。
【0047】
【数4】
【0048】
[S3 ]によれば、タイヤDの中心はユニバーサル座標原点Oからの位置(9,11,0)にあり、かつタイヤDのユニバーサル座標における回転角θD =0°である。これに基づき、タイヤDの画像を生成し、画面に表示する。タイヤDの画像は、そのローカル座標原点oを基準として、タイヤ形状を生成するポリゴン等により表示される。例えば予めタイヤの骨格を成す3次元ワイヤフレーム情報を生成しておき、必要ならこれに回転処理を行い、更に、隠線消去やポリゴン処理を施す事で、タイヤDをどの角度(姿勢)にでも表現できる。次に、タイヤDのchild =Nullにより、タイヤDのnextのタイヤEの状態変数行列[S4 ]を次式で求める。
【0049】
【数5】
【0050】
[S4 ]によれば、タイヤEの中心はユニバーサル座標原点Oからの位置(11,11,0)にあり、かつタイヤEのユニバーサル座標における回転角θE =0である。これに基づき、タイヤEの画像を生成し、画面に表示する。以下同様である。
そして、次回にこのアニメーション生成処理に入力する時は、ゲーム機の操作により、対応する部品A〜Dの部品変数行列[UA ]〜[UG ]の内容が変更(更新)されている。例えばタイヤにトルク(角速度に相当)を加えた場合は、そのタイヤの回転行列が更新されると共に、地面との摩擦による反作用を受けて車体が回転及び又は平行移動した分だけ、ボディーAの回転行列及び又は位置行列が更新される。従って、次の描画タイミングにおける自動車10の位置は前の位置より移動している。こうして、運動及び変形する自動車のアニメーション生成画像が画面にリアルタイムに表示される。
【0051】
図8は実施の形態によるの当たり判定処理のフローチャートである。
画面の各描画時刻(画像の更新時刻)にこの処理に入力する。ステップS21では、任意の部品i,j(B≦i≦G,I≦j≦N)につき、2つの部品の中心間の距離|Ci Cj |≦2rを満たすものを探査する。ステップS22では上記当たり判定条件を満たすものが存在するか否かを判別する。存在しない場合はステップS23で当たりフラグFをリセットし、処理を抜ける。また存在する場合はステップS24で当たりフラグFをセットし、処理を抜ける。
【0052】
なお、ガードレール等の他の物体との当たり判定を行う場合は、上記ステップS21の処理は、任意の部品i(B≦i≦G)とガードレールの面(例えばX=k)につき、距離|CiXk|≦rを満たすものを探査する。
上記何れにしても、当たりフラグF=1の場合は、不図示の外部処理により、物体(自動車)に適当なリバウンド作用や回転の作用等が加えられる。
【0053】
以上の処理を図7の3次元空間につき具体的に説明する。
球体の中心座標をC(CX ,CY ,CZ )で表し、フロア(地面)をZ=−0.5のXY平面とすると、半径r=0.5の球体の地面との衝突判定式はCZ ≦0.0で簡単に行える。
また、球体Eと球体Lとの衝突判定式は、夫々の中心点をE(EX ,EY ,EZ )、L(LX ,LY ,LZ )としたときに、(EX −LX )2 +(EY −LY )2 +(EZ −LZ )2 ≦1.0となる。この衝突判定は、各部品をリアルな形状の凸多面体や凹多面体として取り扱った場合の衝突判定と比べると、非常に単純なものとなる。
【0054】
また上記の場合に、もし半径Er ,Lr が不同の球体で衝突判定する場合は、衝突判定式の右辺は(Er +Lr )2 となる。これに対して上記各球体の半径r=0.5に統一した場合は、衝突判定式の右辺を計算しない分だけ処理効率が良い。
なお、上記実施の形態ではゲ−ム機への適用例を中心に説明したがこれに限らない。本発明はあらゆるCGアニメーション画像における物体の当たり判定及び動きや変形の処理に適用できる。
【0055】
また、上記実施の形態ではバラバラの部品を連結(組立)して構成される一例の連結動作物体を示したがこれに限らない。予め完成している物体でも、可動部が存在し、かつその部分の機能、動き、形態等より該部分が部品と認識できる様な場合は、本発明の連結動作物体に含まれる。
また、上記実施の形態ではボディーA以外の各球体の中心oは連結先固体(ボディー,フレーム等)のローカル座標原点oからの位置(x,y,z)と連結軸回りの回転(姿勢)とで特定されるとしたが、これに限らない。例えば、各球体の中心oは連結先固体(ボディー等)のローカル座標原点oからの位置(x,y,z)と自己のローカル座標原点oの回りの回転(姿勢)とで特定されても良い。こうすれば、ボディーA以外の各球体は、ボディーAと同様の回転の自由度を備えることになり、連結軸(例えばx軸)の回りに回転するのみならず、自己のローカル座標原点oのy軸,z軸の回りにも回転可能となる。これにより、例えば各タイヤは連結先フレームの向き(姿勢)とは独立に自己の向きを変えられ、よりリアルな自動車に近づく。
【0056】
また、上記本発明に好適なる実施の形態を述べたが、本発明思想を逸脱しない範囲内で、各部の構成や処理、及びこれらの組合せの様々な変更が行えることは言うまでも無い。
【0057】
【発明の効果】
以上述べた如く本発明によれば、各部品を同程度の大きさの球体で模擬する簡単な構成及び処理で、複雑(リアル)な形態を有する物体の動き、変形並びに当たり判定等のアニメーション処理を高速に行え、CGアニメーション技術の発展に寄与する所が極めて大きい。
【図面の簡単な説明】
【図1】図1は本発明の原理を説明する図である。
【図2】図2は実施の形態によるゲーム機の構成を示す図である。
【図3】図3は実施の形態による連結動作固体を説明する図である。
【図4】図4は一例の連結動作物体を説明する図である。
【図5】図5は実施の形態による連結動作物体のデータ構造を説明する図である。
【図6】図6は実施の形態による物体のアニメーション生成処理のフローチャートである。
【図7】図7は実施の形態による対戦ゲームの画面を説明する図である。
【図8】図8は実施の形態によるの当たり判定処理のフローチャートである。
【符号の説明】
1 ゲーム機本体
2 コンソール部
3 表示装置
4 コンパクトディスク
5 サーバ
6 他のゲーム機
11 CPU
12 主メモリ
13 表示制御部
14 インタフェース部
15 CD駆動部
16 通信制御部
17 共通バス
100 ネットワーク
Claims (3)
- 複数の仮想の部品が連結され、かつその全体がCGアニメーションにより運動し及び又は変形する連結動作物体の処理装置において、
中心と半径により特定される複数の球体を、各中心上に設定した3次元直交座標軸を介して該軸の周りに回転可能に連結し、全体としてのキャラクタの構造を構成する連結手段と、
外部入力の操作情報に従って対応する連結部に回転トルクを与え、キャラクタの全体を運動及び又は変形させる操作手段と、
前記球体の中心と、該球体に加えられた回転トルクに従う回転の情報とに基づき各球体を該球体に1対1の割合で内接し乃至外接するような各部品に固有の外形形状で表示する表示手段とを備えることを特徴とする連結動作物体の処理装置。 - 前記球体の中心と半径の情報に基づき他の物体又はその部品との間の当たり判定を行う当たり判定手段を備えることを特徴とする請求項1記載の連結動作物体の処理装置。
- 各球体の大きさは同一であることを特徴とする請求項1又は2記載の連結動作物体の処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP20756696A JP3753802B2 (ja) | 1996-07-19 | 1996-07-19 | 連結動作物体の処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP20756696A JP3753802B2 (ja) | 1996-07-19 | 1996-07-19 | 連結動作物体の処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH1040410A JPH1040410A (ja) | 1998-02-13 |
JP3753802B2 true JP3753802B2 (ja) | 2006-03-08 |
Family
ID=16541878
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP20756696A Expired - Fee Related JP3753802B2 (ja) | 1996-07-19 | 1996-07-19 | 連結動作物体の処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3753802B2 (ja) |
-
1996
- 1996-07-19 JP JP20756696A patent/JP3753802B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH1040410A (ja) | 1998-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0802508B1 (en) | Input device for image formation method and its apparatus | |
US7084869B2 (en) | Methods and apparatus for detecting and correcting penetration between objects | |
TW461821B (en) | Structure generation device, method, and recording medium of image process device for games | |
JP3747449B2 (ja) | ゲームの処理方法、ゲーム装置、画像処理装置及び画像処理方法並びに記録媒体 | |
US7922584B2 (en) | Image generation method and information storage medium with program for video game in which operation of the controller beyond a predetermined angle causes a character to attack | |
EP0980037A2 (en) | Haptic device | |
JP4794343B2 (ja) | 画像生成システム、プログラム及び情報記憶媒体 | |
US7999812B2 (en) | Locality based morphing between less and more deformed models in a computer graphics system | |
WO1996006410A1 (fr) | Simulateur tridimentionnel et procede de synthese des images | |
JP3753802B2 (ja) | 連結動作物体の処理装置 | |
JP2004325828A (ja) | シミュレータ、プログラム及び情報記憶媒体 | |
JP3485987B2 (ja) | 3次元ゲーム装置及びヒットチェック方法 | |
EP1095679B1 (en) | Entertainment unit, recording medium and method for setting its parameters | |
JP2019193705A (ja) | ゲームプログラム及びゲーム装置 | |
JPH08276070A (ja) | ゲーム装置 | |
JPH10113465A (ja) | ゲーム装置、画面生成方法及び情報記憶媒体 | |
JP3783735B2 (ja) | 画像処理装置及びこれを備えたゲーム装置 | |
JP3844405B2 (ja) | ゲーム装置及び情報記憶媒体 | |
JP6660321B2 (ja) | シミュレーションシステム及びプログラム | |
WO2003031005A2 (en) | Methods and apparatus for detecting and correcting penetration between objects | |
Marques et al. | Fc portugal 3d simulation team: Architecture, low-level skills and team behaviour optimized for the new robocup 3d simulator | |
JP3057053B2 (ja) | 画像作成装置、画像作成方法、画像作成プログラムが記録された可読記録媒体及びビデオゲーム装置 | |
JP2002092653A (ja) | ゲームシステム及び情報記憶媒体 | |
JP3638669B2 (ja) | 画像合成方法及びゲーム装置 | |
JP4535607B2 (ja) | ゲームシステム及び情報記憶媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050628 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050824 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20051213 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20051214 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |