図1は、1つ以上の態様による、共通バーチャル環境に基づいて種々のバーチャル環境視点を提供するシステム100の例示的な動作環境の概略図である。共通バーチャル環境に基づいて種々のバーチャル環境視点を提供するシステム100は、コンピューティングデバイス102を備えることができる。コンピューティングデバイス102は、プロセッサ104、メモリ106、ディスク108、全地球測位システム(GPS)110、入出力インタフェース112、及び各コンポーネントを相互に接続するバス114を備えることができる。プロセッサ104は、バーチャル環境エンジン116を備えることができる。ディスク108及びバーチャル環境エンジン116は、ディスク108に格納された単一のバーチャル環境に基づいて、異なったユーザに対して複数のバーチャル環境ビューが提示されるように構成することができる。本明細書で説明するように、メモリ106は1つ以上の命令を格納することができ、プロセッサ104とそのバーチャル環境エンジン116とは、メモリ106に格納された命令の1つ以上を実行して、1つ以上のバーチャル環境ビューの生成を行うことができる。システム100は、動作環境に応じて、他のシステムまたはコンポーネントと接続して動作させるか、または通信することができる。例えば、システム100は、1つ以上の車両システム118、1つ以上の車両センサ120と接続して動作させるか、もしくは通信することができ、またはネットワーク122を介してサーバなどの他のコンピューティングデバイスと通信することができる。
最終的に、バーチャルリアリティヘッドセットなどの1つ以上のデバイス124は、システム100のバーチャル環境エンジン116からレンダリングフィードを受け取ることができる。他の実施形態では、バーチャル環境エンジン116は、ネットワーク122を介してサーバ(図示せず)の1つに配置されてもよく、関連した計算または処理を遠隔で実行することができる。デバイス124は、携帯型のデバイス(例えば、スマートフォンなど)であってもよい。
1つ以上の態様によれば、バーチャル環境は、実世界環境に基づいて生成することができる。例えば、車両センサ120は、本明細書の図12でさらに詳細に説明するように、実世界環境から1つ以上の特徴を捕捉し、検出し、または感知して、それに応じてバーチャル環境を構築することができる。
図2は、1つ以上の態様による、共通バーチャル環境に基づいて種々のバーチャル環境視点を提供するシステム100の概略図である。図2において、システム100は、プロセッサ104を備え、バーチャル環境エンジン116、メモリ106、データベース108(例えば、図1のディスク108として具体化される)、及び通信インタフェース112(例えば、図1の入出力インタフェース112として具体化される)を備える。通信インタフェース112を介して、システム100は、1つ以上のレンダリングフィードを種々のデバイスに提供することができる。例えば、モバイル機器またはスマートフォン224aなどの第1のデバイスが、第1のレンダリングフィードを受信することができ、タブレット224bが、第2のレンダリングフィードを受信することができ、バーチャルリアリティヘッドセット224cが、システム100のバーチャル環境エンジン116から通信インタフェース112を介して、第3のレンダリングフィードを受信することができる。図1のデバイス124には、他のいろいろなデバイスのうちから、図2のスマートフォン224a、タブレット224b、またはバーチャルリアリティヘッドセット224cのいずれかを含めることができる。レンダリングフィードには、プロセッサ104のバーチャル環境エンジン116によって生成された、1つ以上のバーチャル環境ビューを含めることができる(例えば、1つ以上の連続して生成されたバーチャル環境ビューは、レンダリングフィード用のアニメーションを形成することができる)。
図3は、1つ以上の態様による、図1の例示的なバーチャル環境エンジン116のブロック図である。バーチャル環境エンジン116は、バーチャル環境に関連付けられたデータを管理するか、または生成することができる。このバーチャル環境に関連付けられたデータは、バーチャル環境モデル310と呼ばれ、図2のデータベース108に格納することができる。したがって、データベース108は、バーチャル環境、またはそれに関連付けられた、バーチャル環境モデル310などのデータを格納することができる。バーチャル環境モデル310は、対応するバーチャル環境座標に関連付けられた1つ以上のバーチャルオブジェクト(例えば、第1のバーチャルオブジェクト、第2のバーチャルオブジェクト、第3のバーチャルオブジェクトなど)を含むことができる。各バーチャルオブジェクトは、第1のバーチャル環境モードに対応する第1の関数セット、及び第2のバーチャル環境モードに対応する第2の関数セットなどの、種々の関数のセットと関連付けることができる。第1の関数セットは第1の関数を含むことができ、第2の関数セットは第2の関数を含むことができる。したがって、第1の関数は第1のバーチャル環境モードに対応することができ、第2の関数は第2のバーチャル環境モードに対応することができる。
例えば、第1のバーチャルオブジェクトは、バーチャル環境座標、第1のバーチャル環境モードに対応する第1の関数セット、及び第2のバーチャル環境モードに対応する第2の関数セットと関連付けることができる。同様に、第2のバーチャルオブジェクトは、バーチャル環境座標、及び第1のバーチャル環境モードに対応する(例えば、第2のバーチャルオブジェクト自体の)第1の関数セット、ならびに第2のバーチャル環境モードに対応する第2の関数セットと関連付けることができる。
バーチャルオブジェクトは、オブジェクト、人物、もしくはキャラクタ(例えば、他のユーザまたは操作できないキャラクタ)を表すか、またはそれらであることを示し、バーチャルオブジェクトに関連付けられた別々の関数またはノードのセットを介して具体化されたプロパティ、特性、反応、対話などの別々のセットに関連付けることができる。
バーチャル環境エンジン116は、本明細書でさらに詳細に説明するように、対応するバーチャル環境モードに基づいて、同じバーチャルオブジェクトの異なったバーチャル環境ビューを生成することができる。例えば、プロセッサ104のバーチャル環境エンジン116は、第1のバーチャル環境モードに基づいて、第1のバーチャルオブジェクトの第1のバーチャル環境ビュー(例えば、第1の視点)を、また、第2のバーチャル環境モードに基づいて、第1のバーチャルオブジェクトの第2のバーチャル環境ビュー(例えば、第2の視点)を生成することができる。したがってバーチャル環境エンジン116は、バーチャル環境内の各バーチャルオブジェクトの視界を生成することができる。別の例として、プロセッサ104のバーチャル環境エンジン116は、第1のバーチャル環境モードに基づいて、第2のバーチャルオブジェクトの第1のバーチャル環境ビューを生成するとともに、第2のバーチャル環境モードに基づいて、第2のバーチャルオブジェクトの第2のバーチャル環境ビューを生成することができる。
つまりプロセッサ104のバーチャル環境エンジン116は、第1のバーチャル環境モードに関連付けられた第1のバーチャル環境スキンに基づいて、バーチャルオブジェクトの第1のバーチャル環境ビューを生成するとともに、第2のバーチャル環境モードの第2のバーチャル環境スキンに基づいて、バーチャルオブジェクトの第2のバーチャル環境ビューを生成することができる。第2のバーチャル環境モードに関連付けられた第2のバーチャル環境スキンは、第1のバーチャル環境スキンと異なっていてよい。さらに、バーチャル環境スキンは、種々のバーチャルオブジェクトプロパティに関連付けることができる。
例えば、バーチャルオブジェクト用の第1のバーチャル環境スキンは、第1の寸法、第1の形状、第1の色などに関連付けることができる。バーチャルオブジェクトの第2のバーチャル環境ビューの第2のバーチャル環境スキンは、(第1の寸法とは異なる)第2の寸法、(第1の形状とは異なる)第2の形状、(第1の色とは異なる)第2の色などに関連付けることができる。いずれにしても、ユーザ等の各自のバーチャル環境モードが異なっているか、または異なる値を有する場合、異なったユーザの間の知覚、視点、または視界は異なっている(例えば、以下にさらに詳細に説明するように、図8のユーザ802は第1のモードを体験していて、図9のユーザ902は第2のモードを体験している)。
このようにして、2人のユーザが、同時に、類似装置を使用して、それに応じた同様の入力を与えた(例えば、両方のユーザが「A」ボタンを押した)後などに、バーチャル環境の中で同じ角度から同じバーチャルオブジェクト(例えば、第1のバーチャルオブジェクト)を眺めているにもかかわらず、第1のバーチャル環境ビューを提示された第1のユーザは、第2のバーチャル環境ビューを提示された第2のユーザとは異なる第1のバーチャルオブジェクトを体験する。したがって、バーチャル環境エンジン116(及びそのモジュール)は、それぞれのユーザまたはそれぞれのバーチャルリアリティ参加者(例えば、ゲーム選択で第1のセットを選んだ第1のモードを体験する第1のユーザ、及びゲーム選択における第1のセットとは異なる第2のセットをゲーム選択で選んだ第2のモードを体験する第2のユーザ、または年長のティーンエイジャーとは異なるモードを体験する幼児)によって、違うように知覚されるか、または違うように見られる、バーチャル環境の複数のバーチャル環境ビューの生成を可能にすることができる。これらのユーザまたは参加者の一人ひとりは、ユーザ等の(例えば、ユーザ単位で決定される)関連バーチャル環境モードに基づいたユーザ等自身の独自の視点またはバーチャル環境ビューから、バーチャル環境モデル310のバーチャル環境を体験する。
言い換えれば、第2のバーチャル環境ビューがタブレット224bでレンダリングされている間に、同時にまたは並行して第1のバーチャル環境ビューがスマートフォン224aでレンダリングされ得る。このようにして、第1のバーチャル環境ビュー及び第2のバーチャル環境ビューは、個別のデバイス224a及び224b上で、それぞれ並行して行う方法でレンダリングされる。言い換えれば、第1のバーチャルオブジェクトは、(例えば、第1のユーザ用の)第1のバーチャル環境ビュー内の第1のレンダリングと、(例えば、第2のユーザ用の)第2のバーチャル環境ビュー内の、第1のレンダリングと異なった第2のレンダリングとを有し、それによって両方のユーザに、(例えば、同一の、共通の、または単一のバーチャル環境モデル310に関連付けられた)共通バーチャル環境とは異なる体験をもたらす。
例えば、第1のバーチャルオブジェクトの第1のバーチャル環境ビューを、スマートフォン224aでレンダリングすることができるとともに、第1のバーチャルオブジェクトの第2のバーチャル環境ビューを、タブレット224bでレンダリングすることができる。
データベース108に格納されたバーチャル環境モデル310は、1つ以上の様々なバーチャル環境モード(例えば、第1のバーチャル環境モード、第2のバーチャル環境モード・・・)に基づき、1つ以上の様々なバーチャル環境ビュー(例えば、第1のバーチャル環境ビュー、第2のバーチャル環境ビュー・・・)を生成するデータまたは命令を含むことができる。以下の説明及び図は、(例えば、特に、別個のビュー、レンダリング、キャラクタ、プロパティ、機能、ユーザに関連付けられた)2つの異なるバーチャル環境モードに関連付けられた2つの異なるバーチャル環境ビューを含むものであるが、追加(例えば、第3、第4、第5・・・のバーチャル環境モード)及びバーチャル環境ビューが企図される。
いずれにしても、スマートフォン224a及び第1のバーチャル環境モードは、第1のタイプのユーザ及びタブレット224bに関連付けることができ、第2のバーチャル環境モードは、第2のタイプのユーザに関連付けることができる。ユーザのタイプ(例えば、第1のタイプのユーザ、第2のタイプのユーザなど)は、ユーザ312に関連付けられた人口統計、ユーザ312に関連付けられたアカウント、ユーザ312に関連付けられたハードウェア(例えば、スマートフォン224aのハードウェアかタブレット224bのハードウェアか)によって、または基づいて、定義することができる。人口統計の例には、年齢、性別、教育水準、所得水準、婚姻状況、職業、宗教などが含まれる。さらに、ユーザのタイプは、例えば1つ以上のユーザの選択に基づき、バーチャル環境エンジン116によって定義することができる。ユーザの選択は、ゲームプレイに結び付いている可能性があるが、必ずしもゲームスキンを直接選択する必要はない。例えば、ゲームのジャンル、ゲームの種類、選択したゲーム、選択したアバタ、ゲーム中の評点、または以前のゲームプレイといったユーザの選択を使用して、第1のバーチャル環境モードまたは第2のバーチャル環境モードのいずれが使用されるかに影響を及ぼすことができる。
この関連で、バーチャル環境エンジン116は、ユーザが第1のゲームを選んだ場合に、第1のバーチャル環境モードを適用することができ、ユーザが第2のゲームを選んだ場合に、第2のバーチャル環境モードを適用することができる。様々なゲーム(例えば、第1のゲーム及び第2のゲーム)の例を、以下の図14〜図16に記載する。さらに、バーチャル環境エンジン116は、以前にプレイしたゲームのユーザレビューを利用して、対応するバーチャル環境モードを決定することができる。言い換えれば、ユーザが、第1のゲームに関連付けた否定的な意見を残し、第1のゲームが第1のバーチャル環境モードに関連して実行された場合、将来同じゲームが選択されると、バーチャル環境エンジン116によって、バーチャル環境モードに関連して第2のゲームを実行させるようにすることができる。同様に、第1のアバタの選択によって、そのユーザを対象にして第1のバーチャル環境モードが使用されるようにすることができ、一方第2のアバタの選択によって、そのユーザを対象にして第2のバーチャル環境モードが使用されるようにすることができる。しかしながら、第1のアバタを選択する別のユーザは、例えば、異なるゲームの選択などの他のユーザ選択が原因で、第2のバーチャル環境モードを体験することができる。
いずれにしても、ユーザ312は、車両データ318、ユーザデータ320、または他のデータ322をもたらす車両システム118、車両センサ120からの入力に基づいて、デバイス(複数可)124によってバーチャル環境ビューを体験することができる。車両システム118及び車両センサ120からの情報は、バーチャル環境エンジン116によって処理して、バーチャル環境エンジン116のバーチャル環境データモジュール302で受信することができる。動的バーチャル環境モジュール306は、バーチャル環境ビューを生成することができ、一方レンダリングモジュール308は、バーチャル環境ビューをレンダリングすることができる。図3において、バーチャル環境エンジン116は、デバイス124とは別のコンポーネントであって、例えば、車両に配置することができる。
他の実施形態では、デバイス124は、それ自体のバーチャル環境エンジン(例えば、図13の1320)を有することができ、処理、計算、バーチャル環境ビューの生成、またはバーチャル環境ビューのレンダリングは、バーチャル環境エンジン116及び/またはシステム100もしくは車両のプロセッサ104と、バーチャル環境エンジン1320及び/またはデバイス124のプロセッサ1324との間で分離または分割してもよい。例えば、バーチャル環境ビューの生成は、システム100(例えば、車両側)のバーチャル環境エンジン116の動的バーチャル環境モジュール306で行わせることができ、また、バーチャル環境ビューのレンダリングは、デバイス124(例えば、図13のバーチャル環境エンジンフレームワーク1320などの、バーチャル環境デバイス側)のバーチャル環境エンジンのレンダリングモジュールで行わせることができる。
図4は、1つ以上の態様による、共通バーチャル環境に基づいて種々のバーチャル環境視点を提供する例示的な方法400のフローチャートである。例えば、本方法は、402のときに、車両データ及びユーザデータを受信することを含む。ユーザデータは、バーチャル環境エンジン116によってバーチャル環境がレンダリングまたは生成される方法を示すバーチャル環境モードを含むことができる。404のときに、バーチャル環境ビューを、車両データ及びユーザデータに基づいて生成することができる。406のときに、バーチャル環境ビューを、バーチャル環境モードに基づいてレンダリングすることができる。408のときに、バーチャル環境ビューを、更新して再レンダリングすることができる。
図5は、1つ以上の態様による、共通バーチャル環境に基づいて種々のバーチャル環境視点を提供する例示的な方法500のフローチャートである。502のときに、本方法は、バーチャル環境を格納すること、またはバーチャル環境にアクセスすることを含むことができる。各バーチャルオブジェクトを、第1及び第2のバーチャル環境モードまたはスキンに対応する関数のセットに関連付けることができる。504のときに、本方法は、スマートフォン224aなどのために、第1のバーチャル環境モードまたは第1のバーチャル環境スキンに基づいて、バーチャルオブジェクトの第1のバーチャル環境ビューを生成またはレンダリングすることを含むことができる。506のときに、本方法は、タブレット224bなどのために、(別のオブジェクトとしての)第2のバーチャル環境モードまたは第2のバーチャル環境スキンに基づいて、第1のバーチャル環境ビューと並行して、バーチャルオブジェクトの第2のバーチャル環境ビューを生成またはレンダリングすることを含むことができる。
図6は、1つ以上の態様による、データの流れを含む、例示的なバーチャル環境のモデル図である。図7は、1つ以上の態様による、図6のバーチャル環境モデル310を含むバーチャル環境の例示的なクラス概略図700である。例示的なバーチャル環境モデル310を、図6〜図7を参照して説明する。図6〜図7を参照して論じるクラスノード、関数、オブジェクト、プロパティ、参照、メソッド、トリガ、及びイベント(例えば、バーチャル環境ビュー706を定義するコンポーネント)は、本質的に例示的なものであり、限定することを意図するものではない。
図6において、バーチャル環境モデル310は、バーチャル環境ビュー706を定義する1つ以上のコンポーネントを含むことができる。例えば、図6において、モデルは、ビュー(VIEW)クラスノード602、環境構造(ENVIRONMENT STRUCTURE)クラスノード604、eventsIn(EVENTS IN)クラスノード606、及びeventsOut(EVENTS OUT)クラスノード608を含み、これらのノードは、バーチャル環境エンジン116にバーチャルイベント610を出力させ、生成させ、もしくはレンダリングさせ、またはそれ以外の場合は、上述のクラスノード602、604、606、608などの1つ以上に関連付けられた関数を実行させることができる。図6のクラスノードは、図7を参照して説明されるクラスノードと同様のメソッド、プロパティ、フィールド、及び参照を含むことができる。図6は、例えば、クラスノードを拡張するための、クラスノードへの例示的なデータフローも示す。特に、動的バーチャル環境モジュール306は、これらの型のデータを使用して、特定のクラスノードを拡張することができる。
図3で説明したように、データには、車両データ318、ユーザデータ320、及び/または他のデータ322を含めることができる。図6に示すデータの型は、図3の車両データ318、ユーザデータ320、及び/または他のデータ322の型である。具体的に、図6において、データには、車両モーションデータ612(車両力学データを含む)、ユーザモーションデータ613、車両モーション予測データ614、ナビゲーションデータ616、ビッグデータ618、及び運転手行動データ620が含まれるが、これに限定されるものではない。
一般に、バーチャル環境モデル310は、バーチャル環境702と少なくとも2つのバーチャル環境ビュー706とを定義する、多数の個別の操作(例えば、関数または関数のセット)とバーチャルオブジェクト710との集合であり、それぞれが対応するバーチャル環境モードに関連付けられている。本開示によれば、各バーチャルオブジェクト710は、バーチャル環境エンジン116、ノード、または関数に(例えば、引数として)渡されたバーチャル環境モードに応じて、またはそれらに基づいて、バーチャル環境エンジン116によってレンダリングまたは生成される2つ以上のバーチャル環境ビュー706に関連付けられている。1つ以上の態様によれば、バーチャル環境モードは、数値データ型(例えば、mode1、mode2、mode3など)とすることができる。例えば、バーチャル環境モードは、第1のモード、第2のモード、第3のモードなどを含むことができる。他の実施形態では、バーチャル環境モードは、それ自体のデータ型(例えば、バーチャル環境モードデータ型)とすることができる。例えば、バーチャル環境モードは、第1のモード及び第2のモードを含むことができる。別の例では、バーチャル環境モードは、トドラーモード、就学前モード、小学生モード、ティーンモード、若年成人モード、成年者モードなどを含むことができる。
いずれにしても、特定のモード(MODE)、モード名、または使用されるデータ型にかかわらず、バーチャル環境エンジン116は、それに応じて(例えば、クラスノード、クラスノード内のノード、クラスノード内の関数、及び入力としてまたは引数としてのバーチャル環境モードを使用して)バーチャル環境ビュー706を生成することができる。本開示は、第1のモード及び第2のモードを例として説明しているが(例えば、第1モードについては図8及び図10、第2モードについては図9及び図11)、本明細書で提供されるモードの一覧は、限定することを意図するものではなく、他のモードも企図される。
バーチャル環境モデル310は、例えば、バーチャル環境モデリング言語(VRML)、DirectX、OpenGL、Unityなど、様々なモデリング言語またはプログラミング言語を使用して定義することができる。図7に示すように、バーチャル環境702は、1つ以上のバーチャル環境ビュー706を含めることができる。バーチャル環境702及びバーチャル環境ビュー706は、1つ以上のバーチャルオブジェクト710を含めることができる。バーチャル環境ビュー706及びバーチャルオブジェクト710は、例示的なクラスノード704などの1つ以上のクラスノードによって定義される。1つ以上の態様によれば、ノードは、グループ化されて、階層構造内の1つ以上のバーチャル環境ビュー706及び/またはバーチャルオブジェクト710に適用することができる。例えば、クラスノード群704は、特定のノード群(例えば、クラスノード群704)に関連付けられたバーチャル環境ビュー706及び/またはバーチャルオブジェクト710の親ノード及び子ノードに適用することができる。
クラスノード704のそれぞれは、例えば、他ノード、プロパティ、フィールド、メソッド、関数、及び/または参照など、クラスノードを定義及び/または変更するコンポーネントを含むことができる。1つ以上の態様によれば、ノード、プロパティ、フィールド、メソッド、及び/または参照は、(例えば、特定のテーマ、ゲームなどのための)バーチャル環境702に基づいて予め定義することができる。さらに、他の実施形態では、ノード312、プロパティ、フィールド、メソッド、及び/または参照は、ユーザ312またはユーザ選択に基づいて事前に定義することができる。図6〜図7に含まれていない他のクラスノード、プロパティ、フィールド、メソッド、及び/または参照を実装することができ、これらが本明細書で説明される別のモデリング言語及びプログラミング言語に基づいたものであってもよい。
図7において、クラスノード群704は、ビュー(VIEW)クラスノード712、環境構造(ENVIRONMENT STRUCTURE)クラスノード714、eventsIn(EVENTSIN)クラスノード716、及びeventsOut(EVENTSOUT)クラスノード718を含む。1つ以上の態様によれば、プロセッサ104のバーチャル環境エンジン116は、バーチャル環境モデル310、バーチャル環境モデル310内で表されるバーチャルオブジェクト710、及び対応するバーチャル環境モードに基づいて、バーチャル環境ビュー706を生成することができる。例えば、これらの変数を、引数としてビュークラスノード712に渡すことができる。
ビュークラスノード712は、ビュークラスノード712のノードに引数として渡される入力変数または入力パラメータとしてのバーチャル環境モードに基づいて、ビューを生成する関数を含むことができる。ビュークラスノード712は、バーチャル環境ビュー706、バーチャルオブジェクト710、関数、及び/またはバーチャル環境ビュー706及び/またはバーチャルオブジェクト710に関連付けられた操作の位置及び/または方向を定義することができる。
例えば、図7において、TRANSFORMノードは、配列変換を実行するために使用され、TRANSFORMノードに関連付けられた関数への引数としてバーチャル環境モードに基づいて計算され得る位置(POSITION)、回転(ROTATION)、及び尺度(SCALE)に関連付けられたプロパティを含むことができる。imageEffect(IMAGE EFFECT)ノードは、同様の方法でバーチャル環境モードに基づいて、画像後処理効果を処理することができる。例示的な画像後処理効果には、被写界深度(DEPTH OF FIELD)、モーション、及びぼかしなどが含まれる。BEHAVIORノードは、バーチャル環境モードに基づいたアニメーション(ANIMATION)やモーションなどの種々の動作を有効または無効にするために使用することができる。visualEffects(VISUAL EFFECTS)ノードは、バーチャル環境モードに基づいて、例えば、ラインレンダラ、ハローエフェクト、トレイルレンダリングなどの視覚効果を定義するために使用することができる。RENDERINGノードは、バーチャル環境モードに基づいて、ゲーム内及びユーザインタフェース要素をレンダリングするための設定及びコンポーネントを定義するために使用することができる。
例えば、環境構造クラスノード714は、バーチャル環境モードに基づいたビューの1つ以上の態様または特性を、その関数の引数として定義する関数を含むことができる。例えば、所与のバーチャルオブジェクト710のテクスチャは、バーチャル環境モード(例えば、第1のバーチャル環境モード、第2のバーチャル環境モードなど)に基づいて各様に定義することができる。環境構造クラスノード714によって定義される他のプロパティには、寸法、形状、外観、テクスチャ、材質、衝突効果、透明度、有無、配列などを含めることができる。例えば、バーチャルオブジェクト710は、第1のバーチャル環境モードでは存在するが、第2のバーチャル環境モードでは存在しないようにすることができる。バーチャルオブジェクト710は、第1のバーチャル環境モードでは第1の寸法に関連付けられ、第2のバーチャル環境モードでは第2の寸法に関連付けられてもよい。
環境構造クラスノード714は、バーチャル環境ビュー706、バーチャルオブジェクト710、関数、及び/またはそれらに関連付けられた操作の構造及び外観を定義することができる。ビュークラスノード712と同様に、環境構造クラスノード714は、引数としてのバーチャル環境モードに基づいて構造を定義または計算することができる。この関連で、GEOMETRYノードは、バーチャル環境モードに基づいて、バーチャルオブジェクト710に関連付けられた形状(SHAPE)を定義するために使用することができる。APPEARANCEノードは、バーチャル環境モードに基づいて、テクスチャ(TEXTURE)及び材質(MATERIAL)などの可視プロパティを定義するために使用することができる。TERRAINノードは、図8〜図11に示すように、バーチャル環境モードに基づいて地形及び風景の態様を定義するために使用することができる。COLLISIONノードは、バーチャル環境モードに基づいて、バーチャル環境ビュー706内のどのオブジェクトが衝突状態に関連付けられているのか(例えば、別のバーチャルオブジェクトがバーチャルオブジェクトと衝突することなくそのバーチャルオブジェクトを通過できるかどうか)を定義することができる。また、バーチャル環境モードは、異なるデバイス124に関連付けられて、ユーザの人口統計、ユーザに関連付けられたアカウント、デバイス124のハードウェアまたはバーチャルリアリティヘッドセットのハードウェアに基づいて決定されてもよい。
eventsInクラスノード716は、eventsOutクラスノード718用の1つ以上のトリガを定義する関数を含むことができる。例えば、「A」ボタンのタップの受信は、出力イベントをトリガすることができる。eventsInクラスノード716は、各ノードが受信(例えば、トリガ)または生成するイベントの種類及び名前を定義する。例えば、EVENTMANAGERノードは、カスタムイベントを定義し、特定のイベントを初期化またはトリガする(例えば、ユーザデータ、ユーザ入力データ、または車両データから決定される)イベントトリガを決定するイベントハンドラ及びイベントリスナを含むことができる。TYPEフィールドはイベントの種類を定義し、NODEフィールドはイベントが適用されるノード(複数可)を定義し、SET_FIELDNAMEメソッドはイベント中にフィールドの値を変更するために使用され得る。eventsOutクラスノード718は、イベントの実行及びルーティングを管理することができる。FIELDNAME_CHANGEDフィールドは、イベント中にどのフィールド(複数可)が変更されるかを示し、TYPEフィールドはイベントのタイプを定義し、NODEフィールドは、イベントが適用されるノードを定義することができ、ROUTEメソッドは、ノードにイベントが送信される方法と、ノードがイベントを受信及び生成する方法とを定義する。図7の実施形態には示していないが、他のクラスノード716及び718は、ビュークラスノード712及び環境構造クラスノード714と同様に、バーチャル環境モードを引数として受け取ることができる。
クラスノード及び/または関連する関数またはノードは、図2のデータベース108に格納することができる。したがって、これらのノードまたは関数は、それぞれ、第1のバーチャル環境モードまたは第2のバーチャル環境モードであるバーチャル環境モードに基づいて、第1のバーチャル環境ビューまたは第2のバーチャル環境ビューを生成することができる。1つ以上の態様によれば、バーチャル環境モードは、数値データ型(例えば、mode1、mode2、mode3など)であるか、またはそれ自体のデータ型(例えば、バーチャル環境モードデータ型)を有することができる。
クラスノード及びコンポーネントは、車両データ及びユーザデータの少なくとも1つに従って拡張されて、ユーザ312用の動的バーチャル環境702及び/またはバーチャル環境ビュー706を生成することができる。1つ以上の態様によれば、車両データ612、614、616及びユーザデータ613、620は、ノードを初期化し、プロパティ及びフィールドを設定し、イベントを初期化及び定義するために使用することができる。
図8は、1つ以上の態様による、例示的な第1のバーチャル環境ビュー800である。図9は、1つ以上の態様による、図8の第1のバーチャル環境ビュー800に対応する例示的な第2のバーチャル環境ビュー900である。
図8において、第1のバーチャル環境ビューには、第1のバーチャル環境モードによる、第1のユーザ802用の第1の人物の視点または視界が含まれる。第1のユーザの第1のバーチャル環境ビューは、別のユーザまたは第2のユーザ804を含んでいる。ここで、この例では、第1のユーザ802は、第1のバーチャル環境ビューを介して、第2のユーザ804がドラゴン806(例えば、操作できないキャラクタ)としてレンダリングされるバーチャルオブジェクトとインタラクトしていることを見ることができる。例えば、ここでは、第2のユーザ804は、ドラゴン806と戦っているように見える。バーチャル環境の第1のバーチャル環境ビューは、城810などの他のバーチャルオブジェクトを含むことができる。城810のバーチャルオブジェクトは、寸法、形状、長さ、高さ812、幅814などを含むバーチャルオブジェクトプロパティに関連付けられる。このバーチャルオブジェクトプロパティは、クラスノード704の1つ以上のノードまたは関数によって定義することができる。
さらに、第1のバーチャル環境ビューは、剣820、壁830、木840などの他のバーチャルオブジェクトを含むことができる。そのうえ、第1のバーチャル環境ビューは、例えば、草862、レンガ路864、及び小道866などのバーチャル環境特徴を含むことができる。バーチャルオブジェクトまたはバーチャル環境特徴の1つ以上は、図9の第2のバーチャル環境ビュー900などの、第2のバーチャル環境ビューに関連付けられたバーチャルオブジェクトまたはバーチャル環境特徴と1対1対応を有することができる。
図9において、第2のバーチャル環境ビュー900には、第2のバーチャル環境モードによる、第1のユーザ902用の第1の人物の視点または視界が含まれる。第2のバーチャル環境ビューは、第1のユーザ902及び第2のユーザ904の両方を含んでいる。図9において、第1のユーザ902は、第2のバーチャル環境ビューを介して、第2のユーザ904がポニー906(例えば、操作できないキャラクタ)としてレンダリングされるバーチャルオブジェクトとインタラクトしていることを見ることができる。ここで、この例では、第2のユーザ904は、ポニー906を撫でているように見える。バーチャル環境の第2のバーチャル環境ビューは、家910などの他のバーチャルオブジェクトを含むことができる。家910のバーチャルオブジェクトは、寸法、形状、長さ、高さ912、幅914などを含むバーチャルオブジェクトプロパティに関連付けられる。このバーチャルオブジェクトプロパティは、クラスノードの1つ以上のノードまたは関数によって定義することができる。
図8の城810の座標は図9の家910の座標に一致するが、家910の幅914が城810の幅814と異ならせることができ、家910の高さ912が城810の高さ812と異ならせることができる。しかし、中心に関連付けられたバーチャル環境座標(例えば、重心、中点、または水平方向の中心)は、城810及び家910の両方について同じであってよい。このようにして、バーチャルオブジェクトは、種々のバーチャル環境モード間で違うように知覚させることができる(例えば、図8〜図9の同じバーチャルオブジェクトは、第1のバーチャル環境モードでは第1の寸法と、第2のバーチャル環境モードでは第2の寸法と関連付けられる)。
第2のバーチャル環境ビュー900は、棒920、壁830、及び図8の木840と異なるレンダリングをされた木940などの他のバーチャルオブジェクトを含むことができる。第2のバーチャル環境ビュー900は、第1及び第2のバーチャル環境モードを異なる方法で解釈するクラスノードに関連付けられた衝突関数に起因して、図8の第1のバーチャル環境ビュー800において存在しないか、または対応するレンダリングをもたない、納屋950と960のところの草とを含むことができる。さらに、第2のバーチャル環境ビューは、草962、砂利道964、及び小道966など、バーチャル環境のバーチャル環境特徴を含むことができ、図8の草862、レンガ路864、及び小道866に対応させることができる。バーチャルオブジェクトまたはバーチャル環境特徴の1つ以上は、図8の第1のバーチャル環境ビューなどの、第1のバーチャル環境ビューに関連付けられたバーチャルオブジェクトまたはバーチャル環境特徴と1対1対応を有することができる。
バーチャルオブジェクトの一部は、対応するプロパティ、関数、ノードなどに関連付けられるか、またはそれ以外の場合は第1のバーチャル環境モードと第2のバーチャル環境モードとの間に1対1対応を有するが、他のバーチャルオブジェクトが別々のバーチャル環境モードの間で必ずしも同じ関係を有するとは限らない。例えば、図8の剣820と図9の棒920とは、同じ動きパターンまたはアニメーション関数、寸法プロパティなどを有することができる。逆に、図9の納屋950は、クラスノードの1つ以上の関数への引数としてのバーチャル環境モードに基づいて、図8では不可視であって、衝突しないものとすることができる。すでに述べたように、図8の城810と図9の家910とは、異なった寸法プロパティまたは特性を有することができる。さらに、他のバーチャルオブジェクトは、第1のバーチャル環境モードと第2のバーチャル環境モードとの間で同一に見えることがある。例えば、壁830は、同じように見え、図8〜図9の2つの異なったバーチャル環境モードにまたがって同じ位置に全く同じにレンダリングされる。
バーチャル環境モデル310は、1つ以上のバーチャルオブジェクトを含むことができ、それらは(例えば、第1のバーチャル環境モードに関連付けられた)第1のバーチャル環境ビューに従って、それぞれがバーチャル環境内に独自のバーチャル環境座標を有する第1のユーザ802、第2のユーザ804、ドラゴン806、城810、剣820、壁830、及び木840として、レンダリングすることができる。同じバーチャルオブジェクトは、(例えば、第2のバーチャル環境モードに関連付けられた)第2のバーチャル環境ビューに従って、それぞれ第1のユーザ902、第2のユーザ904、ポニー906、家910、棒920、壁830、及び木940としてレンダリングされ、同一のまたは対応するバーチャル環境座標を有することができる。
1つ以上の態様によれば、第1の関数セットは、第2の関数セットと1対1のトリガの対応を有している。言い換えれば、ユーザからの入力または第1のユーザ入力の受信は、対応する関数を実行させるか、またはトリガして実行させることができる。例えば、データベース108は、図示された図8〜図9のバーチャル環境に関連付けられたバーチャル環境モデル310を格納することができる。この例では図8のドラゴン806と図9のポニー906とを第1のバーチャルオブジェクトと見なして、図8のドラゴン806を第1の関数に関連付けることができ、一方、図9のポニー906として描写された同じ第1のバーチャルオブジェクトを第2の関数に関連付けることができる。例えば、第1の関数と第2の関数とは、ドラゴン806またはポニー906としての第1のバーチャルオブジェクトの動き、アニメーション、外観、テクスチャなどを指示するアイドル動作関数とすることができる。
図8において、第1のユーザ802が第1のバーチャル環境モードに関連付けられている場合、プロセッサ104のバーチャル環境エンジン116の動的バーチャル環境モジュール306は、ドラゴン806が、領域の周辺または事前に定義された外周部(図示せず)の内側を徘徊し、火を吐き出して、そしてバーチャル環境内の草862を燃やす光景を含む第1のバーチャル環境ビューを生成することができる。それに応じて、図9では、第1のユーザ902が第2のバーチャル環境モードに関連付けられている場合、プロセッサ104のバーチャル環境エンジン116の動的バーチャル環境モジュール306は、ポニー906が、領域の周辺または事前に定義された外周部(図示せず)の内側を徘徊し、バーチャル環境内の草962を食べる光景を含む第2のバーチャル環境ビューを生成することができる。
このようにして、第1のバーチャル環境モードに関連付けられた第1の関数と、第2のバーチャル環境モードに関連付けられた第2の関数とは、(例えば、2つの関数が、変数としてあらかじめ定義された外周部を共有し、ドラゴン806かポニー906のどちらかとしての第1のバーチャルオブジェクトのアイドル動作の態様を制御することに関わるため)互いに対応することができる。この関連で、第1の関数セットまたは第1の関数は、第2の関数セットまたは第2の関数と1対1の引数の対応を有することができる。例えば、第1の関数及び第2の関数は、両方が同じ個数の引数を受け取り、同数の入力及び出力を有することができ、引数が同じデータ型などを有している。
1つ以上の態様によれば、第1の関数セットまたは第1の関数は、第2の関数セットまたは第2の関数と1対1のアニメーションの対応を有している。例えば、第1のバーチャル環境モードまたは同じ種類のユーザデータに関連付けられた第1のユーザから第1の入力を受信すると、プロセッサ104のバーチャル環境エンジン116の動的バーチャル環境モジュール306は、第1のユーザが剣820を振りまわす光景を含む(第1のバーチャル環境モード及びスマートフォン224aに関連付けられた)第1のバーチャル環境ビューを生成することができる。逆にあるいはそれに応じて、第1のユーザから同じ種類の第1の入力を受信すると、プロセッサ104のバーチャル環境エンジン116の動的バーチャル環境モジュール306は、第1のユーザが棒920を揺り動かす光景を含む(第2のバーチャル環境モード及びタブレット224bに関連付けられた)第2のバーチャル環境ビューを生成することができる。1つ以上の態様によれば、クラスノードとクラスノードのノードとは、入力と同じ変数を使用し、対応する計算を行うか、または部分的に同一の特徴及び/または部分的に異なった特徴を含み得る対応する視界を生成することができる。
例えば、上述の剣820の振りまわし及び棒の揺り動かしのシナリオでは、1つ以上の態様によれば、剣820と棒920とは、同一の配列、動作、またはアニメーション(例えば、動きまたはモーション)を有するが、異なったテクスチャまたは外観を有することができる。したがって、第1のバーチャル環境モードに関連付けられたユーザ802と、第2のバーチャル環境モードに関連付けられたユーザ902とは、剣820と棒920とを、同じ大きさまたは同じ寸法で、同じ動きのパターンを使用して動かされるバーチャルオブジェクトとして見ることができる。
1つ以上の態様によれば、アニメーション関数またはビュークラスノード712のBEHAVIORノードのノードは、バーチャル環境モードに基づいて、多数の剣の振りまわしまたは棒の揺り動かしを実行することができる。例えば、棒の揺り動かしは、ほんの2回だけ発生し得るのに対して、剣の振りまわしは、異なったバーチャル環境モードに基づいて3回発生することができる。さらに他の実施形態では、関数、ノードなどは、キャラクタに関連付けられたレベルに基づいて、異なるように実行させることができる。例えば、レベル10の戦士802は、彼または彼女の剣820を10回振りまわすことができるが、レベル3の戦士802は、自身の剣820を3回しか振りまわすことができない。
APPEARANCEノード(例えば、図7参照)は、剣820及び棒920用の様々なテクスチャまたは材質のプロパティを生成することができるため、一方には光沢があるように見えるが、他方は暗く艶消しされて見えるようにすることができる。さらに、オーディオ効果ノード(図7に示さず)は、異なるオーディオ効果(例えば、剣820用の鋭い音と棒920用の魔法の杖の効果音)を生成することができる。
1つ以上の態様によれば、ユーザは報酬を受けることができ、及び/またはバーチャル環境のバーチャルオブジェクトとのインタラクションのため、またはバーチャル環境のバーチャルオブジェクトとインタラクトするために、スコアを追跡するか、または集計することができる。例えば、図8のユーザ802がドラゴン806を攻撃する場合(例えば、第1のバーチャル環境モードに関連付けられた第1の関数を実行する)、バーチャル環境エンジン116は、ユーザ802に報酬(例えば、ユーザアカウントに結び付いた評価点など)を与えることができる。第1の関数と第2の関数との間の1対1対応に基づいて、図9のユーザ902がポニー906のところで棒920を使用して合図をする場合(例えば、第2のバーチャル環境モードに関連付けられた第2の関数を実行する)、バーチャル環境エンジン116は、図9のユーザ902に、同様のまたは相当する報酬(例えば、ユーザアカウントに結び付いた評価点など)を与えることができる。
図10は、1つ以上の態様による、別の例示的な第1のバーチャル環境ビュー1000である。図11は、1つ以上の態様による、図10の第1のバーチャル環境ビュー1000に対応する別の例示的な第2のバーチャル環境ビュー1100である。図11の第2のバーチャル環境ビューは、図10の第1のバーチャル環境ビューに対応しているため、図10〜図11を相互に参照して説明する。
図10に見られるように、例示的な第1のバーチャル環境ビュー内に示される2人のユーザ802及び804(例えば、バーチャルオブジェクトのタイプ)がいる。すなわち第1のユーザ802及び第2のユーザ804である。第1のバーチャル環境モードに基づいた、この第1のバーチャル環境ビューにおいて、第1のバーチャル環境ビューの第1のレンダリングは、第3のユーザ(図示せず)に提示されており、第1のユーザ802は第1のスキンを用いてレンダリングされる。
図11において、同じ2人のユーザ902及び904が居合わせている。この第2のバーチャル環境ビューでは、第2のバーチャル環境ビューの第2のレンダリングは、第4のユーザ(図示せず)に提示されており、第1のユーザ902は第2のスキンを用いてレンダリングされる。言い換えれば、第2のバーチャル環境ビューが第2のバーチャル環境モードに基づいて選ばれるため、図11の第1のユーザ902と第2のユーザ904とは、違うようにレンダリングされていて、別々の関数のセットに関連付けられる。例えば、図10では第1のユーザ802を第1の対話関数に関連付けることができ、図11では第1のユーザ902を第2の対話関数に関連付けることができる。
言い換えれば、第3のユーザが、図10の第1のユーザ802を対象にする入力を与えるとき、第1の対話関数が実行され、それによって第3のユーザに対話の第1セットを提示することができる。逆に、第4のユーザが、図11の第1のユーザ902を対象にする同じまたは対応する入力を与えるとき、第2の対話関数が実行され、それによって第4のユーザに対話の第2セットを提示することができる。このようにして、バーチャル環境エンジン116は、クラスノードのノード(例えば、BEHAVIOR、GEOMETRY、及びAPPEARANCE)を利用して、ユーザが互いにインタラクトすることができるが、別々のスキンまたは別々の視点を介して、それらのインタラクションを違うように知覚することができるようにする。クラスノードの全ての関数またはノードが、上記の1対1対応を有することを要求されるわけではない。例えば、1つの態様によれば、第1の対話には、単にテキストレンダリング及び/またはオーディオを含めるだけであってもよく、一方で第2の対話には、対応するテキストレンダリングとオーディオと、ユーザが花のバーチャルオブジェクトを手渡すなどのアニメーションとを含めることができる。
図10の第3のユーザは第1のバーチャル環境モードに関連付けられ、図11の第4のユーザは第2のバーチャル環境モードに関連付けられているにも関わらず、図10の第3のユーザは、図11の第4のユーザとインタラクトすることができる。言い換えれば、ユーザは、共通バーチャル環境において互いにインタラクトするが、バーチャル環境の中のバーチャルオブジェクトを違うように知覚して、ユーザ等の関連付けられたバーチャル環境モードに基づく個別のインタラクションを有することができる。
この関連で、図10は、第3のユーザが第1のモードに従ってバーチャル環境を体験しているシナリオの例示的な図であり、図11は、第4のユーザが、図10の第1のモードにあるバーチャル環境モード(例えば、第1のモード)と、図11の第2のモードにあるバーチャル環境モード(例えば、第2のモード)とを除いて、全てのもの(例えば、位置、座標、ユーザの振る舞い、それぞれのユーザから与えられた入力)が同じである第2のモードに従って、バーチャル環境を体験しているシナリオの例示的な図である。
したがって、ビュークラスノード712を使用して、プロセッサ104のバーチャル環境エンジン116は、(例えば、第2のバーチャル環境モードに関連付けられた)第1のユーザの第2のバーチャル環境ビューを、第4のユーザ用に、棒920を所持するプリンセス904として生成しながら、第1のユーザの第1のバーチャル環境ビューを、(例えば、第1のバーチャル環境モードに関連付けられた)第3のユーザ用に、剣820を所持する戦士804として生成することができる。ビュークラスノード712及び環境構造クラスノード714に関連付けられたノードまたは関数には、対応するユーザのバーチャル環境モードが(図7を参照して説明した)引数として備わっているため、例えばTRANSFORM、imageEffect、BEHAVIOR、visualEffects、GEOMETRY、及びAPPEARANCEなどの関数またはノードは、バーチャル環境エンジン116が、図10〜図11のバーチャルオブジェクトを、第3及び第4のユーザ用に、違うようにレンダリングまたは生成すること(及び別々のアニメーション、反応、トリガ、eventsIn、またはeventsOutを有すること)を可能にすることができる。
さらに別の方法で説明すると、図10〜図11の同じ第1のユーザは、別のユーザによって、そのユーザに関連付けられ、そのユーザによってなされた、必ずしもゲームスキンの選択に直接関連しているとは限らない選択に基づいて決定または選択され得るバーチャル環境モードに基づいて、異なるように知覚され、レンダリングされ、または見られ得る(例えば、第3のユーザは、第1のユーザを男性として知覚し、第4のユーザは、第1のユーザを女性として知覚する)。このように、同一または共通のバーチャル環境の2つの別々のバーチャル環境視点(したがってゲーム)は、バーチャル環境モードに基づいて、バーチャル環境エンジン116によって作り出され、または生成され得る。
図12は、1つ以上の態様による、実世界環境1200からのバーチャル環境ビューが実世界環境1200に基づいた、例示的な実世界環境1200の視界である。実世界環境は、建物1210、フェンス1230、木1240、消火栓1250、一時停止標識1260、第1の道路1262、第2の道路1264、及び歩道1266を含むことができる。先述のように、システム100の車両センサ120は、実世界環境からのデータを収集、検知、または検出して、このデータをデータベース108に格納されたバーチャル環境モデル310に与えることができる。このようにして、車両センサ120は、バーチャル環境モデル310に関連付けられたバーチャル環境の内部の態様を、生成または反映するために使用され得る、実世界環境に由来する特徴を検知または検出することができる。
図12の例では、建物1210は、バーチャル環境モードに応じて、城810または家910のバーチャルオブジェクトに対応することができる。同様に、フェンス1230は、壁830のバーチャルオブジェクトに対応することができ、本明細書に記載された例では、バーチャル環境モードに基づいて変化しない。木1240は、バーチャル環境モードに基づいて、図8〜図9の木840及び940としてレンダリングされたバーチャルオブジェクトに対応することができる。同様に、道路及び歩道1262、1264、及び1266は、バーチャル環境モードに応じて、図8〜図9の862、864、及び866または962、964、及び966としてのバーチャル環境の特徴に対応することができる。消火栓1250及び一時停止標識1260などの他の要素は、バーチャル環境モードの1つ(例えば、第2のバーチャル環境モード)のみで(例えば、納屋950及び草960として)現れ、他の(例えば、第1の)バーチャル環境モードには現れない場合がある。この例では、対応関係は、バーチャル環境座標、または実世界環境とバーチャル環境との要素間の空間的関係に関連する。
したがって、バーチャル環境エンジン116によって、同じバーチャル環境モデル310及び/またはバーチャル環境座標を使用して、複数プレーヤ(例えば、複数ユーザ)がバーチャル環境ゲームをすることができる車両内のバーチャル環境体験が提供されるとともに、別々の視点または別々のバーチャル環境が生成される。
図13は、1つ以上の態様による、本明細書に記載のバーチャル環境システムを実装した例示的なシステム構築の概略図である。例えば、図13のデバイス124は、図2のバーチャルリアリティヘッドセット224cとすることができる。1つ以上の態様によれば、バーチャルリアリティヘッドセット224cは、バーチャル環境モードに基づいてバーチャルオブジェクトのバーチャル環境ビューをレンダリングするバーチャル環境エンジン1320を備えることができる。1つ以上の態様によれば、図13のバーチャル環境エンジン1320は、上に述べた図1〜図3のバーチャル環境エンジンの関数または計算のうちの少なくとも一部を実行することができる。
図13において、デバイス124は、アプリケーション層1302、ミドルウェア層1304、オペレーティングシステム(OS)層1306、及びハードウェア層1308を含む。例示的なOS層1306は、Android OSとすることができる。他のオペレーティングシステムを実装してよいことが理解される。さらに、図13のコンポーネントの1つ以上は、組み合わされ、省略され、または編成されて別のアーキテクチャになり得ることが理解される。例えば、アプリケーション層1302は、OSアプリケーション層のコンポーネントを含むことができる。
アプリケーション層1302は、デバイス124上で動作するネイティブアプリケーション1310、非ネイティブアプリケーション1312(例えば、サードパーティ)及び相手先商標製品製造会社(OEM)アプリケーション1314を含むことができる。ネイティブアプリケーション1310は、ローカルにインストールされて、デバイスのオペレーティングシステム(例えば、Android)上で動作するようにデバイス124の製造業者によって設計される。例えば、ネイティブアプリケーション1310には、連絡先アプリケーション、電話アプリケーション、及びブラウザアプリケーションのアプリケーションが含まれ得る。非ネイティブアプリケーション1312には、サードパーティによって提供されるアプリケーションが含まれる。OEMアプリケーション1314には、車両(図示せず)及びデバイス124とのインタラクション用に、車両OEMによって提供されるアプリケーションが含まれる。OEMアプリケーション1314は、(例えば、図1のネットワーク122に接続された)OEMサーバによって提供されるデバイス124上に、OEMアプリケーション1314を起動するためのグラフィックユーザインタフェース(GUI)に関連付けることができる。
ミドルウェア層1304は、デバイス124とデバイス124上のアプリケーションとを動作させるためのライブラリ、フレームワーク、及びアプリケーションプログラミングインタフェース(API)を含むことができる。例えば、通信フレームワーク(com FW)1316は、接続性、外部サーバ及びデバイスとの通信、ならびにアプリケーション認証のための機能を含む。車両フレームワーク(車両FW)1318は、車両(例えば、図2の車両200)と通信すること、(例えば、図1の車両システム118及び/または車両センサ120との)車両データ交換を処理すること、及び図1のデバイス124とコンピューティングデバイス102との間のタッチパネルイベントを提供することのための特定のフレームワークである。バーチャル環境エンジンフレームワーク(バーチャル環境エンジンFW)1320は、動的な車両内のバーチャル環境体験を促進するためのフレームワークである。例えば、1つ以上の実施形態において、バーチャル環境エンジンFW1320は、図1のバーチャル環境エンジン116と通信する。他の実施形態では、バーチャル環境エンジンFW1320は、バーチャル環境エンジン116の関数(例えば、図3のバーチャル環境データモジュール302、動的バーチャル環境モジュール306、またはレンダリングモジュール308)を含むか、または実行することができる。
OS層1306は、デバイス124のハードウェアリソース及びソフトウェアリソースを管理するためのサービスを広く提供し、OSコア1322を含む。OSコア1322は、例えば、Android、iOS、Mobile Linux(登録商標)、Symbian OS、Windows Mobile、BlackBerry OS、Web OS、または他のオペレーティングシステムとすることができる。
さらに、ハードウェア層1308は、ハードウェアリソースの直接管理及び直接アクセスのための機能を含むことができる。デバイス124は、プロセッサ1324、メモリ1326、ディスク1328、位置センサ及びモーションセンサ1330、入出力装置1332(例えば、デバイス124のタッチスクリーン、デバイス124のキーボード、及びデバイス124のマイクロフォン)などのハードウェアを備えることができる。ハードウェア層1308のコンポーネントは、例えば、バス1334を介して、互いに通信することができる。デバイス124は、図1のコンピューティングデバイス102として同一または類似のコンポーネントを備えることができる。したがって、1つ以上の態様によれば、デバイス124、具体的にハードウェア層1308のコンポーネントは、図1のバーチャル環境エンジン116を参照して説明した1つ以上の関数を実行することができる。例えば、メモリ1326は1つ以上の命令を格納することができ、プロセッサ1324またはプロセッサ1324のバーチャル環境エンジン1320は、メモリ1324に格納された命令の1つ以上を実行して、本明細書に記載されたバーチャル環境ビューの生成を行うことができる。他の実施形態では、バーチャル環境エンジン1320は、システム100のメモリ106に格納された命令の1つ以上を実行して、バーチャル環境ビューの生成を行うことができる。
位置センサ及びモーションセンサ1330は、ハードウェアベース及び/またはソフトウェアベースのセンサを備えることができる。例えば、モーションセンサは、ハードウェアベースの加速度計、ジャイロスコープ、磁気計などを備えることができる。モーションセンサは、ソフトウェアベースの重力センサ、線形加速度センサ、及び回転ベクトルセンサを含むこともできる。1つ以上の態様によれば、ソフトウェアベースのセンサは、加速度計及び磁気計からデータを得ることができる。他の実施形態では、ソフトウェアベースのセンサは、このデータを得るためにジャイロスコープを使用することができる。モーションセンサは、傾き、動揺、回転、または振動などのデバイスの動きを監視するのに役立つ。この動きは、直接のユーザ入力を反映したものであり得るが、デバイス124が位置している物質的環境を反映したものである可能性もある。例えば、デバイス124は、デバイス124が設置された及び/または取り付けられた車両の動きを検出することができる。ハードウェア抽象化層のコンポーネントは、例えば、ジャイロモジュール、加速度モジュール、磁気モジュール、回転ベクトルモジュール、線形加速度モジュール、及び重力モジュールなどの上記のセンサからモーションデータを得ることができる。
同様に、位置センサは、ハードウェアベースの地球磁場センサ及び近接センサを備えることができる。方位センサは、ソフトウェアベースとすることができ、そのデータを加速度計及び/または地球磁場センサ、ジャイロスコープ、磁気計などから得ることができる。位置センサは、世界の基準系における、または別の基準系、例えば、車両基準系(例えば、車両のモーション基準系)におけるデバイス124の物理的な位置を決定するのに役立つ。別の実施形態では、方位センサ(または類似のセンサベースの方位測定方法)を使用して、アプリケーションの基準系におけるデバイス124位置を決定することができる。
デバイス124は、例えば環境センサ(例えば、湿度、輝度、周囲圧力、及び周囲温度)などの他のセンサを含むこともできることが理解される。そのうえ、さらなる実施形態では、デバイス124のカメラ(図示せず)を、カメラによって取得された画像データから、モーション、位置、ジェスチャ認識などを検出するセンサとして使用することができる。位置センサ及びモーションセンサ1330は、位置センサ及びモーションセンサ1330を使用することによって、車両システム118及びセンサ120から独立して、車両動力学データを含む車両データを収集して取得することができる。
図2に関しては、スマートフォン224aは、第1のバーチャル環境モードに基づいて、バーチャルオブジェクトの第1のバーチャル環境ビューをレンダリングすることができ、またタブレット224bは、第2のバーチャル環境モードに基づいて、バーチャルオブジェクトの第2のバーチャル環境ビューをレンダリングすることができる。同一もしくは共通のバーチャルオブジェクトが、または同一もしくは共通のバーチャルオブジェクトも、第1のバーチャル環境ビュー及び第2のバーチャル環境ビューの中に含まれるように、第1のバーチャル環境ビューが、スマートフォン224aによってレンダリングされ、並行してまたは同時に行う方法で、第2のバーチャル環境ビューが、タブレット224bによってレンダリングされる。
バーチャルオブジェクトは、第1のバーチャル環境ビュー内で第1のオブジェクトとしてレンダリングされ、バーチャルオブジェクトは、第2のバーチャル環境ビュー内で、第1のオブジェクトとは異なる第2のオブジェクトとしてレンダリングされる。このことの例は、先述のように、図8及び図10ならびに図9及び図11に見ることができる。説明のために、図8のドラゴン806のバーチャルオブジェクトと、図9のポニー906のバーチャルオブジェクトとは、図2のデータベース108に格納されたバーチャル環境モデル310において、同一または単一のバーチャルオブジェクトとして表される。しかしながら、図8のユーザ802が第1のモードに関連付けられ、図9のユーザ902が第2のモードに関連付けられるため、このバーチャルオブジェクトは、第1のバーチャル環境ビューでは第1のオブジェクト(例えば、ドラゴン806)としてレンダリングされて、第2のバーチャル環境ビューでは第2のオブジェクト(例えば、ポニー906)としてレンダリングされる。
デバイス124のI/Oインタフェース1332は、コントローラなどのI/Oデバイスを備えることができる。コントローラは、1つ以上の複数のボタン、ジョイスティック、モーションセンサなどを備えたゲームコントローラとすることができる。いずれにしても、デバイス124のI/Oインタフェース1332は、I/Oデバイスまたはコントローラから、ユーザ入力などの1つ以上の入力を受信することができる。例えば、コントローラは、「A」ボタン、「B」ボタン、「X」ボタン、及び「Y」ボタンを含むことができる。別の例として、デバイス124のI/Oインタフェース1332は、第1の入力、第2の入力、第3の入力、第4の入力などを受信することができる。したがって、図2に関して、スマートフォン224aは、第1の入力及び第2の入力に関連付けることができる。同様に、タブレット224bは、第1の入力及び第2の入力に関連付けることができる。それぞれのデバイスが第1の入力(例えば、「A」ボタンの押下)を受信すると、対応する関数をトリガさせることができる。
第1の関数が第1のバーチャル環境モードに対応し、第2の関数が第2のバーチャル環境モードに対応するシナリオにおいて、スマートフォン224aでのI/Oインタフェース1332による第1の入力の受信は、第1の関数の実行をトリガし、タブレット224bでのI/Oインタフェース1332による第1の入力の受信は、第2の関数の実行をトリガする。例えば、図8に関連して、第1の入力が受信されたとき、第1の関数の実行によって、プロセッサのバーチャル環境エンジンは、鋭い音の効果などを伴い得る、剣820用の振りまわしアニメーションを生成することができる。逆にあるいはそれに応じて、図9に関連して、第1の入力が受信されたとき、第2の関数の実行によって、プロセッサ104のバーチャル環境エンジン116は、棒920用の揺り動かし(例えば、火花や閃光が棒920から飛び散り得る)アニメーションを生成することができる。1つ以上の態様によれば、第1の関数と第2の関数とは、対応するアニメーションを有することができる。例えば、揺り動かし及び振りまわしのアニメーションは、同じ継続時間、同じ動きパターンなどを有してもよく、対応するユーザに関連付けられたバーチャル環境モードに基づくことができる。
図14A〜図14Bは、1つ以上の態様による、共通バーチャル環境の例示的な第1のバーチャル環境ビュー及び第2のバーチャル環境ビューである。追加として、本明細書に記載される第1及び第2のバーチャル環境モードまたはビューは、単に別々のスキンを提供するよりも、もっと抽象的なレベルで実装することができる。例えば、図14A〜図14Bに関して、バーチャル環境は、バーチャル環境モードまたはバーチャル環境ビューに基づいて、2Dから3Dにマッピングまたは再マッピングすることができる。
図14Aに関連付けられた第1のバーチャル環境モードでは、様々なバーチャルオブジェクトが第1のユーザを対象にしてレンダリングされる。バーチャルオブジェクトには、第1のバーチャルユーザ1410、宝箱1420、鳥1430、木1440、太陽1450、及び第2のバーチャルユーザ1490が含まれる。本態様によれば、バーチャルオブジェクト1410、1420、1430、1440、1450、及び1490は、バーチャル環境モデル310に格納されたバーチャルオブジェクト情報に基づいて、2Dビュー内にレンダリングされる。図14Bに関連付けられた第2のバーチャル環境モードでは、第1のバーチャルユーザ1410、宝箱1420、鳥1430、木1440、太陽1450、及び第2のバーチャルユーザ1490は、バーチャル環境エンジン116によって、3Dビュー内にレンダリングされる。このようにして、バーチャルオブジェクト1410、1420、1430、1440、1450、及び1490を、第1のバーチャル環境ビューにおける第1のレンダリングに基づいてレンダリングすることができるとともに、第1のレンダリングとは異なった、第2のバーチャル環境ビューにおける第2のレンダリングに基づいてレンダリングすることができる。したがって、共通バーチャル環境に基づいて種々のバーチャル環境視点を提供するシステム100は、単に別々のスキンを提供すること以外の方法で、種々の視点間または視界間で、バーチャルオブジェクトを違うようにレンダリングすることができる。
先述のように、第1のバーチャル環境モードは、第1のユーザ体験に適用することができ、一方第2のバーチャル環境モードは、バーチャル環境エンジン116によって、第2のユーザ体験に適用することができる。バーチャル環境は、ゲームジャンル、ゲーム選択、アバタ選択、ゲームに残された評点、以前のゲームプレイなどに関連した選択など、ユーザによってなされた選択に基づいて選択することができる。1つ以上の他の態様によれば、バーチャル環境エンジン116は、ユーザの人口統計に基づいて、またはユーザのデバイスのハードウェア能力に基づいて、対応するバーチャル環境をユーザに関連付けることができる。例えば、低級のグラフィックス処理能力を有した第1のデバイス(例えば、スマートフォン)を利用する第1のユーザには、図14Aに関連付けられた第1のバーチャル環境モードの要素が提示されるゲームを提供することができ、一方で第1のデバイスよりも高いグラフィックス処理能力を有した第2のデバイス(例えば、タブレット)を利用する第2のユーザには、図14Bに関連付けられた第2のバーチャル環境モードの要素が提示されるゲームを提供することができる。
図14A〜図14Bのレンダリングの、相違する次元と同じように、それぞれのバーチャルオブジェクトを、体験に関連付けられたモードに基づいて、種々の関数のセットに関連付けることができる。言い換えれば、第1のユーザに関連付けられた図14Aのバーチャルオブジェクト1410、1420、1430、1440、1450、及び1490と第1のバーチャル環境モードとは、第1の関数セットに関連付けることができ、一方、第2のユーザに関連付けられた、同一の、対応する図14Bのバーチャルオブジェクトと第2のバーチャル環境モードとは、第2の関数セットに関連付けることができる。
第2の関数のセットは、必ずしも1対1の形で第1の関数のセットに対応していなくてもよい。例えば、図14A〜図14Bと関係があるデバイスの処理能力の差異に起因して、第2の関数セットに対応する特定の関数は、第1の関数セットの範囲内で使用可能にすることができない。これの例には、バーチャルオブジェクト1410、1420、1430、1440、1450、及び1490の1つ以上とのインタラクションのためのオーディオの提示が含まれ、これらバーチャルオブジェクトは、図14Aではテキストまたは字幕として提示されるが、図14Bでは字幕またはテキストではなく、オーディオとして提示することができる。このように、第1の関数セットに対するバーチャルオブジェクト1410、1420、1430、1440、1450、及び1490は、第2の関数セットと1対1のトリガの対応を有する。だが、同じトリガに基づいている場合に、第1の関数及び関数のセットに関連付けられた出力が、異なったユーザインタラクション体験をもたらすことができる。
同様に、レンダリングがそれぞれ図14A〜図14Bの2D及び3Dで行われるにしても、第1の関数セットは、第2の関数セットと1対1のアニメーションの対応を有することができる。しかしながら、第1の関数セットと第2の関数セットとの間の1対1対応は、第1の関数セットと第2の関数セットとの間のコードが同一であるということを必ずしも意味するものではない(例えば、オーディオを再生することに対してテキストを出力すること)。このようにして、ユーザ1410が宝箱1420に近づいて第1の入力を与える場合、図14A〜図14Bの宝箱1420は開くようにレンダリングされ、中身がユーザ1410に引き渡されるか、またはユーザの所有物リストに追加される。
図15A〜図15Bは、1つ以上の態様による、共通バーチャル環境の例示的な第1のバーチャル環境ビュー及び第2のバーチャル環境ビューである。バーチャル環境エンジン116は、図15Aの第1のゲーム(例えば、じゃんけん)と、図15Bの第2のゲームとに関連付けられた得点を保持することができる。第1のゲーム及び第2のゲームは共通バーチャル環境に基づいているため、ユーザの選択は、2つのゲームの間で互いを反映する。例えば、第1のゲームにおいて、紙1520が岩1510に勝ち、はさみ1530が紙1520に勝ち、岩1510がはさみ1530に勝つと仮定して、第2のゲームの犬1512が岩1510に関連付けられ、ネズミ1522が紙1520に関連付けられ、猫1532がはさみ1530に関連付けられているとすれば、第1のゲームと第2のゲームとの間で対応する選択を行うプレーヤまたはユーザには、同じ結果または同じ得点がバーチャル環境エンジン116によって与えられ得る。このようにして、第1のゲーム及び第2のゲームは、互いに1対1の対応を有することができ、単にバーチャルオブジェクト1510、1520、1530、1512、1522、1532に対して違うようにスキンを適用しているだけではなく、第1のゲーム及び第2のゲームが違うようにスキンされる。つまり、図15A〜図15Bのバーチャルオブジェクトは違うようにスキンされるが、プレーヤに提示される意思決定または選択も、相違する形でフレーム化またはレンダリングされる(例えば、動物の選択に対して、岩、紙、及びはさみを選択すること)。この点で、さらなるゲーム要素が、別のゲームに対する片方のゲームでレンダリングされるか、または存在することができる。例えば、じゃんけんでは、上記の通り、勝利は状態マシンによって定義されるが、図15Bでは、動物管理人1552というさらなる要素がレンダリングされる。図15Aでは、じゃんけんの選択されたものが、第1のユーザと(コンピュータプレーヤまたは別のユーザであり得る)第2のユーザとの両方に対してレンダリングされる。図15Bでは、第2のプレーヤの選択されたものが隠され、ゲームの結果が、違うようにレンダリングされる。例えば、図15Aでは、勝利または敗北のメッセージは、バーチャル環境エンジン116によって提示されるか、またはレンダリングされるが、動物管理人1552は、図15Bにおいてユーザが選択したものを、負ける選択に基づいて「捕獲する」ことができ、一方、第2のユーザが選択したもの(犬、猫、ネズミ)はレンダリングしない。
図16A〜図16Bは、1つ以上の態様による、共通バーチャル環境の例示的な第1のバーチャル環境ビュー及び第2のバーチャル環境ビューである。図16Aにおいて、ダンジョンクローラーゲームを、テキストプロンプト1602、1604、及び1606を介して実行することができる。図16Bでは、同じダンジョンクローラーゲームを、グラフィカルユーザインタフェース(GUI)を介して実行することができ、GUIにはユーザ及び宝箱としてのバーチャルオブジェクト1610及び1612がそれぞれ含まれる。図16Aでは、いかなるバーチャルオブジェクトのレンダリングも行われず、一方、図16Bでは、バーチャルオブジェクトのレンダリングがバーチャル環境エンジン116によって提供される。さらに、コントロールパッド1650、及び入力ボタン1652、1654など、第2の関数セットの1つ以上を、GUI1600上でレンダリングすることができる。
さらに別の実施形態では、本明細書で提示される技法の1つ以上の実施形態を実装するように構成されたプロセッサ実行可能命令を含むコンピュータ可読媒体が必要とされる。これらの方法で考案されたコンピュータ可読媒体またはコンピュータ可読装置の実施形態が図17に示される。実装1700には、CD−R、DVD−R、フラッシュドライブ、ハードディスクドライブのプラッタなどのコンピュータ可読媒体1708が含まれ、その上に符号化されたコンピュータ可読データ1706がある。1706に示すように、複数のゼロ及び1を含むバイナリデータなどの、このコンピュータ可読データ1706は、さらには、本明細書に記載された1つ以上の原理に従って動作するように構成されたプロセッサ実行可能コンピュータ命令のセット1704を含む。そのような1つの実施形態1700において、プロセッサ実行可能コンピュータ命令1704は、図4の方法400または図5の方法500などの方法1702を実行するように構成することができる。別の実施形態では、プロセッサ実行可能コンピュータ命令1704は、図1〜図2のシステム100などのシステムを実装するように構成することができる。本明細書で提示される技法に従って動作するように構成された、このようなコンピュータ可読媒体の多くは、当業者によって工夫して作りだすことができるものである。
この出願で使用されているように、「コンポーネント」、「モジュール」、「システム」、「インタフェース」などという語は、全体として、ハードウェア、ハードウェアとソフトウェアとの組み合わせ、ソフトウェア、または実行中のソフトウェアのいずれかのコンピュータ関連エンティティを指すものとする。例えば、コンポーネントは、プロセッサ上で動作するプロセス、処理ユニット、オブジェクト、実行ファイル、実行スレッド、プログラム、またはコンピュータであってもよいが、これに限定されない。実例として、コントローラ上で動作するアプリケーションとコントローラとの両方がコンポーネントであってもよい。プロセスまたは実行スレッド内に存在する1つ以上のコンポーネントとコンポーネントとは、1つのコンピュータ上に局在してもよく、2つ以上のコンピュータの間に分散していてもよい。
さらに、特許請求される主題は、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組み合わせを生成するために、標準のプログラミング技術またはエンジニアリング技術を使用して、方法、装置、または製品として実装され、開示される主題を実施するコンピュータを制御する。本明細書で使用される「製品」という語は、任意のコンピュータ可読デバイス、搬送波、または媒体からアクセス可能なコンピュータプログラムを含むことが意図されている。当然ながら、特許請求の範囲に記載の主題の範囲または趣旨から逸脱することなく、本構成に多くの変更を加えることができる。
図18と以下の説明とは、本明細書に記載の規定の1つ以上についての実施形態を実装するための適切なコンピューティング環境の説明を提供する。図18の運用環境は、適切な運用環境の単なる一例に過ぎず、運用環境の使い方または機能性の範囲に関するいかなる制限も示唆するものではない。コンピューティングデバイスの例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、例えば、携帯電話、携帯情報端末(PDA)、メディアプレーヤなどのモバイル機器、マルチプロセッサシステム、消費者電子機器、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが含まれるが、これらに限定されない。
全般に、実施形態は、1つ以上のコンピューティングデバイスによって実行される一般の「コンピュータ読取り可能命令」との関連で説明される。コンピュータ読取り可能命令は、後述するようにコンピュータ可読媒体を媒介として配布することができる。コンピュータ読取り可能命令は、1つ以上のタスクを実行するか、または1つ以上の抽象データ型を実装する関数、オブジェクト、アプリケーションプログラミングインタフェース(API)、データ構造などのプログラムモジュールとして実装されてもよい。一般に、コンピュータ読取り可能命令の機能性は、様々な環境の中で要望どおりに組み合わされるか、または分散される。
図18は、本明細書で提供される1つ以上の実施形態を実装するように構成されたコンピューティングデバイス1812を備えるシステム1800を示す。1つの構成において、コンピューティングデバイス1812は、少なくとも1つの処理ユニット1816及びメモリ1818を備える。コンピューティングデバイスの正確な構成及び型によるが、メモリ1818は、RAMなどの揮発性のもの、ROM、フラッシュメモリなどの不揮発性のもの、またはこれら2つを組み合わせたものとすることができる。この構成は、破線1814によって図18に示される。
他の実施形態では、コンピューティングデバイス1812は、さらなる機能または機能性を備える。例えば、コンピューティングデバイス1812は、磁気記憶装置、光学記憶装置などを含むが、これに限定されないリムーバブル記憶装置または非リムーバブル記憶装置などの追加記憶装置を備えることができる。そのような追加記憶装置が、記憶装置1820によって図18に示される。1つ以上の態様によれば、本明細書で提供される1つ以上の実施形態を実装するためのコンピュータ読取り可能命令は、記憶装置1820内にある。記憶装置1820は、オペレーティングシステム、アプリケーションプログラムなどを実装するための他のコンピュータ読取り可能命令を格納することができる。コンピュータ読取り可能命令は、例えば処理ユニット1816による実行のために、メモリ1818内にロードすることができる。1つ以上の態様によれば、バーチャル環境エンジン116は、処理ユニット1816を介して実装され、メモリ1818に格納された1つ以上の命令を実行するように構成することができる。
本明細書で使用する「コンピュータ可読媒体」という語は、コンピュータ記憶媒体を含む。コンピュータ記憶媒体は、コンピュータ読取り可能命令または他のデータなどの情報を記憶するための任意の方法または技術で実装される、揮発性及び不揮発性の、リムーバブル及び非リムーバブルの媒体を含む。メモリ1818及び記憶装置1820は、コンピュータ記憶媒体の例である。コンピュータ記憶媒体には、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)もしくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または所望の情報を格納するために使用されるとともに、コンピューティングデバイス1812によってアクセスされ得る他のいかなる媒体も含まれるが、これに限定されない。このようなコンピュータ記憶媒体は、いずれもコンピューティングデバイス1812の一部である。
「コンピュータ可読媒体」という語は、通信媒体を含む。通信媒体は、一般に、搬送波または他の搬送機構などの「変調データ信号」内のコンピュータ読取り可能命令または他のデータを具体化する、任意の情報配信媒体を含むものである。「変調されたデータ信号」という語は、その特性の1つ以上が、信号内の情報を符号化するような方式で、設定または変更された信号を含む。
コンピューティングデバイス1812は、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイス、赤外線カメラ、ビデオ入力デバイス、またはその他の入力デバイスなどの入力デバイス(複数可)1824を備える。1つ以上のディスプレイ、スピーカ、プリンタ、またはその他の出力デバイスなどの出力デバイス(複数可)1822を、コンピューティングデバイス1812に含めることができる。入力デバイス1824及び出力デバイス1822は、有線接続、無線接続、またはそれらの任意の組み合わせを介して、コンピューティングデバイス1812に接続することができる。1つ以上の態様によれば、別のコンピューティングデバイスの入力デバイスまたは出力デバイスを、コンピューティングデバイス1812用の入力デバイス(複数可)1824または出力デバイス(複数可)1822として、使用することができる。コンピューティングデバイス1812は、例えば、ネットワーク1828などを介して、1つ以上の他のデバイス1830との通信を促進する通信接続(複数可)1826を備えることができる。
上記で開示された多数の特徴及び機能、並びに他の多数の特徴及び機能、あるいはそれらの代替または変種は、望ましくは他の多くの異なったシステムまたはアプリケーションに組み合わせ得ることが理解されよう。さらに、当業者であれば引き続いて行うことができる、本開示における現在、予期できない、または予期していなかった種々の代替、変更、変形または改良は、以下の特許請求の範囲によって包含されることも意図されている。