首页 / 专利库 / 显示技术 / 虚拟现实 / 虚拟环境 / 虚拟现实世界 / Virtual reality system and virtual reality world generation method of virtual reality image

Virtual reality system and virtual reality world generation method of virtual reality image

阅读:35发布:2021-01-23

专利汇可以提供Virtual reality system and virtual reality world generation method of virtual reality image专利检索,专利查询,专利分析的服务。并且PURPOSE: To provide a virtual reality system which makes an operator feel as if he were in the virtual reality worlds of virtual reality images. CONSTITUTION: The images are generated on a display screen 60 in response to the actions of an operator wearing a helmet device 28 and also to a control signal. The image data are extracted out of a memory circuit of a microprocessor 76 and a display circuit is controlled. Then a virtual reality image 62 is changed, so that the operator feels as if he were in the image 62 and concerned in it. The 1st and 2nd objects in the virtual reality worlds 74 are graphically shown on the displays 60 and 68, and a 1st dividing face is decided between both objects. Then a 2nd dividing face is decided in response to the object moving across the 1st dividing face. The 1st and 2nd objects are selectively turned obscure according to the relative position to a prescribed observation point, and the movements of objects occurring in the worlds 74 are graphically displayed on both displays 60 and 68.,下面是Virtual reality system and virtual reality world generation method of virtual reality image专利的具体信息内容。

【特許請求の範囲】
  • 【請求項1】 オペレータが仮想現実像の仮想現実世界に居るように感じる仮想現実システムにおいて、該システムは、 ディスプレイスクリーンを含み仮想現実像としてイメージデータを表示するディスプレイ回路と;前記イメージデータを格納するメモリと;前記ディスプレイスクリーンを含みオペレータが装着するヘルメット装置であって、オペレータの動作に応答して前記ディスプレイスクリーン上にイメージデータを発生するヘルメット装置と;前記イメージデータを前記メモリから抽出し前記イメージデータにより前記ディスプレイ回路を制御してオペレータがあたかも前記仮想現実世界内に居てそれに関わっているかのように前記仮想現実像を変化させる前記メモリに関連するマイクロプロセッサ;を含む仮想現実システム。
  • 【請求項2】 オペレータが仮想現実世界に居るかのように感じる仮想現実システムを使用して仮想現実像の仮想現実世界を生成する方法において、該方法は、 該ディスプレイ回路に付随するディスプレイスクリーン上に仮想現実像としてのイメージデータを表示し;前記イメージデータをメモリ内に格納し;前記ディスプレイスクリーンを含むヘルメット装置をオペレータに装着し;前記ヘルメット装置のオペレータの動作に応答して前記ディスプレイスクリーン上にイメージデータを発生し;前記メモリから前記イメージデータを抽出し;前記ディスプレイ回路を制御してあたかもオペレータが前記仮想現実像内に居てそれに関わっているかのように前記仮想現実像を変化させる;ステップを含む仮想現実世界生成方法。
  • 说明书全文

    【発明の詳細な説明】

    【0001】

    【産業上の利用分野】本発明は一般的に人工環境を発生するコンピュータサイエンスの応用に関し、特にユーザがコンピュータのメモリ内に存在する環境を探査することができる低コスト仮想現実システムおよび方法に関する。

    【0002】

    【従来の技術】仮想現実システムの設計および用途はコンピュータサイエンスの新しい未開分野である。 “仮想現実システム”の目的はコンピュータのメモリ内のモデルとしてしか存在しない環境をユーザが探査できるようにすることである。 これらの環境は(例えば、ラスベガスの街路や建物内部等の)現実世界のモデルであったり、(例えば、分子の内部や銀河系の中心等の)純粋な想像世界もしくは人間が到達できない世界であったりする。

    【0003】代表的な仮想現実システムはコンピュータ、入装置および出力装置により構成される。 コンピュータは仮想世界のモデルを維持しユーザの観点からその外観を計算する。 出力装置はユーザの頭部に取り付ける装置とされることが多く、ヘルメットに搭載されたディスプレイやスクリーンもしくは一対のゴーグルとすることができる。 ヘルメットを装着することにより、ユーザは視覚上仮想世界へ巻き込まれる。 また、ヘルメットにはユーザの頭部位置およびユーザが眺めている方向をコンピュータが知ることができるようにする追跡装置も取り付けられている。 代表的なシステムにおける入力装置には簡単なジョイスティックからユーザの動作およびゼスチュアを監視できるグローブや他の装身具が含まれる。

    【0004】仮想現実システムに関する主な問題点は高価であり通常代表的な個人消費者の娯楽費の範囲を越えることである。 大概のシステムは3次元世界モデルの2
    次元ビューを表現する強力なコンピュータを使用している。 大概のシステムには1個以上の高価なグラフィック発生器および1組以上の高価なゴーグルが含まれている。 さらに利用可能な公知の装身装置も平均的な消費者が購入できないほど高価である。 公知の仮想現実システムは高価であるため、それを購入できるのは会社、大学もしくは政府機関だけのようである。 したがって、今日平均的消費者は実際上仮想現実システムを利用することができない。

    【0005】

    【発明が解決しようとする課題】その結果、代表的な消費者の娯楽費内の価格で製作可能な仮想現実システムに対するニーズがある。

    【0006】現在の最も安価な仮想現実システムよりも低いコストでしかも今日の高価なシステムの大概の仮想現実ケーパビリティを有する仮想現実システムに対するニーズがある。

    【0007】さらに低コストとすることにより、仮想現実システムゲームおよび教育応用プログラムを介して平均的消費者が教育および娯楽の機会を実現することができるようにする仮想現実システムに対するニーズがある。

    【0008】さらに、プレーヤに3次元世界を移動している印象を与える方法およびシステムを提供すれば、大きな制約が克服されて実行可能な仮想現実システムが得られる。 これには、まずプレーヤからの入力の関数として3次元透視像を発生してディスプレイ上で変化させる方法が必要である。 また、それにはプレーヤが像ディスプレイ内で“自分で移動する”方法も必要となる。 発展性のある仮想現実システムはこのような動作をリアルタイムで実施できなければならない。 さらに、経済的な仮想現実システムとするには、これらの動作を容易に入手できる低コストマイクロプロセッサ部品により実施できなければならない。

    【0009】したがって、プレーヤの動作を3次元仮想現実世界内で実行する経済的な方法およびシステムに対するニーズがある。

    【0010】低コスト仮想現実システムに対して、プレーヤの入力に従って透視像を変化させる3次元透視像を発生する方法およびシステムに対するニーズがある。

    【0011】プレーヤが低コスト仮想現実システムの3
    次元像ディスプレイ内で“自分で移動”できるようにする方法およびシステムに対するニーズがある。

    【0012】さらに、容易に入手できる低コストマイクロプロセッサ部品により前記目的を達成できる方法およびシステムに対するニーズがある。

    【0013】

    【課題を解決するための手段】したがって、本発明により従来の仮想現実システムおよび方法に付随する欠点および制約が克服もしくは低減される。

    【0014】本発明の一つの特徴はオペレータがコンピュータにより発生される世界の中に居るかのように感じる仮想現実システムである。 システムイメージデータを仮想現実像として表現するディスプレイサブシステムを備えている。 ディスプレイ回路に付随するメモリにイメージデータが格納される。 オペレータが装着するヘルメット装置にはディスプレイサブシステムが含まれている。 ヘルメット装置のオペレータの動作に応答して、マイクロプロセッサがオペレータに表示される仮想環境内の視野を決定する。 マイクロプロセッサは仮想世界を表わすデータをメモリから抽出し仮想現実像のディスプレイを制御してあたかもオペレータが仮想現実像内に居てそれと関わっているかのようにする。 実施例では、仮想現実システムはさらに所定のオペレータ制御入力セットに応答して仮想環境を操作するイメージデータ入力回路を備えている。

    【0015】本発明のもう一つの特徴は仮想現実環境内の物体の相対位置および運動をモデル化する方法である。 この方法には仮想現実環境内の第1および第2の物体をグラフィックディスプレイ上にグラフィック表示するステップが含まれる。 グラフィック表示は仮想現実環境内の所定の観察点に対する第1および第2の物体の相対位置に従って第1および第2の物体を不明瞭とする。
    この方法には第1および第2の物体間の分割面を決定することが含まれる。 次に、分割面上を横切移動する第1
    および第2の物体に応答して第1および第2の物体間の第2の分割面が決定される。 この方法では、次に仮想現実環境における第1および第2の物体がグラフィックディスプレイ上にグラフィック表示される。 これは仮想現実環境内の所定の観察点からのこれら各物体の相対位置に従って第1および第2の物体を選定的に不明瞭とすることにより行われる。 これは第2の分割面に対する物体の位置に従って行われる。

    【0016】本発明の方法では、物体の数および所定の観察点に対する相対位置に応じてさまざまな分割面を発生することができる。 本発明の方法の効果はプレーヤが仮想現実世界内で動作できるようにすることであるが、
    3次元分割データベースと移動体アルゴリズムが組み合されている。 本発明の2分割データベースにより仮想現実システムディスプレイにいずれを表現すべきかまたいつ表現すべきかという選択問題が解決される。

    【0017】本発明の技術上の利点はユーザの娯楽やゲームだけでなく他の多くの分野に応用できる、3次元仮想現実世界でのプレーヤの移動を実現する経済的な方法およびシステムが提供されることである。 例えば、教育に関しては、建築科の学生は本発明のシステムを使用して自分が設計する建物や構造体の仮想現実世界モデルへ入ることができる。 同様に、本発明を使用して医科の学生は仮想現実システムにより脳モデルを“巡回”することができ、化学者は複雑な分子の3次元モデルを“歩き廻ったり”“内部へ入る”ことができる。 本発明により低コスト仮想現実システムが提供されるため、従来よりも遙かに多くの個別応用が実現される。

    【0018】本発明のもう一つの技術的利点は多数のオペレータが一つの仮想現実環境内に共存できることである。 その結果、学生と先生は同じ時間に同じ仮想現実世界内に居ることができる。 同様に、例えば旅行産業では、潜在的な旅行者および旅行代理店はディズニーワールドのモデルの案内旅行を行って休暇計画をたてることができる。

    【0019】本発明のもう一つの重要な技術上の利点は代表的な消費者に対して仮想現実システムケーパビリティへの道が開かれることである。 公知の低廉な仮想現実システムよりも低準のコストで仮想現実システムを提供することにより、本発明は平均的消費者の予算的ニーズに応えるものである。 しかしながら、同時に本発明の低コスト仮想現実システムはより高価な仮想現実システムで利用できるのと同じ大概のケーパビリティを消費者に提供する。 例えば、本発明はフライトシュミレータアルゴリズム等の公知の移動体アルゴリズムと効果的に組み合せて、仮想現実システムへのプレーヤ入力に従って透視像を変化させる低コスト3次元像発生方法を得ることができる。

    【0020】

    【実施例】 システム概要図1に2人のプレーヤ22、24が使用している仮想現実システム20の実施例を示す。 各プレーヤはそれぞれヘルメットもしくはゴーグル26、28を装着しており、かつ入力装置を使用している。 例えば、プレーヤ2
    2は仮想現実世界における自分の動作をジョイスティック30を介して制御し、プレーヤ24は自分の動作をパワーハンドアタッチメント32を介して制御する。 ゴーグル26およびジョイスティック30はケーブル34を介してヘルメットカード36に接続されている。 同様に、ゴーグル28およびパワーハンドアタッチメント3
    2はケーブル38を介してヘルメットカード40に接続されている。 ヘルメットカード36、40はそれぞれスロット42、44においてシャーシ58に嵌合され、付加ユーザに対する付加カード46、48を所望によりスロット50、52へ嵌合することができる。

    【0021】図1の例では、カートリッジ54がシャーシ58のスロット56に装填されてプレーヤ22、24
    が興じるゲームが提供される。 実施例では、カートリッジ54はプレーヤが任意数のゲームを選定できるものとすることができる。 例えば、図19および図20には実施例により使用できる“グレース”と呼ばれるゲームが記述されている。 図1の実施例では、プレーヤ22はゴーグル26を介して環境62を含むディスプレイ60を観察する。 環境62内で、代理プレーヤ64はプレーヤ22がジョイスティック30を介して送出する指令に従って動作を行う。 例えば、環境62内で、プレーヤ22
    は代理プレーヤ64に迷路防壁66を通り抜けるよう指示する。

    【0022】同時にプレーヤ22はゴーグル26のディスプレイ60上の環境62を観察し、プレーヤ24はゴーグル28内のディスプレイ68を観察する。 プレーヤ24はプレーヤ22が観察するのと同じ環境62を観察する。 しかしながら、プレーヤ24は例えば代理プレーヤ66を追跡して防壁72を通り抜ける代理プレーヤ7
    0を制御する。 プレーヤ24はパワーハンドアタッチメント32およびゴーグル28の移動により代理プレーヤ70を制御する指令を送出する。 その結果プレーヤ2
    2、24は実施例の仮想現実システム20が生成する仮想現実世界74内で行動することになる。

    【0023】 システムハードウェア図2に実施例の仮想現実システムの全体アーキテクチュアの概念ブロック図を示す。 図2に従って、実施例はバス78を介してメモリ回路80と連絡されバス82を介してROMカードリーダ84と連絡されるプロセッサ7
    6を備えている。 メモリ回路80はバス86を介してR
    OMカードリーダ84とも連絡されている。 ヘルメットボード36、38はそれぞれヘルメット1回路88およびヘルメット2回路90に接続されている。 例えば、ヘルメット1回路は図1のゴーグル26およびジョイスティック30用回路からなり、ヘルメット2回路90はゴーグル28およびパワーハンドアタッチメント32を含むことができる。 実施例のアーキテクチュアはスロット42、44、50、52内のヘルメットカード36、3
    8等の4枚のヘルメットカードに対処する。

    【0024】システムアーキテクチュアに従って、プレーヤは例えばスロット56を介してROMカードリーダ84内へゲームカートリッジ54を挿入することにより仮想現実システムを使用する。 プロセッサ76はROM
    カードリーダを指令して自動的にゲームカートリッジ5
    4を読み取りゲームソフトウェアおよび仮想世界表現をシステムメモリ80へダウンロードする。 次にプロセッサ76はヘルメットボードスロット42、44、50、
    52を調べて何人のプレーヤがゲームに参加しているかを決定する。 実施例では、各ヘルメットは1人のプレーヤだけが使用する。 ゲームプログラムが進行すると、プロセッサ76は例えばヘルメットボード36、38からの入力を読み取る。 入力はプレーヤの頭部位置および(ジョイスティック30やパワーハンドアタッチメント32等の)付属入力装置からのデータを含むプレーヤの現在状態を記述するものである。 プロセッサ76は入力を分析してゲームの状態を適切に更新する。 これには仮想現実世界74のモデルを表わすデータベースの状態を更新することも含まれる。 読取り/更新プロセス中に、
    ヘルメットボード36、38は世界データベースの読取りを禁止される。 データベースの更新後、プロセッサ7
    6は各プレーヤの視点から見た仮想現実世界74を描画開始するよう指示する。

    【0025】ヘルメットボード36、38はゲームの各プレーヤに対して1枚ずつ主シャーシ58内へ挿入される。 図3は並列バス85を介して主ボード59のメモリ80から仮想世界データベースを読み取るヘルメットボードプロセッサ92からなるヘルメットボード36を示す。 主ボード59は図1のシャーシ58内にファイルされている。 ヘルメットボードプロセッサ92はビデオ接続点94を介してプレーヤの立場からの仮想世界図をプレーヤのヘルメットディスプレイに表示する。 バス85
    によりプロセッサ76はヘルメットボード36にも接続される。 ヘルメットボード36を主ボード59のプロセッサ76に接続することによりヘルメットボード36はヘルメットもしくはゴーグル26およびジョイスティック30もしくはもう一つの入力装置からの入力データをシリアルI/O96を介して直接主ボードメモリ80へ送出することができる。 ヘルメットやゴーグル26は簡単なデータストリップ接続を介してヘルメットボード3
    6に取り付けられる。 ヘルメットボードプロセッサ92
    は表現された光景をヘルメット26内のビデオディスプレイ60へ出力する。 ヘルメットボードプロセッサ92
    はプレーヤのヘルメットやゴーグル26に搭載することのできるスピーカやイヤホーンへ送ることができるオーディオ信号も発生する。 実施例では、ヘルメットボードプロセッサ92はプロセッサ76が指示する場合だけ接続点94を介して光景を表示する。

    【0026】図3にはゲームカートリッジ54を受け入れて読み取るROMカードリーダ84も示されている。
    ゲームカートリッジ54はゲーム機構、ヘルメットボード36、38出力解釈、およびデータベース形状の一つ以上の仮想現実世界を含むことができる。

    【0027】図4に実施例の回路の略ブロック図を示す。 パワーグローブ32から開始して、シリアルI/O
    接続点96は配線98へ行きバス100を介して主ボードバス85へ入力信号が送られる。 主ボード入力バス8
    5はI/Oラッチ102を介してバス104へ入力データを送る。 バス104は入力信号を主プロセッサ76へ送る。 入力バス85はデジタルもしくはアナログ入力を与えるデジタルもしくはアナログバスとすることができる。 アナログ入力を使用する場合には、I/Oラッチ1
    02はシリアルポート用マルチプレクサ(MUX)もしくは主プロセッサ76へデジタル入力を与える8ビットバッファラッチとすることができる。 同様に、入力バス104はシリアルデータを使用する場合には1ビットとしパラレル入力を使用する場合には8ビットバスとすることができる。 さらに、アナログデータ入力を使用する場合には、バス106は内部マルチプレクサ用入力バスとして使用することができる。 主プロセッサ76はシステムマルチプレクサコントローラ108へ入力を与え、
    アドレスバス110を介してシステムROMカード54
    へ16ビットアドレス入力を与え、かつ入力データバス112を介して18ビットデータを与える。 データバス112はバス114を介してスイッチ116およびメモリ80へデータ入力を与える。 スイッチ116はバス7
    8からの制御信号に基いて主プロセッサ76により制御されバス114からのデータをバス118を介してメモリ80へ送る。

    【0028】また、主プロセッサ76はGSPリード/
    ライトコントローラ120へリード/ライトコントロール信号を送る。 GSPリード/ライトコントローラ12
    0は各バス122、124、126、128を介してヘルメットカード36、38、46、48へコントロール入力を与える。 さらに、GSPリード/ライトコントローラ120からのバス130を介してメモリ80へ入力が与えられる。 接続点132において、メモリ80はバス130を介したコントロール信号およびスイッチ11
    6からのプロセッサコントロール入力バス118を介したデータ入力を受信する。

    【0029】メモリ80はプロセッサ134およびDR
    AM136を含んでいる。 実施例では、プロセッサ13
    4はテキサスインスツルメンツTMS34010プロセッサにより構成される。 また、メモリ80はバス138
    を介してヘルメットカード36、38、46、48と主データベース信号の通信を行う。

    【0030】各ヘルメットカード36、38、46、4
    8は接続点140において実施例の回路に接続されDR
    AM144へデータ信号を送るプロセッサ142を含んでいる。 DRAM144はRAM(VRAM)146へデータ入力を与えそれはパレット148へ送られる。 パレット148は出力バス98を介して配線へカラーパレットデータを送りそれはビデオ接続点94を介してヘルメット28へも送られる。

    【0031】各ヘルメットカード36、38、46、4
    8はGSPリード/ライトコントローラ120により制御され、バス119からのリード/ライトコントロール信号に応答して関連するヘルメット28へ表示データが送られる。 バス119上の信号は主プロセッサ76から到来して個別の各ヘルメットカード36、38、46、
    48を制御する。 例えば、ヘルメットカード36のプロセッサ142からの出力はビデオRAM(“VRA
    M”)146へ出力を与えるDRAM144に一時記憶される。VRAM146は光景が表示されるRAMでありパレット148がヘルメット28内のディスプレイへビデオ像を表示することができるデータを与える。

    【0032】実施例では、電源150により配線98に接続された入力および出力装置だけでなく全システム回路へ調整された電力が供給される。 さらに、別の実施例ではジョイスティック30等のアナログもしくはデジタル制御装置を含むことができる。 また、ヘルメット28
    はヘルメットの方位を示す入力を仮想現実システムへ与えることができる。 例えば、ヘルメット28は超音波もしくは他の公知の方法によりヘルメットのプレーヤ動作を追跡する追跡装置を提供することができる。 ヘルメット28が実施例の仮想現実システムと通信を行うデータは、プレーヤの頭部位置に関する方位情報であってもヘルメット28のディスプレイ回路への単なる表示データであっても、全てシリアル入出力データとして処理される。

    【0033】実施例では、4人のプレーヤが各ヘルメットカード36、38、46、48への入力を各配線98
    に接続することにより仮想現実システムを使用することができる。 このような場合、配線98およびバス85を介して、主プロセッサ76は1〜4人のプレーヤからの入力を読み取りメモリ80の主データベースに関してどんなニーズを行うべきかを決定する。 主プロセッサ76
    からの信号に応答して、メモリ80のマイクロプロセッサ134は物体を移動させるのに必要な任意の変化を行うかあるいはプレーヤからの指令に応答する。 主プロセッサ76からの入力に従ってデータベースが変化されると、信号がヘルメットカード36、38、46、48へ送られ一つの配線98に接続することができる各ヘルメット28において終局的に表示される。 したがって、例えばパワーグローブ32やジョイスティック30からの入力に応答して、システム内に無限ループが確立されそれは接続されたヘルメットに継続的に表示されてヘルメット28のディスプレイの可視情報を更新する。

    【0034】図5、図6、図7は市販されている部品を使用した実施例を示す詳細回路図である。

    【0035】 システムソフトウェア A. 全体制御フロー図8は実施例の主プロセッサ76
    の基本ソフトウェアフロー図を示す。 ON POWER
    UPステップ152で始って、仮想現実システムはR
    OMカートリッジ54から主プロセッサコードおよびヘルメット26プロセッサコードをダウンロードする。 次に、ステップ152において主プロセッサはカートリッジ54から3次元(3−D)光景データベースをダウンロードする。 これらのステップの目的はメモリ80内へゲーム機構を読み込み、共有メモリ内へ世界データベースを読み込み、仮想世界パラメータを初期化することである。

    【0036】これらの初期化ステップが開始されると、
    実施例はステップ156においてループを開始する。 ループは各アクティブヘルメット28に対して開始される。 すなわち、例えばスロット42においてヘルメットカード36が接続される各ヘルメットに対して各アクティブヘルメットステップ158は入力を読み取る。 ヘルメットが検出されれば、プログラムはそのヘルメットの表示ビットを偽に設定する。 初めてヘルメットが検出されると、実施例の基本ソフトウェアによりプレーヤはゲームへ引き入れられる。 そうでない場合には、ソフトウェアは例えばヘルメットカード36からの最新出力を得る。 ループにおいてヘルメットが検出されない場合には、ヘルメットカードが挿入される筈のスロットがスキップされる。 ステップ160で読み取られる各入力に対して、実施例は観察パラメータを更新してビューア位置およびデータベースを更新する。 本質的に、このステップによりヘルメットからの全入力が解釈されそれに従ってメモリ80内の主データベースが更新される。

    【0037】次に、ステップ162において主プロセッサ76の基本ソフトウェアによりデータベース内の独自のオブジェクトの位置が更新される。 次に、ステップ1
    64において、コントロールプログラムによりデータベースが全てのアイドルヘルメットバッファへコピーされ各ヘルメット26へ情報が送られる。 本質的に、これはヘルメットボード36の表示プロセッサ92内の表示ビットを設定してヘルメット28ディスプレイ上に新しい像を表示するステップからなっている。

    【0038】図9は実施例のヘルメットプロセッサ92
    の基本ソフトウェアフロー図を示す。 主ボード59のプロセッサ76と同様に、例えばヘルメットボード36のプロセッサ92はON POWER UPステップ16
    6で開示されその時点でプロセッサ142は主プロセッサ76からコードを受信する。 ステップ168において、このコードによりヘルメットプロセッサ142は実施例の特定応用に対するグラフィック環境を初期化する。 次に、ステップ170において、ループによりアクティブデータベースバッファがヘルメット28ディスプレイへ表示開始される。 次に質問172が開始されスイッチ信号(すなわち、予め識別されたレンダービット)
    が主プロセッサ76から受信されているかどうか決定される。 ビットが“真”に設定されておれば、ステップ1
    74においてヘルメットボード136は現在の光景を描写する。 次に、ループはステップ170へ戻ってアクティブデータベースバッファを描写する。 主プロセッサ7
    6によりビットが真に設定されていなければ、次にステップ172においてループはステップ170へ戻りアクティブデータベースバッファを描写する。 このプロセスは一般的に“ダブルバッファリング”として知られている。

    【0039】B. データ構造詳細説明のこの章ではオブジェクトがデータベース中を移動できるようにする拡張を強調して、BSPデータベース構造の詳細説明を行う。

    【0040】1. BSP. 移動体拡張概説本発明が使用してプレーヤが仮想現実世界内で操作できるようにする方法は3次元分割データベースを移動体アルゴリズムと組合せたものである。 3次元2分割データベースによりいつ何をヘルメット28ディスプレイに描写するかを選定する問題が解決される。 移動体アルゴリズムには3
    次元仮想現実環境内での物体の移動をシミュレートするための既存のフライトシミュレータアルゴリズムを適用することが含まれる。 3次元2分割データベースを移動体アルゴリズムと組合せることにより主データベースが生成されそこから全てのプレーヤがプレーを行う仮想現実環境の情報を受信することができる。

    【0041】3次元2分割データベースおよび移動体アルゴリズムについて概説する。 次に、各々について詳細説明を行う。 移動体アルゴリズムは1960年の終りにフライトシミュレータに対して開発されたアルゴリズムを修正したものであり、その主要な利点は高価なZ−バッファハードウェアを必要とせずに隠面問題をリアルタイムで解決できることである。 プロトタイプ移動体アルゴリズムはテキサスインスツルメンツTMS34010
    もしくはTMS34020グラフィックプロセッサで作動するリアルタイム3次元応用の一例である。 3次元2
    分割データベースは設計者の物体配置に対する従来の知識に基いて構成される。 小さな静止世界に対しては満足できるものではあるが、互いに移動する多数の物体がある仮想現実環境に対しては簡単には拡張できない。

    【0042】移動体アルゴリズムの記述において、大部分の努力は適当に複雑な3次元光景が与えられた時にリアルタイムアニメーションを達成することに向けられる。 グラフィック信号プロセッサ(GSP)120が大概の計算および全ての描画を行う。 GPS120の時間の大部分はデータベースを解釈し、座標を変換し、ポリゴンを描く3次元パイプラインのハンドチェーンアセンブリコードを実行するのに費やされる。 (現在およそ7
    kバイトである)3次元データベースがGSP120へダウンロードされGPS120はGPS120のホストインターフェイスレジスタを介してデータベースへアクセスするオーバヘッドが招かないようにされる。 新しい各フレームはPCホストプロセッサ76とGSP120
    との間で僅かな情報が交換されるだけでよい。 ホストによりシミュレートされたプレーヤの現在の位置および方位がGPS120へ与えられる。 GPS120はプレーヤが3次元光景内のいずれかの物体へ達したかどうかをホストへ告げて応答する。

    【0043】各プレーヤの動作特性がホストプロセッサ76上でシミュレートされる。 現在のモデルは初心者が容易に制御できるようにされており、ユーザが自由に3
    次元光景を探査できるようにされている。 アクセスを容易にするために、移動体アルゴリズムの挙動モデルはC
    で書かれており、移動体アルゴリズムのプロセッサ常駐部に格納されている。 ソフトウェアはモデルをソースファイル“interp.c.”に格納された一つのモジュール、“cmd−interpret”機能へ改良するのに必要な変更を大部分分離するように構成されている。 GPS120がほとんど全てのワークを行う場合、
    ホストプロセッサ上の移動体挙動モデルはリアルタイム性能が不振となる前に拡張される余裕がある。

    【0044】後で詳細説明を行う3次元2分割データベースは2分木として構成される。 ツリー内の各終点(すなわちリーフ)節は一つのオブジェクトを表わし、中間点(すなわちノンリーフ)節はオブジェクト群を表わす。 開発およびテストフェーズ中に、各端節(リーフノード)を順次根元節(ルートノード)として定義して移動体アルゴリズムにより表示することができる。 これにより一つの節におけるデータはデータベース内の他の場所のエラーから分離され、データベース内の個別の3次元オブジェクトが容易に整然とテストされる。 いくつかの節を検証する場合、後のテストのために小さなサブツリーへ連結される。

    【0045】本実施例は1,4および8ビット/ピクセルでテストされた。 4および8ビットのピクセルデプスでは、色選定は16へ制限される。 モノクロディスプレイの場合には、16色の各々に対して4×8ディザーパターンが代用される。 利用できる色数が制限されるため3次元光景データベース内のオブジェクトの色選定および配置は慎重を要する。

    【0046】2. BSP中を移動する物体のグラフィッ
    ク記述図10にデータベース表現202と並べてグラフィック表現200を示し、それらは実施例の3次元2分割データベースの作用を概念的に示す。 グラフィック表現20
    0において、分割面204、206はオブジェクト20
    8、210、212の後で処理するのにデータベースが使用されることを示している。 グラフィック表現200
    は204、206を有する平胆な面上に位置する3つのオブジェクト208、210、212のオーバーヘッド図と考えることができる。 分割面204、206は平胆面上のオブジェクトに対する相対位置に従って確立される。 分割面204は+側および−側を有し分割面206
    は+側および−側を有している。 分割面204、206
    によりグラフィック表現200内に現われるオブジェクトの相対位置が確立される。 実施例では、オブジェクト208は分割面204の+側にある。 オブジェクト21
    0、212は分割面204の−側にある。 オブジェクト210は分割面206の+側にありオブジェクト212
    は分割面206の−側にある。

    【0047】データベース表現202は実施例の3次元分割データベースに従ってグラフィック表現200がどのように見えるかを示す。 節204aで開始して、データベースはオブジェクト208が節204aの+側にありオブジェクト210、212が節204aの−側にあるように分割木を構成する。 さらに、節206aの+側では、オブジェクト2が現れ節206aの−側ではオブジェクト3が現れる。 データベース表現202において、節204a、204bは実施例のデータベースが使用する3次元データベースの分割面に関する中間点節と考えられる。 節208a、210a、212aによりヘルメット28ディスプレイに描写されるグラフィックオブジェクト情報が提供される。

    【0048】図11〜図13は本発明の3次元2分割データベースにより、実施例の移動体アルゴリズムの演算の結果生じるオブジェクトの相対位置および不明瞭化がどのように処理されるかを示す。 グラフィック表現20
    0に示すように、オブジェクト210は位置216から位置218を経て最終位置220へ移動する。 この移動中にオブジェクト208はその最初の位置へとどまる。
    この移動中に分割面204はオブジェクト210をオブジェクト208から分離し続ける。 その結果、オブジェクト210が最終的に位置220へ移動するとオブジェクト210重心に対するグラフィック表現のオフセットは変化することがあるが、3次元2分割データベースは修正する必要がない。 オブジェクト210は面204を通過しないため、オブジェクト位置208a,210a
    を有し+および−側のあるデータベース節204によりオブジェクト208、210の相対位置は移動前後で同じとなるように連続的に記述することができる。 これは図12が記述する移動の場合にはあてはまらない。

    【0049】図12において、オブジェクト210は位置216から位置218を経て最終的に位置222へ移動する。 オブジェクト208は元の位置にとどまる。 オブジェクト210は位置218、222を通過すると、
    分割面204と交差する。 オブジェクト210が分割面204と交差したら、分割面206を確立する必要がある。 分割面206は+側および−側を有しオブジェクト208に対するオブジェクト210の相対位置を維持する。 実施例の3次元2分割データベースは図12のデータベース表現202に示す節206aを確立することによりこの結果を達成する。 節206a+側および−側は節208aオブジェクト208が識別される所に存在する。 実施例の2分割データベースにより非占有すなわち空分割の場合にオブジェクト210が分割面204と交差して生じる問題が解決される。 例えば、図12のグラフィック表現200において、オブジェクト210は非占有分割面224内で位置218を経て位置222へ移動する。 既に分割面224が確立されているため、データベース表現202内には既存の空の節224aが存在する。 オブジェクト210が位置222へ移動すると、
    データベース210内では単に節210aから224a
    へ移動するだけである。 この種の移動では、オブジェクトは分割面内へ移動しその内で移動することができる。
    しかしながら、占有分割面へ入ることはできない。 したがって、オブジェクトが分割面内へ移動するのを禁止する壁その他の構造が仮想世界内に存在する場合には、ソフトウェアにより分割面内へのオブジェクトの移動が禁止される。 こうして得られるグラフィック表面200ではオブジェクトは単に停止するか禁止構造によりゆがめられる。

    【0050】図13は分割面内へ移動するためのスペースが存在する別のオブジェクトにより占有された既存の分割面内へオブジェクトが移動する時に何が起るかを示している。 グラフィック表現200は既存の分割面が無いスペース222へオブジェクト210が移動する場合を示す。 この移動に応答して、実施例の3次元分割データベースは+側および−側を有する分割面206を生成する。 データベース表現202は最初にオブジェクト2
    08が節208aにより表現されオブジェクト210が節210aにより表現されることを示している。 しかしながら、分割面206が構成されると、データベース表現は分割面を有する節206aがオブジェクト節208
    a,222aを有するように構成されることを示す。 オブジェクト208にはオブジェクト節208aが付随しオブジェクト210には節222aが付随するようになる。 その結果、オブジェクト208、210に対しては、実施例の2分割データベースによりオブジェクトや障害の無い所ならばどこへでも移動できるようにされる。 このようにして、3次元分割データベースは所望により新しい分割面を生成する。

    【0051】3次元分割データベースの他に、実施例では装置の使用を説明するのに移動体アルゴリズムを使用している。 付属資料として示される付録Aは実施例の移動体アルゴリズムと関連した3次元2分割データベース用ソースコードおよび移動体アルゴリズムのリストである。 以下の説明にあるソースリスト及び機能は付属資料付録A内に開示されている。

    【0052】移動体アルゴリズムは2つの主モジュールに分割され、一方はホストプロセッサ76で実行され他方はGSP120で実行される。

    【0053】3. 座標系 3次元移動体アルゴリズムではいくつかの座標系が使用される。 これらの座標系はオブジェクト空間、仮想世界空間、プレーヤの観察空間および視点面における位置の記述に使用される。

    【0054】オブジェクト座標系はグラフィックオブジェクトを記述する3次元座標系である。 使用する変換はオブジェクト座標系内のx,y,z軸が仮想世界座標系(後記)内の対応する軸と平行である。 オブジェクト空間から(後記する)世界空間への変換は平行移動だけで回転やスケーリングを必要としないため、ソフトウェアが実施する計算が簡単になる。 一般的な3次元系では回転やスケーリングも支援されるが余分な計算を伴う。

    【0055】仮想世界座標系は3次元座標系でありグラフィックオブジェクトは互いに相対的に表現される。 それはシミュレートされた世界の座標系である。 xyz原点は0の高さにあり、xおよびy軸は主コンパス方向と一致している。 +x方向は東であり+y方向は北である。 +z方向は上である。

    【0056】プレーヤの観察座標系ではプレーヤに対して3次元座標系である。 視点(プレーヤの目の仮定点)
    はxyz原点である。 +x方向は右向き、+y方向は下向き、+z方向は(プレーヤから離れる)スクリーン進入方向となる。 移動体アルゴリズムではz軸は視点中心を通るものとされている。 観察空間で見られる物体は視点(プレーヤの目)からビューポートの4つのコーナを通る4本の線で頂点が形成される観察ピラミット内に含まれるものである。 ピラミットは視点表面に平行な“近”(すなわち“こちら側”)クリップ面により截断されている。

    【0057】ビューポート座標空間はビューポートに対する2次元座標系である。 ビューポートはスクリーン上の矩形観察面である。 移動アルゴリズムではxy原点はビューポート中心に位置されている。 +x方向は右、+
    y方向は下である。 観察面内で見られるオブジェクトはビューポート上への透視図である。

    【0058】前記したように、オブジェクト空間から世界空間へのグラフィックオブジェクトの変換は平行移動だけである。 世界空間から観察面への変換では平行移動の後に回転が続く。 変換プロセスの最終段階では2次元ビューポート面への観察空間内の3次元オブジェクトの透視投影が計算される。

    【0059】オブジェクト、世界および観察面は全て右手座標系で記述される。

    【0060】4. BSPデータ構造の詳細説明隠面問題の解決法は通常ペインターアルゴリズムと呼ばれる。
    図10〜図13は実施例の3次元区画すなわち分割データベースを使用して描写を行う前にオブジェクトを予めソートする様子を示す。 プリソートを行えば、3次元分割データベースによりヘルメットカードは最初にプレーヤから遠いオブジェクトを描写し次にプレーヤに近いオブジェクトを描くことができる。 その結果プレーヤに近いオブジェクトは遠いオブジェクトを不明瞭にするように見える。 図10は実施例の3次元分割データベースによりこれを達成する方法を示す。 2進区画面(BSP)
    は2つの息子(son)を有する各中間点節の左右の息子間に定義される。 視点座標をBPS式に挿入して視点がBPPのどちら側にあるかを決定する。

    【0061】移動体アルゴリズムの光景は段層3次元データベースに記憶される。 データベースは2分木形式に構成される。 データベースの根元節へのポインターは3
    次元データベースインタプリタ機構dbinterpへの引数として通される。

    【0062】ツリー内の各終点(すなわち葉点)は数個のポリゴンで構成される(代表的には凸ポリゴンである)オブジェクトを定義する。 このオブジェクト内のポリゴンはリストされた順序で描くことができ、背面消去だけで隠面消去を行うことができる。 正確に描くには、
    ポリゴンは平面もしくは凸面とし頂点は時計廻りにリストしなければならない。

    【0063】各中間点(すなわち葉ではない)節は一つもしくは2つの息子(子孫)を有している。 通常、節に一つの息子しかない場合それは左息子である。

    【0064】中間点節に2つの息子がある場合、視点から遠い息子のオブジェクトが最初に描かれ、次に息子に近いオブジェクトが描かれる。 結果の符号は2つの息子を描く順序を決定するのに使用される。

    【0065】データベース内の各節(終点もしくは中間点)に対して節内の全オブジェクトを包囲する外接球面が定義される。 この球面はビューポート内で全く見ることのできない節を除くのに使用される。 移動体アルゴリズムのリアルタイム更新速度は変換時に多くのワークを調べる前に計算の初期段階でいくつかのオブジェクトを除去する能力に依存する。 外接球面が完全に“近”(すなわち“こちら側”)クリップ面の前にあれば、球面内の全オブジェクトを見えないものとして除去できる。 球面が完全にビューポートの上、下、右もしくは左にある場合にもオブジェクトを除去することができる。 球面が視点から遠すぎてスクリーン上で1個のピクセルに近いものとなれば、それを1ドットとして表わすことができる。 ピクセルよりも小さい球面は見えないものとして除去される。 ソフトウェアを効率的に実行するために、節に対して定義される外接球面は節内の全オブジェクトを包囲するのに必要な大きさよりも大きくしてはならない。

    【0066】各節は世界座標系から変換されたそれ自体の座標系を有している。 節内のオブジェクトの位置は節の座標原点に対して記述される。 節の外接球面もこの原点を中心としている。 各中間点節によりその左右の息子の原点位置はそれ自体の原点からのx,y,z変位として定義される。 データベース内のこれらの変位を変えることにより、左右の息子自体を記述するデータベース部分を変えることなく左右の息子を節に対する一つの位置から別の位置へ移動させることができる。

    【0067】ハウスやツリー等のオブジェクトを表わす終点節は2つ以上の中間点節により指示することができ、その場合にはオブジェクトの同じコピーが3次元光景内の2つ以上の点に現れる。 根元節の原点は世界座標系の原点となる。

    【0068】データベースには根元節の位置、データベースの全サイズ、プレーヤの最初の位置、およびカラーパレット等のキーパラメータを含むヘッダーが先行する。 現在パレットは16色しかサポートしない。 1ビット/ピクセルディスプレイの場合には、カラーパレットの替りに16のディザーパターンが使用される。 データベースヘッダーの構造は次のようである。

    【表1】

    【0069】dbsizeフィールドにはデータベースのバイト長が含まれる。 この情報はGSP120メモリ内のデータベースにどれだけの記憶装置を割付けるべきかを知るのに必要である。

    【0070】rootnodeフィールドは2分木の根元節に対してオフセットされたビットアドレスであり、
    オフセットは、rootnodeフィールドのメモリアドレスから定義される。 rootnodeフィールドがGSPアドレスAで開始されかつrootnodeフィールドのオフセット値がVである場合には、根元節のアドレスは(A+V)と計算される。

    【0071】startフィールドには開始x,y,z
    座標、すなわち世界座標内のプレーヤの初期位置が含まれる。 各座標値は8ビットの小数を有する32ビット固定小数点数として表現される。 (現在、開始方向は固定されており、世界座標内の "北" すなわち+y方向を向いている。)

    【0072】paletフィールドにはTIGAカラーパレットフォーマットに従って定義された16色パレットが含まれる。 bwpathフィールドは1ビット/ピクセルディスプレイ内で色の替りとして使用させる16
    の4×8パターンを定義する。

    【0073】3次元2分割データベースに対する2分木内の中間点(すなわち葉ではない)節の構造は次のようである。

    【表2】

    構造は全体で176ビットすなわち22バイト長である。 節構造内の最初の16ビットには8ビット無符号外接球面半径R、5ビットlog2(スケールファクター)F、3ビット節型識別子Nが含まれる。 中間点節はN=0により識別される。 外接球面の半径はr=R<<


    Fとして計算され、ここに "<<”は左シフト演算子である。

    【0074】第2の16ビットにより遠すぎてスクリーン上の1ピクセル(ドット)しか占有できない場合の節の色が指定される。

    【0075】オフセットLSONおよびRSONには節のそれぞれ左および右の息子に対するビットオフセットが含まれる。 オフセットはGSPメモリ内のLSONおよびRSONのビットアドレスから定義される。 例えば、LSONフィールドがメモリアドレスAに記憶されオフセット値Vを含む場合には、左の息子のアドレスは(A+V)として計算される。

    【0076】2つの子孫節のビットアドレスオフセットLSONおよびRSONと共に、現在の節の中心(すなわち原点)からのこれらの節の中心(すなわち原点)のxyz変位が定義される。 これらの変位は8ビット符号付X,Y,Zフィールドとして記憶され、それにはX,
    Y,Zのスケールファクターを定義する8ビットFフィールドが続く。 これら4個の8ビット値は1個の32ビット長語とされる。 現在の節の中心座標が(Xc,Y
    c,Zc)であれば、子孫の中心座標(Xc′,Y
    c′,Zc′)は次のように算出される。

    【数1】

    構造内の最後の語には、2分割面係数A,B,C,Dが含まれる。 各係数は4ビットである。 左右の息子により表わされるオブジェクトや複合オブジェクトは

    【数2】

    式で表わされる面により分離され、ここにx,y,zは視点に対する世界空間内の親節の中心座標である。 平面式を評価してペインターのアルゴリズムに基いて左右の息子を描くための適切な順序が決定される。 f(x,


    y,z)<0であれば、視点は分割面の左の息子側にあり、最初に右の息子が描かれ次に左の息子が描かれる。


    そうでなけれは、左の息子が最初に描かれる。 平面式係数は4ビットA,B,C,Dフィールドを含む16ビット語内に記憶され、その各々により−8〜+7の範囲の値が定義される。 図14に適切な16ビット語を示す。


    平面式は節中心(すなわち、原点)に対して定義される。 平面が節中心と交差すればD=0である。

    【0077】例えば、右の息子の中心がxyz変位(1
    00,0,0)であれば、左の息子は(−100,0,
    0)であり、分割面の式はX=0となる。 BPP係数はA=1,B=C=D=0に選定することができる。 X>
    0であれば、最初に左の息子が描かれ次に右の息子が描かれ、X<=0であれば右の息子が最初に描かれる。

    【0078】2分木データベース内の終点(葉)節は次のようである。

    【表3】

    データ構造の最初の32ビットは、3ビット節型フィールドNが0ではなく(終点節を示す)1に設定されることを除けば、中間点節に対するものと同じである。

    【0079】節構造からのオフセット32ビットは(記述される)外接ボックス情報に対する語オフセットを定義する16ビットフィールドである。 節構造が記号アドレスNODEで始まりかつ外接ボックス仕様がアドレスBBOXで始まるものとすると、語オフセットは(BB
    OX−NODE−32)/16と定義される。 外接ボックス情報はオプションであり所望により省くことができる。 外接ボックスが定義されない場合には、オフセットの値は0である。

    【0080】節構造のベースからのオフセット48ビットは記述される3次元オブジェクトモデルの最初であり、数々の凸ポリゴンで構成されたオブジェクトの記述である。 外接ボックス情報はオブジェクトモデルに従う。

    【0081】各終点(葉)節は3次元オブジェクトの記述を含む。 3次元オブジェクトモデル情報は2つの部分へ分割される。 第1の部分はオブジェクト内の全ての3
    次元点のリストである。 第2の部分は第1の部分に与えられる3次元点により定義されるオブジェクト内の全ポリゴンのリストである。 オブジェクトモデルデータの一般的なフォーマットは次のようである。

    【表4】

    第1の部分に表記されている。 3次元点はオブジェクト中心に対するそのx,y,z座標により定義される。 リスト内の各3次元点は図15に示すように8ビットXフィールド、8ビットYフィールド、8ビットZフィールドおよび8ビットF(スケールファクタ)を含む32ビット値として表現される。 オブジェクト中心に対する3


    次元点のx,y,z座標はこれら4つのフィールドから次のように算出される。

    【数3】

    X,Y,Zフィールドは−128〜+127の範囲の整数である。 フィールドFは0〜7の範囲の値に限定される。

    【0082】3次元点リストの後にオブジェクト面リストが続く。 各面は一連の頂点として定義される凸ポリゴンである。 面リストは16ビット0値で終る。 リスト内の個別の各面は次のフォーマットに従って定義される。

    【表5】

    上記各頂点V〔. 〕はオブジェクトモデルデータベースの第1の部分内に定義された3次元点リストへの指標として定義される16ビット値である。 n個の3次元点が与えられると、頂点は0〜n−1の範囲内の指標として定義される。 頂点は時計廻りに表記しなければならない、すなわち頂点はオブジェクト空間内の前向きポリゴンの境界が時計廻りに横切される時に現れるnの順序で与えられる。

    【0083】特定移動体と光景内の静止物体との衝突を検出する必要のある3次元応用もある。 この移動体アルゴリズムでは、移動体は視点を包囲すると考えられる
    "プレーヤ" である。 現在実施されているように、衝突検出は世界空間内の外接ボックスに基いている。

    【0084】newinbbox機能により世界空間内のそのxyz座標により定義される点がデータベース内に定義されたいずれかの外接ボックスと衝突したかどうかが決定される。 衝突しておれば、newinbbox
    によりデータベース内に割当てられた特定状態が侵害された外接ボックスへ戻される(状態値にはおそらく応用内で何らかの意味が割当てられる)。 衝突が検出されなければ、0値が戻される。

    【0085】ツリー内の各終点節に対して一つ以上の外接ボックスがオプションとして定義される。 外接ボックス情報は終点節構造内のオブジェクトモデルデータに従う。 終点節構造へのオフセット32ビットは外接ボックス情報の開始に対する語オフセットである。 オフセットに対して0値が与えられると、節に対して外接ボックス情報は定義されない。

    【0086】外接ボックス限界との比較を容易にするために、ボックス縁は強制的に世界空間内のx,y,z軸に平行とされる。 各外接ボックスのディメンジョンは6
    つの座標より定義され、それは最小x,y,z座標、x
    min、ymin、zmin、および最大x,y,z座標xmax、ymax、zmaxである。 これらの座標は外接ボックスを含む中心に対して定義される。

    【0087】一つ以上の外接ボックスのリストが0値で終止される。 リスト内の各外接ボックスは次のフォーマットに従って定義される。

    【表6】

    外接ボックス型コードBにより実施すべき外接ボックステストの特性が定義される。 これらの衝突テストモードはB値により定義することができる。 すなわち、3次元空間内の特定点が(1)外接ボックスの内側、(2)ボックスの外側、もしくは(3)ボックスの内側か外側(条件付)である場合に衝突が検出される。

    【0088】衝突が検出されると、(データベース著者により意味が割当てられる)16ビット状態値Sが戻される。 表記されたどの外接ボックスでも衝突が検出されない場合には、0値が戻される。

    【0089】外接ボックス型コードBはまた外接ボックスを "パッド”して厚くするか(正パッディング)あるいは薄くするか(負パッディング)をも定義する。 パッディングを使用すると、パッディングの厚さは自動的に視点と "近" (すなわち "こちら側”)クリップ面の距離よりも大きいものとされる。 このパッディング値は外接ボックスの一辺と一致するポリゴンを視点が "貫通"
    しないよう防止するのに有用である。 パッディングを行わない場合、ポリゴンを近zクリップ面で截断することにより視点はポリゴンの他の辺を突き抜けることができる。 次にポリゴンによりさえぎるべきオブジェクトが見えるようになり、ソリッド3次元オブジェクトの錯覚が損われる。 視点が強制的に外接ボックスの外側とされるか内側とされるかによって、パッディングは正もしくは負として定義することができる。 正のパッディングは(外接ボックステストに対して中心座標が定義されている)移動体が外接ボックスの外側のあるクリティカル距離以内に接近する時点を検出するのに有用である。 負のパッディングは移動体が外接ボックスの内壁のある距離以内に接近する時点を検出するのに使用することができる。 所望により、ゼロパッディングを定義することもできる。

    【0090】外接ボックス型コードBのフォーマットは図16に定義されている。 図16に示すように、状態の14〜15ビット内のTMフィールドによりテストモードが定義され、12〜13ビット内のPMフィールドによりパッドモードが選定される。

    【0091】外接ボックス内の最小および最大xyz座標は共に32ビット値として表現される。 各値は4つの8ビットフィールドで定義される3次元オブジェクト空間内の点であり、それらは8ビットXフィールド、8ビットYフィールド、8ビットZフィールド、および8ビットF(スケールファクター)フィールドである。 3次元点に対する32ビット表現を図17に示す。 オブジェクト中心に対する3次元点のx,y,z座標はこれら4
    つのフィールドから次のように算出される。

    【数4】

    X,Y,Zフィールドは−128〜+127の範囲内の整数である。 Fフィールドは0〜7の範囲の値に制限される。

    【0092】C. 実施例のレンダリングプロセス 1. ペインターのアルゴリズムを含むレンダリングシ
    ステムの概要 BSPデータベース構造により、レンダリングプロセスはペインターのアルゴリズムを使用して隠面を消去する。 次に、実施例のレンダリングプロセスについて説明する。

    【0093】移動体アルゴリズムソフトウェアによりスクリーン上で見える3次元光景が3段階で組立てられる。 それは次の3段階である。 (1) 光景データベースの解釈 (2) 3次元変換 (3) スクリーンへのポリゴンのレンダリング これらのタスクは3つのソフトウェアモジュールにより実施される。 本章では3次元データベースおよび視点情報をスクリーン上のリアルタイム像へ変換する際の各モジュールの役割りについて説明する。

    【0094】dbinterp機能はデータベースインタープリターである。 それは入力として3次元光景記述、視点位置および方位を含むデータベースを受け取る。 インタープリターの主要なタスクは不要な変換ワークを回避するためにできるだけ多くの見えないオブジェクト(スクリーン上で見えないオブジェクト)の自明の拒絶を行うことである。 また、インタープリターはオブジェクトを描く順番を決定し、近いオブジェクトは遠いオブジェクトの上に描く、これがペインターのアルゴリズムである。 データベースインタープリターの出力は、
    3次元観察空間における位置と共に、変換すべきオブジェクトのリストである。

    【0095】xfmlist機能は3次元トランスフォーマである。 それはdbinterp機能から変換すべきオブジェクトのリストを入力として受け取る。 トランスフォーマはオブジェクトを回転および平行移動させ、
    所望によりクリップし、ビューポート上へ投影する。 この工程において、各3次元オブジェクトはその構成素ポリゴンへ分割され、描くべきポリゴンのリストが3次元トランスフォーマから出力される。

    【0096】displist(すなわち、displ
    ist−colorもしくはdisplist−mon
    o)機能はポリゴンドロア(polygon draw
    er)である。 それは3次元トランスフォーマ機能xf
    rmlistが発生するポリゴンのリストを解釈し、リストに現れる順序でスクリーンに描く。 各ポリゴンはその色および頂点リストにより定義される。 最上頂点が常にリストの最初に定義される。

    【0097】dbinterp,xfrmlistおよびdisplist機能はリアルタイム性能を達成するための重要な役割りにより付録Aに示すアセンブリコードで書かれる。 displistモジュールは充分小さくその主ループ全体をTMS34010の256バイト命令キャッシュ内に常駐できる。 (TMS34020キャッシュは2倍の大きさである)。 dbinterpおよびxfrmlistモジュールの主ループは大き過ぎてキャッシュに完全に嵌め込むことはできないが、これらの機能のコードは実行される命令がループごとにキャッシュに常駐されたままとされる可能性を改善するように慎重に配置される。

    【0098】2. 座標系間の変換世界空間から観察空間への変換はその世界内におけるプレーヤの想定位置および方位に基いている。 移動体アルゴリズムは、4
    ×33次元変換マトリクスの12の係数に対応する、合計12個の世界空間におけるプレーヤの位置および方位を表わすパラメータを使用する。 これらのパラメータは世界空間におけるプレーヤのx,y,z座標および世界に対するプレーヤの方位を記述する3個の直交単位ベクトルu,v,wのx,y,z成分である。 uベクトルはプレーヤの右を指し、vベクトルはプレーヤに対して下方を指し、wベクトルはプレーヤの前方方向を指す。 すなわち、u,v,wベクトルは観察座標系のx,y,z
    軸と一致している。

    【0099】厳密に言えば、プレーヤの方位を完全に定義するのに2個の単位ベクトルしか必要とせず、第3の単位ベクトルは常に6つの乗算を行って最初の2つの外積として算出される。 後記するように、3個の単位ベクトルを全部維持することにより、グラフィックオブジェクトを世界空間から観察空間へ変換するのに使用する回転の計算が幾分簡便となる。

    【0100】世界座標(x,y,z)から観察空間座標(x′,y′,z′)への変換には回転の続く変換が伴う。

    【0101】2ステップ変換プロセスを思い浮かべるために、x,y,z座標軸がそれぞれ東、北および上を指す世界を考える。 最初にプレーヤは世界座標の原点に居て、上を向き、右側が東向きとされているものとする。
    すなわち、世界および観察座標系のx,y,z軸は一致している。 また、u,v,wベクトルは世界空間の座標(xt,yt,zt)の点から世界空間の次のx,y,
    z成分で表わされる任意の方位に発散するものとする。

    【数5】

    目標はu,v,wベクトルを変換して観察座標系のx,


    y,z軸と一致させることである。 この変換は3次元オブジェクトを世界から観察座標へ変換するのに使用するものと同じである。

    【0102】最初のステップは(3個の単位ベクトルを含む)世界空間内の全オブジェクトを(−xt,−y
    t,−zt)により変換することである。 この変換によりu,v,wベクトルは観察座標原点とされる。 (このステップの後では、世界原点は観察原点と一致しなくなる。)

    【0103】全オブジェクトを変換したら、次のステップはそれらを回転させることである。 回転はu,v,w
    ベクトルを観察座標系のx,y,z軸と一致させたまま行われる。 回転マトリクスは下記変換の右側にあり、前節で述べた変換座標に適用されたものである。

    【数6】

    前記9つの回転マトリクス係数は単位ベクトルu,v,


    wの世界座標空間におけるx,y,z成分に過ぎない。


    これが実際に作用することを証明しよう。 これが実際に正しい回転マトリクスであれば、u,v,wベクトルは観察座標系のx,y,z軸と一致したままでなければならない。 これは次のように表わすことができる。

    【数7】

    右側のマトリクスの各1は単位ベクトル自体のドット積をとる結果であり、各0は2つの直交ベクトルのドット積をとる結果である。

    【0104】観察空間内の点のビューポート面上への各投影は相似三形の部分に基いており、フォーリーとバンダム(the Foley & van Dam)およびニューマンとスプロール(the Newman
    & Sproull)のテキストに記述されている。 プレーヤ(目)が光景からdの距離にあり、観察座標(x,y,z)の点が与えられているものとすると、この点はビューポート面上の座標(x′,y′)に投影され、ここにx′=x*d/z,y′=y*d/zとなる。 (ここで*はかけ算を表す)

    【0105】世界座標系に対するプレーヤの方位は3個の直交単位ベクトルu,v,wを回転されることにより変化する。

    【0106】移動体アルゴリズムはソースファイル "f
    lysim. C”に格納された "rotvec”機能を呼び出して視点廻りに回転させる。回転は世界座標に対するものか(例えば、大地と同じ高さの面内での回転)
    もしくは観察座標に対するもの(ヨー(yaw)、ピッチ(pitch)、ロール(roll)とすることができる。

    【0107】プレーヤは世界z軸に平行なピボットベクトル周りに3つの直交単位ベクトルを回転させかつプレーヤの位置を通過させることにより光景をパン(pa
    n)させることができる。 (すなわち、大地と平行な面内で回転が行われる。)世界座標系に対するプレーヤの方位が最初に3個の単位ベクトルu=(Ux,Uy,U
    z)、v=(Vx,Vy,Vz)およびw=(Wx,W
    y,Wz)で表わされるものとする。 パンは次のマトリクス計算により行われる。

    【数8】

    前記正の角度tは左へパンすることに対応する。 単位ベクトルのx,y成分だけが影響を受けることをお判り願いたい。 Z成分は回転により変化することはない。 移動体アルゴリズムはuvturn機能すなわちライブラリ機能を呼び出してこの種の回転を行う。

    【0108】もう一種の回転によりプレーヤは、世界座標に対してどのような方位にあるかに関わらず、自分の基準フレームに対してヨー、ピッチもしくはロールすることができる。 この種の回転中に、3個の単位ベクトル(u,v,w)の中の一つは世界空間内で固定されたままであり、その周りを他の2つの単位ベクトルが回転するピボットベクトルとして作用する。 次の6つの回転が可能である。 1) 左へヨー:uをwに向ってピボットベクトルv周りに回転する。 2) 右へヨー:wをuに向ってピボットベクトルv周りに回転する。 3) 上方ピッチ:vをwに向ってピボットベクトルu
    周りに回転する。 4) 下方ピッチ:wをvに向ってピボットベクトルu
    周りに回転する。 5) 左へロール:uをvに向ってピボットベクトルw
    周りに回転する。 6) 右ヘロール:vをuに向ってピボットベクトルw
    周りに回転する。 例えば、次のマトリクス計算はuベクトルをwベクトルに向って角度tだけ回転することによりヨーを実施する。

    【数9】

    この種の回転はuvturn機能を呼出して行われる。


    回転する前に2つのベクトルが直交しておれば、その後も直交したままである。 回転角度が負であれば、プレーヤは左ではなく右へヨーする。 他の5人のプレーヤに関する回転は前記したものと同じである。

    【0109】移動体アルゴリズムはここではプレーヤの動作について極端に簡単なモデルを使用しているが、このモデルは将来改善することができる。 より正確なモデルは肉体的力に基いてヨー、ピッチおよびロール動作を計算するプレーヤの動作特性や空気力学に基づくことができる。 ヨー、ピッチおよびロール角度が決定されると、ヨー、ピッチ、ロールの順で3回rotvec機能を呼出すことによりu,v,wベクトルを回転させることができる。

    【0110】水平位置の計算およびプレーヤ位置感知やフライト計器の設定に使用するヨー、ピッチおよびロー角度が世界座標系に関して定義される。 ヨー、ピッチおよびロールの正弦および余弦は世界空間におけるx,
    y,z投影で表わされるu,v,w単位ベクトルにより計算することができる。 正弦値および余弦値しか必要としないため、ヨー、ピッチおよびロール角度自体は計算する必要がなくなる。

    【0111】ヨー(すなわち、ヘッディング)角は世界X軸に関して定義され、プレーヤが+X方向を指しておればそのヨー角度は0度である。 シミュレータでは正のヨー角がuをwに向って(右翼を鼻部に向けて)回転させることに対応している。 単位ベクトルwの世界xy面上への投影をrで表わすと、次式のようになる。

    【数10】

    (sqrt(A)は√Aを表す。*はかけ算を表す。)


    ヨー角の正弦はWx/rとして算出され、余弦はWy/


    rとして算出される。

    【0112】ピッチ角は単位ベクトルwと世界xy面間の角度である。 シミュレータでは正のピッチ角はvをw
    に向って(鼻部を引き上げる)回転させることに対応している。 ピッチの正弦はWzであり、余弦はrである。

    【0113】ロール(すなわち、バンク(bank))
    角は単位ベクトルuと世xy面間の角度である。 シミュレータでは正のロール角はuをvに向って回転させる(右へバンクする)ことに対応している。 Sが量S=s
    qrt(Uz*Uz+Vz*Vz)を表わすものとすれば、ロール角の正弦は−Uz/Sとして算出され、余弦は−Vz/Sとして算出される。

    【0114】3. 水平線の描画プレーヤが大地の表面のかなり近くに居るものとすると、水平線は無限遠にあるものとして満足にモデル化することができる。 すなわち、大地は平坦で無限遠と考えられる。 水平線の特徴がどの方向でも同じであれば、モデルはプレーヤの向きを考慮する必要はない。 水平線を適切に位置決めするのにプレーヤのピッチおよびロールを考慮するだけでよい。 ピッチ角は大地に対する鼻部の方位を表わし、プレーヤがこの方位を維持しながらロールすることができれば影響を受けることはない。

    【0115】プレーヤの方位が上下にピッチすれば、それにつれて水平線は動いて見えなければならない。 動作に対してロールが無いものとすると、コックピット窓を通して見える水平線のレベル(スクリーン上の高さ)はピッチのみに依存する。 プレーヤの高さすなわち高度はゼロと考えられる。 水平線は無限遠であるため、プレーヤの任意の無限遠高度は無視することができる。

    【0116】ロール角の影響を考慮するために、最初に観察座標系のz軸上の無限遠点について考える。 この点は常にスクリーン上の同じ位置、ビューポート中心、にあるものとする。 基準点としてのビューポート中心に関して、正のピッチ角(鼻部アップ)により基準点は水平線よりも上となり(青空の中)、負のピッチ角により水平線よりも下となる(地中)。

    【0117】次に、水平線から基準点へ向う正規ベクトルを考える。 このベクトルの水平線との交差は水平点と呼ばれる点で生じる。 ロール角は変化できるため、水平点は基準点周りを回転するように見える。

    【0118】ロール角の変化中にピッチを一定に保てば、水平点は基準点周りに円を描く。 水平線とプレーヤの水平線との角度は世界に対するプレーヤのロール角の負量である。 円の半径はピッチ角だけの関数となる。 プレーヤの光景からの想定距離をdとし、ピッチ角をaとすると、円の半径rはr=d*tan(a)として算出される。 (負のrは基準点が "青空" ではなく "地中”
    にあることを意味する。 )

    【0119】要約すれば、水平線を構成するためのステップは次のようである。 (1) ピッチ角aおよび光景からのプレーヤの距離d
    から水平点(水平線上の最も近い点)までの基準点(ビューポート中心)の距離rを計算する。 (2) ロール角の負量だけ水平点を基準点周りに回転させる。 (3) 水平線は水平点を通り、基準点から水平点への線に直角である。 基準点がビューポートの中心にあり、水平点がビューポートを包囲する円の外側にあれば、水平線は見えない。

    【0120】4. データベースの解釈 dbint
    erp機能は世界空間の3次元光景を含む階層データベースを解釈する。 データベースは終点(すなわち、葉)
    節が描画すべき個々のオブジェクトである2分木として構成される。 dbinterp機能の出力は変換され、
    クリップされ、スクリーン上へ投影されるポリゴンおよびドットのリストである。 この機能はスクリーン上で見えない3次元オブジェクトの自明拒絶を行うように設計される。 このため、機能は外接球に基いてクリッピングを行い、遠いオブジェクトから不要な詳細を消去する。

    【0121】2つの引数はポインターrootnode
    およびqである。 引数rootnodeは階層3次元データベースの根元節を指示する。 引数qは出力アレイを指示し、その中に機能は変換し、投影し、スクリーンへ描画する必要のある3次元空間のオブジェクトリストを記憶している。 出力リストに現れるオブジェクトのシーケンスにより描画される順序が決定される。

    【0122】dbinterpルーチン内の主ループが2分木内の一つの節が根元節から始まるとみなせば反復が行われる。 各節は(終点節である場合の)アトミックオブジェクトもしくは(中間点節である場合の)合成オブジェクトを表わす。 合成オブジェクトはいくつかのアトミックオブジェクトにより構成される。 アトミックオブジェクトは終点節構造内に表記された順序で描くことができる(代表的に多面体を構成する)数個のポリゴンにより構成される。 (ペインターのアルゴリズムに従って)オブジェクトを構成するポリゴンを正確なシーケンスで描くのに必要なのは背面消去だけである。 オブジェクト内の各頂点の3次元座標は節の中心に対して定義される。 これにより、節に含まれるオブジェクトの記述に影響を及ぼすことなく節を3次元仮想世界空間へ変換することができる。

    【0123】本移動体アルゴリズムはデータベース内の各節に対して外接球を定義する必要がある。 (終点および中間点の)各節に対してデータベース構造には節内の全オブジェクトを包囲する外接球の半径が含まれている。 球の中心は節の中心座標と一致するものとする。

    【0124】中間点節の左右の息子はその節を構成するオブジェクト群を2つの小群へ分割することを表わす。
    中間点節の子孫が一つだけであれば、その子孫は左の息子であり、右の息子のポインターは空(0)ポインターであるものとする。

    【0125】中間点節に2つの息子がある場合には、より遠い息子(すなわち、息子に含まれるオブジェクト)
    が最初に描かれ、その後で近い息子を描くことができる。 各息子はやはり2つの息子を持つことができる節でありそれらは裏から表の順で描かれる。

    【0126】2つの息子を有する節は2つの息子(したがって、それに含まれるオブジェクト)をきれいに分割する2分割面(BPP)の記述を含んでいる。 BPPはペインターのアルゴリズム(the Painter'
    s Algorithm)に従って2つの息子を描く順序を決定するのに使用される。 視点がBPPの左の息子側にあれば、右の息子が最初に描かれ、次に左の息子が描かれ、そうでなければ左の息子が最初に描かれる。 B
    PPはその平面式のA,B,C,D係数により定義され、

    【数11】

    ここに、視点はこの節の中心に対して座標(x,y,


    z)に位置している。

    【0127】dbinterp機能によりポリゴンはその出力リストで2つのカテゴリーに分割され、それは
    "近”および "遠" ポリゴンである。 近および遠ポリゴンへの分割は実際上距離ではなくサイズに基いて行われる。 終点節に対する外接球のスクリーン上の投影がある閾値サイズを越えると、オブジェクトを構成する全ポリゴンが近ポリゴンとして処理され、そうでなければ遠ポリゴンとして処理される。

    【0128】近ポリゴンはポリクリップされる、すなわちビューポート限界へクリップされた後で描かれる。 一方、遠ポリゴンはポストクリップされる、すなわち描きながら1線ごとにクリップされる。 ポリゴンを遠近型へ分割するのは計算の効率を上げるためである。

    【0129】ポストクリップは遠(小)ポリゴンに対して使用される。 ポリクリップポリゴンは計算上のオーバヘッドを幾分伴うため、小さいポリゴンをポストクリップすればこのオーバヘッドは回避され、34×0の組込みクリップハードウェアにより各水平塗り潰し線(フィル線)を描画時に自動的にクリップすることができる。

    【0130】しかしながら、近(大)ポリゴンは描画相中に相当な時間を消費してしまうビューポート外側の各ポリゴン部分を切り落すプリクリップにより一層効率的に処理される。

    【0131】オブジェクトの第3のカテゴリーは出力リスト内に定義することができる。 節が遠すぎてスクリーン上のその外接球の投影がピクセルサイズに近ずく場合には、出力リストでは1個のドットとして表わすことができる。 前記いずれかのテストにより節が拒絶されれば、それ以上の処理は必要ない。 処理できるもう一つの節があれば、その節はdbinterp機能の主ループの次の反復中に処理される。 そうでなければ、出力リストが終止して機能が完了する。

    【0132】前記5つのテストにより節が拒絶されなければ、終点節であるか中間点節であるかを決定するチェックが行われる。

    【0133】中間点節である場合には、節の息子が一つであるか2つであるかを決定するチェックが行われる。
    節の息子が一つである場合には、その息子はdbint
    erp機能の主ループの次の反復中に処理される。 節の息子が2つである場合には、近い息子がスタック上へ押し出されて後に処理され、遠い息子は主ループの次の反復中に処理される。 中間点節のデータ構造はその左右の息子に対するポインターおよびその中心からその息子の中心までのx,y,z変位を含んでいる。 近い息子を表わすためにスタック上へ押し出される4個のパラメータは息子の節データ構造に対するポインターおよび息子の中心のx,y,z座標である。

    【0134】5. 変換オブジェクト xfrmli
    st機能は3次元オブジェクトのリストを観察空間へ変換し、必要に応じクリップし、スクリーン上へ透視投影する。 このプロセスにおいて、オブジェクトはその構成素ポリゴンへ分解される。 スクリーン上の投影がピクセルサイズに近ずくオブジェクトは単なるドットとして表わすことができる。

    【0135】2つの引数p. qはそれぞれ入出力リスト開始のポインターである。 入力リスト(すなわち、変換リスト)により変換すべき3次元オブジェクトの数が定義される。 出力リスト(すなわち、ディスプレイリスト)によりスクリーン上へ描く準備のできた数個のポリゴンおよびドット数が定義される。

    【0136】xfrmlist機能の主ループを反復することにより、 "近" オブジェクト、 "遠" オブジェクトもしくは入力リストからのドットが処理される。 db
    interp機能の記述で説明したように、ポリゴンにより構成されるオブジェクトはスクリーン上に現れる際の近似サイズに基いて "近" もしくは "遠" として分類される。

    【0137】近もしくは遠オブジェクトの入力リストへの各エントリーは観察空間内のオブジェクト中心のxy
    z座標値および3次元オブジェクトモデルに対するポインターを含んでいる。 オブジェクトモデル内で、オブジェクトのxyz座標がオブジェクト空間内のオブジェクト中心に対して定義される。 xfrmlist機能は最初に中心周りに回転させ、次に観察空間内の特定中心座標(xc,yc,zc)へ変換することにより、オブジェクト空間からのオブジェクトを観察空間へ変換する。

    【0138】xfrmlist機能は近ポリゴンが要求するものよりも小さい。 遠ポリゴンを処理するxfrm
    listルーチン部分は34010のキャッシュ内へ嵌め込めるほど小さい。 (TMS34020のキャッシュは2倍の大きさである。)統計上、遠ポリゴンは近ポリゴンよりも著しく数が多く、遠ポリゴンコードはインタラクションごとにキャッシュ内にとどまる可能性が高い。

    【0139】ポリゴンクリッパー機能、clippgo
    n、を呼出す前に、xfrmlist機能により各近ポリゴンは正規化された観察ビラミッドへ変換される(フォリーとバンダムはそのテキストでこれを "標準(ca
    nonical)クリッピングボリューム" と呼んでいる。)

    【0140】clip. object機能は最初に背面テストを行ってこれ以上処理することなくポリゴンを拒絶できるかどうかを決定する。 ポリゴンが前向きであれば、この機能によりポリゴンは観察ピラミッドの境界(クリップ面)と比較され、ピラミッドの外側のポリゴン部分は切り落され、見えなくなる。

    【0141】最悪の場合、ポリゴンは5つのクリップ面全部を侵害することがある。 この場合、ポリゴンは頂点
    **リストを通る3本のパス内でクリップされる。 最初のパスではclip. object機能によりポリゴンは
    "近" クリップ面へクリップされる。 第2のパスではポリゴンは左右の面へクリップされ、第3のパスでは頂点面及び底面へクリップされる。

    【0142】スクリーン上へのclippgonに対して頂点リストを通る最終経路が必要である。 こうして得られるポリゴンは出力リスト(すなわち、ディスプレイリスト)へ出力される。

    【0143】6. 光景のディスプレイ displ
    ist機能(実際上は、2つの類似機能、displi
    st color−colorおよびdisplist
    −mono)によりディスプレイリストに現われるシーケンスでスクリーンに一連のポリゴンおよびドットが描かれる。

    【0144】ディスプレイリスト内の各ポリゴンは凸でなければならず、ポリゴンの頂点を表わすxy座標対リストとして定義される。 リスト内の第1対のxy座標はポリゴン内の最上頂点、すなわち最小y値を有する頂点、の位置を表わす。 頂点は時計廻りに表記され、スクリーン上のx座標は左から右へ増加し、y座標は頂部から底部へ増加する。

    【0145】"ドット" が1個のピクセルとしてスクリーンに描かれる。 変換リストはdbinterp機能から出力されxfrmlist機能へ入力されるリストである。 それにより変換され透視投影される3次元オブジェクトが定義されスクリーンへ描かれる。

    【0146】変換リスト内の各ポリゴンおよびドットの定義はメモリ内の均一な32ビット境界上で開始され、
    各定義の第1項はグラフィックプリミティブの型を示す16ビット機能コードである。

    【0147】近および遠ポリゴンはそれぞれ1および2
    の機能コードにより変換リスト内に指定される。 ポリゴンに対する変換リストの定義を下記に示す。

    【表7】

    【0148】パラメータxc,yc,zcは観察空間におけるオブジェクトの中心座標である。 各座標は8ビットの小数を有する32ビット固定小数点数として表わされる。 (これをFI×8フォーマットと呼ぶ)。 最後のパラメータは3次元オブジェクトモデルへのポインターである。 オブジェクトモデルによりオブジェクトを構成する全ポリゴンの頂点が定義される。 頂点のxyz座標はオブジェクト空間内でオブジェクト中心に対して定義される。

    【0149】"ドット" は1個のピクセルであり、1の機能コードにより変換リスト内に指定される。 ドットを定義する変換リストフォーマットを次に示す。

    【表8】

    【0150】定義の第2項はドットカラーを定義する1
    6ビット値である。 最後の2項は16ビット整数として定義されるドットのx,y座標である。 これらはスクリーン上のドットのx,y座標であり、変換されスクリーン上へ投影された後で変換リストへ記載される。 これらの座標は変化されることなく変換リストからディスプレイリストへxfrmlist機能によりコピーされる。

    【0151】変換リストは−1の機能コードにより終止する。 ディスプレイリストはxfrmlist機能により出力されるリストであり、ディスプレイ機能へ入力される。 それにより、スクリーンへ描かれるポリゴンおよびドットが定義される。

    【0152】ディスプレイリスト内の各ポリゴンおよびドットの定義はメモリ内の均一な32ビット境界で開始され、各定義の最初の項は描かれるグラフィックプリミティブの型を示す8ビット機能コードである。

    【0153】ポリゴンの機能コードは0である。 ポリゴンのディスプレイリストフォーマットを次に示す。

    【表9】

    【0154】定義内の第2の項は凸ポリゴン内の頂点の数である。 第3の項はポリゴンの色である。 定義の残りはスクリーン上の頂点の位置を表わすx,y座標対アレイである。 最初のxy座標対によりポリゴンの最上頂点、すなわち最小y値を有する頂点、の位置が定義される。 スクリーン上のx座標は左から右へ増大し、y座標は頂部から底部へ増大するものとして、頂点は時計廻りに表記される。 座標は2ビットの小数を有する固定小数点値として定義される(これをFI×2フォーマットを呼ぶ)。

    【0155】"ドット" は1個のピクセルとして描かれ、ディスプレイリストでは1の機能コードとして定義される。 ドットを定義するディスプレイフォーマットを次に示す。

    【表10】

    定義の第2項は0を含むバイトである。 第3項はドットカラーである。 最後の2つの項はドットのxy座標である。 座標は整数として定義される。

    【0156】ディスプレイリストは−1の機能コードで終止する。 前記したように、隠面問題を解決するのに使用される方法では3次元データベースが2分木として構成される。 ツリー内の中間点節が2つの子孫節へ分岐する場合は常に、2つの子孫を分離する2分面(BPP)
    が定義される。 データベースインタープリタはBPP式を評価して視点がBPPのどちら側にあるかを決定する。 これにより、ペインターのアルゴリズムを正確に実施するのにどういう順序で2つの子孫を描くかが決定される。

    【0157】 実施例の応用例 A. フライトシミュレータ応用次の検討は実施例の移動体アルゴリズムおよび3次元分割データベースの実行について記述するものである。 付属資料にある付録Aにソースコードを示す次のファイルはDS5000マイクロコントローラと共にTMS34010グラフィックプロセッサからなるプロトタイプハードウェアを実行するこれらのコンセプトのデモンストレーションを実施する。 ここに記載するコードはグラフィックプロセッサにより実行される。

    【0158】コードはmakefileファイルを使用してコンパイルされる。 Ic. cmdファイルはコンパイルされたコードを連結して実行可能なモジュールをP
    CからTMS34010プロセッサへダウンロードする。 プログラムのトップレベルのコントロールはfli
    p. c. ファイルで実施される。 このプログラムはwo
    rld. asm. で表現された世界データベースを使用して、後記する迷路ゲーム部を実現する。

    【0159】ファイルは迷路ゲームシミュレーションを実行するコードの主要部分を含んでいる。 flip. C. − トップレベルコントロール、初期化 interp. C. − ユーザからの解釈入力コマンド move. C. − 世界データベース内の移動体の更新 render. C. − 光景をディスプレーへ描写する 元のコードへの主要な拡張は主として次のファイルで行われる。 flip. C − トップレベルコントロール、初期化 move. C − 移動体拡張 scene. C − 移動体拡張 scene 0. C− 移動体拡張 scene 1. C− 移動体拡張 bbox. C − 外接ボックス衝突検出 bullet. C − 移動体拡張

    【0160】B. "グレース" 、迷路ゲーム図19
    および図20に本実施例の仮想現実システムを使用できる多プレーヤゲーム応用例を示す。 ゲームは "グレース" と呼ばれ図19に示す迷路230を最初にうまく抜け出ようとして別のプレーヤと競争するオブジェクトがある。 迷路230には移動オベリスク232、マッシャー234および回転ドア236等の落し穴が充満している。 オベリスク232は迷路230中を任意に移動しプレーヤを轢き一人のプレーヤの "生命" を奪う。 実施例では、プレーヤは9人の生命を有している。 マッシャー234は静止しているが、迷路230の経路内で上下に跳動する。 プレーヤは押し潰されることなくマッシャ2
    34の下を通過しなければならない。 プレーヤを押し潰すと一人の生命が失われる。 回転ドア236は静止しているが、軸周りに回転する。 一方側は安全である。 安全側を通れば何も起きない。 他方側は闇である。 闇側を通るとドアによりプレーヤは迷路230の任意の場所へ移送される。

    【0161】各プレーヤはある数のポイントすなわち生命、例えば実施例では9人、で開始する。 オベリスク2
    32がプレーヤを轢き倒すか、マッシャー234がプレーヤを捕えるか、もしくはこの容易に拡張できるゲームに対して考えついた任意他の落し穴をプレーヤが通り抜けに失敗するたびにプレーヤは1ポイントを失う。 迷路230のある部分に天井が無い場合、プレーヤは空中にジャンプして迷路の頂部を一見することができる。 プレーヤはまた迷路に沿って "電子パンくず" を落すことができる。 しかしながら、他のプレーヤは任意のプレーヤのマーカーを移動させて敵の努力をくつがえすことができる。

    【0162】図20にプレーヤがヘルメット28を介して見ることのできる迷路230の3次元図を示す。 いくつかの迷路を1個のROMカードに格納して、プレーヤは好きな迷路を選定するかもしくはゲーム機構や組込機能に任意に選択させることができる。 多レベル迷路によりゲームは(空間的および困難度の)ディメンジョンが高くなる。 図20では2人のプレーヤに対し迷路230
    の通路244内に左マーク目標物240,242が示されている。 通路244には壁246,248,250および天井252がある。 通路244の床254上をプレーヤが通りコーナを曲って迷路を進み続ける。 迷路を進み続けると、迷路230の光景が変ってゲームのデータベースに従ったプレーヤの位置が反映される。

    【0163】グレースゲームは実施例の一つの簡単な応用にすぎない。 娯楽/ゲーム応用の他に、実施例の仮想現実システムは他のさまざまな分野に使用される。 例えば、教育上では、建築科の学生は自分が設計したビルの仮想世界モデルへ入ることができる。 同様に、医科の学生は脳のモデルを巡回することができ化学者は複雑な分子の3次元モデルの内側およびその周りを歩くことができる。 実施例の多プレーヤ仮想現実システムにより、学生と先生が同時に同じ仮想現実世界内に居ることができる。 例えば、旅行代理店は潜在顧客に例えばディズニーワールド等のリゾート地のモデルの案内旅行を提供して顧客の休暇計画を支援することができる。 実施例の低コスト仮想現実システムを使用した他の応用も沢山ある。
    これらの応用も明らかに本発明の範囲に入る。

    【0164】 実施例の特徴実施例のさまざまな重要な特徴について要約する。

    【0165】オペレータが仮想現実像の仮想現実世界に居るかのように感じる仮想現実システムはイメージデータを仮想現実像として表示するディスプレイ回路と、イメージデータを格納するメモリと、オペレータが装着するヘルメットデバイスを含みヘルメットデバイスはディスプレイスクリーンを含みヘルメット装置のオペレータの動作に応答してディスプレイスクリーン上にイメージデータを発生するようにされており、かつメモリを付随するマイクロプロセッサが含まれていてメモリからイメージデータを抽出しイメージデータからディスプレイを制御してあたかもオペレータが仮想現実像の中でそれと関っているかのように仮想現実像を変化させる。 ディスプレイ回路にはディスプレイスクリーンが含まれる。 このようなシステムにはさらにメモリ、マイクロプロセッサ、およびディスプレイ回路の所定部分を収容するシャーシを含むことができる。 また、仮想現実世界を構成するアプリケーションプログラムおよびデータをディスプレイ回路、メモリおよびマイクロプロセッサと関連ずける回路を含むゲームカートリッジを含むことができる。
    さらに、シャーシはゲームカートリッジをシャーシへ挿入してメモリ、マイクロプロセッサおよびディスプレイ回路の所定部分へ接続するように構成することができる。

    【0166】オペレータが仮想現実世界に居ると感じる、仮想現実システムを使用して仮想現実像の仮想現実世界を生成する方法はイメージデータを仮想現実像としてディスプレイ回路を付随するディスプレイスクリーン上に表示し、イメージデータをメモリ内に格納し、ディスプレイスクリーンを含むヘルメット装置をオペレータに装着し、ヘルメット装置のオペレータの動作に応答してディスプレイスクリーン上にイメージデータを発生し、メモリからイメージデータを抽出し、ディスプレイ回路を制御してあたかもオペレータが仮想現実像の中に居てそれと関っているかのように仮想現実像を変化させるステップからなっている。 このような方法には、パワーハンド組立体やジョイスティック装置を使用してイメージデータ入力回路へ制御信号を挿入するステップを含めることもできる。 さらに、本方法にはメモリ、マイクロプロセッサ、およびディスプレイ回路の所定部分をシステムシャーシ内に収容するステップを含めることができる。 本方法にはさらに仮想現実世界を構成するアプリケーションプログラムおよびデータをゲームカートリッジ回路へ格納してディスプレイ回路、メモリおよびマイクロプロセッサと関連ずけるステップを含めることができる。 本方法はさらにこのようなゲームカートリッジをシャーシ内の所定の開口へ挿入してゲームカートリッジ回路をメモリ、マイクロプロセッサおよびディスプレイ回路の所定部分へ接続するステップを含めることができる。

    【0167】仮想現実環境におけるオブジェクトの相対位置および運動をモデル化する方法が示され、それは仮想現実環境内の第1および第2のオブジェクトをグラフィックディスプレイ上にグラフィック表示し、第1および第2のオブジェクト間の第1の分割面を決定し、第1
    の分割面を横切移動する第1もしくは第2のオブジェクトに応答して第1および第2オブジェクト間の第2の分割面を決定し、所定の観察点に対する仮想現実環境の第1および第2のオブジェクトの相対位置に従って第1および第2のオブジェクトを選択的に不明瞭とすることにより仮想現実環境における第1および第2のオブジェクトの移動をグラフィックディスプレイ上にグラフィック表示するステップを含んでいる。 このような方法には所定セットの観察座標からオブジェクトの相対移動を決定するステップを含めることもできる。 この場合、オブジェクトの相対移動を決定するこのようなステップは移動体のヨー、ピッチおよび/もしくはロールを測定するのに使用することができる。

    【0168】仮想現実環境におけるオブジェクトの相対位置および移動をモデル化するシステムが示され、それは仮想現実環境内の第1および第2のオブジェクトをグラフィック表示するグラフィックディスプレイを含み、
    表示は仮想現実環境内の所定の観察点に対する第1および第2のオブジェクトの相対位置に従って第1および第2のオブジェクトが選択的に不明瞭とされており、さらに第1および第2のオブジェクト間の第1の分割面を決定する回路と、第1の分割面を横切する第1もしくは第2のオブジェクトに応答して第1および第2のオブジェクト間の第2の分割面を決定する回路を含んでいる。 このようなシステムはさらに複数人の観察者が仮想現実環境に居ると感じることができかつ環境内部から仮想現実環境における互いの相対位置および移動を観察することができるようにする回路を含むことができる。 本システムはまた仮想現実環境を記述するデータを含む一つのマスターデータベースおよびオブジェクトの相対移動を記述するデータによりマスターデータベースを更新する回路を含むことができる。 複数人の観察者が参加できる回路を含むシステムに関して、各オブジェクトに関連する終点節、第2の分割面に関連する中間点節、および第1
    の分割面に関連する根元節を発生する回路を含むこともできる。 このような場合、終点節および中間点節発生回路は第1の分割面と交差する少くとも一つのオブジェクトに応答して中間点節を形成し中間点節を第2の分割面と関連ずける回路を含むことができる。 さらに、本システムは一つの面内の回転視点からオブジェクトの相対移動を決定する回路、もしくは所定セットの観察座標からオブジェクトの相対移動を決定する回路を含むことができる。 後者の場合、システムは移動体の相対移動を決定して移動体のヨー、ピッチおよび/もしくはロールを測定する回路を含むこともできる。 本システムはまた隠面消去効果、オブジェクト間の相対移動を決定する回路および/もしくはオブジェクト間の相対移動中に遠いオブジェクトに基いてクリッピングを決定する回路を含むこともできる。 さらに、この回路には遠オブジェクト消去を決定して透視近似を行う回路を含めることもできる。

    【0169】特定実施例について本発明を説明してきたが、これは制約的な意味合いを有するものではない。 同業者ならば前記説明を読めば本発明の別の実施例だけでなく、開示した実施例のさまざまな変更が自明であると思われる。 発明の真の範囲内に入るこのような修正は特許請求の範囲に入るものとする。

    【0170】以上の説明に関して更に以下の項を開示する。 (1) オペレータが仮想現実像の仮想現実世界に居るように感じる仮想現実システムにおいて、該システムは、ディスプレイスクリーンを含み仮想現実像としてイメージデータを表示するディスプレイ回路と、前記イメージデータを格納するメモリと、前記ディスプレイスクリーンを含みオペレータが装着するヘルメット装置のオペレータの動作に応答して前記ディスプレイスクリーン上にイメージデータを発生するヘルメット装置と、前記イメージデータを前記メモリから抽出し前記イメージデータにより前記ディスプレイ回路を制御してオペレータがあたかも前記仮想現実世界内に居てそれに関わっているかのように前記仮想現実像を変化させる前記メモリに関連するマイクロプロセッサにより構成される仮想現実システム。

    【0171】(2) 第1項記載の装置において、さらに所定のオペレータ制御入力集合に応答して前記データスクリーン上にイメージデータを発生し前記イメージデータを前記メモリ回路へ送出するイメージデータ入力回路を具備する仮想現実システム。

    【0172】(3) 第2項記載の装置において、前記イメージデータ入力回路はパワーハンド組立体により構成される仮想現実システム。

    【0173】(4) 第2項記載の装置において、前記イメージデータ入力回路はジョイスティック装置により構成される仮想現実システム。

    【0174】(5) 第1項記載の装置において、前記ディスプレイ回路は前記ヘルメット装置に付随するヘルメットカードにより構成され、前記ヘルメットカードはディスプレイ信号を発生して前記ディスプレイスクリーンへ送る回路により構成される仮想現実システム。

    【0175】(6) 第5項記載の装置において、前記ヘルメットカードは前記ディスプレイ回路の他の部分へ選択的に接続することができる仮想現実システム。

    【0176】(7) 第5項記載の装置において、前記ディスプレイ回路は前記ディスプレイスクリーン用の前記ディスプレイ信号を発生するのに使用する前記ヘルメットカード用のグラフィック信号を発生するグラフィック信号プロセッサにより構成される、仮想現実システム。

    【0177】(8) 第5項記載の装置において、前記メモリは複数枚のヘルメットカードが前記ディスプレイスクリーン用のディスプレイ信号を発生するためのデータを取得する主仮想世界データベースにより構成される、仮想現実システム。

    【0178】(9) 第1項記載の装置において、さらに前記メモリ、前記マイクロプロセッサ、および前記ディスプレイ回路の所定部分を収容するためのシャーシを具備する、仮想現実システム。

    【0179】(10) オペレータが仮想現実世界に居るかのように感じる仮想現実システムを使用して仮想現実像の仮想現実世界を生成する方法において、該方法は、ディスプレイ回路を付随するディスプレイスクリーン上に仮想現実像としてのイメージデータを表示し、前記イメージデータをメモリ内に格納し、前記ディスプレイスクリーンを含むヘルメット装置をオペレータへ装着し、前記ヘルメット装置のオペレータの動作に応答して前記ディスプレイスクリーン上にイメージデータを発生し、前記メモリから前記イメージデータを抽出し、前記ディスプレイ回路を制御してあたかもオペレータが前記仮想現実像内に居てそれに関わっているかのように前記仮想現実像を変化させる、ステップを含む仮想現実世界生成方法。

    【0180】(11) 第10項記載の方法において、
    さらに所定のオペレータ制御入力セットに応答して前記データスクリーン上にイメージデータを発生し前記イメージデータを前記メモリへ送出するステップを含む、仮想現実世界生成方法。

    【0181】(12) 第10項記載の方法において、
    さらにヘルメットカード回路を使用してディスプレイ信号を発生し前記ディスプレイスクリーンへ送るステップを含む、仮想現実世界生成方法。

    【0182】(13) 第12項記載の方法において、
    さらに複数枚の前記ヘルメットカードを前記ディスプレイ回路の他の部分と選択的に接続するステップを含む、
    仮想現実世界生成方法。

    【0183】(14) 第12項記載の方法において、
    さらにグラフィック信号プロセッサを使用して前記ディスプレイスクリーン用の前記ディスプレイ信号を発生するのに使用する前記ヘルメットカード用のグラフィック信号を発生するステップを含む、仮想現実世界生成方法。

    【0184】(15) 第12項記載の方法において、
    さらに複数枚のヘルメットカードがデータを取得できる主仮想世界データベースを前記メモリ内に記憶させ、前記主仮想世界データベースの前記データに応答して前記複数のディスプレイスクリーンに対するディスプレイ信号を発生するステップを含む、仮想現実世界生成方法。

    【0185】(16) 仮想現実環境における物体の相対位置および運動をモデル化する方法において、該方法は、仮想現実環境における第1および第2の物体をグラフィックディスプレイ上にグラフィック表示し、前記第1および第2の物体間の第1の分割面を決定し、前記第1の分割面を横切移動する前記第1もしくは第2の物体のいずれかに応答して前記第1および第2の物体間の第2の分割面を決定し、前記仮想現実環境における前記第1および第2の物体の所定の観察点に対する相対位置に従って前記第1および第2の物体を選択的に不明瞭とすることにより前記仮想現実環境内の前記第1および第2
    の物体の運動を前記グラフィックディスプレイ上にグラフィック表示する、ステップを含むモデル化方法。

    【0186】(17) 第16項記載の方法において、
    さらに複数ビューアが前記仮想現実環境内に居るように感じることができかつ前記仮想現実環境内における互いの相対位置および運動を環境内部から観察できるようにするステップを含む、モデル化方法。

    【0187】(18) 第17項記載の方法において、
    さらに仮想現実環境を記述するデータを主データベースに格納し前記物体の相対運動を記述するデータにより前記主データベースを更新するステップを含む、モデル化方法。

    【0188】(19) 第17項記載の方法において、
    さらに前記各物体に関する終点節と、前記第2の分割面に関する中間点節と、前記第1の分割面に関する根元点節(ルートノード)を発生するステップを含む、モデル化方法。

    【0189】(20) 第19項記載の方法において、
    前記終点節および中間点節発生ステップはさらに前記第1の分割面と交差する少くとも一つの前記物体に応答して中間点節を形成し、かつ前記中間点節を前記第2の分割面と関連ずけるステップを含む、モデル化方法。

    【0190】(21) 第16項記載の方法において、
    さらに面内の回転視点から物体の相対運動を決定するステップを含む、モデル化方法。

    【0191】(22) 第16項記載の方法において、
    さらに所定の観察座標セットから物体の相対運動を決定するステップを含む、モデル化方法。

    【0192】(23) 第16項記載の方法において、
    さらに物体間の相対運動の隠面消去効果を決定するステップを含む、モデル化方法。

    【0193】(24) 第16項記載の方法において、
    さらに物体間の相対運動中に遠方物体に基いてクリッピングを決定するステップを含む、モデル化方法。

    【0194】(25) 第16項記載の方法において、
    さらに透視近似を行うための遠方物体の消去を決定するステップを含む、モデル化方法。

    【0195】(26) オペレータが仮想現実像62の仮想現実世界74内に居るように感じる仮想現実システム20はイメージデータを仮想現実像62として表示するディスプレイスクリーン60を含んでいる。 メモリ回路はイメージデータを格納している。 ヘルメット装置2
    8がオペレータに装着されオペレータの動作および制御信号に応答してディスプレイスクリーン60上にイメージデータを発生するディスプレイスクリーン60を含んでいる。 マイクロプロセッサ76にはメモリ回路が付随されメモリ回路からイメージデータを抽出してディスプレイ回路36を制御しオペレータがあたかも仮想現実像の中に居てそれに関っているかのように仮想現実像62
    を変化させる。 仮想現実システム20によりさまざまな仮想現実技術を使用する低コストシステムが提供される。 仮想現実世界74内のオブジェクトの相対位置および移動をモデル化するシステムおよび方法は仮想現実世界74内の第1および第2のオブジェクトをグラフィックディスプレイ(60および68)上にグラフィック表示し、第1および第2のオブジェクト間の分割面を決定し、第1の分割面を横切移動する前記第1もしくは第2
    のオブジェクトに応答して第1および第2のオブジェクト間の第2の分割面を決定することを含んでいる。 次に、本方法およびシステムにより所定の観察点に対する相対位置に従って第1および第2のオブジェクトを選択的に不明瞭とすることにより仮想現実世界74内の第1
    および第2のオブジェクトの移動がグラフィックディスプレイ(60および68)上にグラフィック表示される。

    【図面の簡単な説明】

    【図1】本発明の実施例を使用した2人のプレーヤの概念図。

    【図2】実施例の仮想現実システムの全体アーキテクチュアの略ブロック図。

    【図3】実施例のヘルメットボードアーキテクチュアの略ブロック図。

    【図4】実施例の仮想現実システムの略ブロック図。

    【図5】実施例の詳細回路図。

    【図6】実施例の詳細回路図。

    【図7】実施例の詳細回路図

    【図8】実施例の主プロセッサの基本ソフトウェアフロー図。

    【図9】実施例のヘルメットプロセッサの基本ソフトウェアフロー図。

    【図10】実施例の移動体およびオブジェクトデータベースを示す図。

    【図11】実施例の移動体およびオブジェクトデータベースを示す図。

    【図12】実施例の移動体およびオブジェクトデータベースを示す図。

    【図13】実施例の移動体およびオブジェクトデータベースを示す図。

    【図14】実施例において移動体アルゴリズムおよび3
    次元2分割データベースを実現するのに使用する倍長語のフィールドを示す図。

    【図15】実施例において移動体アルゴリズムおよび3
    次元2分割データベースを実現するのに使用する倍長語のフィールドを示す図。

    【図16】実施例において移動体アルゴリズムおよび3
    次元2分割データベースを実現するのに使用する倍長語のフィールドを示す図。

    【図17】実施例において移動体アルゴリズムおよび3
    次元2分割データベースを実現するのに使用する倍長語のフィールドを示す図。

    【図18】実施例において移動体アルゴリズムおよび3
    次元2分割データベースを実現するのに使用する倍長語のフィールドを示す図。

    【図19】実施例のシステムおよび方法を使用した応用例を示す図。

    【図20】実施例のシステムおよび方法を使用した応用例を示す図。

    【符号の説明】

    20 仮想現実システム 28 ヘルメット装置 36 ディスプレイ回路 60 グラフィックディスプレイ 62 仮想現実像 68 グラフィックディスプレイ 74 仮想現実世界 76 マイクロプロセッサ

    ───────────────────────────────────────────────────── フロントページの続き (72)発明者 ダニエル エム. ドナヒュー アメリカ合衆国テキサス州ダラス,ラ コ サ 7705 (72)発明者 ジャッド イー. ヒープ アメリカ合衆国テキサス州ダラス,スプリ ング メドウ 5330 (72)発明者 アンドリュー ケイ. スミス アメリカ合衆国マサチューセッツ州ボスト ン,マウント バーノン ストリート 62 (72)発明者 トーマス エム. シープ アメリカ合衆国テキサス州ガーランド,デ ンマーク ドライブ 2406 (72)発明者 ドナルド ダブリュ. アドキンズ アメリカ合衆国テキサス州オーク リー フ,ロァリング クリーク ドライブ 603

    高效检索全球专利

    专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

    我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

    申请试用

    分析报告

    专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

    申请试用

    QQ群二维码
    意见反馈