(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【0004】
本開示は、概して、リアルタイムで第2の3Dプログラムにレンダリングするために、第1の3Dプログラムからオブジェクトをエクスポートすることに関する。一実施形態では、コンピュータシステムは、複数のアプリケーションインスタンスをホストし、各アプリケーションインスタンスは、ローカルクライアントアプリケーションに対応する。コンピュータシステムは、コンピュータシステムのグラフィックス処理ユニットのリソースを利用して、並行してレンダリングを行い、アプリケーションインスタンスのグラフィックス出力は、コンピュータシステムディスプレイの別個のウィンドウにおけるローカルクライアントアプリケーションのうちの少なくとも2つに対応する。第1のアプリケーションから3Dオブジェクトをエクスポートしようとするユーザは、第1のウィンドウからオブジェクトを選択して、そのオブジェクトを第2のウィンドウにドラッグする。ユーザがオブジェクトをドラッグすると、ユーザのドラッグコマンドに従って、オブジェクトがコンピュータディスプレイにレンダリングされる。次いでユーザが、第2のウィンドウにレンダリングされた第2のアプリケーションにオブジェクトをドロップすると、オブジェクトがリアルタイムで、第2のアプリケーションにインポートされる。
【0005】
一実施形態では、第1のコンピュータシステムは、ローカルに第1のアプリケーションをホストし、第2のアプリケーションは、アプリケーションサーバにホストされる。コンピュータシステムは、自身のローカルハードウェアおよびレンダリングAPIを介して、ローカルアプリケーションおよびリモートアプリケーションの両方を、コンピュータシステムディスプレイ上の2つの別個のウィンドウにレンダリングする。第1のアプリケーションから3Dオブジェクトをエクスポートしようとするユーザは、第1のウィンドウからオブジェクトを選択して、そのオブジェクトを第2のウィンドウにドラッグする。ユーザがオブジェクトをドラッグすると、ユーザのドラッグコマンドに従って、オブジェクトがコンピュータディスプレイにレンダリングされる。次いでユーザが、第2のウィンドウにレンダリングされた第2のアプリケーションにオブジェクトをドロップすると、オブジェクトがリアルタイムで、第2のアプリケーションにインポートされる。
【0006】
一実施形態では、第1のコンピュータシステムは、ローカルに第1のアプリケーションをホストし、第2のアプリケーションは、サーバ側レンダリングを伴うアプリケーションサーバにホストされる。コンピュータシステムは、自身のグラフィックスプロセッサおよびグラフィックスAPIを使用して、ローカルアプリケーションをレンダリングし、リモートアプリケーションは、サーバ側のグラフィックスAPIによってレンダリングされる。第1のアプリケーションから3Dオブジェクトをエクスポートしようとするユーザは、第1のウィンドウからオブジェクトを選択して、そのオブジェクトを第2のウィンドウにドラッグする。ユーザがオブジェクトをドラッグすると、ユーザのドラッグコマンドに従って、オブジェクトがコンピュータディスプレイにレンダリングされる。次いでユーザが、第2のウィンドウにレンダリングされた第2のアプリケーションにオブジェクトをドロップすると、オブジェクトがリアルタイムで、第2のアプリケーションにインポートされる。
【0007】
一実施形態では、オブジェクトを第2のアプリケーションにインポートする方法が開示される。方法は、プロセッサにより第1のユーザ入力を受信する段階、プロセッサにより、第1のユーザ入力に応答して、第1のアプリケーションおよびレンダリングAPIによってディスプレイの第1のウィンドウにレンダリングされたオブジェクトを選択する段階を備える。方法は更に、エンジンを介して第1のアプリケーションからオブジェクトを抽出する段階と、プロセッサにより第2のユーザ入力を受信する段階とを備える。方法は更に、プロセッサにより、第2のユーザ入力に応答して、ディスプレイ上のオブジェクトを、第1のウィンドウから第2のウィンドウにレンダリングされた第2のアプリケーションへとドラッグする段階、および、プロセッサにより、ドラッグする間に、第1のウィンドウと第2のウィンドウとの間の中間の空間に、オブジェクトを表示する段階とを備える。オブジェクトが、第2のウィンドウのフォーカスボーダを横切ることに応答して、方法は、オブジェクトを第2のアプリケーションへとインポートする段階を備える。
【0008】
一実施形態において、上記方法に従ってオブジェクトを選択する段階は、プロセッサにより、第1のユーザ入力をエンジンへと迂回さる段階と、プロセッサにより、第1のアプリケーションからレンダリングAPIへの描画コマンドを傍受する段階と、プロセッサにより、第1のアプリケーションの描画コマンドからオブジェクトを判断する段階とを有する。方法は更に、選択アルゴリズムに従って、プロセッサにより、オブジェクトおよびその他のオブジェクトを選択する段階を備える。一実施形態では、選択アルゴリズムは、レイが投じられた第1のオブジェクトに接続された全てのオブジェクトを選択する。一実施形態では、選択アルゴリズムは、レイが投じられた第1のオブジェクトと同じオブジェクト識別子を有する全てのオブジェクトを選択する。一実施形態では、選択アルゴリズムは、レイが投じられた第1のオブジェクトと同じ動きベクトルを有する全てのオブジェクトを選択する。一実施形態では、選択アルゴリズムは、レイが投じられた第1のオブジェクトと同じテクスチャを有する全てのオブジェクトを選択する。
【0009】
一実施形態では、オブジェクトを選択する第1のユーザ入力は、ポインティングデバイスからのカーソル選択である。一実施形態において、オブジェクトを選択する第1のユーザ入力は、オブジェクトの周りの境界をユーザがトレースすることを含む。一実施形態において、オブジェクトを選択する第1のユーザ入力は、特性の所定のセットの隣接する全てのピクセルを選択する選択ツールを含む。一実施形態において、オブジェクトを選択する第1のユーザ入力は、タッチインターフェースをタップすることである。一実施形態において、オブジェクトを選択する第1のユーザ入力は、タッチインターフェース上でのジェスチャである。
【0010】
一実施形態において、方法の、プロセッサによりオブジェクトを描画コマンドから判断する段階は更に、プロセッサにより、第1のユーザ入力の座標におけるシーンの近位面に、カメラを割り当てる段階と、プロセッサにより、カメラから遠位面をレイキャスティングする段階と、レイが当てられた第1のオブジェクトを選択する段階と、を有する。方法は、選択オブジェクトを拡張するまたはフィルタする更なるユーザ入力をプロセッサにより受信する段階を更に備え、選択オブジェクトを拡張するまたはフィルタすることは、選択された1以上のオブジェクトに紐付けされたシーンにおけるその他のオブジェクトを、プロセッサにより、選択するまたは選択解除することを含む。
【0011】
一実施形態において、選択オブジェクトを拡張するまたはフィルタすることは、シーンにおいて、選択された1以上のオブジェクトと同じオブジェクト識別子を有するその他のオブジェクトを、プロセッサにより、選択または選択解除することを含む。一実施形態において、選択オブジェクトを拡張するまたはフィルタすることは、シーンにおいて、選択された1以上のオブジェクトと同じ動きベクトルを有するその他のオブジェクトを、プロセッサにより、選択または選択解除することを含む。一実施形態において、選択オブジェクトを拡張するまたはフィルタすることは、シーンにおいて、選択された1以上のオブジェクトと同じ動きテクスチャを有するその他のオブジェクトを、プロセッサにより、選択または選択解除することを含む。一実施形態において、選択オブジェクトを拡張するまたはフィルタすることは、シーンにおける、更なるユーザ入力によって指定されるその他のオブジェクトを、プロセッサにより、選択または選択解除することを含む。一実施形態において、オブジェクトを指定するプロセスは、プロセッサにより、ユーザ入力を受信する段階と、記プロセッサにより、ユーザ入力の座標におけるシーンの近位面に、カメラを割り当てる段階と、プロセッサにより、カメラから遠位面にレイキャスティンし、レイが投じられた第1のオブジェクトを指定する段階とを含む。
【0012】
一実施形態において、プロセッサにより、ディスプレイにおいてオブジェクトをドラッグする段階は、プロセッサにより、境界を有さないウィンドウ、および、ユーザによって選択された1以上のオブジェクトを含む選択オブジェクトを、境界を有さないウィンドウにレンダリングする段階を有する。一実施形態において、方法は、第1のウィンドウから第2のウィンドウへと境界を有さないウィンドウをドラッグするユーザ入力を受信することに応答して、プロセッサにより、ユーザ入力に従ってディスプレイ上で境界を有さないウィンドウを移動する段階を有する。
【0013】
一実施形態において、方法の、プロセッサにより、選択オブジェクトを、境界を有さないウィンドウにレンダリングする段階は、プロセッサにより、第1のアプリケーションからの選択オブジェクトと関連付けられた描画コマンドをコピーする段階と、プロセッサにより、第1のアプリケーションからの描画コマンドを、レンダリングAPIパイプラインに挿入する段階と、プロセッサにより、レンダリングAPIを介して、描画コマンドをレンダリングする段階と、を含む。
【0014】
一実施形態において、方法の、選択オブジェクトを第2のアプリケーションへとインポートする段階は、プロセッサにより、第2のアプリケーションへと実装するために選択オブジェクトを変換する段階と、プロセッサにより、変換する段階の間に、第2のウィンドウにエンジンを介して選択オブジェクトをレンダリングする段階とを有する。一実施形態において、選択オブジェクトを変換する段階は、プロセッサにより、描画コマンドを、第2のアプリケーションが使用するファイル形式へと修正する段階を含む。一実施形態において、ファイル形式は、OBJファイルである。
【0015】
方法は、変換する段階が完了すると、プロセッサにより、選択オブジェクトを第2のアプリケーションにインポートする段階を備える。方法は更に、オブジェクトが、第2のアプリケーションへとインポートされると、プロセッサにより、エンジンによるレンダリングプロセスを停止し、プロセッサにより、第2のアプリケーションでのオブジェクトをレンダリングする段階を備える。
【0016】
一実施形態において、方法の、エンジンを介して選択オブジェクトをレンダリングする段階は、プロセッサにより、描画コマンドをレンダリングAPIパイプラインに挿入する段階を含み、レンダリングAPIパイプラインは、レンダリングAPIに、選択オブジェクトを第2のウィンドウにレンダリングするよう命令する。一実施形態において、第2のアプリケーションは、自身のレンダリングAPIを有し、第2のアプリケーション内からの選択オブジェクトをレンダリングする段階は、プロセッサにより、第2のアプリケーションのレンダリングAPIを使用して、選択オブジェクトを第2のウィンドウにレンダリングする段階を含む。
【0017】
一実施形態において、方法の、選択オブジェクトを、境界を有さないウィンドウにレンダリングする段階は、プロセッサにより、照明および環境的効果を含む第1条件を、第1のアプリケーションから取得し、照明および環境的効果を含む第2条件を、第2のアプリケーションから取得する段階を含む。方法はまた、プロセッサにより、第1のウィンドウおよび第2のウィンドウからの境界を有さないウィンドウの距離に応じて、第1条件および第2条件を段階的に適用する段階を含む。
【0018】
一実施形態では、第1のアプリケーションから第2のアプリケーションへとオブジェクトをエクスポートおよびインポートするシステムを開示する。一実施形態において、オブジェクトは、3次元オブジェクトである。システムは、グラフィックス処理ユニットと、プロセッサと、プロセッサにより実行されるプログラムロジックを有形に格納するための記憶媒体とを備える。一実施形態では、記憶媒体は更に、第1のアプリケーションおよび第2のアプリケーションのうちの1以上を含むことができる。記憶媒体におけるプログラムロジックは、プロセッサにより実行され、第1のユーザ入力を受信する、第1ユーザ入力受信ロジックを有する。記憶媒体に含まれる選択ロジックは、プロセッサにより実行され、第1のユーザ入力を受信すると、第1のアプリケーションおよびレンダリングAPIによってディスプレイの第1のウィンドウにレンダリングされたオブジェクトを選択する。オブジェクトが、第1のアプリケーションから、記憶媒体に含まれる抽出ロジックによって抽出される。加えて、プロセッサは、第2のユーザ入力を受信する第2のユーザ入力受信ロジック、第2のユーザ入力を受信することに応答して、ディスプレイにおいて、第1のウィンドウから、第2のウィンドウにレンダリングされた第2のアプリケーションへとオブジェクトをドラッグするドラッグロジックを実行する。記憶媒体に含まれるインポートロジックは、プロセッサによって実行され、オブジェクトが、第2のウィンドウのフォーカスボーダを横切ることに応答して、オブジェクトを第2のアプリケーションへとインポートする。
【0019】
一実施形態において、プロセッサにより実行され、オブジェクトを選択する選択ロジックは、プロセッサにより実行され、第1のアプリケーションからの第1のユーザ入力を迂回させる迂回ロジックを含む。更に、選択ロジックは、プロセッサにより実行され、第1のアプリケーションからレンダリングAPIへの描画コマンドを傍受する傍受ロジックと、プロセッサにより実行され、第1のユーザ入力と関連付けられた描画コマンドから、オブジェクトを判断する判断ロジックと、プロセッサにより実行され、選択アルゴリズムに従って、3次元オブジェクトおよびその他のオブジェクトを選択する選択ロジックとを含む。
【0020】
一実施形態において、判断ロジックは、プロセッサによって実行され、第1のユーザ入力の座標におけるシーンの近位面にカメラを割り当てる割り当てロジックを含む。プロセッサによって実行される判断ロジックはまた、プロセッサによって実行され、レイが投じられた第1のオブジェクトを選択するべく、カメラから遠位面にレイキャスティングするレイキャスティングロジックを含む。
【0021】
一実施形態において、プロセッサによって実行されるドラッグロジックは、境界を有さないウィンドウをレンダリングするウィンドウレンダリングロジックと、ユーザによって選択された1以上のオブジェクトを含む選択オブジェクトを、境界を有さないウィンドウにレンダリングする選択オブジェクトレンダリングロジックと、境界を有さないウィンドウを第1のウィンドウから第2のウィンドウへとドラッグするユーザ入力を受信することに応答して、ユーザ入力に従って、ディスプレイにおいて、境界を有さないウィンドウを移動する移動ロジックとを含む。
【0022】
一実施形態において、プロセッサによって実行される選択オブジェクトレンダリングロジックは更に、選択オブジェクトと関連付けられた描画コマンドをコピーするコピーロジックと、描画コマンドをレンダリングAPIパイプラインに挿入する挿入ロジックと、レンダリングAPIを介して描画コマンドをレンダリングする描画コマンドレンダリングロジックとを含む。一実施形態において、選択オブジェクトレンダリングロジックは更に、プロセッサによって実行され、照明および環境的効果を含む第1条件を、第1のアプリケーションから取得する第1条件取得ロジックと、照明および環境的効果を含む第2条件を、第2のアプリケーションから取得する第2条件取得ロジックとを含む。更に、プロセッサによって実行される選択オブジェクトレンダリングロジックは、第1のウィンドウおよび第2のウィンドウからの境界を有さないウィンドウの距離に応じて、第1条件および第2条件を段階的に適用する条件適用ロジックを含む。
【0023】
プロセッサによって実行されるインポートロジックは更に、変換プロセスが完了すると、選択オブジェクトが第2のアプリケーションへとインポートされるように、第2のアプリケーションへと実装するべく選択オブジェクトを変換する変換ロジックと、変換プロセスの間に、選択オブジェクトを第2のウィンドウにレンダリングするレンダリングロジックと、オブジェクトが第2のアプリケーションへとインポートされると、エンジンのレンダリングプロセスを停止して、第2のアプリケーションでのオブジェクトのレンダリングとする停止ロジックと、を含む。一実施形態において、変換プロセスのためにプロセッサによって実行される変換ロジックは更に、描画コマンドを、第2のアプリケーションが使用するファイル形式へと修正を行う修正ロジックを含む。一実施形態において、ファイル形式は、OBJファイルである。一実施形態において、レンダリングロジックは更に、プロセッサによって実行され、レンダリングAPIに、選択オブジェクトを第2のウィンドウにレンダリングするように命令するレンダリングAPIパイプラインに、描画コマンドを挿入する挿入ロジックを含む。一実施形態において、第2のアプリケーションレンダリングAPIは、オブジェクトを第2のアプリケーションにインポートすると、選択オブジェクトを第2のウィンドウにレンダリングする。
【0024】
格納された命令を有するコンピュータ可読記憶媒体であって、プロセッサによって実行されると、プロセッサに、第1のユーザ入力を受信する手順と、第1のユーザ入力に応答して、第1のアプリケーションおよびレンダリングAPIによってディスプレイの第1のウィンドウにレンダリングされたオブジェクトを選択する手順とを実行させる。命令は更に、プロセッサに、エンジンを介して、第1のアプリケーションからオブジェクトを抽出する手順を実行させる。更に、記憶媒体は、第2のユーザ入力を受信し、第2のユーザ−入力に応答して、ディスプレイ上でオブジェクトを、第1のウィンドウから、第2のウィンドウにレンダリングされた第2のアプリケーションへとドラッグする命令を含む。記憶媒体は更に、オブジェクトが、第2のウィンドウのフォーカスボーダを横切ることに応答して、オブジェクトを第2のアプリケーションへとインポートする命令を含む。
【0025】
以下の詳細な説明および添付の図面を参照することにより、これらおよびその他の実施形態の組み合わせ可能な特徴が、当業者に明らかとなるであろう。
【0026】
添付の図面は必ずしも実寸ではなく、複数の図面にわたって、同様な要素には同様な参照番号が付与されている。
【発明を実施するための形態】
【0028】
本明細書の一部を構成し、特定の実施形態の例を示す添付の図面を参照して、発明の特徴について以下に詳細に記載する。しかしながら、発明の特徴は、様々に異なる形態で実装可能であり、本発明の範囲となるまたは特許請求される特徴は、本明細書に記載される実施形態例に限定されると解釈されることを意図していない。記載される実施形態の例は、単純に例示のためであり、特徴の広い範囲が保護されるまたは特許請求されることを意図している。例えば、発明の特徴を、方法、装置、構成要素またはシステムとして実装可能である。したがって、実施形態は、例えば、ハードウェア、ソフトウェア、ファームウェアまたはこれらの任意の組み合わせ(ソフトウェア自身を除く)の形態をとってもよい。したがって、以下の詳細な説明は、限定的に解釈されることを意図していない。
【0029】
添付の図面では、特定の構成要素を詳細に示すべく、誇張されている場合がある。(例えば、図面に示されている大きさ、材料および同様な詳細事項は、例示を意図しており、これに限定することを意図していない。)したがって、本明細書に開示される特定の構造的および機能的詳細は、限定するものとして解釈されるべきではなく、当業者が開示された実施形態を様々に採用できるよう教示するための、代表的な基本の例を示している。
【0030】
本発明が、特定のトピックに関連するメディアを選択および提示するための方法および装置のブロック図およびオペレーション例を参照して以下に説明される。ブロック図およびオペレーション例における各ブロック、および、ブロック図およびオペレーション例におけるブロックの組み合わせは、アナログまたはデジタルハードウェア、および、コンピュータプログラム命令によって実装することができる。これらのコンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、ASIC、または、その他のプログラム可能データ処理装置のプロセッサに供給され、コンピュータまたはその他のプログラム可能データ処理装置のプロセッサを介して実行される命令は、ブロック図またはオペレーションブロックまたは複数のブロックに規定される機能/動作を実装してもよい。様々な側面または特徴が、複数の装置、構成要素、モジュール等を含んでもよいシステムとして例示される。しかしながら、様々なシステムは、更なる装置、構成要素、モジュール等を含んでもよく、図面を参照して説明される装置、構成要素、モジュール等の全てを含んでもよいし、含まなくてもよい。これらのアプローチの組み合わせを使用してもよい。
【0031】
代替の実装形態の一部において、ブロックに記載される機能/動作が、オペレーションの例に示される順番以外の順番で発生してもよい。例えば、連続して示される2つのブロックを、関係する機能/動作に応じて、実質的に並行して実行することができる、または、これらのブロックを逆の順番で実行することができる。更に、本開示においてフローチャートで示される方法の実施形態は、技術の完全な理解を提供するために、一例として提供されている。開示される方法は、ここに示されるオペレーションおよびロジックのフローに限定されない。様々なオペレーションの順番を変更した変形例、および、大きなオペレーションの一部として説明されたサブオペレーションが独立して実行される変形例等も考えられる。
【0032】
本開示において、"サーバ(server)"という言葉は、処理、データベースおよび通信機能を提供するサービスポイントを意味するとして理解されるべきである。一例として、これに限定されないが、"サーバ"という言葉は、関連付けられた通信およびデータ格納およびデータベース機能を伴う1つの物理的プロセッサを指す、または、関連するネットワークおよび記憶装置を伴うネットワークと接続されたまたはクラスタ化されたプロセッサの複合体を指す、または、サーバによって提供されるサービスをサポートするオペレーティングソフトウェア、1以上のデータベースシステムおよびアプリケーションソフトウェアを指す。
【0033】
コンピュータデバイスは、有線または無線ネットワークを介して、信号を送受信可能であってよく、または、物理メモリステートとしてのメモリ内の信号を処理または格納可能であってよく、したがって、サーバとして動作可能であってもよい。サーバとして動作可能な装置の例としては、専用ラック、搭載サーバ、デスクトップコンピュータ、セットトップボックス、上記の装置の2つ以上の機能のような様々な機能を組み合わせた統合デバイス等が挙げられる。サーバは、幅広く様々な構成または機能を有してもよいが、サーバは、1以上の中央処理装置およびメモリを備える。サーバは更に、1以上のマスストレージデバイス、1以上の電源、1以上の有線または無線ネットワークインターフェース、1以上の入出力インターフェース、または、Windows(登録商標)サーバ、Mac OS X、Unix(登録商標)、Linux(登録商標)、FreeBSDのような1以上のオペレーティングシステムを備えてもよい。
【0034】
明細書および添付の特許請求の範囲全体にわたって使用されている言葉は、明確に記載されている意味を超えてコンテキストで示唆されるまたは暗に意味する微妙な差異を有する意味も含む場合がある。同様に、明細書中で使用されている"一実施形態において"というフレーズは、必ずしも同一の実施形態を指しているのではなく、また、"別の実施形態において"というフレーズは、必ずしも異なる実施形態を意味しているわけではない。例えば、特許請求される特徴は、実施形態の全体または部分の組み合わせを含むことを意図している。概して、使用される用語は、少なくとも部分的に、その用語が使用されているコンテキストを含めて理解される。例えば、明細書で使用されている"および"、"または"、もしくは、"および/または"という言葉は、少なくともこのような用語が使用されているコンテキストに応じて様々な意味を含む場合がある。典型的には、"または"という言葉が、A、BまたはCと構成要素が列挙される場合に使用された時には、A、BおよびCという包括的な意味でも、A、BまたはCという排他的な意味でも使用されている。更に、明細書中で使用される"1以上の(one or more)"という言葉は、少なくとも部分的にコンテキストに依存し、1つの特徴、構造または特性を説明するのに使用される場合もあるし、複数の特徴、構造または特性の組み合わせを説明するのに使用される場合もある。同様に、"一の("a"、"an")"または"上記の(the)"という言葉も、少なくともコンテキストに応じて1つの物または複数の物を指す意味として使用される。更に、"〜に基づく(based on)"という言葉は、必ずしも、因子の排他的なセットを意味することを意図しておらず、少なくとも部分的にコンテキストに応じて必ずしも明示されていない、更なる因子が存在する可能性がある。
【0035】
本開示は、概して、リアルタイムで第2の3Dプログラムにレンダリングするために、第1の3Dプログラムからオブジェクトをエクスポートすることに関する。一実施形態では、コンピュータシステムは、複数のアプリケーションインスタンスをホストし、各アプリケーションインスタンスは、ローカルクライアントアプリケーションに対応する。コンピュータシステムは、コンピュータシステムのグラフィックス処理ユニットのリソースを利用して、並行してレンダリングを行い、アプリケーションインスタンスのグラフィックス出力は、コンピュータシステムディスプレイの別個のウィンドウにおけるローカルクライアントアプリケーションのうちの少なくとも2つに対応する。第1のアプリケーションから3Dオブジェクトをエクスポートしようとするユーザは、第1のウィンドウからオブジェクトを選択して、そのオブジェクトを第2のウィンドウにドラッグする。ユーザがオブジェクトをドラッグすると、ユーザのドラッグコマンドに従って、オブジェクトがコンピュータディスプレイにレンダリングされる。次いでユーザが、第2のウィンドウにレンダリングされた第2のアプリケーションにオブジェクトをドロップすると、オブジェクトがリアルタイムで、第2のアプリケーションにインポートされる。
【0036】
レンダリングは、通常は、コンピュータプログラムによって、モデルからイメージを生成するプロセスと考えられてもよい。モデルは通常、3次元(3D)オブジェクトの記述であり、厳密に規定された言語またはデータ構造によって表現されてもよい。モデルは、幾何形状、視点、テクスチャ、照明、シェーディング、動き、および、その他の好適な種類の情報を含んでもよい。モデルがレンダリングされるイメージは、画素の集合体として構成されるデジタルイメージまたはラスタグラフィックスイメージであってもよい。本開示は、レンダリングのコンセプトを、任意のアプリケーションの出力を表すイメージを生成することに拡張する。レンダリングは、2次元(2D)データおよび3Dデータを含む任意のデータに基づいて実行されてもよい。3Dモデルに基づくイメージの生成に加えて、特定の実施形態では、例えば、これに限定されないが、ウェブブラウザアプリケーション、ワードプロセッサアプリケーション、スプレッドシートアプリケーション、マルチメディアアプリケーション、科学・医療アプリケーション、および、ゲームアプリケーションであるアプリケーションの出力を表すイメージをレンダリングしてもよい。
【0037】
3Dプログラムからのオブジェクトを修正することは、不可能でない場合、通常、手間のかかるタスクである。ユーザが、3D Studio MaxまたはMayaのような3Dグラフィックスプログラムにおける修正を行うために、元のOBJファイルまたはその他の形式のファイルを有さない場合には、ユーザは、第1の3Dプログラムが使用する3Dグラフィックスファイルを逆コンパイルする必要がある。グラフィックスファイルは、プログラムのインストールパス内の所定のディレクトリに格納されている、または、実際のプログラムコードへとコンパイルされてもよい。何れの場合にせよ、ユーザは、3Dグラフィックスプログラムが可読な形式のオブジェクトファイルを取得するのに、複数の段階を実行する必要がある。同様に、オブジェクトファイルの修正を行った後に、第1のプログラム内からの3Dオブジェクトの外観を見るために、ユーザは、オブジェクトを、第1のプログラムのコードへと再コンパイルまたはインポートする必要がある。このプロセスは、時間がかかり、リモートアプリケーションを使用する場合には更に時間がかかる。
【0038】
レンダリングは、サーバが実行するのに好適な種類のタスクであってもよく、これは、レンダリングプロセスは、リソースを多く使用し、特に、レンダリングされるイメージが高解像度および高画質である場合に、計算を多く必要とする場合があるからである。従来は、古いコンピュータシステムの場合、3次元モデルを1つの2D画像へとレンダリングするのに、数時間または数日かかることもあった。コンピュータハードウェアの開発および改良が進み、特に、コンピュータグラフィックスアプリケーション(例えば、ゲーム、マルチメディア、エンターテイメントまたはマッピング)用に設計されたコンピュータハードウェアが開発され、現在のコンピュータシステムは、各イメージを数秒または数ミリ秒以内にレンダリングできる場合もある。実際に、多くの場合、モデルを1つの画像にレンダリングするのに、サーバの利用可能なリソース全てを使用することはない。このように、サーバ側レンダリングを使用するリモートアプリケーションが、広く使用されるようになってきている。
【0039】
第2の3Dプログラムにインポートするために、第1の3Dプログラムから3Dオブジェクトをエクスポートすることを良好に利用するべく、ソフトウェアエンジンは、ユーザコマンドに応答して、第1のアプリケーションから3Dグラフィックスレンダリングパイプラインへの描画コマンドを傍受することにより、特定のオブジェクトを選択して、第2のアプリケーションからの所定のシーンに対する描画コマンドに、それらを挿入する。特定の実施形態では、第2のアプリケーションは、別のサーバにホストされたリモートアプリケーションであってもよい。別の実施形態では、第2のアプリケーションは、サーバ側レンダリングを伴うリモートアプリケーションであってもよい。
【0040】
図1には、ローカル第1のアプリケーション105およびローカル第2のアプリケーション106を実行するコンピュータシステム101の一例が示されている。通常オペレーションでは、ユーザは、例えば、ユーザハードウェア108を操作することにより、システム101を起動して、I/Oインターフェース107は、ユーザ/ハードウェア108からの信号を、第1のアプリケーション105または第2のアプリケーション106への命令へと変換する。アプリケーション105および106は共に、2Dシーンまたは3Dシーンをレンダリングするために、レンダリングAPI104に描画コマンドを出力する。レンダリングAPI104は、レンダリングパイプライン(図示せず)を介して描画コマンドを受け渡して、描画コマンドを、グラフィックスハードウェア103が実行する命令へと変換して、2Dまたは3Dシーンをディスプレイ102にレンダリングする。一実施形態において、第1のアプリケーション105は、ディスプレイ102の一部分上の第1のウィンドウにレンダリングされ、第2のアプリケーション106は、ディスプレイ102の一部分上の第2のウィンドウにレンダリングされる。一実施形態において、エンジン109は、システム101内に含まれるプロセッサ(図示せず)において、第1のアプリケーション105および第2のアプリケーション106と並行して実行されるソフトウェアルーチンである。エンジン109は、I/Oインターフェース107を常に監視して、ドラッグ&ドロッププロセスを開始する命令をモニタする。このような命令が検出されると、パス110を介して、命令がエンジン109に迂回される。ユーザは、ドラッグ&ドロッププロセスを様々な方法で開始させてもよく、これに限定されないが、特別なキーストローク、マウスまたはその他のポインティングデバイス入力を併用した所定のキーの押下、タッチ入力デバイスのタップ、または、タッチ入力デバイス上で特定のジェスチャを行うこと、が含まれる。
【0041】
パス110を介してコマンドがエンジン109に迂回されると、エンジン109は、ユーザが、任意のアプリケーションウィンドウにおける所与のオブジェクトを選択することを可能にする。エンジン109はまた、第1のアプリケーション105および第2のアプリケーション106からレンダリングAPI104への描画コマンドを監視し、迂回されたユーザ入力110を使用して、あるシーンにおいて、ユーザが1以上のどのオブジェクトを選択することを望んでいるかを判断する。エンジン109は、ユーザが選択することを望んでいる1以上のオブジェクトに対応する描画コマンドを抽出して、これらをレンダリングAPI104に渡して、ドラッグプロセスの間にレンダリングする。ドロッププロセスの間、エンジン109は、第2のアプリケーション106のウィンドウにレンダリングするために、オブジェクトに対する描画コマンドをレンダリングAPI104に渡し続けるが、同時に、第2のアプリケーション106にインポートするための形式に描画コマンドを変換する。変換およびインポートプロセスが完了すると、エンジン109は、描画コマンドをレンダリングAPI104に送信するのを停止し、選択された1以上のオブジェクトが、第2のアプリケーション106のみを介してレンダリングされる。グラブ、ドラッグおよびドロッププロセスについて、以下に、より詳細に説明する。説明を簡単にするために、
図1では、アプリケーションが2つのみ示されている。しかしながら、実際には、コンピュータシステム101は、並行して任意の数のアプリケーションを実行することができ、これらのアプリケーションは、本明細書に記載する実施形態に従って、一のアプリケーションから別のアプリケーションへとエクスポート可能な様々なオブジェクトをレンダリングする。
【0042】
図2には、ドラッグ&ドロッププロセスの高レベルフローが示されている。ステップ201において、コンピュータシステムは、複数のアプリケーションの実行を開始する。ステップ202において、ユーザは、以下に
図4を参照して詳細に説明するグラブプロセスを開始する。ステップ203において、ユーザは、
図5を参照して以下に詳細に説明するように、第1のアプリケーションを表示するウィンドウから、第2のオブジェクトを表示するウィンドウへと所望のオブジェクトをドラッグする。最後に、ステップ204において、ユーザは、オブジェクトを第2のアプリケーションのウィンドウへとドロップするが、このステップは、再エントリプロセスとも称され、
図6を参照して以下に詳細に説明する。
【0043】
図3には、ドラッグ&ドロッププロセスの間の、ユーザのディスプレイの表示が例示されている。最初の状態では、コンピュータシステムのディスプレイは、2つの別個のウィンドウを含み、第1のウィンドウ301は、第1のアプリケーションのレンダリングされた出力を含み、第2のウィンドウは、第2のアプリケーション304のレンダリングされた出力を含む。第1のウィンドウ301内には、オブジェクト303aおよび303bがレンダリングされている。
図3には、説明を目的としてオブジェクトが2つのみ示されているが、実際には、第1のウィンドウ301および第2のウィンドウ304は、任意の数のオブジェクトを含んでもよい。
【0044】
図3では、第1のウィンドウ301が拡大されて、参照番号305として示されている。ユーザは、オブジェクト303を様々に異なる方法で選択することができ、例えば、入力デバイスを使用して、オブジェクト303aの一点307をクリックする、または、タッチスクリーン上でタップする、入力デバイスまたはタッチスクリーンを使用して、オブジェクト303aのパス308をトレースする、または、入力デバイスを使用して、もしくは、タッチデバイス上で、オブジェクト303aの周りにマーキー(marquee)306を描くことによって、選択してもよい。その他の入力方法も採用でき、これに限定されないが、ジェスチャ、選択ワンド(wand)、多角形マーキー、が当業者であれば容易に思いつく。
【0045】
オブジェクト303aを選択すると、ユーザは、第1のウィンドウ301から第2のウィンドウ304へのパス302に沿って、ディスプレイ上でオブジェクトをドラッグする。ある実施形態では、オブジェクトがコピーされてウィンドウ301にレンダリングされた状態でとどまり、第1のウィンドウ301と第2のウィンドウ304との間に延在する中間の空間におけるパス302に沿って、コピー303cがレンダリングされる。他の実施形態では、実際のオブジェクト303aが、ウィンドウ301からウィンドウ304へと移動される。パス302は、ユーザ入力によって決定され、ウィンドウ301からウィンドウ304へのまたはその反対方向の任意の経路であってよい。
【0046】
第2のウィンドウ304のフォーカスボーダを横切ると、エンジンは、再エントリプロセスまたはドロッププロセスを開始する。ユーザが、望むようにウィンドウ304内にオブジェクト303aを位置させたると、ユーザは、オブジェクト303aをウィンドウ304にドロップするコマンドを開始する。この時点で、ドラッグ&ドロッププロセスが完了し、エンジンは、オブジェクト303aをオブジェクト303dとして第2のアプリケーションにインポートし、第2のウィンドウ304にレンダリングする。
【0047】
図4には、グラブプロセスのプロセスフローが示されている。401において、エンジンは、所望のオブジェクトを選択する選択入力を受信する。本発明では、上記したように、複数の選択入力方法が考えられる。選択入力を受信すると、エンジンは、レンダリングAPI宛の第1のアプリケーションからの描画コマンドを、エンジン自身へと迂回させる。これらの描画コマンドから、エンジンは、第1のアプリケーションによってレンダリングされたシーンを再構成することができる。3Dシーンのコンテキストにおいて、エンジンは、所定のシーンにおける全ての3Dオブジェクトを有することになり、また、シーンをレンダリングするのに第1のアプリケーションによって使用されるカメラの視点および視野も有する。
【0048】
一実施形態では、ユーザ入力は、所望のオブジェクト上の第1のウィンドウにおける1点である。ステップ402では、エンジンは、レンダリングされたディスプレイにおけるグラフィックオブジェクトへと、入力選択を解像する。この2次元入力を3次元オブジェクトへと変換するのに、従来の3Dオブジェクト選択方法が採用される。このような方法の一つとしては、3Dシーンの近位面のユーザ入力の位置にカメラを割り当てて、カメラからレイを遠位面に投じて、レイが当てられた第1のオブジェクトを選択する方法が挙げられる。別の実施形態では、選択ツールは、レイが当てられた第1のオブジェクトに接触する全てのオブジェクトを選択する。別の実施形態では、選択ツールは、例えば、タグまたはその他のメタデータである第1のオブジェクトにレイが当たると、同じオブジェクト識別子を有する全てのオブジェクトを選択する。別の実施形態では、第1のオブジェクトにレイが当たると、選択ツールは、同じテクスチャを有するオブジェクト全てを選択する。更なる別の実施形態では、選択ツールは、第1のオブジェクトにレイが当たると、同じ動きベクトルを有する全てのオブジェクトを選択する。
【0049】
ステップ403において、エンジンは、ユーザ入力に基づいて、ユーザ選択をフィルタまたは拡張する。ユーザは、元のオブジェクトが選択されたのと同様な態様またはその他の入力方法で、例えば、修飾子(modifier)を押下して選択オブジェクトを付加し、選択するべきその他のオブジェクトの周りにマーキーを描画して、選択するオブジェクトを増やすことを選択してもよい。同様に、ユーザに対して、ポップアップウィンドウが提示されて、同じ動きベクトル、テクスチャ、メタデータ等を有するその他のオブジェクトを選択してもよい。同様に、ユーザは、選択した複数のオブジェクトから、アナログ的な態様で、オブジェクトを選別して取り除いて(filter out)もよい。ユーザは、選択オブジェクトからオブジェクトを差し引くキー(key)を有してもよく、選択から除外するオブジェクトを個別にクリックしてもよいし、除外するオブジェクトの周りにマーキーを描画してもよい。更に、ユーザには、ドロップダウンメニューが提供されて、所定のテクスチャ、動きベクトル、メタデータ、タグ、等を有するオブジェクトを選別してもよい。本発明では、選択に追加および削除を行う、当業者に周知の複数の方法を想定している。.
【0050】
ユーザが満足すると、ステップ404において、ユーザは、ドラッグプロセスを開始するコマンドを入力する。コマンドは、これに限定されないが、選択されたオブジェクトをドラッグするべく入力デバイスを移動させると共に、入力デバイスのボタンを押下すること、タッチ入力デバイスにおいて特定のジェスチャを行うこと、入力デバイスを移動させると共にキーボードのキーを押下すること、を含んでもよい。本発明は、ドラッグプロセス404を開始するのに複数の方法を想定している。
【0051】
図5には、ドラッグプロセスのプロセスフローが示されている。501において、エンジンは、コンピュータシステムディスプレイ上にウィンドウを形成する。一実施形態では、ウィンドウは、可視の境界を有することができる。一実施形態では、ウィンドウは、境界を有さない。境界を有さないウィンドウは、完全に透明な第2のディスプレイにおける単なる指定されたエリアであり、ディスプレイにレンダリングされた実際のオブジェクトのみが、境界を有さないウィンドウ内に含まれるグラフィックオブジェクトである。ステップ502において、エンジンは、オブジェクトを、境界を有さないウィンドウに書き込む。エンジンはこのステップを、第1のアプリケーションからの選択オブジェクトに関連付けられた描画コマンドをエンジンへと迂回させることにより実行する。そして、エンジンは、これら描画コマンドを、レンダリングAPIに、境界を有さないウィンドウ内にレンダリングすべきオブジェクトとして送信する。レンダリングAPIは、通常は、レンダリングパイプラインを介して描画コマンドを処理し、シーンを、境界を有さないウィンドウ内のディスプレイ上にレンダリングする。境界を有さないウィンドウは透明であることから、オブジェクトのみが第1のウィンドウから第2のウィンドウへと移動するように見える。このように、ドラッグプロセスの間は、レンダリングAPIは、エンジンに加えて、少なくとも2つのアプリケーションからの描画コマンドを処理する。
【0052】
エンジンは、入出力インターフェース107を介してユーザから受信した境界を有さないウィンドウ移動コマンドに従って、選択された1以上のオブジェクトと関連付けれた描画コマンドを送信する。上記したように、本開示は、ユーザが、ドラッグプロセスの間に、境界を有さないウィンドウの位置を調整するための複数の入力方法を想定している。
【0053】
エンジンが境界を有さないウィンドウを移動させるユーザコマンドを受信しない場合には、エンジンは、ユーザ入力コマンドをポーリングして、ステップ504においてドロップコマンドが発行されたか否かを判断する。ドロップコマンドが検出されると、処理が、ステップ505の再エントリプロセスに移る。ドロップコマンドは、ユーザが、第2のウィンドウにレンダリングされた第2のアプリケーションに、オブジェクトをインポートすることを望むことを示す、ユーザ入力機器からの任意のコマンドであってよい。ドロップコマンドは、これに限定されないが、マウスまたはその他の入力デバイスにおけるボタンの押下を解除すること、タッチ入力デバイスにおけるジェスチャ、または、入力デバイスでその他のキーを押下すること、を含んでもよい。当業者であれば、ドロップコマンドのその他のユーザ入力方法が想定できる。一実施形態において、オブジェクトが、第2のウィンドウのフォーカスボーダを越えてドラッグされるとすぐに、再エントリプロセスが開始される。
【0054】
図6には、再エントリプロセスのプロセスフローが示されている。601において、再エントリプロセスが開始される。再エントリプロセスは、ユーザからの明示的なドロップ命令、または、第2のウィンドウのフォーカスボーダを越えた選択オブジェクトのドラッグ動作によってトリガされてもよい。再エントリプロセスが開始されると、エンジンは、描画コマンドからのオブジェクトを、第2のアプリケーションに実装するための形式への変換を開始する。3Dコンテキストでは、エンジンは、第2のアプリケーションにインポートするための、3Dオブジェクトファイルへと、描画コマンドを変換することを開始する。例えば、ユーザが、第1のウィンドウで3Dゲームアプリケーションを実行し、第2のウィンドウにおいて所定のモデルを編集するための3Dグラフィックスエディットプログラムを実行している場合が考えられる。所望のオブジェクトを選択した後、ユーザはオブジェクトを第2のウィンドウにドラッグし、オブジェクトに関連付けられた描画コマンドを、OBJファイルのような3Dオブジェクトファイルへと変換する再エントリプロセスが開始される。
【0055】
ステップ602において、エンジンは、オブジェクトに関連付けられた描画コマンドをレンダリングAPIに受け渡すことにより、オブジェクトのレンダリングを継続する。変換プロセスは、時間がかかり、プロセッサを多く使用することから、エンジンは、変換を行うと同時に、オブジェクトのレンダリングも続ける。エンジンは、描画コマンドを第2のアプリケーションからの描画コマンドストリームへと挿入することにより、レンダリングAPIにオブジェクトをレンダリングする。したがって、再エントリの間、エンジンは、オブジェクトを、第2のウィンドウの上に重ねられた境界を有さないウィンドウに単にレンダリングするだけでなく、オブジェクトが、環境的効果を含めて、第2のアプリケーション自身によってインポートされレンダリングされたかのように、オブジェクトを第2のアプリケーションに統合する。この機能については、
図7を参照して以下で説明する。
【0056】
ステップ603において、変換が完了し、オブジェクトファイルが、第2のアプリケーションにインポートされる。インポートプロセスは、アプリケーション毎およびファイル形式毎に異なる。3Dグラフィックスエディットプログラムのコンテキストにおいて、ユーザが3Dグラフィックスエディットプログラムから直接ファイルを開いたかのように、ファイルがプログラムのワークスペースへとインポートされる。ステップ604において、オブジェクトの第2のプログラムへのインポートが正しく行われた後に、エンジンは、オブジェクトのレンダリングを中止し、オブジェクトが、第2のアプリケーションによってレンダリングされる。複数のレンダリングプロセスまたはファイル変換がユーザに示されることなく、再エントリプロセス全体が、シームレスな態様で実行される。ユーザは、これらのエンジンによって実行されるバックグラウンドプロセスに気付くことなく、オブジェクトが単純に第1のウィンドウからドラッグされ、第2のウィンドウにドロップされたかのように、オブジェクトがレンダリングされる。
【0057】
図7には、環境的効果を組み込むドラッグ&ドロッププロセスの代表例が示されている。第1のウィンドウ701において、単純化のため、球形のオブジェクト702aが、ウィンドウ701の左上に存在する光源703と共に存在している。第2のウィンドウ704において、3Dシーンの環境には、左上からの光源705が含まれる。グラブプロセスの間に、エンジンは、ウィンドウ701および704両方の環境効果および照明を取得し、各ウィンドウからのオブジェクトの距離に応じて、環境的効果および照明を、選択されたオブジェクト702aに適応的に適用する。このように、オブジェクト702が第2のウィンドウに向かってドラッグされ、オブジェクト702のシェーディングが、光源703および705からの距離に応じて、図中702b、702c、702dおよび702eの例に示されるように変化する。エンジンは、これらの環境的効果を、レンダリングAPIに渡す前のオブジェクトの描画コマンドに適用することによって、これら環境的効果をレンダリングする。環境的効果は、単に照明に限定されず、当業者であれば、霧、スモーク、ぼかし、粒子効果、反射、および、その他の周知の環境的効果を想定できる。
【0058】
図8は、コンピュータシステム801の一実施形態を示し、2つのアプリケーションのうちの一方は、アプリケーションサーバ809で実行されるリモートアプリケーション810である。このような場合、エンジン805のオペレーションは、変わらない。エンジンは、I/Oインターフェース807からの命令を傍受し、この命令を、ドラッグ&ドロッププロセスのオペレーションの間にパス811に沿ってエンジンへと迂回させる。ユーザがローカルアプリケーション806からドラッグし、リモートアプリケーション810へとドロップすると仮定すると、ローカルアプリケーション806からレンダリングAPI804への描画コマンドが傍受されて、ユーザが所望のオブジェクトを選択するグラブプロセスの間に使用される。ドラッグプロセスの間に、エンジン805は、選択オブジェクトのための描画コマンドをレンダリングAPI804へと迂回させることにより、境界を有さないウィンドウへのオブジェクトのレンダリングを扱う。ユーザがオブジェクトをリモートアプリケーション810のウィンドウにドロップすると、エンジン805は、選択されたオブジェクトのレンダリングを継続すると同時に、変換プロセスを開始する。変換が完了すると、変換されたオブジェクトファイルがネットワークリンク814を介して、リモートアプリケーション810へのインポートのために、アプリケーションサーバ809へと転送される。インポートの後、エンジン805は、描画コマンドをレンダリングAPI804に渡すのを止め、システムは通常動作になる。別の実施形態では、ユーザは、リモートアプリケーションからオブジェクトを、ローカルにホストされたアプリケーションへとドラッグする。この構成において、システムは、実質的に同様なメカニズムで動作する。
【0059】
図9には、アプリケーション908のうちの1つが、アプリケーションサーバ907で実行されるリモートアプリケーションであり、アプリケーションサーバは、自身のレンダリングAPI909を介してレンダリングを行うサーバ側レンダリングを有する、コンピュータシステム901の一実施形態が示されている。一例として、ユーザは、ローカルアプリケーション905のウィンドウからのアプリケーションを、リモートでレンダリングされたアプリケーション908のウィンドウへとドラッグする。システム901のオペレーションは、実質的に、
図8に示したものと同様である。エンジン910は、I/Oインターフェース906からのI/O入力を傍受して、ドラッグ&ドロッププロセスの間に、パス914に沿って迂回させる。グラブプロセスの間に、エンジン910は、ローカルアプリケーション905からローカルレンダリングAPI904宛ての描画コマンドを、エンジンへと迂回させる。ユーザがオブジェクトを選択した後、エンジン910は、コマンドを、パス915に沿ってローカルレンダリングAPI904へと迂回させる。ドラッグプロセスの間は、選択されたオブジェクトに対する迂回された描画コマンドが、ローカルレンダリングエンジン904によってレンダリングされて、オブジェクトが境界を有さないウィンドウにレンダリングされる。再エントリプロセスが開始されると、エンジンは、リモートアプリケーション908へのインポートのためのオブジェクトファイルへと、オブジェクトのファイル変換を開始する。ファイルが変換されると、そのファイルが、パス916を介して、リモートアプリケーション908へとインポートされる。そして、エンジンは、ローカルレンダリングAPI904を介したオブジェクトのレンダリングを停止して、オブジェクトのレンダリングは、リモートレンダリングAPI909を介してのみ行われる。
【0060】
ユーザが、アプリケーション908のような、サーバ側レンダリングを有するリモートアプリケーションからのオブジェクトを選択することを望む実施形態では、特殊な場合が存在する。このような一実施形態では、エンジンは、リモートアプリケーション908の出力がリモートレンダリングAPI909に入力される前に、この出力にアクセスする必要がある。これは、リモートアプリケーションサーバ907に存在するソフトウェアの特別の実装を必要する、または、最低でも、エンジン910がリモートアプリケーション908とレンダリングAPI909との間のパスを監視する許可をサーバ907から得る必要がある。このような場合、アプリケーション908からの描画コマンドは、ネットワーク接続913を介して、エンジン910へと迂回される。この特殊な場合は、サーバ側レンダリングを伴うリモートアプリケーションからオブジェクトがグラブされる場合にのみ発生する。
【0061】
本開示は、複数の構成を想定しており、例えば、一のリモートアプリケーションからドラッグする場合、または、一のアプリケーションから複数の別のアプリケーションへと、オブジェクトをコピー/ペーストを行う様々な場合なども想定している。このような実施形態についても、当業者は想到できる。本開示は、第1のアプリケーションから第2のアプリケーションへとドラッグおよびドロップを行う1つのインスタンスについて説明したが、当業者であれば、第1のアプリケーションから第2のアプリケーションへとドラッグし、オブジェクトを編集し、編集したオブジェクトを再び第1のアプリケーションへとドラッグして、リアルタイムで変更を見る場合なども想定できる。
【0062】
特定の実施形態を、ハードウェア、ソフトウェア、または、ハードウェアおよびソフトウェアの組み合わせとして実装してもよい。例えば、これに限定されないが、1以上のコンピュータシステムは、特定のロジックまたはソフトウェアを実行して、本明細書で説明および例示した1以上のプロセスの1以上の段階を実行してもよい。コンピュータシステムのうちの1以上は、適切であれば、単一に構成されているまたは分配されていてもよいし、複数のコンピュータシステムまたは複数のデータセンターにわたってもよい。本開示は、任意の好適なコンピュータシステムを考えている。特定の実施形態において、本明細書に説明されるまたは例示される1以上のプロセスのうちの1以上の段階を実行することは、必ずしも、1以上の特定の地理的位置に限定されず、必ずしも時間的制限を有さない。制限的な態様ではなく、一例として、1以上のコンピュータシステムは、これらの機能を、適切である場合には、"リアルタイムで"、"オフラインで"、"バッチモードで"、または、これらの好適な組み合わせで実行してもよい。コンピュータシステムの1以上は、適切であれば、異なる時間、異なるロケーションにおいて、異なる処理を使用して、機能の1以上の部分を実行してもよい。ここで、ロジックという言葉は、適切な場合には、ソフトウェアを包含し、ソフトウェアという言葉は、ロジックを包含する。また、ソフトウェアという言葉は、適切な場合には、コンピュータプログラムを包含し、コンピュータプログラムという言葉は、ロジックを包含する。ソフトウェアという言葉は、適切な場合には、データ、命令、またはその両方を包含し、データ、命令という言葉は、ソフトウェアを包含する。同様に、データという言葉は、適切な場合には、命令を包含し、命令という言葉は、データを包含する。
【0063】
1以上のコンピュータ可読記憶媒体は、特定の実施形態を実装するソフトウェアを格納または具体化してもよい。コンピュータ可読媒体は、適切である場合には、ソフトウェアを、搬送、通信、収容、保有、維持、伝播、保持、格納、送信、転送または具現化することが可能な任意の媒体であってよい。コンピュータ可読媒体は、適切であれば、生物学的、化学的、電気的、電磁気的、赤外的、磁気的、光学的、量子的媒体、もしくは、その他の好適な媒体、または、このような媒体の2つ以上の組み合わせであってもよい。コンピュータ可読媒体は、1以上のナノメートルスケールの構成要素を含んでもよいし、ナノメートルスケールの設計または製造を実装してもよい。コンピュータ可読記憶媒体の例としては、これに限定されないが、コンパクトディスク(CD)、フィールドプログラマブルゲートアレイ(FPGA)、フロッピー(登録商標)ディスク、ハードディスク、ホログラフィック記憶装置、集積回路(IC)(特定用途向け集積回路(ASIC))、磁気テープ、キャッシュ、プログラマブルロジックデバイス(PLD)、ランダムアクセスメモリ(RAM)デバイス、リードオンリーメモリ(ROM)デバイス、半導体メモリデバイス、および、その他の好適なコンピュータ可読記憶媒体、が含まれる。
【0064】
特定の実施形態を実装するソフトウェアを、適切な場合には、任意の好適なプログラミング言語(プロセス指向またはオブジェクト指向であってもよい)またはプログラミング言語の組み合わせとして書かれていてもよい。(シングルプロセッサまたはマルチプロセッサコンピュータシステムのような)好適な種類のコンピュータシステムまたはシステムは、適切な場合には、特定の実施形態を実装するソフトウェアを実行してもよい。汎用コンピュータシステムは、適切な場合には、特定の実施形態を実装するソフトウェアを実行してもよい。
【0065】
例えば、
図10には、特定の実施形態の1以上の部分を実装するのに好適なコンピュータシステム1000の一例が示されている。本開示は、特定の構成において特定の構成要素を有する特定のコンピュータシステム1000について説明し、例示したが、本開示は、任意の好適な構成において好適な構成用を有する任意の適したコンピュータシステムを想定している。コンピュータシステム1000は、任意の好適な物理的形態を有してもよく、例えば、1以上の集積回路(IC)、1以上のプリント回路基板(PCB)、1以上のハンドヘルドデバイスまたはその他のデバイス(例えば、携帯電話またはPDA)、1以上のパーソナルコンピュータ、または、1以上のスーパーコンピュータの形態であってもよい。
【0066】
システムバス1010は、コンピュータシステム1000のサブシステム同志を結合する。ここで、バスという言葉は、共通の機能を果たす1以上のデジタル信号線を包含する。本開示は、任意の好適なバスアーキテクチャを有する好適なバス構造(例えば、1以上のメモリバス、1以上の周辺機器用バス、1以上のローカルバス、または、上記の組み合わせ)を含む好適なシステムバス1010を想定している。バスアーキテクチャの例には、これに限定されないが、インダストリースタンダードアーキテクチャ(ISA)バス、拡張ISA(EISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション・ローカル(VLB)バス、ペリフェラル・コンポーネント・インターコネクト(PCI)バス、PCIエクスプレスバス(PCI−X)、および、アクセラレーテッド グラフィックス ポート(AGP)バスが含まれる。
【0067】
コンピュータシステム1000は、1以上のプロセッサ1020(または、中央処理装置(CPU))を含む。プロセッサ1020は、命令、データまたはコンピュータアドレスを一時的にローカルに格納するためのキャッシュ1022を含んでもよい。プロセッサ1020は、メモリ1030を含む1以上の記憶装置に結合される。メモリ1030は、ランダムアクセスメモリ(RAM)1032、および、リードオンリーメモリ(ROM)1034を含んでもよい。データおよび命令は、プロセッサ1020とRAM1032との間で双方向に転送されてもよい。データおよび命令は、ROM1034からプロセッサ1020へと一方向に転送されてもよい。RAM1032およびROM1034は、任意の好適なコンピュータ可読記憶媒体を含んでもよい。
【0068】
コンピュータシステム1000は、プロセッサ1020に双方向に結合された固定記憶装置1040を含む。固定記憶装置1040は、記憶装置制御ユニット1052を介して、プロセッサ1020に結合されてもよい。固定記憶装置1040は、更なるデータ記憶容量を提供してもよく、任意の好適なコンピュータ可読記憶媒体を含んでもよい。固定記憶装置1040は、オペレーティングシステム(OS)1042、1以上の実行ファイル1044、1以上のアプリケーションまたはプログラム1046、データ1048等を格納してもよい。固定記憶装置1040は、典型的には、一次記憶装置よりも遅い、(例えば、ハードディスク)二次記憶媒体である。適切な場合には、固定記憶装置1040によって格納された情報が、仮想メモリとして、メモリ1030に組み込まれてもよい。
【0069】
プロセッサ1020は、様々なインターフェースに結合されてもよく、例えば、グラフィックス制御1054、ビデオインターフェース1058、入力インターフェース1060、出力インターフェース1062、および、記憶装置インターフェース1064に結合されてもよく、また、これらインターフェースはそれぞれ、適切なデバイスに結合されてもよい。入力デバイスまたは出力デバイスの例には、これに限定されないが、ビデオディスプレイ、トラックボール、マウス、キーボード、マイク、タッチセンサディスプレイ、トランスデューサカードリーダ、磁気テープまたは紙テープリーダ、タブレット、スタイラス、音声または手書き認識装置、生体認証リーダ、または、コンピュータシステムが含まれる。ネットワークインターフェース1056は、プロセッサ1020を、別のコンピュータシステムまたはネットワーク1080に結合してもよい。ネットワークインターフェース1056を使用して、プロセッサ1020は、特定の実施形態の段階を実行する間に、ネットワーク1080からまたはネットワーク1080へと、情報を送受信してもよい。特定の実施形態は、プロセッサ1020上でのみ実行されてもよい。特定の実施形態は、プロセッサ1020および協働する1以上のリモートプロセッサで実行されてもよい。
【0070】
コンピュータシステム1000がネットワーク1080に接続されるネットワーク環境では、コンピュータシステム1000は、ネットワーク1080に接続されたそのほかのデバイスと通信を行ってもよい。コンピュータシステム1000は、ネットワークインターフェース1056を介してネットワーク1080と通信を行ってもよい。例えば、コンピュータシステム1000は、ネットワークインターフェース1056において、1以上の入力パケットの形式でネットワーク1080から情報(例えば、別のデバイスからのリクエストまたは応答)を受信して、メモリ1030は、次の処理のために入力パケットを格納してもよい。コンピュータシステム1000は、情報(例えば、別のデバイスへのリクエストまたは応答)を、メモリ1030に送信前に格納されていてもよい、ネットワークインターフェース1056からの1以上の出力パケットの形式で、ネットワーク1080に送信してもよい。プロセッサ1020は、特定の必要性に応じて処理を行うべく、メモリ1030内の入力パケットまたは出力パケットにアクセスしてもよい。
【0071】
コンピュータシステム1000は、1以上の入力デバイス1066(キーパッド、キーボード、マウス、スタイラス等を含んでもよい)、1以上の出力デバイス1068(1以上のディスプレイ、1以上のスピーカ、1以上のプリンタ等)、1以上の記憶装置1070、および、1以上の記憶媒体1072を有してもよい。入力デバイス1066は、コンピュータシステム1000に外付けされてもよいし、内部に組み込まれてもよい。出力デバイス1068は、コンピュータシステム1000に外付けされてもよいし、内部に組み込まれてもよい。記憶装置1070は、コンピュータシステム1000に外付けされてもよいし、内部に組み込まれてもよい。記憶媒体1072は、コンピュータシステム1000に外付けされてもよいし、内部に組み込まれてもよい。
【0072】
特定の実施形態が、本明細書に説明または例示された1以上のプロセスの1以上の段階を実行するソフトウェアを具現化する1以上のコンピュータ可読記憶媒体を含む1以上のコンピュータ記憶装置物品に関連して説明された。特定の実施形態では、媒体、ソフトウェアまたはその両方の1以上の部分が、本明細書に説明または例示された1以上のプロセスの1以上の段階を実行するように特別に設計または製造されてもよい。更にまたはこれに替えて、本明細書に説明または例示されたプロセスに固有の設計または製造を行うことなく、特定の実施形態では、媒体、ソフトウェアまたはその両方の1以上の部分が概して利用可能であってもよい。コンピュータ可読記憶媒体の例には、これに限定されないが、CD(CD−ROM等)、FPGA、フロッピー(登録商標)ディスク、フロッピー(登録商標)状ディスク、ハードディスク、ホログラフィック記憶装置、IC(例えば、ASIC)、磁気テープ、キャッシュ、PLD、RAMデバイス、ROMデバイス、半導体メモリデバイス、および、その他の好適なコンピュータ可読記憶媒体が含まれる。特定の実施形態では、ソフトウェアは、コンパイラが生成する機械コード、または、コンピュータがインタプリタを使用して実行してもよい高レベルコードを含む1以上のファイルであってもよい。
【0073】
一例として、これに限定されないが、メモリ1030は、ソフトウェアを具現化する1以上のコンピュータ可読記憶媒体を含んでもよく、コンピュータシステム1000は、プロセッサ1020がソフトウェアを実行する結果として、本明細書に説明されたまたは例示された特定の機能を提供してもよい。メモリ1030は、ソフトウェアを格納し、プロセッサ1020は、ソフトウェアを実行してもよい。メモリ1030は、ソフトウェアを具現化するマスストレージデバイス1030内のコンピュータ可読記憶媒体からソフトウェアを読み出してもよいし、ネットワークインターフェース1056を介して1以上のその他のリソースからソフトウェアを読み出してもよい。ソフトウェアを実行する場合、プロセッサ1020は、本明細書に記載されるまたは例示された1以上のプロセスの1以上の段階を実行してもよく、1以上の段階は、メモリ1030に格納する1以上のデータ構造を規定すること、特定の需要に従って、ソフトフェアの1以上の部分によって指示されるようにデータ構造の1以上の部分を修正することを含む。更にまたはこれに替えて、コンピュータシステム1000は、ハードワイヤードのロジックまたは回路に実装されたロジックの結果として、本明細書に記載されたまたは例示された特定の機能を提供してもよく、ロジックは、明細書に記載されたまたは例示された1以上のプロセスのうちの1以上の段階を実行するべく、ソフトウェアの替わりにまたはソフトウェアと共に動作してもよい。本開示は、特定の需要に従って、ハードウェアおよびソフトウェアの任意の好適な組み合わせを包含する。
【0074】
特定の実施形態では、コンピュータシステム1000は、1以上のグラフィックス処理ユニット(GPU)1024を含んでもよい。特定の実施形態では、GPU1024は、グラフィックスレンダリングで一般的に使用される算術オペレーション向けの1以上の集積回路および/または処理コアを含んでもよい。ある実施形態では、GPU1024は、専用グラフィックスユニット命令セットを使用してもよく、別の実施形態では、GPUは、CPUのような(例えば、修正x86)命令セットを使用してもよい。グラフィックス処理ユニット1024は、ブリッティング(blitting)、テクスチャマッピング、ピクセルシェーディング、フレームバッファリング等の、複数のグラフィックスプリミティブオペレーションを実装してもよい。特定の実施形態では、GPU1024は、グラフィックスアクセラレータ、汎用GPU(GPGPU)、または、その他の好適な処理ユニットであってもよい。
【0075】
特定の実施形態では、GPU1024は、カードスロットを介して、ハードウェアシステムアーキテクチャに取り付けられるグラフィックスカードまたはディスプレイカードとして具現化されてもよい。その他の実装では、GPU1024は、コンピュータシステムアーキテクチャのマザーボードに組み込まれてもよい。好適なグラフィックス処理ユニットは、Advanced Micro Devices(登録商標)AMD R7XXベースのGPUデバイス(Radeon(登録商標)HD 4XXX)、AMD R8XXベースのGPUデバイス(Radeon(登録商標)HD 10XXX)、Intel(登録商標)LarabeeベースのGPUデバイス(まだリリースされていない)、nVidia(登録商標)8シリーズGPU、nVidia(登録商標)9シリーズGPU、nVidia(登録商標)100シリーズGPU、nVidia(登録商標)200シリーズGPU、および、その他のDX11対応GPUを含んでもよい。
【0076】
本開示では、特定の順番で、特定のオペレーションが発生するように説明および例示されたが、本開示は、好適なオペレーションが適した任意の順番で発生することを想定している。更に、本開示は、好適なオペレーションが、好適な順番で、1回以上繰り返されることを想定している。本開示では、特定のシーケンスで特定のオペレーションが発生するように説明および例示されたが、本開示は、好適な場合には、実質的に同時に好適なオペレーションが発生することを想定している。本明細書に説明されたまたは例示された任意の好適なオペレーションまたはオペレーションのシーケンスは、適切である場合には、中断、一時停止、または、オペレーティングシステムまたはカーネルのような別のプロセスによって制御されてもよい。オペレーティングシステム環境、または、システム処理の全てまたは大部分を占めるスタンドアローンルーチンにおいて、動作することができる。
【0077】
本開示は、実施形態の例に対して、当業者が想到するであろう、変更、代替、変形、改良および修正も包含する。同様に、適切であれば、添付の特許請求の範囲は、実施形態の例に対して、当業者が想到するであろう、変更、代替、変形、改良および修正も包含する。
【0078】
本開示の目的として、コンピュータ可読媒体は、機械可読な形式で、コンピュータが実行可能なコンピュータプログラムコードを含むことができるコンピュータデータを格納する。例えば、これに限定されないが、コンピュータ可読媒体は、有形または固定記憶装置のデータのためのコンピュータ可読記憶媒体、または、コードを含む信号の一時的な変換のための通信媒体を含んでもよい。本明細書で使用されているコンピュータ可読記憶媒体という言葉は、物理的記憶装置または有形記憶装置(信号の反対)を指し、これに限定されないが、例えば、揮発性、不揮発性、取り外し可能、取り外し不可能な媒体を指し、コンピュータ可読命令、データ構造、プログラムモジュールまたはその他のデータのような情報の有形記憶装置のための方法または技術に実装されている。コンピュータ可読記憶媒体としては、これに限定されないが、RAM、ROM、EPROM、EEPROM、フラッシュメモリ、または、その他のソリッドステートメモリ技術、CD−ROM、DVD、または、その他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、または、その他の磁気記憶デバイス、または、コンピュータもしくはプロセッサがアクセスすることができる所望の情報、データもしくは命令を有形で格納するのに使用可能なその他の物理的または材料の媒体が含まれる。