(57)【特許請求の範囲】
【請求項１】
中央演算処理装置、メモリーおよび出力表示装置からなり、前記メモリーはバックバッファー、キャッシュバッファー、フロントバッファーからなるコンピュータ装置用フルモーション動画表示方法において、
前記表示装置への出力用の水平、垂直、奥行きの属性からそれぞれなる複数のスプライトオブジェクトで構成されたスプライトリストを前記動画の各シーン毎に生成するステップと、
前記奥行き属性に基づいて各スプライトリストの前記スプライトオブジェクトを配列するステップと、
前回のシーンの前記スプライトオブジェクトと現在のシーンのスプライトオブジェクトを比較してどのスプライトオブジェクトが変化したのかを判断するステップと、
前回のフレームから現在のフレームまでで変化していないスプライトオブジェクトを全て含むよう前記キャッシュバッファーを更新するステップと、
前記キャッシュバッファーに記憶されている前記スプライトオブジェクトを前記バックバッファーへコピーするステップと、
現在のスプライトリストで判断されたスプライトオブジェクトが前記キャッシュバッファーにない時に前記奥行きの順番で前記バックバッファーへスプライトオブジェクトを追加するステップと、
前記バックバッファーと前記フロントバッファーを切り換えて現在のフレーム用のスプライトオブジェクトを前記出力表示装置に表示するステップとからなることを特徴とするフルモーション動画表示方法。
【請求項２】
前記キャッシュバッファー更新ステップは、
スプライトオブジェクトの変化が無く、あるスプライトオブジェクトが前記キャッシュバッファーにない場合に前記現在のシーンから前記キャッシュバッファーへ当該スプライトオブジェクトを加えるステップと、
前記キャッシュバッファーに記憶されているスプライトオブジェクトが前記現在のフレームで変化した場合に、変化したスプライトオブジェクトまで前記現在のスプライトリストの奥行きの順に複数のスプライトオブジェクトを前記キャッシュバッファーに書き直して前記キャッシュバッファーからスプライトオブジェクトを取り除くステップをさらに含むことを特徴とする請求項１記載のフルモーション動画表示方法。
【請求項３】
前記バックバッファーとフロントバッファーは映像ランダムアクセスメモリー（ＶＲＡＭ）で実現しており、また、前記キャッシュバッファーはダイナミックランダムアクセスメモリー（ＤＲＡＭ）で実現していることを特徴とする請求項１記載のフルモーション動画表示方法。
【請求項４】
前記バックバッファー、前記フロントバッファー、前記キャッシュバッファーは映像ランダムアクセスメモリー（ＶＲＡＭ）で実現していることを特徴とする請求項１記載のフルモーション動画表示方法。
【請求項５】
フルモーション動画の各フレームを１秒間に３０コマの速度で表示することを特徴とする請求項１記載のフルモーション動画表示方法。
【請求項６】
前記スプライトオブジェクトはＮＴＳＣ映像方式で表示されることを特徴とする請求項１記載のフルモーション動画表示方法。
【請求項７】
キャッシュバッファーと、
表示の前に動画シーンを記憶するバックバッファーと、
出力表示装置に接続されており、当該出力表示装置に表示中の動画シーンを記憶するフロントバッファーと、
前記動画の各シーンのためのスプライトリストを生成するものであり、複数のスプライトオブジェクトから構成されたスプライトリスト生成手段であって、当該スプライトオブジェクトは前記出力表示装置へ表示するための水平、垂直、奥行き属性からそれぞれ構成されており、前記奥行き属性に基づいて各スプライトリストの前記スプライトオブジェクトを配列するスプライトリスト生成手段と、
前回のシーンの前記スプライトオブジェクトと現在のシーンのスプライトオブジェクトを比較してどのスプライトオブジェクトが変化したのかを判断する比較手段と、
前記比較手段と前記キャッシュバッファーに接続されており、前回のシーンから現在のシーンまでで変化していないスプライトオブジェクトを全て記憶するキャッシュバッファー更新手段と、
前記キャッシュバッファーに記憶されている前記スプライトオブジェクトを前記バックバッファーにコピーし、また、現在のスプライトリストで判別されたスプライトオブジェクトが前記キャッシュバッファーにない時に前記奥行きの順番に前記バックバッファーにスプライトオブジェクトを追加するコピー手段と、
前記フロントおよびバックバッファーに接続されて前記バックバッファーと前記フロントバッファーを切り換えて現在のフレーム用のスプライトオブジェクトを前記出力表示装置に表示する切り換え手段とから構成されていることを特徴とするフルモーション動画表示装置。
【請求項８】
前記キャッシュバッファー更新手段は、
スプライトオブジェクトの変化が無く、あるスプライトオブジェクトが前記キャッシュバッファーにない場合に前記現在のシーンから前記キャッシュバッファーへ当該スプライトオブジェクトを加える手段と、
前記キャッシュバッファーに記憶されているスプライトオブジェクトが前記現在のフレームで変化した場合に、変化したスプライトオブジェクトまで前記現在のスプライトリストの奥行きの順に複数のスプライトオブジェクトを前記キャッシュバッファーに書き直して前記キャッシュバッファーからスプライトオブジェクトを取り除く除去手段を備えていることを特徴とする請求項７記載のフルモーション動画表示装置。
【請求項９】
前記バックバッファーとフロントバッファーは映像ランダムアクセスメモリー（ＶＲＡＭ）で構成されており、また、前記キャッシュバッファーはダイナミックランダムアクセスメモリー（ＤＲＡＭ）で構成されていることを特徴とする請求項７記載のフルモーション動画表示装置。
【請求項１０】
前記バックバッファー、前記フロントバッファー、前記キャッシュバッファーは映像ランダムアクセスメモリー（ＶＲＡＭ）で構成されていることを特徴とする請求項７記載のフルモーション動画表示装置。
【請求項１１】
前記フルモーション動画の各フレームは１秒間に３０コマの速度で表示することを特徴とする請求項７記載のフルモーション動画表示装置。
【請求項１２】
前記スプライトオブジェクトはＮＴＳＣ映像方式で表示されることを特徴とする請求項７記載のフルモーション動画表示装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本願発明はコンピュータ装置でのデータ処理に関するものであり、特にフルモーション動画表示装置及び方法に関するものである。
【０００２】
【従来の技術】
図形出力表示装置への表示用画素データを記録するフレームバッファーと呼ばれているメモリー領域が多くのコンピュータ装置に用いられている。フレームバッファーに記録されている画素データを表示するため、表示制御装置はフレームバッファーに記録されている画素データを行単位で読み出し、デジタル・アナログ変換器（ＤＡＣ）で画素データをアナログ映像信号に変換し、このアナログ映像信号を出力表示装置へ送信する。通常、この行単位走査は表示スクリーンの上側左隅に相当するフレームバッファーの領域から開始し、下側右隅まで継続的に走査する。
【０００３】
一般に、フレームバッファーは複数の映像ランダムアクセスメモリー（ＶＲＡＭ）デバイスで構成されている。アクセスポートが１つしかない従来のダイナミックランダムアクセスメモリー（ＤＲＡＭ）デバイスとは異なりＶＲＡＭには２つのアクセスポートが設けられている。これら２つのアクセスポートのうち第１のアクセスポートはランダムアクセスポートと呼ばれ、ＶＲＡＭに対して従来のランダムアクセスが行えるようになっているためＶＲＡＭに接続されている中央演算処理装置（ＣＰＵ）はＶＲＡＭ内のどの記憶領域に対しても読み出しまたは書き込み処理を行うことが可能である。一方、第２のアクセスポートはシリアルアクセスポートと呼ばれ、ＶＲＡＭに対して同時シリアルアクセスを行えるようになっているためこのシリアルポートに接続されているデバイスはＶＲＡＭとシフトデータをやりとりできる。表示回路はこのシリアルポートにアクセスして出力表示装置を制御している回路へ画素データを供給する。このような回路構成であれば、ＣＰＵは画素データを表示回路から出力表示装置へ絶えず供給しながらＶＲＡＭへ書き込みを行うことができる。
【０００４】
フレームバッファーに基づいたこの種の表示装置と表示スクリーンとを接続するコンピュータ装置の内部で動画シーケンスを作成する場合がある。このような装置で動画シーケンスを作成する場合、画像ソフトウェアで作成される一連のフレームの各フレームの画像はわずかながら変化する。動きが滑らかになるよう、１秒間に約１５ー３０個の割合で新規フレームを表示する。第１フレームの画像が次のフレームの画像に変化すると、連続して動作しているような効果が得られる。従って、フレームバッファーを連続的に更新すればフルモーション動画シーケンスが作り出させる。
【０００５】
しかしながら、受取ると同時に出力表示装置へ画素データを転送するといったフレームバッファーの能力がある種の問題の原因になっている。フレームバッファーメモリーの画像を表示制御装置で走査している最中に動画ソフトウェアがフレームバッファーメモリーに書き込みを行うと、複数の動画フレームから図形イメージが同時に出力表示装置に表示されることがある。１以上の動画フレームから画素データが誤って表示される現象を「フレーム崩れ」(frame tear)と呼んでいる。フレームからフレームへの移り変わりによって表示装置に表示中の図形画像に歪みが発生するとこのフレーム崩れ現象は特に目立つ。
【０００６】
このフレーム崩れ現象を防ぐため、二重バッファー処理表示装置を用いたコンピュータ装置もある。この二重バッファー処理表示装置では、フレームバッファーに２つのメモリー領域を設けて各メモリー領域にＤＡＣ回路へ送る画素データを格納する。第１のメモリー領域から出力表示装置へ第１動画フレームが出力されるため、表示スクリーンへの出力のため走査を行っている期間は第１メモリー領域は更新されない。第１メモリー領域が表示スクリーンに表示されている間は、動画ソフトウェアは第２メモリー領域に次の動画フレームを作成する。動画ソフトウェアが次の動画フレームを作成し終わるとＤＡＣが切り換えを行うためメモリーの第２領域が表示フレームになり、一方、メモリーの第１領域は「作業」領域になる。動画ソフトウェアは、メモリーの作業領域に次の動画フレームを作成する。このように、表示スクリーンに画素データを出力中のメモリー領域へ画素データが書き込まれることがないため二重バッファー処理表示装置ではフレームティア崩れ現象は発生しない。
【０００７】
二重バッファー処理表示装置を用いてコンピュータ装置が動画シーケンスを作成する場合、ＣＰＵは作業領域に動画シーケンスの各新規動画フレーム毎にシーンを生成する。動画シーンは背景シーンと動画オブジェクトで構成してもよい。背景シーン上に動画オブジェクトを表示中であれば、動画オブジェクトを表示する前にＣＰＵは背景シーン全体を生成しなくてはならない。高品質リアルタイム動画を行うには、動画フレーム用の背景と動画オブジェクトを１秒間に約１５ー３０回表示する必要がある。
【０００８】
【発明が解決しようとする課題】
ＮＴＳＣ(National Television Standards Committee) 式解像度フレームバッファーでフルモーション動画を行うには、ＮＴＳＣ式解像度フレームバッファーの大きさに基づいてフレーム毎に約３４５，６００画素を更新しなくてはならない。動画の各フレームは単一のスクリーンであり、このスクリーンは３４５，６００（７２０ｘ４８０）個の画素から出来ている。このように、１秒間に３０コマの速度でフルモーション動画を表示するには、１秒間に１０．３６８ｘ１０6（７２０ｘ４８０ｘ３０）個の画素をフレームバッファーにコピーしなくてはならない。通常の縮小命令セットコンピュータ（ＲＩＳＣ）ＣＰＵでは１０ＭＩＰＳ（毎秒１００万個）の命令を実行する。このようなＲＩＳＣ  ＣＰＵの場合、ＮＴＳＣ式解像度フルモーション動画を表示するには各画素（１０ＭＩＰＳ／１０ｍ画素）を描くのに約１個の命令を用いることができる。また、１画素につき何個の命令を用いることができるのかといった演算には積層画像データは考慮されていない。この画像データは、半透明の画像を複数生成して各フレームの最終画像を形成する場合に書き込みしなくてはならない場合がある。この種の動画は専用ハードウェアがないと実現不可能である。従って、専用コンピュータハードウェアを用いずにＮＴＳＣ式解像度フルモーション動画が生成できるのが望ましい。
【０００９】
本願発明は、このような要望に基づきなされたものであり、その目的は専用ハードウェアを用いずにＮＴＳＣ式解像度フルモーション動画を１秒間に３０コマ作成できる動画表示方法および装置を提供することにある。
【００１０】
【課題を解決するための手段】
上記目的を達成するため、本願発明の動画表示方法は、中央演算処理装置（ＣＰＵ）、メモリーおよび出力表示装置からなり、前記メモリーはバックバッファー、キャッシュバッファー、フロントバッファーから構成されているコンピュータ装置用動画表示方法であって、当該動画表示方法は、
前記表示装置出力用の水平、垂直、奥行きの属性からそれぞれなる複数のスプライトオブジェクトで構成されたスプライトリストを前記動画の各シーン毎に生成するステップと、
前記奥行き属性に基づいて各スプライトリストの前記スプライトオブジェクトを配列するステップと、
前回のシーンの前記スプライトオブジェクトと現在のシーンのスプライトオブジェクトを比較してどのスプライトオブジェクトが変化したのかを判断するステップと、
前回のフレームから現在のフレームまでで変化していないスプライトオブジェクトを全て含むよう前記キャッシュバッファーを更新するステップと、
前記キャッシュバッファーに記憶されている前記スプライトオブジェクトを前記バックバッファーへコピーするステップと、
現在のスプライトリストで判別されたスプライトオブジェクトが前記キャッシュバッファーにない時に前記奥行きの順番で前記バックバッファーへスプライトオブジェクトを追加するステップと、
前記バックバッファーと前記フロントバッファーを切り換えて現在のフレーム用のスプライトオブジェクトを前記出力表示装置に表示するステップとからなることを特徴とする。
【００１１】
さらに、出力表示装置にフルモーション動画を表示する本願発明の装置は、
キャッシュバッファーと、
表示の前に動画シーンを記憶するバックバッファーと、
前記出力表示装置に接続されており、前記出力表示装置に表示中の動画シーンを記憶するフロントバッファーと、
前記動画の各シーン用のスプライトリストを生成するものであり、複数のスプライトオブジェクトから構成されたスプライトリスト生成手段であって、当該スプライトオブジェクトはそれぞれ前記出力表示装置へ表示するための水平、垂直、奥行き属性からなっており、前記奥行き属性に基づいて各スプライトリストの前記スプライトオブジェクトを配列するスプライトリスト生成手段と、
前回のシーンの前記スプライトオブジェクトと現在のシーンのスプライトオブジェクトを比較してどのスプライトオブジェクトが変化したのかを判断する手段と、
前記比較手段と前記キャッシュバッファーに接続されており、前回のシーンから現在のシーンまでで変化していないスプライトオブジェクトを全て記憶するキャッシュバッファー更新手段と、
前記キャッシュバッファーに記憶されている前記スプライトオブジェクトを前記バックバッファーにコピーし、また、現在のスプライトリストで判別されたスプライトオブジェクトが前記キャッシュバッファーにない時に前記奥行きの順番に前記バックバッファーにスプライトオブジェクトを追加するコピー手段と、
前記フロントおよびバックバッファーに接続されて前記バックバッファーと前記フロントバッファーを切り換えて現在のフレーム用のスプライトオブジェクトを前記出力表示装置に表示する切り換え手段とから構成されていることを特徴とする。
【００１２】
【作用および効果】
本願発明の動画表示装置および方法は上記のような構成をしており、専用出力表示ハードウェアを用いずにスプライトオブジェクトで１秒間に３０コマの速度でフルモーション動画映像を表示する。各スプライトオブジェクトは、出力表示装置上のある位置にスプライトオブジェクトを写像するための水平（Ｘ），垂直（Ｙ）、奥行き（Ｚ）の属性から構成されている。対応する動画フレームを定義する一連のスプライトオブジェクトが納められているスプライトリストを動画シーケンスのフレーム毎に生成する。動画を表示するため、スプライトリストのスプライトオブジェクトのＸ，Ｙ，Ｚ属性を変化させる。
【００１３】
フルモーション動画を実現するため、コンピュータ装置に内蔵されているメインメモリーは中央演算処理装置（ＣＰＵ）に接続されている。このコンピュータ装置には３つの物理的メモリー領域が設けられており、これらのメモリー領域にはフロントバッファー、バックバッファー、キャッシュバッファーの状態がそれぞれ任意的かつ動的に割り当てられている。フロントバッファー、バックバッファー、キャッシュバッファーは、対応する出力表示装置の解像度奥行きカラー能力にあった全く同じ大きさのラスタをそれぞれ備えている。バックバッファーとフロントバッファーは映像信号デジタル・アナログ変換器（ＤＡＣ）に接続されており、また、この映像信号ＤＡＣは出力表示装置に接続されている。フルモーション動画映像のフレームを表示するため、フロントバッファーあるいはバックバッファーのいずれかのバッファーを選択するようＣＰＵはＤＡＣをプログラムする。
【００１４】
キャッシュバッファーとバックバッファーを初期化するため、動画シーケンス用初期フレームをキャッシュバッファーで描き、このフレームをバックバッファーにコピーする。次ぎにフロントバッファーとバックバッファーを切り換えて第１フレームを表示する。第２フレームを生成するため、第１フレームのスプライトオブジェクトを第２フレームのスプライトオブジェクトと比較して移動したスプライトオブジェクトがどれであるかを判断させる。移動スプライトオブジェクトが発見されるまでに見つかった静止スプライトオブジェクトは全てキャッシュバッファーに書き込まれる。キャッシュリミットは、キャッシュバッファーに記憶されているスプライトオブジェクトを判別するよう設定されている。次にこのキャッシュバッファーをバックバッファーにコピーし、バックバッファーとフロントバッファーを切り換えて第２フレームを表示する。
【００１５】
続くフレームのそれぞれについて、現在のフレームのスプライトオブジェクトと前回のフレームのスプライトオブジェクトを比較してどのスプライトオブジェクトが移動したのかを判断する。変化したスプライトオブジェクトが検出され、また、キャッシュバッファーの内容が有効であれば、キャッシュバッファーをバックバッファーにコピーし、変化したスプライトオブジェクトをバックバッファーに書き込む。あるいは、変化したスプライトオブジェクトが検出され、キャッシュバッファーの内容が無効の場合は、キャッシュバッファーは書き直されてバックバッファーへコピーされる。変化したスプライトオブジェクトはバックバッファーに書き込まれ、フロントバッファーとバックバッファーが切り換えられる。
【００１６】
【実施例】
表記方法および用語
以下に述べる詳細な説明は、主としてコンピュータ装置におけるアルゴリズムおよび処理の記号表示で行っている。これらのアルゴリズムおよび表示はデータ処理に精通した人が用いる手段であり、当該技術分野に精通した他の者に作業内容を伝える上で最も効率的な手段である。
【００１７】
本願明細書においては、また一般に、アルゴリズムとは所望の結果を導くための一貫性のある一連の工程であると考えられている。これらの工程では物理量を物理的に操作する必要がある。必ずと言うわけではないが、これらの物理量は記憶、転送、結合、比較あるいは操作などを行うことが可能な電気または磁気信号の形をしているのが一般的である。共通した利用が行えるためこれらの信号をビット、値、要素、記号、文字、項、数字などと称するのが便利な場合もある。しかし、これらの用語あるいはその他類似の用語は全て適切な物理量に関連したもので、物理量に付与した便利なラベルにすぎないという点は念頭においておく必要がある。
【００１８】
さらに、実行される演算を加算または比較などといった言葉で言及する場合もあるが、これらは人間のオペレーターが頭の中で行う演算に関連したものである。しかし、本願発明の一部である当該明細書記載の演算ではこのようなオペレーターの能力は必要でなく、ほとんどの場合は不要である。すなわち、演算とは機械的な演算である。本願発明の演算を実行する装置としては汎用デジタルコンピュータやその他類似のデバイスが役に立つ。どのような場合でも、コンピュータを作動させる時の演算方法と、演算それ自体の方法は常に区別する。本願発明は、コンピュータを作動させて電気的物理信号等（例えば、機械的あるいは化学的信号）を処理して他の所望の物理的信号を生成する方法に関するものである。
【００１９】
本願発明はこれらの演算を実行する装置に関するものでもある。当該演算装置は必要な目的のための専用コンピュータとして構成したり、あるいは、格納されているコンピュータプログラムで選択的に起動させたりあるいは再構築したりする汎用コンピュータとして構成することも可能である。本質的には本願明細書に記載されているアルゴリズムは特定のコンピュータや他の装置に関連したものではない。特に、本願発明に開示されている教示内容に従って作成さいたプログラムを用いればとのような汎用コンピュータでも使用することができ、また、必要な工程を実行する専用装置を構成すればもっと便利になるかもしれない。これら様々な装置に必要な構成は、以下に述べる説明に示してある。本願発明の機能を実行可能な装置としては、ＦｉｒｓｔＰｅｒｓｏｎ社製の装置や他社のコンピュータ装置がある。
【００２０】
以下図面を参照しながら本願発明の実施例を詳細に説明する。
【００２１】
以下の説明では、本願発明が十分に理解できるよう説明のため特定の用語を使用している。当該技術分野の者には自明なことであるが、この用語は本願発明を実施には必要ではない。また、本願発明が不必要に不明確になるのを防ぐため周知な回路や装置はブロック図で示している。
【００２２】
本願発明の方法および装置ではフルモーション動画をリアルタイムに表示することが可能である。本願発明の好適な実施例では、フルモーション動画をカラーテレビジョン標準方式選定委員会（ＮＴＳＣ）映像方式で生成および表示する。本願発明の方法および装置は、赤、緑、青（ＲＧＢ）で作成した動画シーケンスや白黒映像方式にも適用できる。さらに、これらの方法と装置は高品位テレビ（ＨＤＴＶ）方式で生成した動画シーケンスにも適用することができる。ＮＴＳＣ映像方式に合った動画シーケンスは既存のテレビ方式に直接インターフェースすることが可能である。後でより詳細に説明するように、本願発明では専用出力表示ハードウェアを用いずに１秒間に３０コマの速度でＮＴＳＣ式解像度フルモーション動画映像を表示する。
【００２３】
本願発明では、フルモーション動画表示用のスプライトオブジェクトを作成する。ビデオゲームアプリケーションによっては、ハードウェアに基づく動画技術でスプライトを用いたものもある。ハードウェア動画技術で使用できるハードウェアスプライトの数には限りがあり、このため動画シーケンスの表示も限られてしまう。また、ハードウェアスプライトは一定のレジスタサイズに限られているため全てのスプライトが同じ数の画素で構成されることになる。本願発明では、スプライトオブジェクトは図形イメージとして定義されており、この図形イメージはメモリーに格納されておりフルモーション動画の作成に使用される。本願発明のスプライトオブジェクトは特定の出力表示装置の大きさに限定されることはなく、スプライトオブジェクトはそれぞれ別の画素解像度で構成することが可能である。例えば、画素で構成されたスクリーン全体と同じ大きさになるよう背景イメージを含むスプライトオブジェクトを構成してもよい。
【００２４】
スプライトオブジェクトは、出力表示装置上のある位置にスプライトオブジェクトを写像するための水平（Ｘ），垂直（Ｙ），奥行き（Ｚ）の属性をそれぞれ備えている。各スプライトオブジェクトのＸ、Ｙ属性はそれぞれ水平、垂直出力表示位置を定義する。Ｚ属性は特定のスプライトオブジェクトの積み重ね順序あるいは奥行きの深さを定義する。説明および取り決めのため、Ｚ属性値が大きなスプライトオブジェクトをＺ属性値が小さなスプライトオブジェクトの上に表示する。本願発明では、スプライトリストは動画シーケンスのフレーム毎に生成される。このスプライトリストには対応する動画フレームを定義する一連のスプライトオブジェクトが納められている。典型的な動画シーケンスを生成するには、背景イメージが含まれているスプライトオブジェクトを複数表示する。背景イメージを含んだスプライトオブジェクトの表示の他にキャラクターを決定するスプライトオブジェクトまたは動画シーケンス用ターゲットオブジェクトを表示する。動画フレームの前景にはキャラクタースプライトオブジェクトを表示するのが一般的である。動画を生成するにはスプライトオブジェクトのＸ，Ｙ，Ｚの属性を変化させる。こうすると、スプライトオブジェクトの位置が移動もしくは変化してフルモーション動画が生成される。Ｚ属性に基づくスプライトオブジェクトの順番を納めたスプライトリストの使用についてさらに詳細に説明する。
【００２５】
図１は本願発明の第１実施例のコンピュータ装置のブロック図である。フルモーション動画を実現するため、コンピュータ装置５０にはメインメモリー１００が設けられている。このメインメモリー１００はダイナミックランダムアクセスメモリー（ＤＲＡＭ）で構成するのが好ましい。メインメモリー１００を中央演算処理装置（ＣＰＵ）１０８に接続し、この中央演算処理装置１０８をさらにバス１１０に接続する。メインメモリー１００にはコンピュータ装置５０の一般的な処理のための記憶領域が設けられている。メインメモリー１００にはこの他に本願発明のフルモーション動画を生成するための記憶領域も設けられている。メインメモリー１００の一部は、キャッシュバッファー１０２、スプライトオブジェクト１０４、スプライトオブジェクト格納背景スプライト１０６で構成されている。キャッシュバッファー、スプライトオブジェクト１０４、背景スプライト１０６はメインメモリー１００の中のいずれの領域に常駐させてもよい。コンピュータ装置５０は３つの物理的なメモリー領域が設けられており、これらのメモリー領域にはフロントバッファー、バックバッファー、キャッシュバッファーの状態が任意的かつ動的に割り当てられている。フロントバッファー、バックバッファー、キャッシュバッファーには、対応する出力表示装置の解像度奥行きカラーの能力に合った全く同じ大きさのラスタがそれぞれに付与されている。バックバッファー１１２とフロントバッファー１１４は映像ランダムアクセスメモリー（ＶＲＡＭ）で実現する。バックバッファー１１２とフロントバッファー１１４は映像デジタル・アナログ変換器（ＤＡＣ）１１６に接続されている。この映像ＤＡＣ１１６は出力表示装置１１８に接続されている。
【００２６】
フロントバッファー１１４とバックバッファー１１２はコンピュータ装置５０のフレームバッファーとして作動する。フロントバッファー１１４とバックバッファー１１２には一連の走査線が格納されており、これらの走査線は出力表示装置１１８に表示するイメージを表している。映像ＤＡＣ１１６はフロントバッファー１１４またはバックバッファー１１２を１行づつ走査し、画素走査線をアナログ方式に変換し、ラスタ出力表示装置１１８を駆動して関連する走査線を表示する。この出力表示装置１１８は陰極線管（ＣＲＴ）または液晶ディスプレイ（ＬＣＤ）出力表示装置で構成してもよい。画素すなわち絵素は出力表示装置１１８に照射された単一の着色ドットであり、フレームバッファーでは任意の番号で表される。例えば、２４ビットの画素はそれぞれ８ビットの赤、緑、青の色で形成できる。１６ビットの画素の場合、５ビットの赤、６ビットの緑、５ビットの青色で形成してもよい。コンピュータ装置は画素の他に文字(alpha) も記憶する。文字とは固定小数点であり、この小数点は各画素の不透明度を表しており、関連する画素データと１対１に対応する独立物理メモリーに格納してもよい。あるいは、画素データを備えた物理フレームバッファー内の単語として文字値をまとめることもできる。画素格納する方式であればどんな方式でもフルモーション動画の生成で使用することができる。
【００２７】
フルモーション動画映像のフレームを表示するには、フロントバッファー１１４かバックバッファー１１２のいずれか１つを選択するようＣＰＵ１０８でＤＡＣ１１６をプログラムする。ＣＰＵ１０８はフロントバッファー１１４とバックバッファー１１２を交互に選択する。説明のため、画素データを供給するよう現在選択されているＶＲＡＭをフロントバッファーとし、画素データ選択をするよう選択されていないＶＲＡＭをバックバッファーとする。この取り決めに従い、フロントバッファーは出力表示装置１１８に表示されているフレーム毎にＶＲＡＭ１１４とＶＲＡＭ１１２で切り替わる。対応するＤＡＣと出力ラスタ表示装置を用いたＶＲＡＭの動作は当該技術分野では周知であるためこれ以上の説明は省略する。
【００２８】
図２は本願発明の第２実施例のコンピュータ装置のブロック図である。コンピュータ装置２００は、キャッシュバッファーの配列が相違する点を除けば図１のコンピュータ装置５０と同じ構成である。コンピュータ装置２００では、キャッシュバッファー１２５はＶＲＡＭで実現している。図２のキャッシュバッファー用ＶＲＡＭを用いてキャッシュバッファー１２５からバックバッファー１１２へのデータ転送を最適化する。キャッシュバッファー１２５からバックバッファーＶＲＡＭ１１２への最適コピー動作についてより詳細に説明する。
【００２９】
図３は本願発明のフルモーション動画表示方法を説明したフロー図である。フルモーション動画映像を表示するにはスプライトオブジェクト１０４と背景スプライト１０６をメインメモリー１００に格納する。このスプライトオブジェクト１０４と背景スプライト１０６はフルモーション動画生成用資源で作成する。特定の動画シーン用スプライトの複合リストを「スプライトリスト」と名付ける。本願発明のフルモーション動画方法では最後のキャッシュリミット、キャッシュリミットそれと書き直し索引変数を利用する。フルモーション動画の最初のシーン用の最後のキャッシュリミット変数を初期化するには、ステップ３００に示すように最後のキャッシュリミットをゼロに設定する。また、ステップ３０５に示すようにキャッシュリミット変数をゼロに設定する。ステップ３１０では、スプライトオブジェクトのＺ属性に基づいてスプライトリストを配列する。スプライトリストを配列するには、まずＺ属性が最も大きなスプライトオブジェクトをスプライトリストに配置する。Ｚ属性が最も大きいということはそのスプライトの奥行きが最も大きいことを表している。同様に、スプライトオブジェクトは全てリストに従って配列する。このリストはＺ属性値が最大のスプライトオブジェクトから始まりＺ属性値が最も小さなスプライトオブジェクトで終わっている。通常、背景スプライトからなるスプライトオブジェクトはＺ属性順スプライトリストの一番に上にくる。
【００３０】
スプライトリストの配列が済むと、ブロック３１５に示すように現在のシーンのスプライトオブジェクトと前回のシーンのスプライトオブジェクトを比較して変化したスプライトオブジェクトを判断する。最初のシーンの場合は、スプライトオブジェクトは全て変更無しの印が付与される。それ以降のシーンでは、前回のシーンの配列スプライトリストには「前回のスプライトリスト」という表題が付与され、次のシーンの配列スプライトリストには「現在のスプライトリスト」という表題が付与される。変化したスプライトを判断するには、現在のスプライトリストのＸ，Ｙ，Ｚの属性値と前回のスプライトリストのＸ，Ｙ，Ｚの属性値とを比較する。現在のスプライトリストのスプライトオブジェクトで前回のスプライトリストにないオブジェクトは新規なオブジェクトであって、変化したものと考えられる。スプライトオブジェクトが変化してない場合は、ステップ３２０に示すようにキャッシュリミットが増加する。ステップ３１５と３２０で形成したループで示すように、変化のないスプライトオブジェクトのそれぞれについてキャッシュリミットを増加する。スプライトオブジェクトが変化する場合は、ステップ３２５に示すようにこのオブジェクトのキャッシュリミットを前回のキャッシュリミットと比較する。もし、当該キャッシュリミットが前回のキャッシュリミットよりも小さい場合は、ステップ３４５に示すように書き直し索引変数をゼロに設定する。もし当該キャッシュリミットが前回のキャッシュリミットよりも大きい場合は、ステップ３３５と３５５に示すように書き直し索引変数を前回のキャッシュリミットと同じに設定する。また、当該キャッシュリミットが前回のキャッシュリミットと同じ場合は、書き直し変数をゼロに設定する。ステップ３６０に示すように、前回のキャッシュリミットは当該キャッシュリミットの値に設定する。
【００３１】
図４には、図３に示す本願発明のフルモーション動画表示方法のフロー図の続きが示されている。ステップ３６５に示すように書き直し索引変数とキャッシュリミット変数を比較する。書き直し索引変数がキャッシュリミット変数よりも小さい場合は、ステップ３７０においてそのスプライトオブジェクトをキャッシュバッファーにコピーする。スプライトオブジェクトをキャッシュバッファーにコピーすると、ステップ３７５で書き直し索引変数を増加する。ステップ３８０では、再度書き直し索引変数とキャッシュリミット変数を比較する。書き直し索引変数がキャッシュリミット変数よりも小さい場合は、スプライトオブジェクトをキャッシュバッファーにコピーして書き直し索引変数を増加する。書き直し索引変数がキャッシュリミット変数に等しくなるまでステップ３７０、３７５、３８０で構成したループを実行する。これがなされると、ステップ３８５ではキャッシュバッファーの内容はバックバッファーにコピーする。
【００３２】
ステップ３６５において書き直し索引変数がキャッシュリミット変数以上であれば、ステップ３９０において書き直し索引変数と現在のスプライトリストのスプライトの数が比較される。この比較作業は、ステップ３８５でキャッシュバッファーの内容をバックバッファーにコピーした後にも行われる。書き直し索引変数が現在のスプライトリストのスプライトの数よりも小さい場合は、ステップ３９５で現在のスプライトリストにある次のスプライトオブジェクトをバックバッファーにコピーする。ステップ４００では、書き直し索引変数を増加する。書き直し索引変数と現在のスプライトリストにあるスプライトオブジェクトの数を再び比較する。書き直し索引変数がスプライト数よりも小さい場合は、現在のスプライトリストにある次のスプライトオブジェクトはバックバッファーにコピーされ、書き直し変数を増加する。書き直し索引変数がスプライトオブジェクトの数と等しくなるまで、ステップ３９０、３９５、４００で構成されたループを実行する。このループが実行されると、フロントバッファーとバックバッファーは反対になり、ステップ４０５に示すように出力表示装置への表示のため現在のシーンはフロントバッファーに記憶される。ステップ４１０では、キャッシュバッファーの内容をバックバッファーにコピーする。ステップ４１５では、スプライトが変化するのを待っており、このステップはフルモーション動画映像用の新しいシーンの生成を表している。キャッシュリミットをゼロに設定し、次のシーンのためフルモーション動画表示方法を実行する。
【００３３】
本願発明のフルモーション動画表示方法および装置では動画生成方法の利点を生かしながらフルモーション動画の表示を行うことが可能である。動画シーンは通常は一般的な背景シーンでできている。また、動画画像は一般的な背景シーンの上に表示されるオブジェクトでできている。これらのオブジェクトはキャラクターであり、これらが動作して動画が形成される。従って、一般的な動画シーケンスを形成するには、背景シーンに対してオブジェクトの方を移動させる。このため、複数のコマでできたフルモーション動画シーケンスの場合は、背景スプライトが移動することはまれである。
【００３４】
本願発明の方法および装置は、新規バッファーの作製が不要な場合に最も有効である。背景スプライトが幾つかの動画フレームで無変化である場合は、キャッシュバッファーに記憶されている背景スプライトは有効のままである。従って、本願発明ではこの一般的な動画作業に基づいて通常は動かないエレメントをもっと多くキャッシュバッファーに格納する。フレームの背景部分での表示用Ｚ属性値が大きなスプライトオブジェクトが動かない場合は、これらのスプライトオブジェクトはキャッシュまたはバックバッファーへ書き込まなくてよい。その代わり、キャッシュバッファーに記憶されているスプライトオブジェクトをバックバッファーへ高速コピーする。好適な実施例では、キャッシュバッファーとバックバッファーの間で高速コピーを行い易くするため専用ＶＲＡＭを用いる。専用ＶＲＡＭ間での高速コピーに関する詳細は、本件出願人による特願平６−１９１４８１号「高速コピー手段を備えたフレームバッファーの装置およびこの装置を用いた二重バッファー化動画の実行方法」に説明されている。
【００３５】
例を用いて本願発明をさらに説明する。これは水中環境での多数の魚の動作を表示する動画プログラムに関するものである。図５には魚の動画シーケンスの場合のメモリー内のスプライトオブジェクトが複数示されている。図５はメモリー内のスプライトオブジェクトを説明のため図形表示したものであり、実際にはスプライトオブジェクトのそれぞれについて複数のビットがメモリーに記憶されているのである。魚の動画の場合は、スプライトオブジェクト６００、６０５、６１０、６１５、６２０、６２５からなる６つのスプライトオブジェクトがメモリーに格納されており、動画で使用される。各スプライトオブジェクトはＸ，Ｙ，Ｚの座標からなり、これらの座標によって出力表示装置に表示する時の最初の位置が決まる。
【００３６】
図６ａ，６ｂ，７ａ，７ｂには魚動画シーケンス用背景シーン画像を含むスプライトオブジェクトが複数示されている。魚動画の場合、背景シーンを含む４つのスプライトオブジェクト、すなわち、スプライトオブジェクト６３０、６３５、６４０、６４５がメモリーに記憶されている。魚動画場合、背景スプライトは背景シーンを形成するだけで移動しない。本願の実施例では背景スプライトは固定されているが、背景スプライトのように大きなスプライトオブジェクトの動きも本願発明ではサポートしている。背景スプライトを含むスプライトオブジェクトには、出力表示装置上の画素の照射位置を表すＸ，Ｙ，Ｚ座標が記憶されている。図６ａのスプライトオブジェクト６３０のＺ属性値が最大で、図７ｂのスプライトオブジェクト６４５のＺ属性値が最小となるよう図６ａ，６ｂ，７ａ，７ｂはＺ属性値の大きさに従って配列されている。図７ｂのスプライトオブジェクト６４５は沈没船で、図７ａのスプライトオブジェクト６４０は海草の背景であり、図６ｂのスプライトオブジェクト６３５は海底の背景であり、図６ａのスプライトオブジェクトは水の背景である。
【００３７】
図９ａー９ｃは本願発明の第１動画シーケンスの最初のシーンの画素データを図形で示したものである。図３と４のフロー図で説明したように、最初のシーンをキャッシュバッファーに書き込む。この例では、水の背景を含むスプライトオブジェクト６３０をまずペイントし、海底を含むスプライトオブジェクト６３５を次にペイントし、海草の背景を含むスプライトオブジェクト６４０を３番目にペイントし、沈没船を含むスプライトオブジェクト６４５を４番目にペイントする。同様に、図９ａのスプライトオブジェクトをＺ属性値が最大のスプライトオブジェクトから順番にペイントする。
【００３８】
【表１】
0003656857.tif 000002
【００３９】
表１に示されているスプライトリストでは、魚の動画の場合のスプライトオブジェクトがＺ属性値の優先順位に基づいて配列されている。まず背景シーンを含むスプライトオブジェクト６３０、６３５、６４０、６４５がペイントされ、Ｚ属性順スプライトリストでは次はスプライトオブジェクト６００である。従って、スプライトオブジェクト６００は魚のスプライトオブジェクトでは奥行きが最大である。Ｚ属性順スプライトリストでその次にくるスプライトオブジェクト６０５はスプライトオブジェクト６００よりも奥行きが小さい。同様に、スプライトオブジェクト６１５、６２０、６２５も最初のシーンのスプライトリストに含まれている。最初のシーンではスプライトオブジェクトは全て変化すると考えられているため、最初のスプライトリストにあるスプライトオブジェクトはＺ属性順にバックバッファー７２０に書き込まれる。
【００４０】
図８ａは表１のＺ属性順スプライトリストを書き込んだ後のバックバッファー７２０の内容を図示したものである。最初のシーンの場合、キャッシュバッファーは空のままである。図８ｂは画面ロゴを示したものである。この画面ロゴは最初はフロントバッファー７４０に納められており、魚動画シーケンスの開始前に出力表示装置に表示される。バックバッファー７２０に格納されている第１シーンを表示するには、フロントバッファー７４０とバックバッファー７２０が切り換わるようＤＡＣをプログラムする。
【００４１】
魚動画シーケンスの第２シーンを表示するには表１のスプライトリストを前回のスプライトリストと表示して第２シーン用の現在のスプライトリストを作成する。
【００４２】
【表２】
0003656857.tif 000003
【００４３】
表２には魚の動画例での第２シーン用のＺ属性順スプライトリストが示されている。第２シーン用Ｚ属性順スプライトリストの他に、表２では第１シーンを基準とした時に第２シーンで移動したスプライトオブジェクトを判別する。第２シーンでは、スプライトオブジェクト６２５の位置が移動している。図３と４のフロー図に示しているように、現在のスプライトリストをスプライトオブジェクトのＺ属性値に基づいて配列する。比較したスプライトオブジェクトのそれぞれについてキャッシュリミットを増加する。現在のスプライトリストのスプライトオブジェクト６２５を前回のスプライトリストのスプライトオブジェクト６２５と比較すると、スプライトオブジェクト６２５が移動したという判断がなされる。背景シーンスプライトオブジェクト６３０、６３５、６４０、６４５は移動していないためこれらのオブジェクトはキャッシュバッファー８００に書き込まれる。スプライトオブジェクト６００は前回のＺ属性順スプライトリストから変化していないためキャッシュバッファーに書き込まれる。同様に、スプライトオブジェクト６０５、６１５、６２０もキャッシュバッファーに書き込まれる。比較に基づき、前回のキャッシュリミットに設定されたこのキャッシュリミットは８に等しくなる。キャッシュバッファー８００はバックバッファー８２０にコピーされ、スプライトオブジェクト６２５はバックバッファー８２０の上に重ね書きされる。バックバッファー８２０はフロントバッファー８４０に切り換わって第２シーンが表示される。
【００４４】
図９ａは魚動画シーケンス用の第２シーンを作成した後のキャッシュバッファー８００の内容を図示したものである。図９ａのキャッシュバッファー８００にはスプライトオブジェクト６２５が含まれていない点に注目する。図９ｂには、魚動画シーケンスの第２シーンを含むバックバッファー８２０の内容が図示されている。この図では、スプライトオブジェクト６２５が移動してスプライトオブジェクト６２０の一部に重なっている点に注目する。また、図９ｃには魚動作シーケンスの最初のシーンを含むフロントバッファー８４０が示されている。第１シーンから第２シーンに移る際のスプライトオブジェクト６２５の動作は、通常のフルモーション動画シーケンスの場合よりも大きくなっている。このような大きなずれは説明のためである。
【００４５】
動画シーケンスの第３シーンを作成するため、第２シーンのスプライトリストを前回のスプライトリストと表示して第３シーン用のスプライトリストを作成する。
【００４６】
【表３】
0003656857.tif 000004
【００４７】
表３には第３シーン用のＺ属性順スプライトリストが示されている。第３シーンではスプライトオブジェクト６０５と６１５の位置が変化している。第３シーンを作成するにはキャッシュリミットをクリアしてＺ属性の順に現在のスプライトリストを配列する。スプライトオブジェクト６３０、６３５、６４０、６４５、６００の位置は変わっていない。スプライトオブジェクト６３０、６３５、６４０、６４５、６００はすでにキャッシュバッファー８００に納められているためスプライトオブジェクトのそれぞれについてキャッシュリミットを増加させる。現在のスプライトリストのスプライトオブジェクト６０５を前回のスプライトリストのスプライトオブジェクト６０５と比較すると、スプライトオブジェクト６０５は移動したと判断される。８に設定されている前回のキャッシュリミットは、現在５に設定されているキャッシュリミットと比較される。スプライトオブジェクトの移動に出会った時のキャッシュリミットの値よりも前回のキャッシュリミットの値が大きいためキャッシュバッファー８００の内容は無効になる。いったんキャッシュバッファー８００の内容が無効になると、もう一度キャッシュバッファーに書き込みを行わなくてはならない。キャッシュバッファーに再度書き込みを行うには、キャッシュバッファー９００に背景スプライトオブジェクト６３０、６３５、６４０、６４５と魚スプライトオブジェクト６００を書き込む。前回のキャッシュリミットは新しい値５に設定される。キャッシュバッファー９００の新しい内容をバックバッファー９２０にコピーし、その後スプライトオブジェクト６０５をバックバッファー９２０に書き込む。同様に、スプライトオブジェクト６１５、６２０、６２５をバックバッファーに書き込む。
【００４８】
図１０ａには第３シーンを生成した後のキャッシュバッファー９００の内容が図示されている。キャッシュバッファー９００には背景スプライトオブジェクト６３０、６３５、６４０、６４５と魚スプライトオブジェクト６００が含まれている。図１０ｂにはバックバッファー９２０の内容が図示されており、このバッファーには魚動画シーケンス用の第３シーンが含まれている。ここで、バックバッファー９２０のスプライトオブジェクト６０５と６１５は新しい位置が配置されている点に注目する。図１０ｃには、フロントバッファー９４０の内容が図示されており、このバッファーには魚動画シーケンスの第３シーンが含まれている。バックバッファーに第３シーンを生成すると、出力表示装置上に第３シーンが表示されるようフロントバッファー９４０とバックバッファー９２０は切り換えられる。
【００４９】
動画シーケンスの第４シーンを生成するには、第３シーンのスプライトリストを前回のスプライトリストと表示し、第４シーンのスプライトリストを作成する。
【００５０】
【表４】
0003656857.tif 000005
【００５１】
表４には第４シーン用のＺ属性値順のスプライトリストが示されている。第４シーンでは、前回のスプライトリストにあるスプライトオブジェクトは全て無変化だが、新しいスプライトオブジェクト６１０が追加されている。第４シーンを生成するため、表４に示すようにＺ属性値に基づいてスプライトオブジェクトを順次配列する。現在のスプライトリストのスプライトオブジェクト６３０、６３５、６４０、６４５、６００、６０５を前回のスプライトリストと比較すると、スプライトオブジェクト６３０、６３５、６４０、６４５、６００、６０５は無変化であると判断される。
【００５２】
スプライトオブジェクト６３０、６３５、６４０、６４５、６００はキャッシュバッファー９００にすでに納められているため、それぞれのスプライトオブジェクトについてだけキャッシュリミットが増加される。スプライトオブジェクト６０５も変化していないが、このオブジェクトはキャッシュバッファー９００には含まれていない。このため、スプライトオブジェクト６０５をキャッシュバッファーに書き込み、キャッシュリミットを増加させる。現在のスプライトリストと前回のスプライトリストを比較すると、スプライトオブジェクト６１０は新規スプライトオブジェクトであると判断される。上述したように、新規スプライトオブジェクトは変化したものと考えられる。この時点で、キャッシュリミットは６に設定され、前回のキャッシュリミットは５に等しくなる。このキャッシュリミットは前回のキャッシュリミットよりも大きいため、キャッシュバッファーの内容がバックバッファーにコピーされる。この後、新規スプライトオブジェクト６１０、スプライトオブジェクト６１５、６２０、６２５はバックバッファー１０２０にコピーされる。
【００５３】
図１１ａは第４シーンを生成した後のキャッシュバッファーの内容を図示したものである。キャッシュバッファー１０００には、背景スプライトオブジェクト６３０、６３６、６４０、６４６と魚スプライトオブジェクト６００、６０５が含まれている。図１１ｂには第４シーンを生成した後のバックバッファー１０２０の内容が図示されている。ここで、新規スプライトオブジェクト６１０がバックバッファー１０２０に含まれており、スプライトオブジェクト６２５は新しい位置にある点に注目する。また、図１１ｃにはフロントバッファーにある第３シーンの内容が図示されている。バックバッファーの第４シーンが生成された後にバックバッファーは切り換えられて出力表示装置にバックバッファーの内容が表示される。
【図面の簡単な説明】
【図１】本願発明の第１実施例のコンピュータ装置のブロック図
【図２】本願発明の第２実施例のコンピュータ装置のブロック図
【図３】本願発明のフルモーション動画表示方法の処理を表すフロー図
【図４】本願発明のフルモーション動画表示方法の処理を表すフロー図
【図５】本願発明の動画シーケンス用メモリーに納められた複数のスプライトオブジェクトの図形表示例
【図６】図６ａ，６ｂは図５に類似の本願発明の動画シーケンス用メモリーに納められた複数のスプライトオブジェクトの図形表示例
【図７】図７ａ，７ｂは図６に類似の本願発明の動画シーケンス用メモリーに納められた複数のスプライトオブジェクトの図形表示例
【図８】図８ａ，８ｂは本願発明の動画シーケンスの第１シーン用の画像データ図形表示例
【図９】図９ａ〜９ｃは本願発明の動画シーケンスの第２シーン用の画像データ図形表示例
【図１０】図１０ａ〜１０ｃは本願発明の動画シーケンスの第３シーン用の画像データ図形表示例
【図１１】図１１ａ〜１１ｃは本願発明の動画シーケンスの第４シーン用の画像データ図形表示例
【符号の説明】
５０、２００    コンピュータ装置
１００    メインメモリー
１０２    キャッシュメモリー
１０４    スプライトオブジェクト
１０６    背景スプライト
１０８    中央演算処理装置（ＣＰＵ）
１１２    バックバッファー
１１４    フロントバッファー
１１６    デジタル・アナログ変換器
１１８    出力表示装置
１２５    キャッシュバッファー
【図１】
0003656857.tif 000006
【図２】
0003656857.tif 000007
【図３】
0003656857.tif 000008
【図４】
0003656857.tif 000009
【図５】
0003656857.tif 000010
【図６】
0003656857.tif 000011
【図７】
0003656857.tif 000012
【図８】
0003656857.tif 000013
【図９】
0003656857.tif 000014
【図１０】
0003656857.tif 000015
【図１１】
0003656857.tif 000016