(57)【特許請求の範囲】
【請求項１】
ユーザからの操作入力または時間経過に応じて、仮想世界を表すデータを更新し、仮想世界における表示すべき視野を計算するシミュレーション部と、
第１の時刻に、前記シミュレーション部により計算された第１の表示すべき視野より広い視野である描画すべき視野を計算する描画視野算出部と、
前記描画すべき視野に対応する第１の映像の生成を、前記仮想世界を表すデータを基に前記第１の時刻の直後に開始する映像生成部と、
前記第１の映像の生成開始後の第２の時刻に前記シミュレーション部により計算された第２の表示すべき視野を用いて、前記第２の時刻の直後に、前記第１の映像を前記第２の表示すべき視野に対応する第２の映像に補正する映像補正部とを備え、
前記描画視野算出部は、前記第１の時刻に、前記第２の時刻における前記第２の表示すべき視野を所定の方法で予測して計算し、前記描画すべき視野が前記第１の表示すべき視野および予測した前記第２の表示すべき視野を含んだ視野となるように、前記描画すべき視野の計算を行う
ことを特徴とする模擬映像生成装置。
【請求項２】
前記描画視野算出部は、前記シミュレーション部によって計算された前記表示すべき視野の履歴に基づいて、前記第１の映像の生成開始後に表示すべき視野となりうる範囲を計算し、当該範囲を含む視野を前記描画すべき視野とする、請求項１に記載の模擬映像生成装置。
【請求項３】
前記第１の映像の生成開始後に計算された新たな表示すべき視野を基に、当該新たな表示すべき視野における仮想世界の一部を示す第３の映像を生成する第二の映像生成部と、
前記映像補正部により補正された前記第２の映像と、前記第二の映像生成部により生成された前記第３の映像とを合成する合成部とをさらに備える、請求項１または２に記載の模擬映像生成装置。
【請求項４】
前記描画視野算出部は、前記第１の映像の生成開始から前記第１の映像の補正開始までにかかる時間の予測値を、前記第１の映像の生成にかかった時間の履歴を用いて計算し、当該予測値に応じて、前記描画すべき視野の範囲を調整する、請求項１〜３のいずれか１項に記載の模擬映像生成装置。
【請求項５】
前記映像補正部は、前記描画すべき視野の映像のうち、前記映像の生成開始後に計算された前記第２の表示すべき視野に対応する領域の映像を、表示する映像とする補正を行う、請求項１〜４のいずれか１項に記載の模擬映像生成装置。
【請求項６】
前記映像補正部は、前記映像の前記描画すべき視野の基になった前記第１の表示すべき視野から、前記映像の生成開始後に計算された前記第２の表示すべき視野への変化の量および方向に応じて、前記描画すべき視野の映像の表示位置を移動させる、請求項１〜５のいずれか１項に記載の模擬映像生成装置。
【請求項７】
サーバ装置およびクライアント装置を含むシミュレーションシステムであって、
前記サーバ装置は、
ユーザからの操作入力または時間経過に応じて、仮想世界を表すデータを更新し、仮想世界における表示すべき視野を計算するシミュレーション部と、
第１の時刻に、前記シミュレーション部により計算された第１の表示すべき視野より広い視野である描画すべき視野を計算する描画視野算出部と、
前記描画すべき視野に対応する第１の映像の生成を、前記仮想世界を表すデータを基に前記第１の時刻の直後に開始する映像生成部と、
前記第１の映像と、前記第１の映像の前記描画すべき視野の基となった前記第１の表示すべき視野と、前記第１の映像の生成開始後の第２の時刻に前記シミュレーション部により計算された第２の表示すべき視野とを前記クライアント装置へ前記第２の時刻の直後に送信する送信部と、を有し、
前記クライアント装置は、
前記映像の生成開始後に計算された前記受信した第２の表示すべき視野を用いて、前記受信した第１の映像を前記受信した第２の表示すべき視野に対応する第２の映像に補正する映像補正部を有し、
前記描画視野算出部は、前記第１の時刻に、前記第２の時刻における前記第２の表示すべき視野を所定の方法で予測して計算し、前記描画すべき視野が前記第１の表示すべき視野および予測した前記第２の表示すべき視野を含んだ視野となるように、前記描画すべき視野の計算を行う
ことを特徴とするシミュレーションシステム。
【請求項８】
ユーザからの操作入力または時間経過に応じて、仮想世界を表すデータを更新し、仮想世界における表示すべき視野を計算するシミュレーション部と、
第１の時刻に、前記シミュレーション部により計算された第１の表示すべき視野より広い視野である描画すべき視野を計算する描画視野算出部と、
前記描画すべき視野に対応する第１の映像の生成を、前記仮想世界を表すデータを基に前記第１の時刻の直後に開始する映像生成部と、
前記第１の映像と、前記第１の映像の前記描画すべき視野の基となった前記第１の表示すべき視野と、前記第１の映像の生成開始後の第２の時刻に前記シミュレーション部により計算された前記第２の表示すべき視野とを、前記第１の映像を前記第２の表示すべき視野に対応する第２の映像に補正する映像補正部を有するクライアント装置へ前記第２の時刻の直後に送信する送信部とを備え、
前記描画視野算出部は、前記第１の時刻に、前記第２の時刻における前記第２の表示すべき視野を所定の方法で予測して計算し、前記描画すべき視野が前記第１の表示すべき視野および予測した前記第２の表示すべき視野を含んだ視野となるように、前記描画すべき視野の計算を行う
ことを特徴とする模擬映像生成装置。 
【請求項９】
ユーザからの操作入力または時間経過に応じて、仮想世界を表すデータを更新し、仮想世界における表示すべき視野を計算するシミュレーション部を備えたサーバ装置から、第１の時刻に前記シミュレーション部により計算された第１の表示すべき視野より広い視野である描画すべき視野と、前記仮想世界を表すデータを基に生成された当該描画すべき視野に対応する第１の映像と、当該第１の映像の生成開始後の第２の時刻に前記シミュレーション部により計算された第２の表示すべき視野とを受信する受信部と、
前記第１の映像の生成開始後の前記第２の時刻に計算された前記受信した第２の表示すべき視野を用いて、前記描画すべき視野に対応する前記第１の映像を前記第２の表示すべき視野に対応する第２の映像に補正する映像補正部と、
前記補正された映像を表示する出力部とを備え、
前記受信部は、前記第２の時刻の直後に、前記第１の時刻に前記シミュレーション部により所定の方法で予測された前記第２の表示すべき視野を受信し、
前記映像補正部は、前記第１の表示すべき視野および前記予測された前記第２の表示すべき視野を含んだ視野となるように前記シミュレーション部により前記第１の時刻に計算された前記描画すべき視野を基に、前記受信した第２の表示すべき視野を用いて、前記第１の映像を前記第２の映像に補正する
ことを特徴とする模擬映像表示装置。 
【請求項１０】
ユーザからの操作入力または時間経過に応じて、仮想世界を表すデータを更新し、仮想世界における表示すべき視野を計算するシミュレーション処理と、
第１の時刻に、前記シミュレーション処理により計算された第１の表示すべき視野より広い視野である描画すべき視野を計算する描画視野算出処理と、
前記描画すべき視野に対応する第１の映像の生成を、前記仮想世界を表すデータを基に前記第１の時刻の直後に開始する映像生成処理と、
前記第１の映像の生成開始後の第２の時刻に前記シミュレーション処理により計算された第２の表示すべき視野を用いて、前記第２の時刻の直後に、前記第１の映像を前記第２の表示すべき視野に対応する第２の映像に補正する映像補正処理とをコンピュータに実行させ、      
前記描画視野算出処理は、前記第１の時刻に、前記第２の時刻における前記第２の表示すべき視野を所定の方法で予測して計算し、前記描画すべき視野が前記第１の表示すべき視野および予測した前記第２の表示すべき視野を含んだ視野となるように、前記描画すべき視野の計算を行う
ことを特徴とする模擬映像生成プログラム。
【請求項１１】
コンピュータのプロセッサが、ユーザからの操作入力または時間経過に応じて、仮想世界を表すデータを更新し、仮想世界における表示すべき視野を計算するシミュレーション工程と、
プロセッサが、第１の時刻に、前記シミュレーション工程により計算された第１の表示すべき視野より広い視野である描画すべき視野を計算する描画視野算出工程と、
プロセッサが、前記描画すべき視野に対応する第１の映像の生成を、前記仮想世界を表すデータを基に前記第１の時刻の直後に開始する映像生成工程と、
プロセッサが、前記第１の映像の生成開始後の第２の時刻に前記シミュレーション工程により計算された第２の表示すべき視野を用いて、前記第２の時刻の直後に、前記第１の映像を前記第２の表示すべき視野に対応する第２の映像に補正する映像補正工程と含み、
前記描画視野算出工程は、前記第１の時刻に、前記第２の時刻における前記第２の表示すべき視野を所定の方法で予測して計算し、前記描画すべき視野が前記第１の表示すべき視野および予測した前記第２の表示すべき視野を含んだ視野となるように、前記描画すべき視野の計算を行う
ことを特徴とする模擬映像生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザ操作入力に応じて仮想空間の映像を表示するシミュレーション技術に関する。
【背景技術】
【０００２】
近年、コンピュータグラフィクスにより作り出された仮想世界を、ユーザがリアルタイムでウォークスルー、ドライブスルー、あるいはフライスルーすることのできる、リアルタイム映像シミュレーションの技術が開発されている。
【０００３】
このようなリアルタイム映像シミュレーションにおいては、より映像のリアリティや臨場感を高めるために、より詳細に作り込まれた複雑なシーンを表現したいというニーズがある。例えば、３Ｄゲームにおいては、より緻密にモデリングされた世界を表現することが望まれる。しかし、仮想世界をコンピュータグラフィクスにより描画するための描画用計算機には性能の限界がある。その限界を超えた複雑さを持つシーンを描画しようとすると、映像の一つのフレームを描画するのにかかる時間が増大し、フレームレート（単位時間あたりの描画フレーム数）が低下して映像の動きの滑らかさが失われる。それと同時に、操作入力に対して映像が遅延することにより、仮想世界内を移動するユーザの感覚に大きな違和感が生じる。
【０００４】
従来は、この違和感を防ぐために、描画用計算機が十分なフレームレートを維持できる限界を超えないように、データ削減作業を行ってシーンを単純化していた。つまり、単体の描画用計算機の性能の限界を超える複雑なシーンをそのまま描画することはできなかった。３Ｄゲームであれば、単体のゲーム機の描画性能の限界が仮想世界の表現の限界を決めていた。そのため、描画における時間遅れを改善するために、時間遅れによって生じる位置的な誤差を、画像を平行移動させて補正する方法が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平５−３２４７９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記従来の方法で画像を平行移動させると、移動後に未描画領域が発生する場合がある。時間遅れによる描画領域の誤差が大きい程、この未描画領域も大きくなる。これにより、新たに違和感が生じかねない。
【０００７】
本発明は、上記課題を鑑みてなされたものであり、シミュレーション映像の遅延による違和感を低減させることが目的とする。
【課題を解決するための手段】
【０００８】
本願開示の模擬映像生成装置は、ユーザからの操作入力または時間経過に応じて、仮想世界を表すデータを更新し、仮想世界における表示すべき視野を計算するシミュレーション部と、第１の時刻に、前記シミュレーション部により計算された第１の表示すべき視野より広い視野である描画すべき視野を計算する描画視野算出部と、前記描画すべき視野に対応する第１の映像の生成を、前記仮想世界を表すデータを基に前記第１の時刻の直後に開始する映像生成部と、前記第１の映像の生成開始後の第２の時刻に前記シミュレーション部により計算された第２の表示すべき視野を用いて、前記第２の時刻の直後に、前記第１の映像を前記第２の表示すべき視野に対応する第２の映像に補正する映像補正部とを備え、前記描画視野算出部は、前記第１の時刻に、前記第２の時刻における前記第２の表示すべき視野を所定の方法で予測して計算し、前記描画すべき視野が前記第１の表示すべき視野および予測した前記第２の表示すべき視野を含んだ視野となるように、前記描画すべき視野の計算を行う。
【発明の効果】
【０００９】
本願明細書の開示によれば、シミュレーション映像の遅延による違和感を低減させることができる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態にかかるシミュレーション装置（模擬映像生成装置）の構成の一例を示す機能ブロック図である。
【図２】第１の実施形態にかかるシミュレーション装置（模擬映像生成装置）の構成の変形例を示す機能ブロック図である。
【図３】第２の実施形態におけるシミュレーションシステムの構成例を示す機能ブロック図である。
【図４Ａ】図４Ａは、時刻ｔ＝ＴNおよび時刻ｔ＝ＴN-nにおける仮想世界の車の位置および視野の一例を示す図である。
【図４Ｂ】図４Ｂは、時刻ｔ＝ＴNにおける表示すべき視野の映像、および時刻ｔ＝ＴN-nにいて補正された映像の一例を示す図である。
【図５Ａ】図５Ａは、時刻ＴNにおける視線方向ベクトルおよび視野と映像の関係、および映像の一例を示す図である。
【図５Ｂ】図５Ｂは、時刻ＴN-nにおける視線方向ベクトルと平行移動された映像の関係、および平行移動された映像の一例を示す図である。
【図６Ａ】図６Ａは、映像を球面への投影として捉えて処理する場合の、視線方向ベクトルおよび視野と映像の関係、および映像の一例を示す図である。
【図６Ｂ】図６Ｂは、映像を球面への投影として捉えて処理する場合の、視線方向ベクトルおよび視野と移動後の映像の関係、および移動後の映像の一例を示す図である。
【図７Ａ】図７Ａは、映像生成の時点における視野をそのまま描画し、補正した場合の補正前後の映像例を示す図である。
【図７Ｂ】図７Ｂは、映像生成の時点における視野より広い描画すべき視野を計算し、補正した場合の補正前後の映像例を示す図である。
【図８】図８は、仮想世界の複数のオブジェクトが分けて描画された後に合成される映像の例を示す図である。
【図９】図３に示すシミュレーションシステムの動作例を示す処理フロー図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態について図面を参照して具体的に説明する。
【００１２】
（第１の実施形態）
［シミュレーション装置の構成例］
図１は、第１の実施形態にかかるシミュレーション装置（模擬映像生成装置）の構成の一例を示す機能ブロック図である。図１に示すシミュレーション装置１０は、ユーザからの操作入力または時間経過に応じて、仮想世界（仮想空間）を表すデータを更新し、仮想世界の映像をコンピュータグラフィックスにより生成して表示する装置である。シミュレーション装置１０は、仮想世界における物体の位置、形状等の仮想世界を表すデータと、ユーザの視点（カメラ）の位置、向き、画角等の視野を表すデータを用いて、コンピュータにより表示すべき仮想世界の映像を自動的に生成する機能を有する。なお、シミュレーションの対象や用途は特定のものに限定されない。
【００１３】
シミュレーション装置１０は、描画視野算出部１、映像生成部２、映像補正部３、表示部４、シミュレーション部５および入力部６を備える。シミュレーション部５は、入力部６を介して受け付けたユーザからの操作入力または時間経過に応じて、仮想世界を表すデータを更新し、仮想世界における表示すべき視野を計算する。
【００１４】
ここで、表示すべき視野は、仮想世界におけるユーザまたはカメラの視野を特定するデータであり、表示すべき視野に含まれる仮想世界の映像がシミュレーション装置１０により出力されることになる。表示すべき視野は、例えば、視点の位置、向き、画角および投影パラメータ等を含む。投影パラメータには、例えば、仮想空間の物体や背景等を投影する面を規定するパラメータが含まれる。
【００１５】
仮想世界を表すデータは、例えば、仮想世界における物体や平面等のオブジェクトの形状データ（例えば、ポリゴンデータ）と位置、姿勢、色、テクスチャなどの属性データの集合とすることができる。
【００１６】
例えば、ユーザが操作可能なハンドルやペダルを含む入力装置から入力部６を介して操作入力を受け付け、ユーザが仮想世界の車を運転するシミュレーションを実現する場合は、シミュレーション部５は、車の制御系や駆動系のデータを操作に応じて更新するシミュレーションを行って、仮想のドライバの視野を表示すべき視野として計算する。
【００１７】
あるいは、ユーザ頭部の位置姿勢を測定するセンサの測定結果を、入力部６を介して受け付けて、仮想世界内での首振りを実現する場合であれば、シミュレーション部５は、実世界におけるユーザ頭部の位置姿勢の測定結果を、仮想世界の人物の頭部の動きに対応付ける計算を行い、仮想の人物の視野を表示すべき視野として求めることができる。
【００１８】
なお、シミュ−ション部５は、ユーザからの操作入力を受け付けることなく、所定の周期で仮想世界のデータを自動的に更新してシミュレーションを実行することもできる。あるいは、他のシミュレーション装置の計算結果を、入力部６を介して受け付けてもよい。
【００１９】
描画視野算出部１は、前記表示すべき視野より広い視野である、描画すべき視野を計算する。描画すべき視野は、映像生成部２が生成する映像の視野を表すデータである。すなわち、描画視野算出部１は、シミュレーション部５が更新した表示すべき視野を基に、映像生成部２が生成する映像の視野を計算する。描画すべき視野も、表示すべき視野と同様に、例えば、視点の位置、向き、画角および投影パラメータ等を含むことができる。
【００２０】
ここで計算される描画すべき視野は、映像生成部２において、この描画すべき視野の映像生成が開始された後の時点で更新される表示すべき視野が含まれうる範囲の視野であることが好ましい。そのため、描画視野算出部１は、例えば、映像生成時点の表示すべき視野よりも広い範囲の視野を描画すべき視野として計算することができる。この場合、描画視野算出部１は、例えば、描画すべき視野を、表示すべき視野に対して、どの方向にどの程度拡張するかを、過去に計算された表示すべき視野の履歴データや、映像生成にかかる時間等を基に、計算することができる。このように、描画視野算出部１が、前記表示すべき視野より広い視野である描画すべき視野を計算し、この描画すべき視野の映像を生成することにより、後述する生成後の映像補正において、映像の遅延による違和感を低減することが可能になる。
【００２１】
描画視野算出部１は、一例として、シミュレーション部５によって計算された表示すべき視野の履歴に基づいて、映像の生成開始後に表示すべき視野となりうる範囲を計算し、当該範囲を含む視野を前記描画すべき視野とすることができる。このように、表示すべき視野の履歴に基づいて、映像生成開始後の表示すべき視野を正確に予測し、適切な描画すべき視野を求めることができる。
【００２２】
また、この構成に加えてまたは換えて、描画視野算出部１は、映像生成部２による映像の生成開始から映像の補正開始までにかかる時間の予測値を、映像の生成にかかった時間の履歴を用いて計算し、当該予測値に応じて、描画すべき視野の範囲を調整することもできる。これにより、映像生成開始後の表示すべき視野をより正確に予測し、より適切な描画すべき視野を求めることができる。
【００２３】
映像生成部２は、描画視野算出部１が算出した描画すべき視野の映像を、仮想世界を表すデータを基に生成する。本実施形態では、映像生成部２が、描画すべき視野を用いて仮想世界の映像を生成する際、映像の生成が開始された時点における表示すべき視野と描画すべき視野は、それぞれ表示視野保持部８と描画視野保持部７によって、生成される映像と関連付けて保持される。また、生成された映像は、映像補正部３へ送られる。この際、例えば、後述するように、映像生成部２と映像補正部３との間において、コーデックによる圧縮伸張やネットワークを経由して、映像が送られる構成であってもよい。
【００２４】
映像補正部３は、前記映像の生成開始後に計算された新たな表示すべき視野とを用いて、前記映像を、新たな表示すべき視野に対応する映像に補正する。表示部４は、映像補正部３によって補正された映像をユーザに対して提示する。
【００２５】
一例として、映像補正部３は、映像生成部２から生成された映像を入力し、その入力タイミングにおける表示すべき視野（第一の視野とする）をシミュレーション部５から受け取る。この第一の視野は、映像生成部２による映像の生成開始後にシミュレーション部５で計算された新たな表示すべき視野の一例である。映像補正部３は、さらに、入力した映像に関連付けられた表示すべき視野（第二の視野とする）と描画すべき視野（第三の視野とする）をそれぞれ表示視野保持部８と描画視野保持部７から読み出す。そして、これら三つの視野を用いて入力された映像の補正を行う。
【００２６】
第一の視野はこれから表示するべき視野である。第二、第三の視野は、映像生成開始時の視野であるから、映像の生成およびその他の必要な処理（例えば、通信、コーデック等）にかかった時間分だけ古い視野となる。映像補正部３は、これら古い視野（第二と第三の視野）の映像を補正することにより、これから表示するべき視野（第一の視野）についての近似映像を生成する。この補正は、例えば、映像の二次元的な平行移動、拡大縮小、回転などによって行うことができるが、これらに限定されるものではない。
【００２７】
映像補正部３は、例えば、第三の視野（描画すべき視野）の映像のうち、この映像の生成開始後に計算された新たな第一の視野（新たな表示すべき視野）に対応する領域が表示映像となるように補正をすることができる。これにより、映像生成が視野の変化に対して遅延しても、視野の変化の対応するよう映像を補正することができる。また、第三の視野は第二の視野より広いので、第一の視野から見える範囲が第二の視野の範囲から逸脱する可能性が低くなり、補正によりさらなる違和感が発生するのが抑えられる。
【００２８】
より具体的には、映像補正部３は、第二の視野から第一の視野への変化の量および方向に応じて、生成された映像の表示位置を移動させる補正を実行することもできる。このように表示位置を移動させる補正により、簡単な処理で高速に補正をすることが可能になる。
【００２９】
なお、第二の視野から第一の視野へ視野が変化すると、第一の視野から見える範囲が第二の視野の範囲から逸脱する。このように、第一の視野から見える範囲が第二の視野の範囲から逸脱している場合、第二の視野を描画した映像を補正すると未描画部分が発生する。そこで、本実施形態では、第二の視野を第一の視野の範囲が含まれるように調整した第三の視野（描画すべき視野）を描画視野算出部１において求め、映像生成部２では第三の視野の映像を生成する構成となっている。
【００３０】
なお、第三の視野を求めるタイミングから見ると第一の視野は将来のものであるため、確実に第一の視野が含まれるように第三の視野を決定することは難しい。また、映像生成の負荷を抑える観点からは、第三の視野は極力狭くすることが望ましい。そこで、シミュレーション１０が応用されるシミュレーションシステムの傾向などに基づいて、第二の視野を基準に第三の視野を算出する方法をあらかじめ決めておくことができる。例えば、ドライビングシミュレータのように視野が上下方向に動くことが少ないシステムにおいては、第二の視野の画角を主に横方向に拡張して第三の視野を求めるように決めておくことができる。さらに、視野の横方向の動きの最大値を見積もることにより、必要な横方向画角の拡張量も決めておくことができる。なお、第三の視野の、第二の視野に対する拡張方向および拡張量を、ユーザからの入力に基づいて更新することが可能な構成にすることもできる。
【００３１】
また、第二の視野と第三の視野の関係を固定にした場合、実際に視野が動いた方向以外については描画が無駄になる可能性が高い。そこで、描画視野算出部１は、表示すべき視野（第一の視野または第二の視野）の履歴から、映像補正時点における表示すべき視野（第一の視野）を予測し、予測した視野を含むように第三の視野を求めることで、描画の無駄を抑えることができる。例えば、上記の視野の横方向の動きの最大値は、第一の視野の履歴および／または映像生成部２による映像生成時間の履歴を基に見積もることができる。
【００３２】
［シミュレーション装置の変形例］
図２は、第１の実施形態にかかるシミュレーション装置（模擬映像生成装置）の構成の変形例を示す機能ブロック図である。図２において、図１と同じ機能ブロックには同じ番号を付している。図２に示すシミュレーション装置１０ａは、図１のシミュレーション装置１０の構成に加えて、第二の映像生成部１１と、合成部９をさらに備える。映像生成部１１は、第一の映像生成部２による映像の生成開始後にシミュレーション部５で計算された新たな表示すべき視野を基に、当該新たな表示すべき視野における仮想世界の一部の映像を生成する。合成部９は、映像補正３により補正された映像と、第二の映像生成部１１により生成された映像とを合成する。表示部４は、合成部９で合成された映像を出力する。
【００３３】
この構成により、仮想世界の映像を、補正を行う部分と行わない部分を分けて描画し、一方を補正した後に合成を行うことができる。そのため、仮想世界におけるユーザの視野（カメラ）の動きに対する変化度合いが異なる部分を含む映像に対して、変化度合いの高い部分のみ補正して、時間遅れによる違和感を低減することができる。
【００３４】
例えば、ドライビングシミュレータにおける自車の車体の映像は、カメラ（ドライバ視野）に対して外界の映像とは異なる動きをする。このように視野に対して異なる動きをする部分がある場合には、補正によって外界と一緒に車体の映像を補正により動かしてしまうと却って違和感が増すことがある。そのため、このような場合は、外界の部分の映像は、第一の映像生成部２で生成して、生成された映像を、映像補正部３が、映像生成後の表示すべき視野に対応するように補正することができる。そして、車体の部分の映像は、映像生成後の表示すべき視野に対応するように、第二の映像生成部１１が生成することができる。
【００３５】
具体的には、シミュレーション部５は、上記図１の場合と同様に、入力部６で受けたユーザからの操作入力に応じて、仮想世界のデータを更新する。その結果、仮想世界内部における表示すべき視野の情報（例えば、位置、向き、画角、投影パラメータ等）も更新される。描画視野算出部１は、上記図１の場合と同様に、表示すべき視野を基に、第一の映像生成部２で描画すべき視野を計算する。
【００３６】
第一の映像生成部２は、入力された描画すべき視野を用いて仮想世界のあらかじめ選択された一部の対象の映像を生成する。例えば、第一の映像生成部２は、メモリ等に予め記録された、対象とするオブジェクトを示すデータを参照し、映像を生成する対象の仮想世界におけるオブジェクトを選択することができる。生成された映像は、映像補正部３に送られる。
【００３７】
第一の映像生成部２が映像の生成を開始した時点における表示すべき視野と描画すべき視野は、それぞれ表示視野保持部８と描画視野保持部７によって、生成される映像と関連付けて保持される。
【００３８】
映像補正部３は第一の映像生成部２によって生成された映像を入力し、そのタイミングにおける表示すべき視野をシミュレーション部５から入力し、入力した映像に関連付けられた表示すべき視野と描画すべき視野をそれぞれ表示視野保持部８と描画視野保持部７から読み出す。そして、これら三つの視野を用いて入力された映像の補正を行い、補正した映像を合成部９に送る。補正は、上記図１の場合と同様にすることができる。
【００３９】
第二の映像生成部１１は、表示すべき視野に応じて仮想世界のあらかじめ選択された一部の対象（補正の対象としないもの）の映像を生成し、合成部９に送る。この仮想世界において補正の対象としないものを特定するデータも、予めメモリ等に記録しておくことができる。第二の映像生成部１１は、予め記録されたデータを参照して、仮想世界における映像を生成する対象を特定することができる。
【００４０】
合成部９は、映像補正部３、および第二の映像生成部１１からの映像を合成し、表示部４に送る。合成は、例えば、二つの映像をあらかじめ決めておいた順番で重ね合わせることで行うことができる。それぞれの映像において、視野の中の対象が写っていない部分については透明としておいてもよい。
【００４１】
上記のシミュレーション装置１０、１０ａでは、現在の視野と映像生成の開始時点における視野についての情報を用いて、遅延時間分だけ古い映像を補正し、現在の視野についての近似映像を求める構成である。これにより、操作入力に対する映像の応答性を擬似的に向上し、遅れに起因する違和感を低減可能としている。さらに、映像生成時に表示すべき視野より広い描画視野を算出する構成なので、補正された近似映像でさらに違和感が生じることを抑えること可能になる。
【００４２】
シミュレーション装置１０、１０ａは、例えば、パーソナルコンピュータやサーバマシン等の汎用コンピュータに所定のプログラムをインストールすることによって実現することができる。また、汎用コンピュータに限らず、例えば、携帯型ゲーム機端末、車載情報端末、携帯電話、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、家電製品等の電子機器に組み込まれたコンピュータによってシミュレーション装置１０、１０ａが形成されてもよい。
【００４３】
また、シミュレーション装置１０、１０ａの持つ機能を複数のコンピュータに分散させることで、複数のコンピュータでシミュレーション装置１０、１０ａを構成することもできる。例えば、ネットワークを介して接続された複数の汎用コンピュータにシミュレーション装置１０、１０ａの機能を分散させてよい。あるいは、バスで接続されたＣＰＵとＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）によって、シミュレーション装置１０、１０ａを構成することもできる。
【００４４】
上記の描画視野算出部１、映像生成部２、映像補正部３、表示部４、シミュレーション部５、第一の映像生成部２、第二の映像生成部１１、合成部９および入力部６の各機能は、ＣＰＵまたはＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）等のプロセッサが所定のプログラムを実行することによって実現される。したがって、上記の各機能をコンピュータで実現するためのプログラムまたはそれを記録した記録媒体も本発明の一実施態様である。この記録媒体は、一時的でない（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ）記録媒体であり、信号のように一時的な媒体は含まない。また、描画視野保持部７、表示視野保持部８およびその他必要なデータを記録する手段は、コンピュータの内蔵記憶装置（例えば、ＲＯＭ、ＲＡＭ等のメモリ）またはこのコンピュータからアクセス可能な記憶装置によって具現化される。これらのことは、下記第２の実施形態における各機能部についても同様である。
【００４５】
［第２の実施形態］
図３は、第２の実施形態におけるシミュレーションシステムの構成例を示す機能ブロック図である。図３に示すシミュレーションシステムは、サーバ装置の一例であるシミュレータサーバ１２（以下、単にサーバ１２と称する）およびクライアント装置の一例であるシミュレータクライアント１３（以下、単にクライアント１３と称する）を含む。サーバ１２とクライアント１３は、互いに通信可能となっている。この通信は、有線通信のみに限らず、無線通信が含まれていてもよい。
【００４６】
サーバ１２は、シミュレーション部５、描画視野算出部１、映像生成部２を備える。シミュレーション部５は、ユーザからの操作入力または時間経過に応じて、仮想世界を表すデータを更新し、仮想世界における表示すべき視野を計算する。視野算出部１は、前記表示すべき視野より広い視野である、描画すべき視野を計算する。映像生成部２は、描画すべき視野の映像を、仮想世界を表すデータを基に生成する。これら、シミュレーション部５、描画視野算出部１、映像生成部２の機能は、上記第１の実施形態と同様にすることができる。
【００４７】
サーバ１２は、さらに、映像生成部２が生成した映像と、この映像の描画すべき視野の基となった表示すべき視野と、この映像の生成開始後に計算された新たな表示すべき視野とをクライアント１３へ送信する送信部として、描画結果送信部１８および視野送信部１６を備える。
【００４８】
クライアント１３は、サーバ１２の送信部から送られてきた映像と、この映像の生成開始後に計算された新たな表示すべき視野とを用いて、この映像を、新たな表示すべき視野に対応する映像に補正する映像補正部３を備える。
【００４９】
このように、サーバ１２に、シミュレーション部５、映像生成部２、送信部（描画結果送信部１８および視野送信部１６）を設け、クライアント１３に映像補正部３を設ける構成により、シミュレーションの映像生成および通信による遅延を原因とする映像の違和感を低減することができる。その結果、サーバ１２による複雑なシーンの描画や、素早いレスポンスを必要とするアプリケーションを、ネットワークを介してクライアント１３から利用可能することが可能になる。
【００５０】
図３に示す構成のシミュレーションシステムは、例えば、複数のクライアントから入力をサーバ受け付けてシミュレーション結果をクライアントへ返す業務用のシミュレーション装置や、ネットワークゲームに用いることができる。シミュレーションの用途や対象は特に限定されない。
【００５１】
［シミュレーションの例］
図３に示す例では、クライアント１３が、ユーザから操作入力を受け付ける入力部６と、操作入力をサーバ１２へ送信する操作入力送信部２４を備える。
【００５２】
一例として、クライアント１３にはハンドルやペダルなどに接続された入力部６と、ディスプレイ等の表示部４が備えられる。ユーザはディスプレイに表示される映像を見ながら、ハンドルなどの入力装置を操作し、仮想世界の中でドライビングを行うことができる。
【００５３】
クライアント１３で入力された入力情報は、例えば、ネットワークを通じて送信され、サーバ１２の操作入力受信部１４で受信されてシミュレーション部５に送られる。入力情報はデータ量が小さいため、無視できる程度の小さな遅延で送ることができる。
【００５４】
シミュレーション部５は、一例として、仮想世界を構成する道路や車両、街並み等オブジェクトのデータをシミュレーション用データとして保持する。シミュレーション用データは、例えば、サーバ１２内蔵メモリまたはアクセス可能なメモリに記録される。シミュレーション部５は、入力情報に基づいて各オブジェクトの挙動についてのシミュレーションを行って、仮想世界を表すシミュレーション用データをリアルタイムに更新する。更新の結果、例えば、仮想世界のオブジェクトの位置・姿勢や属性（色・テクスチャなど）が変更される。シミュレーションは通常、映像生成に比べて軽い処理であり、例えば、数ミリ〜数十ミリ秒周期の高い頻度で実行される。
【００５５】
シミュレーションの結果、仮想世界を表示するのに用いられる視野の情報（例えば、位置、姿勢、画角、投影方法とそのパラメータ）が決定する。例えば、ドライビングシミュレータの場合、視野は通常、仮想の車の運転席に乗っている仮想のドライバの視点に固定されるので、車の位置や姿勢が更新されるとそれに応じて表示すべき視野も更新される。視点（カメラ）は必要に応じて、車の他の場所や他の車、あるいは路上のオブジェクトや建物など、任意の場所に置くことができる。
【００５６】
このようにして、シミュレーション部５が表示すべき視野を更新すると、描画視野算出部１が、表示すべき視野に基づいて映像生成部２で描画すべき視野を算出する。視野送信部１６は、シミュレーション部５が表示すべき視野を更新する度に、リアルタイムで更新された表示すべき視野をクライアント１３へ送信することが好ましい。これにより、クライアント１３の映像補正部３が、古い映像を更新された新たな表示すべき視野に対応させる補正が可能になる。
【００５７】
［並列描画の例］
映像生成部２は、図３に示すように、複数のフレームを並列に描画する複数の描画部を備える構成であってもよい。本実施形態では、一例として、映像生成部２は、並行して描画（映像生成）処理を実行することができる複数の描画部２２ａ、２２ｂ、２２ｃと、描画視野算出部１が算出した描画すべき視野を、これらの複数の描画部２２ａ、２２ｂ、２２ｃに渡して、描画すべき視野の映像を生成する処理を実行させる並列描画制御部２１、複数の描画部２２ａ、２２ｂ、２２ｃそれぞれを監視し、それぞれで生成された映像を、表示すべき視野および描画すべき視野とともに受け取る並列描画統合部２３とを含む。この構成により、例えば、並列に接続された描画部２２ａ、２２ｂ、２２ｃに順番にフレームを割り当てて時間差で並列に描画を行うことができる。いわゆる交互フレーム描画方式で描画することができる。
【００５８】
具体的には、サーバ１２の映像生成部２（並列描画部と称することもできる）は、下記のように、描画視野算出部１が求めた描画すべき視野に従って仮想世界の映像を生成する。例えば、映像のフレーム毎に描画部２２ａ、２２ｂ、２２ｃのいずれかを割り当てて並列に描画を実行することができる。これにより、高速に映像が生成される。各描画部２２ａ、２２ｂ、２２ｃは、メモリの描画データ（例えば、仮想世界を構成するオブジェクトのモデルデータやテクスチャデータ）に、シミュレーション部５から送られる仮想世界の更新情報を加味したものを用いて仮想世界の映像を生成することができる。このように、フレーム単位で描画部を割り当てる場合、単一の描画部で描画を行うのに比べて、単位時間当たりに生成できるフレーム数を描画部の数倍（図３に示す例では３倍）に向上することができる。すなわち、フレームレートは、用意した計算機（描画部）の台数倍にまで向上することができる。
【００５９】
ただし、一つのフレームを描画するのにかかる時間は単一の場合と変わりがない。そのため、フレームレートは向上しても、表示すべき視野の情報が映像生成部２へ入力されてから映像が出力されるまでの遅延は単一の描画部の場合と変わらない。この遅延による影響は、描画視野算出部１およびクライアント１３の映像補正部３を含む機能により低減することができる。
【００６０】
並列描画制御部２１は、各描画部２２ａ、２２ｂ、２２ｃの実行状態を監視する。前のフレームの描画が完了した描画部があれば、シミュレーション部５から仮想世界の更新情報と表示すべき視野とを受け取り、描画視野算出部１から描画すべき視野の情報を受け取ってその描画部に渡し、次の映像の生成を実行させる。これにより、全ての描画部が常に並行して映像の生成を行っている状態になる。各描画部は、受け取った表示すべき視野と描画すべき視野とを、映像生成を行っている間、記憶する。
【００６１】
並列描画統合部２３は、各描画部の実行状態を監視し、フレームの描画が完了した描画部があればその描画部から、描画されたフレームの映像と、表示すべき視野および描画すべき視野を受け取る。描画されたフレーム映像は、映像エンコーダ１７に渡される。これにより、描画部２２ａ、２２ｂ、２２ｃそれぞれによって時間差をもって並列描画されたフレームの映像が順次映像エンコーダ１７へ送られる。
【００６２】
なお、上記の映像生成部２においては、描画用計算機として３台の描画部を有しているが、描画用計算機の台数は、求められるピーク性能に合わせて変えることができる。しかし、描画用計算機の台数をピーク性能に合わせると、描画用計算機を含む装置全体が大規模化し、かつ、ピーク性能が不要な場合の無駄が大きくなる傾向にある。そのため、複数の描画用計算機をネットワーク経由で共有利用できる構成にすることができる。例えば、本実施形態のように、複数の描画部で並列処理された映像を外部へ送信し、送信した先で補正をする構成とすることで、並列構成の描画装置による複雑なシーンの描画を必要とするアプリケーションのネットワーク利用が可能になる。また、描画結果の映像をネットワーク経由でクライアントに伝送する際に、さらにコーデックや通信自体における遅延が加算される問題に対しても、本実施形態の構成により対処することができる。
【００６３】
［サーバ−クライアント間の通信］
映像生成部２で描画された映像は映像エンコーダ１７に送られて圧縮され圧縮映像となる。圧縮映像は、描画結果送信部１８において対応する視野情報（表示すべき視野および描画すべき視野）と関連付けられた上で、クライアント１３へネットワークを通じて送信される。
【００６４】
送信された圧縮映像と視野情報はクライアント１３の描画結果受信部２８によって受信される。映像は映像デコーダ２７に送られて伸張される。表示すべき視野と描画すべき視野の視野情報は、映像補正部３へ送られる。映像の圧縮・伸張とネットワーク送信には、例えば、数十〜数百ミリ秒単位の時間を要する。
【００６５】
映像補正部３は、映像を受け取ると、その映像に対応する視野情報、すなわち映像生成開始時の表示すべき視野および描画すべき視野も受け取る。さらにその映像を受けたタイミングにおける新しい表示すべき視野を視野受信部２６から受け取る。映像補正部３は、この新しい表示すべき視野を基に、映像の補正を行う。そのタイミング、すなわち映像補正直前時点における表示すべき視野は、シミュレーション部５から視野送信部１６、視野受信部２６を介して、ネットワーク経由で取得される。この表示すべき視野を示す視野情報はデータ量が小さいため、無視できる程度の小さな遅延で送ることができる。
【００６６】
このように、本実施形態では、サーバ１２は、クライアント１３へ、生成された映像と、映像生成後に更新される可能性のある表示すべき視野とを、それぞれ独立してリアルタイムに送信する仕組みを備える。これにより、クライアント１３において、映像生成後にシミュレーション部５で更新された表示すべき視野を用いて、映像を補正することができる。また、サーバ１２において、表示すべき視野より広い描画すべき視野を計算し、描画すべき視野の映像を生成することで、クライアント１３における補正で新たに違和感が生じることが抑えられる。次に、クライアント１３における映像補正部３の補正処理と、サーバ１２における描画すべき視野の計算の具体例について説明する。
【００６７】
［映像補正部３による補正処理の具体例］
例えば、ユーザが素早く右方向に視線を動かすことにより、仮想世界において、表示されるべき視野が素早く右にシフトした場合、表示される映像は即座に左方向に流れなければならない。しかし、映像の生成と伝送による遅延がある場合、映像は、視野の動きに対して少し遅れて左方向に流れる。この遅れが映像に対するユーザの違和感となり、ＶＲ（バーチャルリアリティ）酔いなどの原因にもなる。
【００６８】
そこで、映像補正部３は、例えば、以下のように、映像の補正処理を実行することができる。映像補正部３は、描画の完了している少し古い映像に対し、現在分かっている視野の動きに合わせて二次元的に映像を動かすという補正を行うことができる。
【００６９】
ここで、図４Ａおよび図４Ｂを参照して映像の補正例を説明する。図４Ａは、時刻ｔ＝ＴNおよび時刻ｔ＝ＴN-nにおける仮想世界の車の位置および視野の一例を示す図である。図４Ｂは、時刻ｔ＝ＴNにおける表示すべき視野の映像、および時刻ｔ＝ＴN-nにいて補正された映像の一例を示す図である。図４Ａに示す例では、線Ｄ１と線Ｄ２の間が道路であり、道路の脇にはオブジェクトの一例である建物Ｃがある。車Ｋは、建物に対して斜め右方向へ進んでいる。車Ｋの視野は点線で示されており、この視野が表示すべき視野となる。ここでは、映像生成部２が、時刻ＴN-nにおける表示すべき視野に基づいて映像の生成を開始し、図４Ｂの上段に示す映像を生成する。その後、映像補正部３が時刻ＴNにおいて、この映像と、時刻ＴNにおける表示すべき視野を受け取って、補正を実行する。この例の場合、映像補正部３は、左方向への映像を平行移動する。このように、映像補正部３は、時刻ＴN-nにおける表示すべき視野から、時刻ＴNにおける表示すべき視野への視野の変化の量および方向に応じて、映像の表示領域を移動させることができる。このときの映像の移動方向および移動距離の計算例については後述する。
【００７０】
この映像の平行移動により、仮想世界での視線を右へ動かす操作入力に対し、見かけ上映像の遅延が隠蔽されて、映像が即座に応答して左方向へ流れる。そのため、応答性に関する違和感が大きく軽減される。なお、映像を平行移動しただけの補正の場合、映像の内容は本来あるべき映像と若干異なる。しかし、視野の動きが大きい場合には、映像の内容のズレよりも映像全体の動きのズレによる違和感の方が支配的であるため、このように映像を平行移動するだけの補正でも、違和感の低減効果を得ることができる。
【００７１】
映像補正の方法は視線方向の変化に応じた映像の平行移動に限らない。視点のさまざまな動き方に対応して、平行移動、拡大縮小、回転、アフィン変換などを行うこともできる。なお、映像補正によって新たに大きな遅延が発生しては意味がないので、映像の補正はなるべく簡便であることが望ましい。以下に、視野の変化に応じた映像補正の具体例を説明する。
【００７２】
（視野回転に対応する映像補正）
ここで、描画結果受信部２８から送られる表示すべき視野（古い視野）に対応する時刻（ここでは、一例として映像生成開始時の時刻）をＴN-n、視野受信部２６から送られる表示すべき視野（新しい視野）に対応する時刻をＴNとする。時刻ＴNは、映像生成開始後の時刻であり、例えば、ほぼ現在時刻とすることができる。
【００７３】
視野の回転運動に着目すると、時刻ＴN-nおよび時刻ＴNにおける視野の視線方向ベクトル（視点から視野の中心へ向かうベクトル）の差を、ＴN-nにおける視点位置を基準にしたパン（垂直軸周りの左右回転）、ティルト（左右軸（水平軸）周りの上下回転）、ロール（視線方向ベクトル周りの回転）に分解することができる。それぞれの回転角度を、θpan、θtilt、θrollとする。
【００７４】
ここで、視野の横方向（水平方向）の画角をφfovH、映像の幅をＷピクセルとし、視線方向ベクトルが水平方向にθpan回転した場合を考える。この場合、視野中心付近にあるオブジェクトは映像の中で、例えば、下記式（１）で表されるピクセル数ＤHだけ横方向に移動する。
【００７５】
【数１】
0005652037.tif 000002
図５Ａは、時刻ＴNにおける視線方向ベクトルおよび視野と映像の関係、および映像の一例を示す図である。図５Ａの上側は、映像の投影面に垂直な面における視線方向と視野の一例を表す図である。図５Ａの下側は、時刻ＴNにおける映像の例を示す。図５Ｂは、時刻ＴN-nにおける視線方向ベクトルと平行移動された映像の関係、および平行移動された映像の一例を示す図である。図５Ａに示す映像は、視線ベクトルの水平方向の回転によって、図５Ｂに示すように、視線ベクトルの移動方向と逆方向へ、視線ベクトルの移動量に対応する映像上の長さ（ＤHピクセル）だけ平行移動される。すなわち、視線ベクトルが垂直軸を中心に時計周りにθpanだけ回転すると、映像の投影面において表示するべき範囲は、線Ｓ１で挟まれた範囲から点線Ｓ２で挟まれた範囲にずれる。映像補正部３は、このずれにあわせて、映像を平行移動させることができる。
【００７６】
同様に、視野の縦方向（垂直方向）の画角をφfovV、映像の高さをHピクセルとし、視線方向ベクトルが垂直方向にθtilt回転した場合を考える。この場合、視野中心付近にあるオブジェクトは映像の中で、下記式（２）で表されるピクセル数Ｄvだけ縦方向に移動する。
【００７７】
【数２】
0005652037.tif 000003
従って、ＴN-n時点の映像を、視野中心の移動と逆の方向に、横にDH、縦にDVだけ平行移動すれば、視野中心のオブジェクトの画面内での位置をＴN時点のものと一致させることができる。さらに、θrollが0でなければ、ＴN-n時点の映像を映像中心周りにθrollだけ回転させることにより、視野中心のオブジェクトの画面内の向きもＴN時点のものと一致させることができる。これらにより、視野中央付近のオブジェクトが、操作入力に正しく対応して画面内を動くことになる。
【００７８】
上記の補正では、補正後の映像は、厳密には視野中心付近についてのみ正しく、それ以外の部分については近似となっている。この近似でも違和感を低減する効果が得られるが、より近似の精度を高めるためには、映像を平面への投影ではなく、円柱または球面への投影として捉えて処理を実行する方法がある。映像補正部３は、例えば、球面または円柱などの三次元空間における投影面に貼り付けられた画像を表すデータを、映像として受け取り、視野の変化に応じて補正した上で、球面の画像を平面に投影した映像を出力することができる。
【００７９】
図６Ａおよび図６Ｂは、映像を球面への投影として捉えて処理する場合の、時刻ＴNおよび時刻ＴNにおける視線方向ベクトルおよび視野と映像の関係、および映像の一例を示す図である。図６Ａおよび図６Ｂにおいて、上側は、投影面に垂直な面における視線方向ベクトルおよび視野の例を示し、下側は、映像の例を示す。
【００８０】
図６Ａおよび図６Ｂに示す例では、映像補正部３は、平面上での平行移動ではなく、投影面である円柱面や球面上での映像を移動させる。図６Ａに示す、円柱または球面などの三次元の投影面に貼り付けたＴN-n時点の視野（２本の線Ｓ１で挟まれる範囲）の映像を、図６Ｂに示すように、ＴN時点の視野（２本の点線Ｓ２で挟まれる範囲）にあうように球面または円柱面上を移動させる。移動量は、ＴN-n時点の視線ベクトルとＴN時点の視線ベクトルとの角度により決定することができる。あるいは、映像補正部３は、球面または円柱面に貼り付けられた映像のうち、映像生成後に更新された新たな表示すべき視野（例えばＴN時点の視野）の範囲の映像を取り出して、補正後の映像として出力してもよい。
【００８１】
球面または円柱面上の映像を平面の映像に変換する処理は、映像補正部３が実行してもよいし、映像補正部３の外部に設けられた専用プロセッサが実行してもよい。このように球面または円柱面上で移動後の映像を再度平面に投影することでＴN時点の近似映像を生成することができる。
【００８２】
なお、視野の回転がパンだけであれば投影面は円柱とすることができるが、ティルトやロールがあるなら球面で処理を行うことが好ましい。また、投影面は、球面または円柱面に限られず、例えば、立方体や直方体、その他の３次元空間における面であってもよい。このように、映像の変形処理を三次元で行うと計算負荷が高くなるが、例えば、昨今の標準的なグラフィクス用ハードウェアにおけるテクスチャマッピングの能力を活用すれば負荷を低減することができる。
【００８３】
（視野並進の補正）
視野が並進する場合（特に前後に移動する場合）には、視野が回転する場合に比べて、操作入力に対して映像が遅れていることはユーザに気付かれづらい。そのため、視野の回転についての補正を行うだけでも映像の違和感を低減する効果は得られる。
【００８４】
視点位置の視線方向と同じ方向の移動すなわち、前後移動について映像の補正を行う場合には、映像補正部３は、映像の拡大縮小により補正を行うことができる。例えば、映像生成後の補正を開始する時刻ＴNで、映像生成開始の時刻ＴN-nよりも視点位置が視線方向前方へ進んでいた場合、映像補正部３は、その移動距離に応じて映像を拡大することができる。
【００８５】
このときの拡大率は、奥行き方向（視線方向）のどの距離に着目するかに依存する。つまり、近くのオブジェクトに着目すればより拡大率を大きくすることが好ましく、逆に遠くに着目すれば拡大率を小さくすることが好ましい。このように、全ての距離のオブジェクトに対して正しい拡大率というものは存在しない。そのため、アプリケーションの特性に応じてもっとも違和感が少なくなるように、あらかじめ着目する距離（基準となる距離）を決め、メモリ等に記録しておくことができる。例えば、シミュ−ション装置がドライビングシミュレータであれば、仮想世界の視野前方において最も近い距離にある建物を基準（距離にして例えば十数メートル）にすることが考えられる。基準とする距離をD、視野の前方への移動距離をdとすると、拡大率Mは、例えば、下記式（３）を用いて計算できる。
【００８６】
【数３】
0005652037.tif 000004
上下や左右移動など、視線方向に垂直な方向の視野移動について補正を行う場合には、映像の上下または左右への平行移動により補正を行うことができる。この場合も、映像補正部３は、補正量は着目する基準距離を決めてから、平行移動の量を決定することができる。例えば、基準とする距離をD、視野の右方向への移動距離をd、視点から映像の投影面までの距離をhとすると、映像を投影面上で左方向に平行移動する量sは、例えば下記式（４）により計算することができる。左への移動や上下の移動についても同様に補正量を計算することができる。この場合、映像補正部３は、視野の移動方向と逆の方向にｓだけ映像を平行移動させる。
【００８７】
【数４】
0005652037.tif 000005
以上、補正処理の具体例を説明したが、映像補正部３による補正処理は、上記例に限定されない。例えば、映像補正部３は、バッファメモリに記録された描画すべき視野の映像のうち、映像生成後に変化した視野に対応する領域のアドレスを特定し、この領域の映像を取り出して、表示する映像として出力するといった補正処理を実行することもできる。
【００８８】
［描画視野算出の具体例］
上記のように映像補正によってＴN時点の近似映像を生成すると、映像を移動した後に未描画領域が発生する場合がある。例えば、ＴN時点の視野の範囲が、ＴN-n時点の視野に基づいて決定された描画すべき視野の範囲を超えている場合、超えた領域については映像データが生成されていないので未描画領域となる。視線移動が大きい場合にはこの未描画領域も大きくなり、それが別の違和感を引き起こしかねない。また、補正によって表示されなくなる領域については、逆に描画が無駄になってしまう。
【００８９】
例えば、図７Ａは、映像生成の時点ＴN-nにおける表示すべき視野をそのまま描画し、ＴN時点の表示すべき視野を基に補正した場合の補正前後の映像例を示す図である。図７Ａに示す例では、補正後の映像（下側の映像）は、視野の変化に応じて左へ平行移動しているため、右側が未描画領域Ｐとなっている。  そこで、第１および第２の実施形態では、描画視野算出部１を設けることにより、描画すべき視野の範囲を可変にしている。例えば、描画視野算出部１は、映像補正時点における表示すべき視野がなるべく含まれるように、映像生成時において描画すべき視野を計算し、映像生成部２に、その時点の表示すべき視野より余分に描画させることができる。これにより、補正によって映像が移動されても、余分に描画した分が新たに画面内に入ってくるため未描画領域が発生しにくくなる。また、補正によって不要になりそうな部分を描画しないよう制御することもできる。そのため、描画処理の無駄を減らすことができる。
【００９０】
例えば、図７Ｂは、映像生成の時点ＴN-nにおける表示すべき視野を基にそれより広い描画すべき視野を計算してその視野の範囲を描画し、ＴN時点の表示すべき視野を基に補正した場合の補正前後の映像例を示す図である。図７Ｂに示す例では、補正後の映像（下側の映像）は、視野の変化に応じて左へ平行移動している。しかし、平行移動分をカバーする程度に、元の視野の範囲Ｒ１より広い範囲Ｒ２について描画しているので、未描画領域は発生していない。
【００９１】
描画視野算出部１において描画すべき視野を求めるタイミングにおいては、映像補正時点は将来にあたる。そのため、将来の補正時点における表示すべき視野が、いかなる場合でも確実に描画すべき視野に含まれるようにすることは困難である。そこで、シミュレータにおける視野移動の傾向に基づいて、描画開始時点における表示すべき視野を基に描画すべき視野を求めるためのデータを予め決めてメモリに記録しておくことができる。例えば、描画開始時点の表示すべき視野から描画すべき視野への拡張の方向と、拡張の程度を示すパラメータを予めメモリに記録しておくことができる。このパラメータを用いて、描画視野算出部１は、シミュレータの特性に応じた視野移動範囲を予測し、適切な描画範囲を設定することができる。例えば、ドライビングシミュレータにおいては一般に視野が横方向にのみ移動し、視野の上下移動は主に車の揺れによるものに限られる傾向がある。この傾向を考慮して、描画すべき視野は、表示すべき視野を主に横方向に拡張することによって求めることができる。例えば、描画視野算出部１は、拡張は横方向の画角を一定量増やすことによって行っても良いし、画面上で描画範囲を横方向に一定ピクセル数だけ拡げるようにして行っても良い。画角や描画範囲の拡張方向および拡張量は、予め記録しておくこともできる。予め記録される拡張量は、例えば、シミュレーション部５の計算結果から、視野の横方向の動きの最大値を見積もることで計算することができる。
【００９２】
（視野の予測）
描画の無駄を減らすためには、表示すべき視野がどの方向に移動するかを予測して、それが含まれて、かつ、なるべく狭くなるように描画すべき視野を求めることが望ましい。そのために、描画視野算出部１において、例えば、下記の処理により、映像補正が行われる時刻と、その映像補正の時刻における表示すべき視野とを予測することができる。
【００９３】
例えば、描画部２２ａ、２２ｂ、２２ｃでの映像生成にかった時間の履歴を記録しておき、描画視野算出部１が、それらを用いて予測計算を行って映像生成にかかる時間の予測値を計算することができる。次の映像補正が行われる時刻については、予測計算を行って求めた値に、映像の圧縮伸張と送受信にかかる時間と、現在時刻を加算することで求めることができる。予測計算としては、例えば、描画にかかった時間の履歴データを、線形関数や多項式関数を当てはめる方法がある。あるいは、描画にかかった時間の値の平均値を、予測値として計算することもできる。
【００９４】
映像補正時点での表示すべき視野については、表示すべき視野の履歴を記録しておき、それらの履歴を用いて予測計算を行い、上記で求めた映像補正の予測時刻における視野を求めることができる。表示すべき視野は、例えば、視点位置、視線ベクトル、視野角、投影パラメータ等の要素の組み合わせで定義することができる。そのため、表示すべき視野を決める要素の値の時系列データを履歴として記録することができる。予測計算としては、例えば、履歴に対して線形関数や多項式関数を当てはめる方法がある。また、表示すべき視野を決める各要素の値の平均値を、それぞれ予測値として計算することもできる。このように、視野は視点位置、視線ベクトル、視野角などの要素の組み合わせによって表すことができるので、それぞれの要素について個別に予測値を計算することもできる。
【００９５】
精度のよい予測が計算できるのは、ある程度時間的に長いスパンにおける視野の変化であり、短時間の素早い視野の動きを正確に予測することは難しい。従って、例えば、数秒間単位の大まかな動きに対しては、描画視野算出部１による視野の予測計算によって追従し、無駄の少ない描画すべき視野を設定することができる。１秒前後やそれ以下の素早い視野の動きに対しては、描画すべき視野の内部で映像補正を行えるよう、描画視野算出部が描画すべき視野を設定することによってレスポンス良く対応することができる。
【００９６】
例えば、描画視野算出部１は、映像生成時の表示すべき視野を全ての方向に一定量拡張した視野に、過去の表示すべき視野の履歴を基に予測計算された視野を加えた範囲の視野を、描画すべき視野として算出することができる。このように、表示すべき視野を全ての方向に一定量拡張することで、短時間の素早い視野の動きをカバーし、かつ、履歴から予測される視野の範囲で、比較的長い時間の視野の動きをカバーすることができる。
【００９７】
なお、上記の補正処理および描画視野算出処理は、上記第１の実施形態にも適用することができる。
【００９８】
（補正を行う部分と行わない部分への分割）
表示すべき視野の中に、視点位置からの距離が大きく異なる複数のオブジェクトが含まれる場合、映像補正部３が、複数のオブジェクトを含む映像を一括して補正すると、映像中の複数のオブジェクト画像を同じ量だけ動かすことになる。その結果、却って違和感が増すことがある。例えば、ドライビングシミュレータにおいて、表示すべき視野の中に自車の車体（内装を含む）のように外界とは異なる動きをする部分が含まれる場合、映像の補正を行うと視野に対して車体や内装が外界と一体になって動いてしまう。その結果、却って違和感が増すことがある。
【００９９】
そこで、表示すべき視野に含まれる仮想世界の一部のオブジェクトの映像を生成する映像生成部と、前記一部のオブジェクトとは視点からの距離が異なる他のオブジェクトの映像を生成する第二の映像生成部とを設けることができる。そして、映像生成部で生成された映像を補正した上で、第二の生成部で生成された映像と合成することができる。これにより、視点からの距離が異なるオブジェクトが含まれる映像であっても違和感を増すことなく、補正することができる。本実施形態では、一例として、サーバ１２が映像生成部２を有し、クライアント１３が第二の映像生成部の一例であるローカル描画部１１ａを有する構成となっている。
【０１００】
例えば、上記ドライビングシミュレータでは、外界と車体とを分けて描画し、補正を行った後に両者を合成することができる。図８は、仮想世界の複数のオブジェクトが分けて描画された後に合成される映像の例を示す図である。図８に示す例では、車体のオブジェクトを前景Ｚとして描画したフレームＰ２と、外界の建物を近景Ｋとし山を遠景（背景）Ｅとして描画したフレームＰ１とがそれぞれ独立して生成されている。フレームＰ１は、映像補正部３により補正された後、フレームＰ２と合成される。その結果、フレームＰ３が生成される。
【０１０１】
図８に示す例の場合、仮想世界の主体である外界をサーバ１２側の描画部２２で描画し、描画負担の小さい車体をクライアント１３側のローカル描画部１１ａで描画することができる。このようにすると、サーバ１２側の映像は遅延するので補正する必要があるが、クライアント１３側の映像については映像生成にかかる時間が短く映像伝送による遅延の影響も少ないために補正する必要がない。
【０１０２】
本実施形態では、クライアント１３に、ローカル描画部１１ａが設けられる。また、例えば、車体を描画するためのモデルデータやテクスチャデータを含むローカル描画データがクライアント１３に記録される。なお、ローカル描画データはあらかじめクライアント１３側に記録しておいてもよいし、サーバ１２と接続した後で必要な分だけサーバ１２からダウンロードしてもよい。シミュレーション部５によって更新されたオブジェクトの情報（位置、姿勢、属性など）は、サーバ１２の映像生成部２と、クライアント１３のローカル描画部１１ａへ送られる。一例として、映像生成部２へは、近景および遠景の映像を生成するための外界に関する情報が、ローカル描画部１１ａへは車体と内装を描画するための情報が送られることになる。ローカル描画部１１ａへ送られる更新情報は、更新情報送信部１５および更新情報受信部２５を通して送られる。更新情報は、例えば、ローカル描画部１１ａの描画対象のオブジェクトの属性のうち更新された属性を示すデータとすることができる。更新情報のデータサイズは、映像情報に比べて、送受信の遅延時間は無視できる程度である小さいことが好ましい。
【０１０３】
ローカル描画部１１ａは、シミュレーション部５から、視野送信部１６および視野受信部２６を介して送られてきた最新の表示すべき視野と、更新情報送信部１５、更新情報受信部２５を介して送られてきたローカル描画データとを用いて映像生成を行う。そして、合成部９が、映像補正部３によって補正された映像と、ローカル描画部１１ａによって生成された映像とを重ね合わせて合成する。ローカル描画部１１ａは、描画を担当するオブジェクトが写っていない映像の領域（図８の例では、車体以外の領域）を透明としておくことにより、分担して描画した結果を重ね合わせることによって一つの映像に合成することができる。図８の例では、車体と、その向こう側に見える外界とが正しく合成される。
【０１０４】
図８に示す車体と外界に分ける例のように、オブジェクトを前後に交わらないように分けられる場合には、合成部９による映像の合成は単純な重ね合わせでよい。しかし、車体の上に乗ってくるオブジェクトがある場合など、奥行き方向に重なりが出てくると、単純な重ね合わせによる合成では正しく合成できない場合が出てくる。その場合、合成部９は、それぞれの映像を描画する時に用いられたＺバッファの内容を活用することで、正しい合成が可能になる。Ｚバッファは映像の奥行き方向の情報を記録するメモリ領域である。例えば、描画結果受信部２８および更新情報受信部２５は、それぞれの映像にＺバッファの内容を付属させて受信し、合成部９では、各ピクセルのＺバッファの値を比較して手前にある方のピクセルの色を採用しながら重ね合わせ合成を行うことができる。サーバ１２側で描画した映像については、合成の前に、映像そのものと全く同じ補正をＺバッファの内容についても行うことができる。これにより、単純な重ね合わせだけでは奥行き方向の位置関係を正しく表示できない場合でも、適切に映像を合成することができる。
【０１０５】
なお、本実施形態における第二の映像生成の処理および合成処理の例は、上記第１の実施形態にも適用することができる。
【０１０６】
［遅延の隠蔽］
図９は、図３に示すシミュレーションシステムの動作例を示す処理フロー図である。図９に示す例では、シミュレーション部５が、操作入力があった時点ＴN-4、ＴN-3、ＴN-2、ＴN-1、ＴNで仮想世界のオブジェクトデータの更新と、表示すべき視野の更新を実行する。なお、シミュレーション部５は操作入力のタイミングとは別に、一定周期で更新処理を実行してもよい。
【０１０７】
例えば、時刻ＴN-4における更新処理（Ｏｐ１）においてシミュレーション部５は、更新した表示すべき視野を描画視野算出部１へ通知する。描画視野算出部１は、シミュレーション部５から表示すべき視野を受けると、描画すべき視野の計算（Ｏｐ２）を開始する。描画視野算出部１が計算した描画すべき視野は、描画部２２ａに渡され、描画部２２ａが描画すべき視野の映像を生成する（Ｏｐ３）。生成された映像は、映像エンコーダ１７による圧縮、描画結果送信部１８によるクライアント１３への送信、クライアント１３の描画結果受信部２８による受信、映像デコーダ２７による伸長を経て（Ｏｐ４）、映像補正部３へ渡される。映像補正部３は、映像を受けると、ほぼ同時に、Ｏｐ５においてシミュレーション部５により時刻ＴNにおいて更新された最新の表示すべき視野も受け取る。映像補正部３は、最新の表示すべき視野の範囲が表示されるよう映像を補正する（Ｏｐ６）。
【０１０８】
図９に示す処理では、実際には、時刻ＴN-4におけるシミュレーション部５の更新処理開始から、映像補正部３による補正完了までの時間ＴＤ１だけ遅延が発生している。しかし、映像補正部３で補正された映像は、時刻ＴNにおいて更新された表示すべき視野の映像に近いものとなっている。そのため、補正後の映像を見たユーザが感じる遅延、すなわち見かけの遅延は、時刻ＴNから補正完了までの時間ＴＤ２になる。
【０１０９】
このように、本実施形態では、映像の生成や転送にある程度の遅延があっても、ユーザの操作入力に対して映像が遅れずに応答しているように見せかけることができる。そのため、映像の遅延による違和感を大幅に低減することができる。これにより、例えば、並列描画を行う大規模なサーバで映像生成を行い、映像をクライアントからネットワークを介してリアルタイムで利用するシステムを構築することが可能になる。すなわち、高品質あるいは大量のデータを用いた映像生成が可能だが遅延が避けられないシミュレータにおいて、これまで困難であったリアルタイム・高レスポンスでのネットワークを介した利用が可能になる。
【０１１０】
例えば、仮想世界の映像生成をサーバコンピュータで行い、結果の映像を、ネットワークを通じてクライアントコンピュータへ転送する構成を採ることにより、高い描画性能や大量のデータをサーバコンピュータ側に集約することができるようになる。これにより、クライアントコンピュータに必要とされる性能が低減され、シミュレータを多数の利用者へ展開することが、コストや手間の面で容易になる。オンラインの３Dゲームであれば、各プレーヤの用意するコンピュータが安価で標準的な性能のものであっても、その性能を超えた高品質な映像を楽しめるようになる。
【０１１１】
このようなネットワークを介して利用可能なシミュレータでは、サーバコンピュータが描画した映像を、フレームレートの低下を防ぐためにコーデックによる圧縮・伸張を行いつつネットワークを通じて伝送すると、ユーザの操作に対する映像の遅延を避けることができない。本実施形態によれば、この遅延を隠蔽し、出力の映像の違和感を低減することができる。そのため、操作に対する素早いレスポンスが必要なアプリケーションをネットワーク経由で利用することが可能になる。また、オンラインの３Dゲームについても、高品質な描画をサーバコンピュータで行い、クライアントで映像を表示する構成が実現できる。
【０１１２】
［コンピュータ構成］
図３に示すシミュレーションシステムのサーバ１２およびクライアント１３は、それぞれ独立したコンピュータにより構成することができる。それぞれのコンピュータは、第１の実施形態と同様、汎用コンピュータであってもよいし、専用機でもよい。また、コンピュータは、ＣＰＵのほか、ＤＳＰのような画像処理専用プロセッサを含んでもよい。例えば、サーバ１２の映像生成部２における描画部２２ａ、２２ｂ、２２ｃは、それぞれ３台の独立したプロセッサで構成することができる。
【０１１３】
また、シミュレーション部５、描画視野算出部１と、映像生成部２に、映像生成部２が生成した映像と、前記映像の前記描画すべき視野の基となった前記表示すべき視野と、前記映像の生成開始後に計算された新たな表示すべき視野とを、映像補正部３を有するクライアント装置へ送信する送信部を備えた模擬映像生成装置も本発明の実施形態に含まれる。
【０１１４】
さらに、シミュレーション部５を有するサーバ装置から、映像生成時の表示すべき視野より広い視野である描画すべき視野と、仮想世界を表すデータを基に生成された当該描画すべき視野の映像と、当該映像の生成開始後に計算された新たな表示すべき視野とを受信する受信部と、映像補正部３と、映像補正部３で補正された映像を表示する表示部４（出力部の一例）を備えた模擬映像表示装置も本発明の実施形態に含まれる。
【符号の説明】
【０１１５】
１      描画視野算出部
２      映像生成部
３      映像補正部
４      表示部
５      シミュレーション部
６      入力部
７      描画視野保持部
８      表示視野保持部
９      合成部
１０、１０ａ    シミュレーション装置
１１    第二の映像生成部
１２    シミュレータサーバ（サーバ装置）
１３    シミュレータクライアント（クライアント装置）
【図１】
0005652037.tif 000006
【図２】
0005652037.tif 000007
【図３】
0005652037.tif 000008
【図４Ａ】
0005652037.tif 000009
【図４Ｂ】
0005652037.tif 000010
【図５Ａ】
0005652037.tif 000011
【図５Ｂ】
0005652037.tif 000012
【図６Ａ】
0005652037.tif 000013
【図６Ｂ】
0005652037.tif 000014
【図７Ａ】
0005652037.tif 000015
【図７Ｂ】
0005652037.tif 000016
【図８】
0005652037.tif 000017
【図９】
0005652037.tif 000018