(57)【特許請求の範囲】
【請求項１】
３次元リソースをアプリケーション場面ノードの組に付加するステップであって、前記アプリケーション場面ノードの組はアプリケーション場面ノードの複数のサブセットを有し、該複数のサブセットの夫々はその要素として少なくとも１つの３次元リソースを表すノードを含む、ステップと、
場面グラフにおいて、コンピュータシステムのオペレーティングシステム上で第１のアプリケーションコンテキストにおいて実行される第１のプロセスを表すノードに前記アプリケーション場面ノードの第１のサブセットを接続することと、前記オペレーティングシステム上で第２のアプリケーションコンテキストにおいて実行される第２のプロセスを表すノードに前記アプリケーション場面ノードの第２のサブセットを接続することとによって、前記第１のプロセスを前記第２のプロセスから離すステップと、
前記第１のプロセス及び前記第２のプロセスの夫々と前記コンピュータシステムの３次元表示サーバとの間のプロセス間通信を行うステップと、
前記場面グラフの各アプリケーション場面ノードに付加された前記３次元リソースに基づき前記第１のプロセス及び前記第２のプロセスの処理を通じてレンダリングを行うステップと
を有する方法。
【請求項２】
前記第１のプロセス及び前記第２のプロセスの夫々と前記コンピュータシステムの３次元表示サーバとの間のプロセス間通信を行うステップは、プロセス分離インターフェースを用いることによって前記３次元表示サーバが前記第１のプロセス及び前記第２のプロセスと別個に通信することを含む、
請求項１に記載の方法。
【請求項３】
同じアプリケーション場面ノードへの前記第１のプロセス及び前記第２のプロセスのアクセス衝突を回避するために、前記第１のプロセス及び前記第２のプロセスを別個に処理するステップ
を更に有する請求項２に記載の方法。
【請求項４】
前記３次元表示サーバが、３次元アプリケーションコンテキストにおいて実行される前記第１のプロセスと通信し、２次元アプリケーションコンテキストにおいて実行される前記第２のプロセスと通信するステップ
を更に有する請求項２又は３に記載の方法。
【請求項５】
前記３次元表示サーバが同時に複数のアプリケーションと通信するステップ
を更に有する請求項２乃至４のいずれか一項に記載の方法。
【請求項６】
前記場面グラフにおける接続が変更されていないプロセスと前記３次元表示サーバとの間のプロセス間通信なしに、前記場面グラフにおける接続が変更されたプロセスと前記３次元表示サーバとの間のプロセス間通信を行うステップ
を有する請求項１乃至５のいずれか一項に記載の方法。
【請求項７】
前記アプリケーション場面ノードの第１のサブセットを前記第１のプロセスを表すノードへ接続すること、及び前記アプリケーション場面ノードの第２のサブセットを前記第２のプロセスを表すノードへ接続することは、
更なるアプリケーション場面ノードを子ノードとして、親ノードを表す、前記アプリケーション場面ノードの前記第１のサブセット及び前記第２のサブセットの要素へ接続すること
を含む、請求項１乃至６のいずれか一項に記載の方法。
【請求項８】
前記更なるアプリケーションノードは、その親ノードに対する位置及び回転の差分情報を有する、
請求項７に記載の方法。
【請求項９】
前記位置及び回転の差分情報は、４×４のマトリクスを含むマトリクスを有する、
請求項８に記載の方法。
【請求項１０】
前記レンダリングを行うステップは、前記３次元リソースの互いに対する反転、屈折、シャドーイング、シェーディング、及び／又は重なり合いを計算することを含む、
請求項１乃至９のいずれか一項に記載の方法。
【請求項１１】
前記３次元リソースは、テクスチャ、シェード及びメッシュを含むエレメンタリ３次元オブジェクトを表す、
請求項１乃至１０のいずれか一項に記載の方法。
【請求項１２】
前記第１のプロセス及び前記第２のプロセスによるアプリケーション場面ノードの共有を制御するステップ
を更に有する請求項２乃至１１のいずれか一項に記載の方法。
【請求項１３】
３次元コンピュータシステムのためのコンピュータプログラムであって、前記３次元コンピュータシステムによって実行される場合に、前記３次元コンピュータシステムを、
３次元リソースをアプリケーション場面ノードの組に付加するよう構成されるアプリケーションソフトウェアであって、前記アプリケーション場面ノードの組はアプリケーション場面ノードの複数のサブセットを有し、該複数のサブセットの夫々はその要素として少なくとも１つの３次元リソースを表すノードを含み、場面グラフにおいて、当該アプリケーションソフトウェアの第１のアプリケーションコンテキストにおいて実行される第１のプロセスを表すノードに前記アプリケーション場面ノードの第１のサブセットを接続することと、当該アプリケーションソフトウェアの第２のアプリケーションコンテキストにおいて実行される第２のプロセスを表すノードに前記アプリケーション場面ノードの第２のサブセットを接続することとによって、前記第１のプロセスを前記第２のプロセスから離すよう構成されるアプリケーションソフトウェアと、
前記場面グラフの各アプリケーション場面ノードに付加された前記３次元リソースに基づき前記第１のプロセス及び前記第２のプロセスの処理を通じてレンダリングを行うよう構成される３次元表示サーバと、
前記アプリケーションソフトウェアと前記３次元表示サーバとの間にあり、前記第１のプロセス及び前記第２のプロセスの夫々と前記３次元表示サーバとの間のプロセス間通信を別個に可能にするよう構成されるプロセス分離インターフェースと
として機能させるコンピュータプログラム。
【請求項１４】
前記プロセス分離インターフェースは、３次元アプリケーション及び２次元アプリケーションを含む異なるアプリケーションと前記３次元表示サーバとの間の通信を可能にするよう構成される、
請求項１３に記載のコンピュータプログラム。
【請求項１５】
前記３次元コンピュータシステムによって実行される場合に、前記３次元コンピュータシステムを、
３次元アプリケーション基準のためのユーザインターフェースコンポーネントを提供し且つ前記３次元リソースを前記アプリケーションソフトウェアへ提供する３次元ウィジェットツールキットソフトウェアと、
当該コンピュータプログラムが実行されているコンピュータハードウェアを制御して、前記３次元表示サーバが前記レンダリングを行うことができるようにするよう構成されるプラットフォームグラフィクスインターフェースと
として更に機能させる請求項１３又は１４に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、３次元場面グラフをスクリーンに表示する方法と、３次元コンピュータシステムのためのオペレーティングシステムとに関し、特に、アプリケーション視覚化のためのウィンドウ管理及びプロセス分離インターフェースの分野において、かかるオペレーティングシステムにおけるグラフィックスタックに関する。
【背景技術】
【０００２】
デスクトップメタファは、そもそもは、１９７０年にゼロックス社のパロアルト研究所にいたアラン・ケイによって紹介された。スタッキング・デスクトップメタファは、最初に、ウィンドウが積み重なることを可能にするようゼロックス・スターによって最初に使用された。ゼロックス・スターは、ダイアログボックスの重なりを可能にした。デスクトップ環境を形成する２つの構成要素は通常、ウィンドウマネージャ及びウィジェットツールキットであり、統合された見た目をアプリケーションに対して、更にはデスクトップ環境へ提供する。ウィンドウ管理は、エンドユーザに同時に複数のプロセス視覚化を示すことを可能にする。現在のウィンドウマネージャにおいて、ウィンドウマネージャとアプリケーションプロセスとの間のインターフェースは通常、矩形ビットマップである。データ伝送は、アプリケーションプロセスとウィンドウマネージャとの間で、様々な方法で行われる。例えば、描画されるフレームごとにビットマップ全体を転送すること、アプリケーションビットマップから変更された領域を転送すること、又は単一の描画コマンドを転送することによる。プロセス分離は、オペレーティングシステムのレベル安定性及びロバスト性を高める。プロセスは、明確なインターフェースによって互いから完全に分離される。デフォルトとして、プロセスは、他のプロセスによって保有されているリソースにアクセスすることができない。
【０００３】
幾つかのウィンドウマネージャは、プロセス分離２次元アプリケーションサーフェスを３次元場面に埋め込む。２次元アプリケーションサーフェスは、そのようなデスクトップ環境において様々な場所、すなわち、３次元キューブの面、仮想世界における壁、等に置かれる。過去数年間になされたこの分野における研究の概要は、“Peuhkurinen  A.，Mikkonen  T.，Terho  M.：Using  RDF  Data  as  Basis  for  3D  Window  Manager  in  Mobile  Devices，MobiWIS-2011，Niagara  Falls，Canada，September  2011”（非特許文献）で見られる。
【０００４】
２次元サーフェスを用いずに同じ場面グラフに対して直接に３次元オブジェクトを用いることによってアプリケーションプロセスが自身を視覚化することができる３次元デスクトップ環境を作るために、先行技術のウィンドウマネージャ及びウィジェットツールキットは設計され直す必要がある。従って、表示サーバ（すなわち、ウィンドウマネージャ）とアプリケーションプロセスとの間に新たな視覚化インターフェースを定義することが望ましい。
【０００５】
加えて、表示サーバは、３次元オブジェクトを用いることによって直接にアプリケーションを表示するために、分離されたプロセスとグラフィクスに関連するデータとをレンダリングすることができなければならない。従って、データにおける変更を処理し通信し且つ表示サーバとアプリケーションプロセスとの間でデータをロードしアンロードするための最適な解決法を見つけることが望ましい。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Peuhkurinen  A.，Mikkonen  T.，Terho  M.：Using  RDF  Data  as  Basis  for  3D  Window  Manager  in  Mobile  Devices，MobiWIS-2011，Niagara  Falls，Canada，September  2011
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、３次元映像システムにおいて表示サーバとアプリケーションとの間の改善された視覚化インターフェースを提供することである。
【課題を解決するための手段】
【０００８】
上記の目的は、独立請求項の特徴によって達成される。更なる実施形態は、従属請求項、明細書及び図面から明らかである。
【０００９】
本発明は、３次元映像システムにおける表示サーバとアプリケーションとの間の改善された視覚化インターフェースが、３次元場面グラフを備える表示サーバがアプリケーションごとのプロセス分離を実行することを可能にするグラフィックスタックへ新たなコンポーネントを適用することによって、作られ得るという発見に基づく。更に、その新たなコンポーネントは、表示サーバにおけるアプリケーションインターフェースに基づき、一般に使用される２次元サーフェスに代えて３次元アプリケーションインターフェースを実施する。よって、プロセス分離アプリケーション視覚化が、一般に使用される２次元サーフェスに代えて３次元によって実現され得る。
【００１０】
詳細に本発明を記載するために、次の用語、略語及び表示法が使用される。
【００１１】
３Ｄ：３次元。
【００１２】
２Ｄ：２次元。
【００１３】
３Ｄコンピュータグラフィクス：計算を実行し且つ画像をレンダリングするためにコンピュータに記憶されている幾何学データの３次元表現を用いるグラフィクス。画像は、後に見るために又は実時間で表示されるために記憶され得る。
【００１４】
３Ｄレンダリング：３Ｄワイヤフレームモデル（すなわち、３次元の視覚提示又は物理オブジェクト）を、コンピュータ上の３Ｄフォトリアリスティック効果又は非フォトリアリスティックレンダリングにより２Ｄ画像に自動変換する３Ｄコンピュータグラフィクスプロセス。
【００１５】
３Ｄコンピュータグラフィクスソフトウェア：３Ｄコンピュータ処理（ＣＧ）イメージを作成するために使用されるプログラム。３Ｄモデリングは、ユーザがモデルをそれらの３Ｄメッシュを介して作成し変更することを可能にする。ユーザは、自身の要望に応じてメッシュを加え、減じ、伸ばし、且つ、別なふうに変更することができる。モデルは、通常は同時に、様々な角度から見ることができる。モデルは回転可能であり、ビューはズームイン及びズームアウト可能である。
【００１６】
ＵＩ：ユーザインターフェース。ユーザインターフェースは、人間と機械との間の相互作用が起こる空間である。この相互作用の目標は、ユーザエンドでの機械の有効な操作及び制御と、操作者が操作的意志決定を行うのを助ける機械からのフィードバックとである。
【００１７】
ＥＧＬ：ＡＰＩをレンダリングするクロノス（例えば、ＯｐｅｎＧＬ  ＥＳ又はＯｐｅｎＶＧ）と、基礎を成す生来のプラットフォームウィンドウイングシステムとの間のインターフェース。ＥＧＬは、グラフィクスコンテキスト管理、サーフェス／バッファ結合、レンダリング同期化を扱い、他のクロノスＡＰＩを用いて高速な、加速された、混合モードの２Ｄ及び３Ｄレンダリングを可能にする。クロノスは、多種多様なプラットフォーム及びデバイスにおける並列計算、グラフィクス、動的メディア、コンピュータビジョン、及びセンサ処理のオーサリング及び加速のためのオープンスタンダードを作る業界コンソーシアムである。
【００１８】
ＧＬＥＳ：埋込システムのための（開放）ＧＬ（ＯｐｅｎＧＬ  ＥＳ）は、携帯電話機、ＰＤＡ、及びビデオゲーム機のような埋込システムのために設計されたＯｐｅｎＧＬ３Ｄグラフィクスアプリケーションプログラミングインターフェース（ＡＰＩ）のサブセットである。
【００１９】
ＡＰＩ：アプリケーションプログラミングインターフェース。アプリケーションプログラミングインターフェースは、互いに通信するためにソフトウェアコンポーネントによってインターフェースとして使用されるよう意図されたプロトコルである。ＡＰＩは、ルーチン、データ構造、オブジェクトクラス、及び変数の仕様を含むライブラリである。
【００２０】
カーネル（Kernel）：コンピューティングにおいて、カーネルは、大部分のコンピュータオペレーティングシステムの主要構成要素であり、それは、ハードウェアレベルで行われる実際のデータ処理とアプリケーションとの間の橋渡しである。カーネルの責務には，システムのリソース（ハードウェア及びソフトウェアコンポーネントの間の通信）を管理することがある。通常、オペレーティングシステムの基本構成要素として、カーネルは、アプリケーションソフトウェアがその機能を実行することを制御しなければならないリソース（特に、プロセッサ及びＩ／Ｏデバイス）のために低レベル抽象化レイヤを提供することができる。それは通常、それらの機関を、プロセス間の通信メカニズム及びシステム呼び出しを通じてアプリケーションプロセスに利用可能にする。
【００２１】
アプリケーション：ソフトウェアアプリケーション又はアプリケーションソフトウェアは、ユーザが特定のタスクを実行するのを助けるよう設計されたコンピュータソフトウェアであり、携帯電話機、ＰＤＡ、及びビデオゲーム機のような埋込システムのために設計されてよい。
【００２２】
ミドルウェア：ソフトウェアにサービスを提供するコンピュータソフトウェアであり、携帯電話機、ＰＤＡ、及びビデオゲーム機で実行され得る。
【００２３】
オペレーティングシステムカーネル：コンピュータハードウェアを操作及び制御し、アプリケーションソフトウェアを実行するプラットフォームを提供するよう設計されたコンピュータソフトウェアであり、携帯電話機、ＰＤＡ、及びビデオゲーム機のような埋込システムで実施されるよう設計されてよい。
【００２４】
プロセス：実行されているコンピュータプログラムのインスタンスであり、携帯電話機、ＰＤＡ、及びビデオゲーム機のような埋込システムで実行されてよい。
【００２５】
ウィンドウマネージャ：グラフィカルユーザインターフェースにおいてウィンドウイングシステム内のウィンドウの配置及び外観を制御するシステムソフトウェア。大部分のウィンドウマネージャは、デスクトップ環境を提供するのを助けるよう設計される。それらは、必要とされる機能、すなわち、グラフィクスハードウェア、ポインティングデバイス、及びキーボードのためのサポートを提供する基礎的グラフィカルシステムと連動して動作し、しばしば、ウィジェットツールキットを用いて書かれて作成される。ウィンドウマネージャは、異なるプロセスによる視覚化を結合し且つ入力フローを制御するために使用される。よって、ウィンドウマネージャは、ユーザが全ての視覚化及びプロセスを単一のシステムとして経験することを可能にする。
【００２６】
表示サーバ：ウィンドウマネージャとも呼ばれる。アプリケーションがそれら自身のバッファにグラフィクスをレンダリングする場合に、ウィンドウマネージャは、アプリケーションウィンドウのオンスクリーン表示を形成するようそれらのバッファを含む表示サーバとなる。表示サーバは、アプリケーション及びビデオハードウェアと通信することと、それらに他のライブラリを用いる入力ハードウェアと通信させることとに関与する。
【００２７】
３Ｄウィジェットツールキット：ユーザインターフェースを生成するために使用される。ユーザインターフェースツールキットは、ソフトウェアオブジェクトのライブラリを生成し、それらを標準的なプログラミング言語内でインスタンス化及び特殊化を通じてカスタマイズすることによって、設計される。３Ｄウィジェットは、アフィン拘束される幾何学成分を有するウィジェット及びアプリケーションオブジェクトの構成をモデル化するよう操作される。原始３Ｄウィジェットは、リンキングと呼ばれるプロセスを用いて他の原始３Ｄウィジェットと結合可能であり、それにより、１又はそれ以上の拘束関係をそれらの間に確立する。
【００２８】
第１の態様に従って、本発明は、３Ｄ場面グラフをスクリーンに表示する方法であって、３Ｄリソースをアプリケーション場面ノードの組に付加するステップと、コンピュータシステムのオペレーティングシステム上で第１のアプリケーションコンテキストにおいて実行される第１のプロセスに前記アプリケーション場面ノードの第１のサブセットを接続し且つ前記オペレーティングシステム上で第２のアプリケーションコンテキストにおいて実行される第２のプロセスに前記アプリケーション場面ノードの第２のサブセットを接続することによって、前記第１のプロセスを前記第２のプロセスから離すステップと、前記第１のプロセス及び前記第２のプロセスを前記コンピュータシステムの３Ｄ表示サーバにロードするステップと、前記第１のプロセス及び前記第２のプロセスに基づき前記３Ｄ場面グラフを構成するステップと、前記３Ｄ場面グラフを前記スクリーンに表示するステップとを有する方法に関する。
【００２９】
当該方法は、プロセス分離を有しながら、すなわち、第１のアプリケーションコンテキストにおいて実行される第１のプロセスを第２のアプリケーションコンテキストにおいて実行される第２のプロセスから離しながら、同じ場面における３Ｄオブジェクトに基づくアプリケーション視覚化の実行を可能にする。このように、安全性及び安定性がシステム全体において改善され得る。３Ｄプロセス分離は、安全に且つ安定して、拡張現実アプリケーションのような構成されるべき３Ｄアプリケーションへの何らかの自然に見える第三者アプリケーションの埋込を可能にする。
【００３０】
本発明の第１の態様に従う方法の第１の可能な実施形態において、前記３Ｄリソースは、エレメンタリ３Ｄオブジェクト、特に、テクスチャ、シェード及びメッシュを表す。
【００３１】
複雑な場面グラフは、このようにしてエレメンタリオブジェクトにおいて除かれ、場面グラフを実施するための柔軟性を可能にする。
【００３２】
そのようなものとして第１の態様に従う、すなわち、第１の態様の第１の実施形態に従う方法の第２の可能な実施形態において、前記第１のプロセス及び前記第２のプロセスをロードするステップは、プロセス分離インターフェースを用いることによって前記第１のプロセス及び前記第２のプロセスを別個にロードすることを含む。
【００３３】
前記プロセス分離インターフェースは、異なるプロセスの分離を可能にし、よって、プロセス分離を用いない従来の方法に対して当該方法の安定性及びロバスト性を高める。
【００３４】
第１の態様の第２の実施形態に基づく方法の第３の可能な実施形態において、当該方法は、同じアプリケーション場面ノードへの前記第１のプロセス及び前記第２のプロセスのアクセス衝突を回避するために、前記第１のプロセス及び前記第２のプロセスを別個に処理するステップを有する。
【００３５】
同じアプリケーション場面ノードへの前記第１のプロセス及び前記第２のプロセスのアクセス衝突を回避することによって、システム全体の安定性が改善される。
【００３６】
第１の態様の第２又は第３の実施形態に基づく方法の第４の実施形態において、当該方法は、前記第１のプロセス及び前記第２のプロセスによるアプリケーション場面ノードの共有を制御するステップを有する。
【００３７】
前記第１のプロセス及び前記第２のプロセスによるアプリケーション場面ノードの共有を管理することによって、プロセスは、他のプロセスによって保有されているリソースにアクセスすることができない。プロセスは、システム全体の安定性を脅かさない。
【００３８】
３ＤＵＩ要素は、プロセス分離の緩みなしに、別個に場面におけるアプリケーションＵＩ要素の夫々１つを扱う可能性を有効にする。ＵＩ要素としての３Ｄオブジェクトは、それらの要素について自然の見た目のフィジックスの使用を可能にする。
【００３９】
第１の態様の第２乃至第４の実施形態のいずれかに従う方法の第５の可能な実施形態において、当該方法は、前記３Ｄ表示サーバに対して、３Ｄアプリケーションコンテキストにおいて実行される前記第１のプロセスをロードし、２Ｄアプリケーションコンテキストにおいて実行される前記第２のプロセスをロードするステップを有する。
【００４０】
異なるアプリケーションコンテキストにおいて実行されるプロセスを前記３Ｄ表示サーバにロードすることによって、異なるプロセスが、共通の３Ｄ表示サーバによって表示され得る。
【００４１】
第１の態様の第２乃至第５の実施形態のいずれかに従う方法の第６の可能な実施形態において、当該方法は、前記３次元表示サーバを同時に複数のアプリケーション接続へ接続するステップを有する。
【００４２】
そのようなものとして第１の態様に従う、すなわち、第１の態様の第１乃至第６の実施形態のいずれかに従う方法の第７の可能な実施形態において、当該方法は、接続が変更されていないプロセスを前記３Ｄ表示サーバにロードすることなしに、接続が変更されたプロセスを前記３Ｄ表示サーバにロードするステップを有する。
【００４３】
変更されたプロセスのみを前記３Ｄ表示サーバにロードすることによって、変更されないプロセスは処理される必要がないので、表示速度は速くなり、方法の計算複雑性は低減される。
【００４４】
そのようなものとして第１の態様に従う、すなわち、第１の態様の第１乃至第７の実施形態のいずれかに従う方法の第８の可能な実施形態において、前記アプリケーション場面ノードの第１のサブセットを前記第１のプロセスへ接続し且つ前記アプリケーション場面ノードの第２のサブセットを前記第２のプロセスへ接続することは、更なるアプリケーション場面ノードを子ノードとして、親ノードを表す、前記アプリケーション場面ノードの前記第１のサブセット及び前記第２のサブセットの要素へ接続することを含む。
【００４５】
子ノードを親ノードに接続することによって、当該方法は、既存のノードへの接続に影響を及ぼすことなく、柔軟に新しいノードをグラフに接続することを可能にし、それにより、安定性及び柔軟性を改善する。
【００４６】
第１の態様の第８の実施形態に従う方法の第９の可能な実施形態において、前記更なるアプリケーションノードは、その親ノードに対する位置及び回転の差分情報を有する。
【００４７】
前記更なるアプリケーションノードは、既存のノードに対するそれらの関係によって定義され得る。差分情報しか処理される必要がなく、完全なグラフの情報は処理されなくてよい。
【００４８】
第１の態様の第９の実施形態に従う方法の第１０の可能な実施形態において、前記位置及び回転の差分情報は、マトリクス、特に４×４のマトリクスを有する。
【００４９】
マトリクスを用いることによって、要素マトリクス演算が新しいノードを処理するために適用され得る。
【００５０】
そのようなものとして第１の態様に従う、すなわち、第１の態様の第１乃至第１０の実施形態のいずれかに従う方法の第１１の可能な実施形態において、前記３Ｄ場面グラフを構成するステップは、前記３Ｄリソースの互いに対する反転、屈折、シャドーイング、シェーディング、及び／又は重なり合いを計算することを含む。
【００５１】
３Ｄアプリケーションは、それらが同じ３Ｄ場面においてレンダリングされるので、容易に互いからの反転及び屈折を有することができる。３Ｄアプリケーションは、アプリケーションが同じ３Ｄ場面においてレンダリングされ且つ同じ光源を供給することができるので、現実的な見た目のシャドー及びシェーディングを有することができる。３Ｄ場面グラフのビューイングの印象は、このようにして改善される。
【００５２】
そのようなものとして第１の態様に従う、すなわち、第１の態様の第１乃至第１１の実施形態のいずれかに従う方法の第１２の可能な実施形態において、前記３Ｄ表示サーバは、アプリケーションプロセス内に配置される。
【００５３】
第１の態様の第２乃至第１１の実施形態のいずれかに従う当該方法の第１３の可能な実施形態において、前記３次元表示サーバは、第３のアプリケーションプロセス内に配置され、更なるアプリケーションプロセスが、前記プロセス分離インターフェースを介して前記３次元表示サーバへ接続される。
【００５４】
第１の態様の第１３の実施形態に従う方法の第１４の可能な実施形態において、当該方法は、前記３Ｄ場面グラフの全体におけるルートからリーフまでのノードチェーンが複数のプロセス分離インターフェースを有する木構造を形成するステップを有する。
【００５５】
第２の態様に従って、本発明は、３Ｄコンピュータシステムのためのオペレーティングシステムであって、３Ｄリソースをアプリケーション場面ノードの組に付加するよう構成されるアプリケーションソフトウェアであって、当該アプリケーションソフトウェアの第１のアプリケーションコンテキストにおいて実行される第１のプロセスに前記アプリケーション場面ノードの第１のサブセットを接続し且つ当該アプリケーションソフトウェアの第２のアプリケーションコンテキストにおいて実行される第２のプロセスに前記アプリケーション場面ノードの第２のサブセットを接続することによって、前記第１のプロセスを前記第２のプロセスから離すよう構成されるアプリケーションソフトウェアと、前記アプリケーション場面ノードの前記３Ｄリソースに基づき３Ｄ場面グラフを構成し、該３Ｄ場面グラフをスクリーンに表示するよう構成される３Ｄ表示サーバと、前記アプリケーションソフトウェアと前記３Ｄ表示サーバとの間にあり、前記第１のプロセス及び前記第２のプロセスを前記３Ｄ表示サーバに別個にロードするよう構成されるプロセス分離インターフェースとを有するオペレーティングシステムに関する。
【００５６】
３Ｄリソースをアプリケーション場面ノードに付加することによって、３Ｄアプリケーションは、依然として全体的に自然に見え且つプロセス分離を有しながら、すなわち、第１のアプリケーションコンテキストにおいて実行される第１のプロセスを第２のアプリケーションコンテキストにおいて実行される第２のプロセスから分離して安定性及び安全性を構築しながら、互いの周囲で結合されるように、２Ｄサーフェスと比較して新しい方法において互いに重なりあうことができる。
【００５７】
第２の態様に従うオペレーティングシステムの第１の可能な実施形態において、前記プロセス分離インターフェースは、異なるアプリケーション、特に、３Ｄアプリケーション及び２Ｄアプリケーションを、前記３Ｄ表示サーバに接続するよう構成される。
【００５８】
３Ｄプロセス分離は、安全に且つ安定して、拡張現実アプリケーションのように、３Ｄアプリケーションへの自然に見える第三者アプリケーションの埋込を可能にする。２Ｄアプリケーションに対する第三者アプリケーションも埋め込まれてよい。オペレーティングシステムは、既存の２Ｄアプリケーション及び新しい３Ｄアプリケーションに相互運用可能である。
【００５９】
そのようなものとして第２の態様に従う、すなわち、第２の態様の第１の実施形態に従うオペレーティングシステムの第２の可能な実施形態において、当該オペレーティングシステムは、３Ｄアプリケーション基準のためのユーザインターフェースコンポーネントを提供し且つ前記３Ｄリソースを前記アプリケーションソフトウェアへ提供する３Ｄウィジェットツールキットソフトウェアと、前記３Ｄ表示サーバと当該オペレーティングシステムのカーネルとの間にあり、当該オペレーティングシステムが実行されているコンピュータハードウェアを制御するよう構成されるプラットフォームグラフィクスインターフェースとを有する。
【００６０】
３Ｄアプリケーションは、３Ｄアセットを有するボタン、テキストボックス、メニュー、レイアウト等のような共通のユーザインターフェース要素を有する既製のウィジェットツールキットにより、又はカスタムのＵＩ要素を作り、それらのためのテクスチャ及びメッシュのようなグラフィカルアセットを提供することによって、作られ得る。
【００６１】
そのようなものとして第２の態様に従う、すなわち、第２の態様の第１又は第２の実施形態に従うオペレーティングシステムの第３の可能な実施形態において、前記３Ｄ表示サーバは、アプリケーションプロセス内に配置される。
【００６２】
アプリケーションプロセスは、アプリケーションソフトウェアのアプリケーションコンテキストにおいて実行されるプロセスを表す。
【００６３】
そのようなものとして第２の態様に従う、すなわち、第２の態様の第１乃至第３の実施形態のいずれかに従うオペレーティングシステムの第４の可能な実施形態において、前記３Ｄ表示サーバは、第３のアプリケーションプロセス内に配置され、更なるアプリケーションプロセスが、前記プロセス分離インターフェースを介して前記３Ｄ表示サーバへ接続される。
【００６４】
第２の態様の第４の実施形態に従うオペレーティングシステムの第５の可能な実施形態において、前記３Ｄ表示サーバは、前記３Ｄ場面グラフの全体におけるルートからリーフまでのノードチェーンが複数のプロセス分離インターフェースを有する木構造を形成するよう構成される。
【００６５】
第３の態様に従って、本発明は、単一の３Ｄ場面グラフにおいてプロセス分離を得る方法及び構造に関する。
【００６６】
第４の態様に従って、本発明は、表示サーバのための３Ｄアプリケーションインターフェースを提供する方法及び構造に関する。該表示サーバは、ウィンドウマネージャとしても知られる。
【００６７】
第５の態様に従って、本発明は、同じ３Ｄ場面においてプロセス分離３Ｄアプリケーション視覚化を生成する方法及び構造に関する。
【００６８】
第６の態様に従って、本発明は、表示サーバとアプリケーションプロセスとの間で場面グラフ変化及び３Ｄリソースの転送及び通信を可能にする方法及び構造に関する。
【００６９】
ここで記載される方法、システム及び装置は、デジタル信号プロセッサ（ＤＳＰ）において、マイクロコントローラにおいて、又はあらゆる他のサイドプロセッサにおいてソフトウェアとして、あるいは、特定用途向け集積回路（ＡＳＩＣ）内のハードウェア回路として、実施されてよい。
【００７０】
本発明は、デジタル電子回路において、又はコンピュータハードウェア、ファームウェア、ソフトウェア、若しくはそれらの組み合わせにおいて、例えば、従来のモバイル装置の利用可能なハードウェアにおいて又はここで記載される方法を処理する専用の新しいハードウェアにおいて、実施され得る。
【００７１】
本発明の更なる実施形態は、以下の図面に関連して記載される。
【図面の簡単な説明】
【００７２】
【図１】実施形態に従って場面において３Ｄ場面グラフを表示する方法１００を表す概略図を示す。
【図２】実施形態に従って３Ｄ表示サーバのコンテンツを表すデバイススクリーン２００の概略図を示す。
【図３】実施形態に従うプロセス分離３００の構造を表す概略図を示す。
【図４】実施形態に従う例となる場面グラフ４００を表す概略図を示す。
【図５】実施形態に従って図４に表された場面グラフ４００のレンダリング結果５００を表す概略図を示す。
【図６】実施形態に従って３Ｄコンピュータシステムのためのオペレーティングシステム６００のレベルアーキテクチャを表す概略図を示す。
【発明を実施するための形態】
【００７３】
図１は、実施形態に従って場面において３Ｄ場面グラフを表示する方法１００を表す概略図である。
【００７４】
方法１００は、３次元リソースをアプリケーション場面ノードの組に付加するステップ１０１を有する。
【００７５】
方法１００は、コンピュータシステムのオペレーティングシステム上で第１のアプリケーションコンテキストにおいて実行される第１のプロセスに前記アプリケーション場面ノードの第１のサブセットを接続し且つ前記オペレーティングシステム上で第２のアプリケーションコンテキストにおいて実行される第２のプロセスに前記アプリケーション場面ノードの第２のサブセットを接続することによって、前記第１のプロセスを前記第２のプロセスから離すステップ１０３を有する。方法１００は、前記第１のプロセス及び前記第２のプロセスを前記コンピュータシステムの３Ｄ表示サーバにロードするステップ１０５を有する。３Ｄ表示サーバは、アプリケーション場面ノードの３Ｄリソースに基づき３Ｄ場面グラフを構成し、該３Ｄ場面グラフをスクリーンに表示するよう構成される。
【００７６】
方法１００の実施形態において、３Ｄリソースは、エレメンタリ３Ｄオブジェクト、特に、テクスチャ、シェード、及びメッシュを表す。このように、複雑な場面グラフは、該場面グラフを実施する柔軟性を可能にするように、エレメンタリオブジェクトにおいて解消され得る。
【００７７】
方法１００の実施形態において、前記第１のプロセス及び前記第２のプロセスをロードするステップは、プロセス分離インターフェースを用いることによって前記第１のプロセス及び前記第２のプロセスを別個にロードすることを含む。方法１００の実施形態において、プロセス分離インターフェースは、同じアプリケーション場面ノードへの前記第１のプロセス及び前記第２のプロセスのアクセス衝突を回避するよう構成される。方法１００の実施形態において、プロセス分離インターフェースは、制御される態様において前記第１のプロセス及び前記第２のプロセスによるアプリケーション場面ノードの共有を管理するよう構成される。
【００７８】
プロセス分離インターフェースは、異なるプロセスの分離を可能にし、従って、プロセス分離を用いない従来の方法に対して当該方法の安定性及びロバスト性を高める。同じアプリケーション場面ノードへの前記第１のプロセス及び前記第２のプロセスのアクセス衝突を回避することによって、システム全体の安定性が改善される。制御される態様において前記第１のプロセス及び前記第２のプロセスによるアプリケーション場面ノードの共有を管理することによって、プロセスは、他のプロセスによって保有されるリソースにアクセスすることができない。プロセスは、システム全体の安定性を脅かさない。３ＤＵＩ要素は、プロセス分離の緩みなしに、別個に場面におけるアプリケーションＵＩ要素の夫々１つを扱う可能性を有効にする。ＵＩ要素としての３Ｄオブジェクトは、それらの要素について自然の見た目のフィジックスの使用を可能にする。
【００７９】
方法１００の実施形態において、プロセス分離インターフェースは、異なるアプリケーションコンテキストにおいて実行されるプロセスを３Ｄ表示サーバにロードするよう構成される。方法１００の実施形態において、プロセス分離インターフェースは、同時に複数のアプリケーション接続へ３Ｄ表示サーバを接続するよう構成される。実施形態において、方法１００は、接続が変更されていないプロセスを前記３Ｄ表示サーバにロードすることなしに、接続が変更されたプロセスを前記３Ｄ表示サーバにロードするステップを有する。方法１００の実施形態において、前記アプリケーション場面ノードの第１のサブセットを前記第１のプロセスへ接続し且つ前記アプリケーション場面ノードの第２のサブセットを前記第２のプロセスへ接続することは、更なるアプリケーション場面ノードを子ノードとして、親ノードを表す、前記アプリケーション場面ノードの前記第１のサブセット及び前記第２のサブセットの要素へ接続することを含む。方法１００の実施形態において、前記更なるアプリケーションノードは、その親ノードに対する位置及び回転の差分情報を有する。方法１００の実施形態において、前記位置及び回転の差分情報は、マトリクスを有する。方法１００の実施形態において、前記位置及び回転の差分情報は、４×４のマトリクスを有する。方法１００の実施形態において、前記３Ｄ場面グラフを構成するステップは、前記３次元リソースの互いに対する反転、屈折、シャドーイング、シェーディング、及び／又は重なり合いを計算することを含む。
【００８０】
図２は、実施形態に従って３Ｄ表示サーバのコンテキストを表すデバイススクリーン２００の概略図を示す。デバイススクリーン６は、３Ｄ表示サーバのコンテキストを表示する。２つの簡単な３Ｄアプリケーション、すなわち、第１のアプリケーション１及び第２のアプリケーション２は、どちらもユーザインターフェース（ＵＩ）要素として３Ｄメッシュのような１つの立方体を有して見られる。図１に関して上述された方法１００を適用することによって、別個のプロセスの視覚化は新しい方法において重なり合うことができる。例えば、視覚化は、互いの周囲に結合され得る。
【００８１】
方法１００は、３Ｄリソース、すなわち、第１の３Ｄ立方体１及び第２の３Ｄ立方体２を加えるステップを有する。方法１００は、第１の３Ｄ立方体１を処理する第１のプロセスを、第２の３Ｄ立方体２を処理する第２のプロセスから離すステップを更に有する。方法１００は、第１の３Ｄ立方体１を処理する第１のプロセスと、第２の３Ｄ立方体２を処理する第２のプロセスとを表示サーバにロードするステップを更に有する。表示サーバは、図２において見られるように表示スクリーン上で第２の３Ｄアプリケーション２の反転５を含め、立方体１及び２の両方を表示する。
【００８２】
表示サーバの場面グラフの構成は、次のように記載され得る：最初に、表示サーバは、アプリケーションプロセスのためのサービスを提供するよう起動されるべきである。表示サーバは、その支配下のオペレーティングシステムが物理的なスクリーンにおいて可能なアプリケーションプロセス視覚化を生成するよう実行されている場合に、通常は実行されている。表示サーバが実行されている間、アプリケーションプロセスは自身をそれに登録することができる。表示サーバは、新しいアプリケーションプロセスの登録を受け入れ、それらにプロセス間接続を提供する。加えて、表示サーバは、プロセス視覚化の構成を容易にするために、それを使用するアプリケーションプロセスのライフタイム全体にわたって利用可能でなければならない。この接続は、アプリケーションプロセスがそれらの場面グラフ及びその変化を表示サーバへ送信することを可能にする。変化は、例えば、グラフィカルノード及びリソース識別子について、位置、回転、スケーリングの情報を含むことができる。アプリケーションはまた、自身に内在する場面グラフからデータを変更、付加、又は除去することによって、それらの内部の見た目を変えることができる。アプリケーションがそれ自体の場面グラフについて行っている変更は、表示サーバへ送信される。表示サーバは、次いで、場面グラフ全体を合成することができる。リソースのロードは、メモリ、ＣＰＵ及びＧＰＵのようなハードウェアリソースの利用を制御するよう表示サーバによって制御される。表示サーバはまた、システムレベル変化、ユーザインターフェース入力及び有界なボリューム変化をアプリケーションプロセスへ提供する。
【００８３】
別個のプロセス視覚化の間の重複領域４が、図２において見られる。シャドー、シェーディング、屈折及び反転のような効果は、ＵＩ要素の３Ｄサーフェスの性質のために、より自然な見た目を生じる。図２は、アプリケーションの両方が同じ光源に基づくシェーディングを有することを示す。また、スクリーン６の下領域３は、視覚化される３Ｄアプリケーションの第２のアプリケーション２の像を映している。第２の３Ｄアプリケーション２の反転５が見られる。図２に示されるもののような、物理ディスプレイで示される最終の画像は、表示サーバプロセス内で作られる。表示サーバプロセスは、アプリケーションプロセス場面グラフからそもそも組み合わされる全体的な場面グラフをレンダリングする。
【００８４】
プロセス分離インターフェースは、オペレーティングシステムのカーネルレベルで、又はオペレーティングシステムのカーネルレベルの上で、実施され得る。オペレーティングシステムのカーネルレベルでの実施は、より制御されるハードウェア管理のために、性能向上をシステムに与えることができる。オペレーティングシステムのカーネルの上での実施は、携帯性を考える場合に、更なる柔軟性を与える。表示サーバのデータ構造は、ミューテックスによって保護され、それにより、並列な変化は、表示サーバの場面グラフデータを改悪することができない。アプリケーションプロセスに関し、表示サーバのサービスは、アプリケーションプロセスが場面グラフ全体を有効なままとするためにロッキング等に注意する必要がない非同期ＡＰＩを提供する。
【００８５】
図３は、実施形態に従うプロセス分離３００の構造を表す概略図を示す。プロセス分離は、図１に関して上述されたように、第１のプロセスを第２のプロセスから離すこと（１０３）ができる。
【００８６】
図３は、プロセス分離からの構造を示す。表示サーバ２１はアプリケーションインターフェースを有する。そのアプリケーションインターフェースを用いることによって、アプリケーション２３は、プロセス分離２２を介して表示サーバ２１へ接続することができる。３Ｄリソース及びアプリケーション２３の場面及びデータ変更、すなわち、ハンドル又はデータ自体は、プロセス分離２２を介して転送される。表示サーバ２１は、同時に複数のアプリケーション２３の接続を有してよい。
【００８７】
図４は、実施形態に従う例となる場面グラフ４００を表す概略図である。場面グラフ４００は、表示サーバ１１へ接続されるプロセス分離１２，１３を適用する。場面グラフノード接続が破線により示されている。２つのプロセスは、図２に関連して記載されるプロセス分離２２に対応するプロセス分離インターフェース１９によって、表示サーバ１１へ付加される。表示サーバ１１は、図３に関連して上述された表示サーバ２１に対応してよい。
【００８８】
自動車を表す３Ｄオブジェクト１４が第１のプロセスＰ１へ接続される。木を表す３Ｄオブジェクト１８が第２のプロセスＰ２へ接続される。下部構造１５及び屋根１６から成る家を表す他の３Ｄオブジェクト１５，１６は第２のプロセスＰ２へ接続される。屋根１６は、プロセスＰ２へ接続される親ノードである下部構造１５へ子ノードとして適用される。
【００８９】
実施形態において、表示サーバは、アプリケーションプロセス内で埋め込まれるか、又は機能し、他のアプリケーションは、プロセス分離を介して表示サーバへ結合される。よって、木構造が形成され得、該木構造において、場面グラフ全体におけるルートからリーフまでのノードチェーンは、１よりも多いプロセス分離を有することができる。
【００９０】
図５は、実施形態に従って図４に表された場面グラフ４００のレンダリング結果５００を表す概略図を示す。場面グラフ４００は、図４に表されるノード、すなわち、下部構造１５及び屋根１６を備える家、自動車１４及び木１８を有する。
【００９１】
図４に表されるプロセス分離場面グラフは、レンダリング結果５００に結合される。図５で、第１のプロセスＰ１  １３は、グラフィカルに自動車１４を表すノードである１つの接続されたノードのみを含む。第２のプロセスＰ２  １２は、グラフィカルに木１８を表すノードと、グラフィカルに家の下部構造１５を表すノードとである２つのサーブノードを含む。プロセスＰ２  １２は、グラフィカルに家の屋根１６を表すノードであるサブサブノードを更に含む。すなわち、第１のプロセス１３は、グラフィカルに自動車１４を表し、第２のプロセス１２は、グラフィカルに木１８及び家１５，１６を表す。家は、２つのノード１５，１６の内部構造を有する。
【００９２】
図５に表される場面ノードは、テクスチャ、シェーダー及びメッシュのような３Ｄリソースを有することができる。これらの３Ｄリソースは、３Ｄウィジェットツールキットに由来することができ、あるいは、それらは、特別に作られ得る。場面ノードの夫々１つは、例えば、４×４マトリクスの形で、そのノードの親ノードに関する位置及び回転の差分情報を有する。アプリケーションが衝突すること、すなわち、互いの中に入ること、を制限するよう、アプリケーションは、長方形ボックス及び球形と同じくらい単純である有界なボリューム、又はカスタムの３Ｄメッシュのような何らかのより複雑なボリュームを有する。
【００９３】
３Ｄリソースがアプリケーション場面ノードに付加される場合に、それらは、表示サーバプロセスによって中央集権的にロードされる。これは、同じ３Ｄリソースが別個のプロセスの間で再利用され得るので、プロセス分離を介した通信を減らす。アプリケーションサブグラフ内の変化しか表示サーバ１１へ送信される必要がない。この最小限のデータ転送は、同じ視覚的な３Ｄ場面においてプロセス分離を有して多くの不雑な３Ｄアプリケーションを実行する可能性を有効にする。
【００９４】
図６は、実施形態に従う３Ｄコンピュータシステムのためのオペレーティングシステム６００のレベルアーキテクチャを表す概略図を示す。
【００９５】
アプリケーション６０１、ミドルウェア６０３、及びオペレーティングシステムのカーネルレベル６０５は、それら自体の行の夫々に分けられている。ここで記載される３Ｄシステムのために新たに構築される構成要素は、点線により縁取られている。それらの新たに設計される構成要素は、３Ｄエンジンライブラリ６１９、３Ｄ表示サーバ６１７、３Ｄウィジェットツールキット６１５、及び３Ｄアプリケーション６０７である。３Ｄエンジンライブラリ６１９は、３Ｄエンジンと、基本コア機能とを含む。３Ｄ表示サーバ６１７は、既存の“ウィンドウマネージャ”に取って代わる３Ｄアプリケーションインターフェース６１１を有効にする。実施形態において、プラットフォームグラフィクスインターフェース６２１，６２３は、ＧＬＥＳ／ＥＧＬを使用する。実施形態において、プラットフォームグラフィクスインターフェース６２１，６２３は、ＤｉｒｅｃｔＸ  ＡＰＩを使用する。３Ｄ表示サーバ６１７は、アプリケーションから物理スクリーンへの最終結果を生成するレンダラを更に有する。３Ｄウィジェットツールキット６１５は、３Ｄアプリケーション生成のために既製のＵＩコンポーネントを提供する。３Ｄアプリケーション６０７は、新しい３Ｄウィジェットツールキットに基づくアプリケーションである。２Ｄサーフェスアプリケーション６０９は、依然としてオペレーティングシステム６００によってサポートされる。フルスクリーンモードにおいて、特に、プラットフォームグラフィクスインターフェース６２１，６２３は、より高い性能を得るために、より連続的に使用され得る。
【００９６】
以前に設計されたオペレーティングシステムは、オペレーティングシステム６００のグラフィクススタックの基礎として機能することができる。新しいオペレーティングシステム６００は、拡張現実アプリケーションにおける３Ｄデータへマッピングされる第三者の３Ｄ広告のように、アプリケーションコンテキスト内でプロセス分離を適用する。
【００９７】
上記より、当業者には明らかなように、様々な方法、システム、記録媒体上のコンピュータプログラム等が提供される。
【００９８】
本開示はまた、実行される場合に少なくとも１のコンピュータにここで記載される実行及び計算ステップを実行させる、コンピュータにより実行可能なコード又はコンピュータにより実行可能な命令を含むコンピュータプログラムプロダクトをサポートする。
【００９９】
多くの代替、改良及び変形が上記の教示を鑑み当業者に認識されるであろう。当然に、当業者は、ここで記載されるものを超えて本発明の多数の応用が存在することを容易に認識する。本発明は１又はそれ以上の特定の実施形態を参照して記載されてきたが、当業者は、多くの変更がそれらの実施形態に対して、本発明の適用範囲を逸脱することなしに行われ得ることを認識する。従って、添付の特許請求の範囲及びその均等の適用範囲内で、本発明は、ここで具体的に記載される以外の別な態様で実施されてよいことが理解されるべきである。
【図１】
0005959729.tif 000002
【図２】
0005959729.tif 000003
【図３】
0005959729.tif 000004
【図４】
0005959729.tif 000005
【図５】
0005959729.tif 000006
【図６】
0005959729.tif 000007