(57)【特許請求の範囲】
【請求項１】
非立体視３次元（３Ｄ）コンテンツを立体視３Ｄ（Ｓ３Ｄ）コンテンツに変換する方法であって、
アプリケーションプログラムインターフェース（ＡＰＩ）呼を横取りすることと、
前記ＡＰＩ呼から、前記非立体視３Ｄコンテンツのためのモデルビュー射影行列を決定することと、
第１の修正モデルビュー射影行列を生成するために前記モデルビュー射影行列をシフトすることと、
第２の修正モデルビュー射影行列を生成するために前記モデルビュー射影行列をシフトすることと、
前記第１の修正モデルビュー射影行列に基づいて、左ビュークリッピング座標を生成することと、
前記第２の修正モデルビュー射影行列に基づいて、右ビュークリッピング座標を生成することと、
前記左ビュークリッピング座標に基づいて、左ビューを生成することと、
前記右ビュークリッピング座標に基づいて、右ビューを生成することと、ここで、前記左ビューの視認方向は、前記右ビューの視認方向と平行である、
前記左ビューと前記右ビューとに基づいて、Ｓ３Ｄ画像をレンダリングすることと、
前記左ビューに第１のビューポートシフトを適用することと、
前記右ビューに第２のビューポートシフトを適用することと
を備える方法。
【請求項２】
前記左ビューへの前記第１のビューポートシフトについての量と、前記右ビューへの前記第２のビューポートシフトについての量とが、１つ以上のユーザ入力パラメータに基づいて決定される、請求項１に記載の方法。
【請求項３】
前記左ビューへの前記第１のビューポートシフトについての量と、前記右ビューへの前記第２のビューポートシフトについての量とが、前に生成された画像のシーンについての深度範囲を決定することに基づいて決定される、請求項１に記載の方法。
【請求項４】
前記第１の修正モデルビュー射影行列を生成するために前記モデルビュー射影行列をシフトすることが、前記モデルビュー射影行列に第１の定数を加算することを備え、前記第２の修正モデルビュー射影行列を生成するため前記モデルビュー射影行列をシフトすることは前記モデルビュー射影行列に第２の定数を加算することを備える、請求項１に記載の方法。
【請求項５】
前記第１の定数が、前記モデルビュー射影行列の第１の行、第４の列における要素に加算され、前記第２の定数が、前記モデルビュー射影行列の第１の行、第４の列における前記要素に加算される、請求項４に記載の方法。
【請求項６】
前記モデルビュー射影行列が前記非立体視３Ｄコンテンツについて定義される、請求項１に記載の方法。
【請求項７】
システムコマンドを受信することを更に備え、前記システムコマンドは、３ＤコンテンツがＳ３Ｄコンテンツに変換される動作モードを可能にする、請求項１に記載の方法。
【請求項８】
命令を記憶するメモリと、
グラフィックス処理ユニット（ＧＰＵ）と、
前記命令の実行時に、
アプリケーションプログラムインターフェース（ＡＰＩ）呼を横取りすることと、
前記ＡＰＩ呼から、非立体視３Ｄコンテンツのためのモデルビュー射影行列を決定することと、
第１の修正モデルビュー射影行列を生成するために前記モデルビュー射影行列をシフトすることと、
第２の修正モデルビュー射影行列を生成するために前記モデルビュー射影行列をシフトすることと、
前記ＧＰＵに、前記第１の修正モデルビュー射影行列に基づいて左ビュークリッピング座標を生成させることと、
前記ＧＰＵに、前記第２の修正モデルビュー射影行列に基づいて右ビュークリッピング座標を生成させることと、
前記ＧＰＵに、前記左ビュークリッピング座標に基づいて左ビューを生成させることと、
前記ＧＰＵに、前記右ビュークリッピング座標に基づいて右ビューを生成させることと、ここで、前記左ビューの視認方向は、前記右ビューの視認方向と平行である、
前記ＧＰＵに、前記左ビューと前記右ビューとに基づいて立体視３Ｄ（Ｓ３Ｄ）画像をレンダリングさせることと、
前記ＧＰＵに、前記左ビューに第１のビューポートシフトを適用することと、前記右ビューに第２のビューポートシフトを適用することと
を行うように動作可能なプロセッサと
を備える装置。
【請求項９】
前記左ビューへの前記第１のビューポートシフトについての量と、前記右ビューへの前記第２のビューポートシフトについての量とが、１つ以上のユーザ入力パラメータに基づいて決定される、請求項８に記載の装置。
【請求項１０】
前記左ビューへの前記第１のビューポートシフトについての量と、前記右ビューへの前記第２のビューポートシフトについての量とが、前に生成された画像のシーンについての深度範囲を決定することに基づいて決定される、請求項８に記載の装置。
【請求項１１】
前記プロセッサが、前記モデルビュー射影行列に第１の定数を加算することによって前記第１の修正モデルビュー射影行列を生成するため前記モデルビュー射影行列をシフトし、前記プロセッサが、前記モデルビュー射影行列に第２の定数を加算することによって前記第２の修正モデルビュー射影行列を生成するため前記モデルビュー射影行列をシフトする、請求項８に記載の装置。
【請求項１２】
前記第１の定数が、前記モデルビュー射影行列の第１の行、第４の列における要素に加算され、前記第２の定数が、前記モデルビュー射影行列の第１の行、第４の列における要素に加算される、請求項１１に記載の装置。
【請求項１３】
前記モデルビュー射影行列が前記非立体視３Ｄコンテンツについて定義される、請求項８に記載の装置。
【請求項１４】
前記プロセッサが、
システムコマンドを受信することを行うように更に動作可能であり、前記システムコマンドは、３ＤコンテンツがＳ３Ｄコンテンツに変換される動作モードを可能にする、請求項８に記載の装置。
【請求項１５】
非立体視３次元（３Ｄ）コンテンツを立体視３Ｄ（Ｓ３Ｄ）コンテンツに変換するための装置であって、
アプリケーションプログラムインターフェース（ＡＰＩ）呼を横取りするための手段と、
前記ＡＰＩ呼から、前記非立体視３Ｄコンテンツのためのモデルビュー射影行列を決定するための手段と、
第１の修正モデルビュー射影行列を生成するために前記モデルビュー射影行列をシフトするための手段と、
第２の修正モデルビュー射影行列を生成するために前記モデルビュー射影行列をシフトするための手段と、
前記第１の修正モデルビュー射影行列に基づいて左ビュークリッピング座標を生成するための手段と、
前記第２の修正モデルビュー射影行列に基づいて右ビュークリッピング座標を生成するための手段と、
前記左ビュークリッピング座標に基づいて左ビューを生成するための手段と、
前記右ビュークリッピング座標に基づいて右ビューを生成するための手段と、ここで、前記左ビューの視認方向は、前記右ビューの視認方向と平行である、
前記左ビューと前記右ビューとに基づいてＳ３Ｄ画像をレンダリングするための手段と
前記左ビューに第１のビューポートシフトを適用するための手段と、
前記右ビューに第２のビューポートシフトを適用するための手段と
を備える装置。
【請求項１６】
前記左ビューへの前記第１のビューポートシフトについての量と、前記右ビューへの前記第２のビューポートシフトについての量とが、１つ以上のユーザ入力パラメータに基づいて決定される、請求項１５に記載の装置。
【請求項１７】
前記左ビューへの前記第１のビューポートシフトについての量と、前記右ビューへの前記第２のビューポートシフトについての量とが、前に生成された画像のシーンについての深度範囲を決定することに基づいて決定される、請求項１５に記載の装置。
【請求項１８】
前記第１の修正モデルビュー射影行列を生成するために前記モデルビュー射影行列をシフトするための手段が、前記モデルビュー射影行列に第１の定数を加算するための手段を備え、前記第２の修正モデルビュー射影行列を生成するために前記モデルビュー射影行列をシフトするための手段が、前記モデルビュー射影行列に第２の定数を加算するための手段を備える、請求項１５に記載の装置。
【請求項１９】
前記第１の定数を加算するための手段が、前記第１の定数を、前記モデルビュー射影行列の第１の行、第４の列における要素に加算し、前記第２の定数を、前記モデルビュー射影行列の第１の行、第４の列における前記要素に加算する、請求項１８に記載の装置。
【請求項２０】
前記モデルビュー射影行列が前記非立体視３Ｄコンテンツについて定義される、請求項１５に記載の装置。
【請求項２１】
システムコマンドを受信するための手段を更に備え、前記システムコマンドは、３ＤコンテンツがＳ３Ｄコンテンツに変換される動作モードを可能にする、請求項１５に記載の装置。
【請求項２２】
実行されたとき、１つ以上のプロセッサに、
アプリケーションプログラムインターフェース（ＡＰＩ）呼を横取りすることと、
前記ＡＰＩ呼から、非立体視３Ｄコンテンツのためのモデルビュー射影行列を決定することと、
第１の修正モデルビュー射影行列を生成するために前記モデルビュー射影行列をシフトすることと、
第２の修正モデルビュー射影行列を生成するために前記モデルビュー射影行列をシフトすることと、
前記第１の修正モデルビュー射影行列に基づいて、左ビュークリッピング座標を生成することと、
前記第２の修正モデルビュー射影行列に基づいて、右ビュークリッピング座標を生成することと、
前記左ビュークリッピング座標に基づいて、左ビューを生成することと、
前記右ビュークリッピング座標に基づいて、右ビューを生成することと、
前記左ビューと前記右ビューとに基づいて、立体視３Ｄ（Ｓ３Ｄ）画像をレンダリングすることと、
前記左ビューに第１のビューポートシフトを適用することと、
前記右ビューに第２のビューポートシフトを適用することと
を行わせる命令を記憶したコンピュータ可読記憶媒体。
【請求項２３】
前記左ビューへの前記第１のビューポートシフトについての量と、前記右ビューへの前記第２のビューポートシフトについての量とが、１つ以上のユーザ入力パラメータに基づいて決定される、請求項２２に記載のコンピュータ可読記憶媒体。
【請求項２４】
前記左ビューへの前記第１のビューポートシフトについての量と、前記右ビューへの前記第２のビューポートシフトについての量とが、前に生成された画像のシーンについての深度範囲を決定することに基づいて決定される、請求項２２に記載のコンピュータ可読記憶媒体。
【請求項２５】
前記１つ以上のプロセッサが、前記モデルビュー射影行列に第１の定数を加算することによって前記モデルビュー射影行列をシフトし、前記モデルビュー射影行列に第２の定数を加算することによって前記モデルビュー射影行列をシフトする、請求項２２に記載のコンピュータ可読記憶媒体。
【請求項２６】
前記第１の定数が、前記モデルビュー射影行列の第１の行、第４の列における要素に加算され、前記第２の定数が、前記モデルビュー射影行列の第１の行、第４の列における要素に加算される、請求項２５に記載のコンピュータ可読記憶媒体。
【請求項２７】
前記モデルビュー射影行列が前記非立体視３Ｄコンテンツについて定義される、請求項２２に記載のコンピュータ可読記憶媒体。
【請求項２８】
実行されたとき、前記１つ以上のプロセッサに、
システムコマンドを受信することを行わせる更なる命令を記憶し、前記システムコマンドは、３ＤコンテンツがＳ３Ｄコンテンツに変換される動作モードを可能にする、請求項２２に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、グラフィックスデータ処理に関し、より詳細には、立体視ビューのためのグラフィックスデータ処理に関する。
【背景技術】
【０００２】
立体視ビューは、３次元（３Ｄ）ボリュームを包含するように見える知覚画像を指す。立体視ビューを生成するために、機器が、表示器の２次元（２Ｄ）エリア上に２つの画像を表示する。これらの２つの画像は、実質的に同様のコンテンツを含むが、２つの画像中の１つ以上の対応する画素の水平軸に沿ったわずかな変位を伴う。２Ｄエリア上のこれらの２つの画像の同時視認は、２つの画像を表示している２Ｄ表示器から飛び出すか、又は２Ｄ表示器に押し込まれる画像を視聴者に知覚させる。このようにして、２つの画像が表示器の２Ｄエリア上に表示されるが、視聴者は、３Ｄボリュームを包含するように見える画像を知覚する。
【０００３】
立体視ビューの２つの画像は、それぞれ、左眼画像及び右眼画像と呼ばれる。左眼画像は視聴者の左眼によって視認可能であり、右眼画像は視聴者の左眼によって視認可能でない。同様に、右眼画像は視聴者の右眼によって視認可能であり、左眼画像は視聴者の右眼によって視認可能でない。例えば、視聴者は特殊な眼鏡を着用し得、その眼鏡の左レンズは右眼画像を遮断し、左眼画像を通過させ、その眼鏡の右レンズは左眼画像を遮断し、右眼画像を通過させる。
【０００４】
左眼画像と右眼画像とは、水平軸に沿ったわずかな変位をもつ実質的に同様のコンテンツを含むが、（例えば、特殊な眼鏡のために）視聴者の両眼によって同時に視認可能でないので、視聴者の脳は、２つの画像を混合する（commingle）ことによって、対応する画素間のわずかな変位を解決する。混合することにより、視聴者は、２つの画像を、３Ｄボリュームをもつ画像として知覚することになる。
【発明の概要】
【０００５】
本出願は、そのそれぞれの内容全体が参照により本明細書に組み込まれる、２０１１年３月１４日に出願された米国仮出願第６１／４５２，２８９号、及び２０１１年４月１２日に出願された米国仮出願第６１／４７４，６３８号の利益を主張する。
【０００６】
本開示では、機器に、３次元（３Ｄ）グラフィックスコンテンツを立体視３Ｄにおいてレンダリングさせることができる方法で、アプリケーションプログラムインターフェース（ＡＰＩ）呼を修正するための技法について説明する。本開示の技法は、ＡＰＩ呼自体は修正されるが、ＡＰＩ自体及びＧＰＵハードウェアは修正されない方法で実施され得る。
【０００７】
一例では、非立体視３ＤコンテンツをＳ３Ｄコンテンツに変換する方法は、アプリケーションプログラムインターフェース（ＡＰＩ）呼(application program interface (API) call)を横取りすることと、ＡＰＩ呼から、非立体視３Ｄコンテンツのためのモデルビュー射影行列を決定することと、修正モデルビュー射影行列を生成するためにモデルビュー射影行列を修正することと、修正モデルビュー射影行列に基づいて、左ビュークリッピング座標（left view clipping coordinates）を生成することと、修正モデルビュー射影行列に基づいて、右ビュークリッピング座標（right view clipping coordinates）を生成することと、左ビュークリッピング座標に基づいて、左ビューを生成することと、右ビュークリッピング座標に基づいて、右ビューを生成することと、左ビューと右ビューとに基づいて、Ｓ３Ｄ画像をレンダリングすることとを含む。
【０００８】
別の例では、機器は、命令を記憶するメモリと、グラフィックス処理ユニット（ＧＰＵ）と、プロセッサとを含む。プロセッサは、命令の実行時に、アプリケーションプログラムインターフェース（ＡＰＩ）呼を横取りすることと、ＡＰＩ呼から、非立体視３Ｄコンテンツのためのモデルビュー射影行列を決定することと、修正モデルビュー射影行列を生成するためにモデルビュー射影行列を修正することと、ＧＰＵに、修正モデルビュー射影行列に基づいて左ビュークリッピング座標を生成させることと、ＧＰＵに、修正モデルビュー射影行列に基づいて右ビュークリッピング座標を生成させることと、ＧＰＵに、左ビュークリッピング座標に基づいて左ビューを生成させることと、ＧＰＵに、右ビュークリッピング座標に基づいて右ビューを生成させることと、ＧＰＵに、左ビューと右ビューとに基づいてＳ３Ｄ画像をレンダリングさせることとを行うように動作可能である。
【０００９】
別の例では、非立体視３Ｄコンテンツ(non-stereoscopic 3D content)をＳ３Ｄコンテンツに変換するための装置は、アプリケーションプログラムインターフェース（ＡＰＩ）呼を横取りするための手段と、ＡＰＩ呼から、非立体視３Ｄコンテンツのためのモデルビュー射影行列を決定するための手段と、修正モデルビュー射影行列を生成するためにモデルビュー射影行列を修正するための手段と、修正モデルビュー射影行列に基づいて左ビュークリッピング座標を生成するための手段と、修正モデルビュー射影行列に基づいて右ビュークリッピング座標を生成するための手段と、左ビュークリッピング座標に基づいて左ビューを生成するための手段と、右ビュークリッピング座標に基づいて右ビューを生成するための手段と、左ビューと右ビューとに基づいてＳ３Ｄ画像をレンダリングするための手段とを含む。
【００１０】
別の例では、コンピュータ可読記憶媒体は、実行されたとき、１つ以上のプロセッサに、アプリケーションプログラムインターフェース（ＡＰＩ）呼を横取りすることと、ＡＰＩ呼から、非立体視３Ｄコンテンツのためのモデルビュー射影行列を決定することと、修正モデルビュー射影行列を生成するためにモデルビュー射影行列を修正することと、修正モデルビュー射影行列に基づいて、左ビュークリッピング座標を生成することと、修正モデルビュー射影行列に基づいて、右ビュークリッピング座標を生成することと、左ビュークリッピング座標に基づいて、左ビューを生成することと、右ビュークリッピング座標に基づいて、右ビューを生成することと、左ビューと右ビューとに基づいて、Ｓ３Ｄ画像をレンダリングすることとを行わせる命令を記憶する。
【００１１】
本開示の１つ以上の態様の詳細を添付の図面及び以下の説明に記載する。本開示の他の特徴、目的、及び利点は、これらの説明及び図面、ならびに特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１２】
【図１】本開示で説明する１つ以上の例示的な技法を実施し得る例示的なシステムの機能を示すブロック図。
【図２】本開示で説明する１つ以上の例示的な技法を実施し得る機器の一例を示すブロック図。
【図３Ａ】本開示の技法を使用して生成されるＳ３Ｄ視認エリアの幾何学的表現を示す図。
【図３Ｂ】本開示の技法に従って実行され得るビューポートシフトの幾何学的表現を示す図。
【図４】図２の例示的な機器を更に詳細に示すブロック図。
【図５】本開示で説明する１つ以上の例示的な技法による例示的な動作を示すフローチャート。
【発明を実施するための形態】
【００１３】
本開示で説明する例示的な技法は、実行中又はランタイム中に立体視３次元（Ｓ３Ｄ）グラフィックをレンダリングすることを対象とする。従来の３Ｄグラフィックスレンダリングでは、グラフィックス処理ユニット（ＧＰＵ）が、単一の視点（例えば、モノビュー）から３Ｄグラフィックスを生成する。この単一の視点は、視聴者の右眼と左眼の両方によって視認可能である単一の画像を意味し得る。
【００１４】
Ｓ３Ｄグラフィックスは、Ｓ３Ｄグラフィックスが立体視ビューを生成するという点で３Ｄグラフィックスとは異なる。立体視ビューという用語は、両眼視点から生成される画像を指す。両眼視点では、２つの画像があり得、１つの画像は、一方の眼によって視認可能であり、他方の眼によって視認可能でなく、その逆も同様である。例えば、視聴者が双眼鏡を着用したとき、双眼鏡の左レンズを通って入る光は、左眼によって視認可能であり、右眼によって視認可能でなく、その逆も同様である。両眼視点は立体視ビューと呼ばれることがある。
【００１５】
例えば、Ｓ３Ｄグラフィックスでは、ＧＰＵは、左眼のための画像と右眼のための別の画像とを生成し得、即ち、立体視ビューを生成し得る。立体視ビューという用語は、表示器上にそれぞれ表示される２つの画像（例えば、左眼画像及び右眼画像）を指すが、モノビューは、表示器上に表示される単一の画像を指す。左眼画像と右眼画像との組合せは、視聴者にとっては、画像が、画像を表示している表示器から飛び出しているか、又は表示器に押し込まれているかのように見え得る。これにより、より現実的でよりリッチな視認経験を生じ得る。
【００１６】
本開示では、Ｓ３Ｄ画像（例えば、立体視ビュー）及び３Ｄ画像（例えば、モノビュー）の概念は、混同されるべきでない。３Ｄ画像は、表示器の２次元（２Ｄ）エリアに制限される画像である。例えば、３Ｄ画像内の物体は、３Ｄ画像内の他の物体よりも遠く離れているか、又は近接しているように見え得る。しかしながら、これらの物体の全ては、表示器の２Ｄエリアに限定される。Ｓ３Ｄ画像は、視聴者の脳が右眼画像と左眼画像とを組み合わせることから生じる知覚画像である。得られた画像（即ち、Ｓ３Ｄ画像）は、表示器の２Ｄエリアに制限されないように見える。そうではなく、Ｓ３Ｄ画像は、画像が表示器から飛び出すか、表示器に押し込まれるように見える３Ｄボリュームを包含するように見える。例えば、Ｓ３Ｄ画像内の物体は、３Ｄボリューム内の他の物体よりも遠く離れているか、又は近接しているように見え、３Ｄ画像の場合のように２Ｄエリアでないように見える。
【００１７】
Ｓ３Ｄ画像を互いに形成する右眼画像と左眼画像とは、３Ｄ画像であり得る。視聴者の脳が３Ｄ右眼画像と３Ｄ左眼画像とを組み合わせたとき、視聴者にＳ３Ｄ画像を知覚させるのは、その脳である。右眼画像と左眼画像とのコンテンツは、単一の３Ｄ画像のコンテンツと実質的に同様であり得る。本開示では、３ＤグラフィックスコンテンツをＳ３Ｄコンテンツに変換するための技法について説明する。本開示の技法を使用することによって、多くの既存の３Ｄグラフィックスコンテンツは、Ｓ３Ｄグラフィックスコンテンツに変換され、立体視表示器上に表示され得る。
【００１８】
本開示はまた、ＧＰＵに、説明する３Ｄ−Ｓ３Ｄ変換を実行させることができる方法で、アプリケーションプログラムインターフェース（ＡＰＩ）呼を修正するための技法について説明する。本開示の技法は、ＡＰＩ又はＧＰＵが修正されるのとは反対に、ＡＰＩ呼自体のみが修正される方法で実施され得る。
【００１９】
天然３Ｄコンテンツ(native 3D content)からＳ３Ｄコンテンツを生成するために、本開示の技法は、３Ｄ−Ｓ３Ｄ変換のための技法を含む。本技法は、３Ｄアプリケーションから３ＤグラフィックスＡＰＩへの選択されたＡＰＩ呼を横取り（インターセプト）するためのソフトウェアを含む。横取りされたＡＰＩ呼は、グラフィックを生成するためのシステムに、ランタイム中にＳ３Ｄ表示器上に表示され得る両眼ビューを作成させる方法で修正され得、それにより、レンダリングされたコンテンツを視認するユーザに対してＳ３Ｄ効果を作成し得る。２つの画像、即ち左眼画像と右眼画像とは、天然３Ｄコンテンツの分析に基づいて、同じグラフィックスパイプラインによってレンダリングされ得る。２つの画像は、視認する位置及び／又は方向について異なるセットアップを使用して生成され得る。本開示の技法を実施しているシステムは、モバイル機器において使用されるＯｐｅｎＧＬ  ＥＳ  ＡＰＩなど、グラフィックスＡＰＩの右上に配置され得、３ＤグラフィックスアプリケーションからのＡＰＩ呼が横取りされることを可能にする。幾つかの実施形態では、３Ｄ−Ｓ３Ｄ変換システムは、ソフトウェアを使用してのみ実施され得、ＧＰＵハードウェア、グラフィックスドライバコードに対する変更、又は３Ｄグラフィックスアプリケーションコンテンツに対する変更を必要とすることなしに実施され得る。本開示の技法は、ＯｐｅｎＧＬ、ＯｐｅｎＧＬ  ＥＳ、及び他のグラフィックスＡＰＩとともに適用され得る。
【００２０】
天然３ＤコンテンツをＳ３Ｄコンテンツに変換するための技法は、現在、当技術分野に存在するが、これらの技法のうちの多くは、それらが、常に知られているとは限らない情報の知識をＡＰＩ呼に要求するので、適用例が限られているか、又はそれらが、常に正確であるとは限らないＳ３Ｄ視認空間に関する仮定を行うので、Ｓ３Ｄ画質が不十分になる。本開示では、幾つかの事例において、広く使用可能であり、及び良好な画質を生じる３Ｄ−Ｓ３Ｄ変換技法について説明する。
【００２１】
図１は、本開示の技法を実施することができる例示的な３Ｄ−Ｓ３Ｄ変換システム１００の機能図である。図１のシステム１００は機能的概観を与えるものである。システム１００は、３Ｄグラフィックスコンテンツ１１２と、３Ｄ−Ｓ３Ｄ変換を使用可能にするためのシステムコマンド１１６と、イネーブルＳ３Ｄモジュール１２０と、３Ｄ−Ｓ３Ｄ変換モジュール１２４と、ＡＰＩ１２８と、頂点処理モジュール１３２と、左ビニングユニット１３６(left binning unit)と、右ビニングユニット(right binning unit)１４０と、画素処理モジュール１４４と、左フレームバッファ１４８と、右フレームバッファ１５２と、左画像１５６と、右画像１６０とを含む。システム１００の部分について、より詳細に、追加のハードウェア及びソフトウェア構成要素に関して、本開示の後半で説明する。更に、以下でより詳細に説明するように、頂点処理モジュール１３２、左ビニングユニット１３６、右ビニングユニット１４０、及び画素処理モジュール１４４など、システム１００の幾つかの部分がＧＰＵの一部として実施され得る。
【００２２】
３Ｄグラフィックスコンテンツ１１２及びシステムコマンド１１６は、コンピュータコードの形態でシステムメモリに記憶され得る。３Ｄグラフィックスコンテンツ１１２は、例えば、３Ｄ画像を生成するために使用されるグラフィックスコマンドを含むことができる。ＯｐｅｎＧＬ  ＥＳ  ＡＰＩを使用するときに、例えば、グラフィックスコマンドは、glDrawArrays()及びglDrawElements()などのglDrawコマンドを含むことができ、グラフィックスコマンドについては、以下でより詳細に説明する。
【００２３】
３Ｄ−Ｓ３Ｄ変換は、システムコマンド１１６によって使用可能にされ得る。システムコマンド１１６は、例えば、ユーザ入力コマンドを表し得るか、又はアプリケーションプロセッサによって実行されているアプリケーション内に含まれているコマンドであり得る。３Ｄ−Ｓ３Ｄが使用可能にされないとき、３Ｄグラフィックスコンテンツ１１２は、３Ｄ画像を生成するための通常の方法で処理され得る。そのような場合、点線で示すシステム１００の部分は、利用されないことがあるか、又は存在しないことがあるが、システム１００の他の部分は、左画像と右画像とは反対に単一のモノビュー画像を処理する。３Ｄ−Ｓ３Ｄ変換が使用可能にされなかった（例えば、１２０のいいえを参照）とき、修正されていないＡＰＩ呼がＡＰＩ１２８に送られる。修正されていないＡＰＩ呼は、概して、それらの元の形態でＡＰＩ１２８に送られる、３Ｄグラフィックスコンテンツ１１２からのＡＰＩ呼を指す。
【００２４】
３Ｄ−Ｓ３Ｄ変換が使用可能にされたとき（例えば、１２０のはいを参照）、３Ｄ−Ｓ３Ｄ変換モジュール１２４は、グラフィックスコンテンツ１１２のＡＰＩ呼を横取りし、それらに単一のモノビューとは反対に左眼ビューと右眼ビューとを生成させる方法でＡＰＩ呼を修正することができる。次いで、３Ｄ−Ｓ３Ｄ変換モジュール１２４によって生成された修正ＡＰＩ呼は、ＧＰＵに左眼画像と右眼画像とをレンダリングさせるために、ＡＰＩ１２８によって必要とされ得る。修正ＡＰＩ呼は、左フレームバッファ１４８に記憶されるべき左眼画像と、右フレームバッファ１５２に記憶されるべき右眼画像とを生成するために、頂点処理モジュール１３２と、左ビニングユニット１３６と、右ビニングユニット１４０と、画素処理モジュール１４４とによって実行され得る。システム１００の例では、３Ｄ−Ｓ３Ｄ変換モジュール１２４は、ＡＰＩ呼を横取りし、それらのＡＰＩ呼への修正を実行するように構成された、アプリケーションプロセッサ上で動作するアプリケーションを表す。ＡＰＩ呼への修正は、３Ｄグラフィックスコンテンツが、ＧＰＵによってＳ３Ｄグラフィックスコンテンツとしてレンダリングされることを可能にする。
【００２５】
典型的な３Ｄグラフィックスパイプラインでは、３Ｄグラフィックスコンテンツは、第１に、幾何学的基本形（geometries primitives）を記述する基本形データの形態である。左画像と右画像の両方について、頂点処理ユニット１３２は、幾何学的基本形データに基づいて２Ｄ表示平面内の画素位置のセットを生成することができる。左ビニングユニット１３６は、タイルごとに左画像に関連する幾何学的基本形を組み立てることができ、タイルは左画像の一部分に対応する。同様に、右ビニングユニット１４０は、タイルごとに右画像に関連する幾何学的基本形を組み立てることができる。左画像のタイルと右画像のタイルとの各々について、画素処理ユニット１４４は、頂点処理ユニット１３２によって決定された画素についての属性を計算することができる。画素処理モジュール１４４は、左画像（例えば、左画像１５６）を左フレームバッファ１４８に出力することができ、右画像（例えば、右画像１６０）を右フレームバッファ１５２に出力することができる。左画像１５６と右画像１６０とは、Ｓ３Ｄ画像を生成するために、Ｓ３Ｄ表示器上に同時に表示され得る。このようにして、３Ｄグラフィックスコンテンツ１１２はＳ３Ｄグラフィックスコンテンツを含まないが、システム１００の出力は、依然としてＳ３Ｄ画像であり得る。
【００２６】
頂点処理モジュール１３２と、左ビニングユニット１３６と、右ビニングユニット１４０と、画素処理モジュール１４４とによって実行される機能は、図２に関して以下でより詳細に説明する。幾つかの構成では、システムは、右眼画像に専用の様々なハードウェア構成要素と、左眼画像に専用の様々なハードウェア構成要素とを含み得る。しかしながら、他の実施形態では、右眼画像と左眼画像の両方について、同じ構成要素が使用され得る。図１のシステム１００では、例えば、頂点処理モジュール１３２と画素処理モジュール１４４とはソフトウェアで実施され得るが、左ビニングユニット１３６と、右ビニングユニット１４０と、左フレームバッファ１４８と、右フレームバッファ１５０とはハードウェアで実施される。しかしながら、他の構成では、頂点処理モジュール１３２と、画素処理モジュール１４４とはハードウェアで実施され得るか、又は左フレームバッファ１４８と右フレームバッファ１５２とは、左画像と右画像の両方を保持する単一のフレームバッファによって置き換えられ得る。更に、前述のように、システム１００は、本開示の技法を実施することができるシステムの機能的概観を与えるものにすぎず、グラフィックスパイプラインの幾つかの態様は、説明のために簡略化又は省略されている。
【００２７】
図２は、本開示で説明する１つ以上の例示的な技法を実施し得る機器の一例を示すブロック図である。例えば、図２は機器２１０を示す。機器２１０の例には、限定はしないが、モバイルワイヤレス電話、携帯情報端末（ＰＤＡ）、ビデオ表示器を含むビデオゲーミングコンソール、モバイルビデオ会議ユニット、ラップトップコンピュータ、デスクトップコンピュータ、テレビジョンセットトップボックスなどがある。図２に示すように、機器２１０は、アプリケーションプロセッサ２１２と、グラフィックス処理ユニット（ＧＰＵ）２２０と、システムメモリ２２６とを含み得る。機器２１０は、図２に示す構成要素に加えて、構成要素を含み得る。本開示の部分では、概して、アプリケーションプロセッサとＧＰＵの両方を利用するシステムに関する３Ｄ−Ｓ３Ｄ変換技法について説明するが、本開示で説明する技法は、必ずしもそのようなシステムに限定されるとは限らない。例えば、本開示の３Ｄ−Ｓ３Ｄ変換技法の一部は、幾つかの事例では、ＧＰＵなしにアプリケーションプロセッサによってのみ実行され得る。
【００２８】
アプリケーションプロセッサ２１２は、機器２１０の中央処理ユニット（ＣＰＵ）であり得る。ＧＰＵ２２０は、表示器上のプレゼンテーションのためのグラフィックスデータを出力するように動作可能な処理ユニットであり得る。アプリケーションプロセッサ２１２及びＧＰＵ２２０の例には、限定はしないが、デジタル信号プロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、あるいは他の等価な集積回路又は個別論理回路（discrete logic circuitry.）がある。
【００２９】
システムメモリ２２６はコンピュータ可読記憶媒体の一例であり得る。例えば、システムメモリ２２６は、本開示では、アプリケーションプロセッサ２１２とＧＰＵ２２０とに、各々に起因する機能を実行させる命令を記憶し得る。このようにして、システムメモリ２２６は、１つ以上のプロセッサ、例えば、アプリケーションプロセッサ２１２又はＧＰＵ２２０に様々な機能を実行させる命令を備えるコンピュータ可読記憶媒体と見なされ得る。
【００３０】
システムメモリ２２６の例には、限定はしないが、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、電気的消去可能ＲＯＭ（ＥＥＰＲＯＭ）、ＣＤ−ＲＯＭ又は他の光ディスク記憶装置、磁気ディスク記憶装置、又は他の磁気記憶装置、フラッシュメモリ、又は命令若しくはデータ構造の形態の所望のプログラムコードを搬送又は記憶するために使用され得、コンピュータ又はプロセッサによってアクセスされ得る、任意の他の媒体がある。システムメモリ２２６は、幾つかの例では、非一時的記憶媒体と見なされ得る。「非一時的」という用語は、記憶媒体が、搬送波又は伝搬信号では実施されないことを示し得る。ただし、「非一時的」という用語は、システムメモリ２２６が非可動であることを意味するものと解釈されるべきでない。一例として、システムメモリ２２６は、機器２１０から取り外され、別の機器に移され得る。別の例として、システムメモリ２２６と実質的に同様の記憶装置機器が、機器２１０中に挿入され得る。幾つかの例では、非一時的記憶媒体は、時間経過に伴って変動し得るデータを（例えば、ＲＡＭに）記憶し得る。
【００３１】
ＧＰＵ２２０は、固定機能パイプラインをもつＧＰＵの一例を示すが、本開示の技法はまた、プログラム可能な要素を含むＧＰＵを使用して実施され得る。ＧＰＵ２２０は、頂点プロセッサ２２２と画素プロセッサ２２４とを含む。頂点プロセッサ２２２は、頂点処理機能を実行するハードウェアユニットを含み得るが、画素プロセッサは、画素処理機能を実行するハードウェアユニットを含み得る。言い換えれば、頂点プロセッサ２２２と画素プロセッサ２２４とは、固定機能と最小機能的フレキシビリティとをもつハードウェアユニットを含み得る。しかしながら、前述のように、本開示の技法は、固定機能パイプラインをもつＧＰＵに限定されるものではない。
【００３２】
本開示で説明する例示的な技法は、ＡＰＩ呼を横取りし、修正ＡＰＩ呼を生成するためにＡＰＩ呼を修正するためにアプリケーションプロセッサ２１２によって実行されるソフトウェアアプリケーションを利用し得る。このソフトウェアアプリケーションをグラフィックスドライバラッパー２１６として図２に示す。修正ＡＰＩ呼を使用して、ＧＰＵ２２０はＳ３Ｄグラフィックスをレンダリングすることができる。
【００３３】
上記で説明したように、立体視ビューは、左眼画像と右眼画像とを含む。左眼画像と右眼画像とは、モノビュー画像として実質的に同様の画像コンテンツを含むが、しかしながら、左眼画像と右眼画像との１つ以上の対応する画素は、互いに対する水平軸上に沿って変位させられ得る。例えば、右眼画像が左眼画像の上に配置されることを考える。この場合、右眼画像中のコンテンツの全ては、左眼画像中の同等のコンテンツとともに完全に整列しないことがある。そうではなく、右眼における１つ以上の物体は、左眼画像中の同等の物体の左側又は右側にあり得る。
【００３４】
左眼画像は視聴者の左眼によって視認可能であり、右眼画像は視聴者の左眼から遮断される。右眼画像は視聴者の右眼によって視認可能であり、左眼画像は視聴者の右眼から遮断される。幾つかの例では、視聴者は、左眼画像が右眼によって視認可能であることを阻止し、右眼画像が左眼によって視認可能であることを阻止する特殊な眼鏡を着用し得る。しかしながら、本開示の態様は、必ずしも、視聴者に特殊な眼鏡を着用するように要求するとは限らない。例えば、幾つかの表示器は、立体視ビューを経験するために、視聴者に特殊な眼鏡を着用するように要求しない。本開示の技法は、そのような状況に拡張され得る。
【００３５】
視聴者が左眼画像と右眼画像の両方を同時に視認するときに、視聴者の脳が、視聴者に、２つの画像を表示している表示器の中から飛び出すか、表示器に押し込まれる画像を知覚させる（例えば、表示器の前方に、又は表示器の後ろにあるように見える）ように、ＧＰＵ２２０は、左眼画像と右眼画像とのためのグラフィックスデータを生成し得る。この飛び出すか、又は押し込まれることは、視聴者の脳が、実質的に同様のコンテンツをもつ立体視ビューの２つの画像中の水平方向不一致を解決することによる。
【００３６】
一例として、アプリケーションプロセッサ２１２は、システムメモリ２２６に記憶されたアプリケーション２３２など、１つ以上のアプリケーションを実行し得る。アプリケーション２３２の例には、限定はしないが、ウェブブラウザ、電子メールアプリケーション、スプレッドシート、ビデオゲーム、又は表示するための視認可能物体を生成する他のアプリケーションがある。例えば、アプリケーション２３２は、実行されたとき、表示器上に表示される３Ｄグラフィカルコンテンツを出力するビデオゲームであり得る。
【００３７】
アプリケーション２３２は、モノビューのために開発者によって設計され得る。例えば、アプリケーション２３２は、実行されると、３Ｄグラフィックスコンテンツを生成し得、３Ｄグラフィックスコンテンツは、表示器の２Ｄエリアに制限される。アプリケーション２３２は、アプリケーションプロセッサ２１２上で実行されると、生成された３Ｄグラフィックスコンテンツを三角形、矩形、又は他のタイプの多角形などの基本形に分割し得る。これらの基本形の各々は、表示器上に表示されるべき画素をレンダリングするために使用され得る。アプリケーション２３２はまた、アプリケーションプロセッサ２１２上で実行されると、基本形の頂点の各々についての画素値をレンダリングし得る。例えば、その値は、頂点の３Ｄ座標と、頂点のカラー値と、頂点の透過性値とを含み得る。その値は、本開示のあらゆる態様において上記の例示的な構成要素の全てを含む必要はない。
【００３８】
次いで、アプリケーションプロセッサ２１２は、更なる処理のために、頂点についての画素値をＧＰＵ２２０に転送し得る。例えば、アプリケーションプロセッサ２１２は、アプリケーションプロセッサ２１２上で実行されるソフトウェアであり得るグラフィックスドライバ２１４を含み得る。グラフィックスドライバ２１４は、コマンドをＧＰＵ２２０に送信するように設計され得、それに応答して、ＧＰＵ２２０は、受信したコマンドに従って機能を実行し得る。例えば、グラフィックスドライバ２１４は、ＧＰＵ２２０とアプリケーションプロセッサ２１２との間のインターフェースとして機能する。アプリケーションプロセッサ２１２がコマンドをＧＰＵ２２０に発行するとき、ＧＰＵ２２０がコマンドを受信するのは、グラフィックスドライバ２１４を通してである。例えば、アプリケーションプロセッサ２１２上で実行されるアプリケーション２３２は、ＧＰＵ２２０に、特定のタスクを実行するように命令し得る。この場合、グラフィックスドライバ２１４は、アプリケーション２３２から特定のタスクのための命令を受信し得、その命令をＧＰＵ２２０に与え得る。それに応答して、ＧＰＵ２２０はタスクを実行し得る。
【００３９】
幾つかの例では、グラフィックスドライバ２１４は特定のＡＰＩに従って設計され得る。例えば、グラフィックスドライバ２１４は、ＫｈｒｏｎｏｓグループのＡＰＩであるＯｐｅｎＧＬ又はＯｐｅｎＧＬ  ＥＳ（組込みシステム）ＡＰＩに従って設計され得、それらの仕様は公的に入手可能である。しかしながら、本開示の技法は、ＤｉｒｅｃｔＸ９、１０、又は１１など、マイクロソフトのＤｉｒｅｃｔＸシステム、又は他のグラフィックスシステム及びＡＰＩに拡張可能であり得る。説明のために、本開示の技法について、ＡＰＩがＯｐｅｎＧＬ  ＥＸ  １．１  ＡＰＩであるコンテキストにおいて説明する。しかしながら、本開示の態様は、そのように限定されず、他のＡＰＩ又はグラフィックスシステムに拡張され得る。
【００４０】
アプリケーションプロセッサ２１２から受信した基本形をレンダリングするために、ＧＰＵ２２０は、頂点プロセッサ２２２などの１つ以上の頂点プロセッサと、表示器の画素についての画素値を生成するための画素プロセッサ２２４などの１つ以上の画素プロセッサとを含み得る。ＧＰＵ２２０はまた、図示していない他の要素を含み得る。本開示の技法は、特定のＧＰＵアーキテクチャに限定されない。開発者は、頂点プロセッサ２２２と画素プロセッサ２２４との能力に応じて、及び説明のために本開示で使用されるＯｐｅｎＧＬ  ＥＸ  １．１  ＡＰＩなどのＡＰＩに応じてグラフィックスアプリケーションを開発し得る。
【００４１】
アプリケーション２３２は、基本形の頂点についての座標を生成し得る。これらの座標は、ワールド座標系と呼ばれることがあり、アプリケーション２３２に固有であり得る。言い換えれば、アプリケーション２３２によって定義された頂点の座標は、必ずしも、その上に基本形が表示される表示器の座標とは限らないことがあり、また場合によっては、可視領域の外部にある頂点についての座標であり得る。頂点プロセッサ２２２は、３Ｄであり得るワールド座標系を表示器の２Ｄ座標（例えば、表示座標）に変換するように設計され得る。この機能を実行するために、頂点プロセッサ２２２は、ワールド座標系を眼座標に変換し、次いでクリッピング座標に変換し得る。例えば、頂点プロセッサ２２２の出力は、実行されたとき、頂点のクリッピング座標であり得る。最終表示座標、例えば、表示器の座標は、その後画素プロセッサ２２４によって決定され得る。
【００４２】
クリッピング座標は視野錐台（view frustum）を定義し得る。視野錐台は、３Ｄグラフィックスコンテンツの可視領域を定義し得る。ＧＰＵ２２０は、視野錐台の外部に存在する画素を選別するために、視野錐台を利用し得る。例えば、（画素プロセス２２４などの）ＧＰＵ２２０の固定機能ユニットは、アプリケーション２３２によって生成されたクリッピング座標によって定義された視野錐台の外部に存在する画素を選別し得る。
【００４３】
ワールド座標系からクリッピング座標系を計算する式は、次の通りであり得る。
【数１】
0005882367.tif 000002
【００４４】
上式で、Ｖｃｌｉｐは頂点クリップ座標系であり、Ｖｅｙｅは頂点眼座標であり、Ｖｗｏｒｌｄは、アプリケーション２３２によって与えられる頂点ワールド座標系であり、ＰＲＪは射影行列であり、ＭＶＴはモデルビュー変換行列（又はワールドビュー変換行列）である。幾つかの例では、ＰＲＪ行列とＭＶＴ行列とは、式１で上記に示したモデルビュー射影行列又はＭＶＰと呼ばれることがある単一の行列に組み合わせられ得、ＭＶＰ＝ＰＲＪ＊ＭＶＴである。
【００４５】
射影行列（ＰＲＪ）及びモデルビュー、又はワールドビュー、変換行列（ＭＶＴ）は、ＡＰＩによって定義され得る。モデルビュー及びワールドビューという用語は、互換的に使用され得る。Ｖｃｌｉｐ、Ｖｅｙｅ、及びＶｗｏｒｌｄは、４つの成分（例えば、ｘ座標、ｙ座標、ｚ座標、及びｗ座標）を含み得る。例えば、Ｖｃｌｉｐ、Ｖｅｙｅ、及びＶｗｏｒｌｄは、次のように表され得る。
【数２】
0005882367.tif 000003
【００４６】
ＯｐｅｎＧＬ及びＯｐｅｎＧＬ  ＥＳ  ＡＰＩは、次のようにＰＲＪ行列を定義する。
【数３】
0005882367.tif 000004
【００４７】
上式で、Ｌ及びＲは、左垂直クリッピング平面及び右垂直クリッピング平面についての座標を指定し、Ｂ及びＴは、下部水平クリッピング平面及び上部水平クリッピング平面についての座標を指定し、ｚnear及びｚfarは、近い深度クリッピング平面及び遠い深度クリッピング平面までの距離を指定する。このようにして、Ｌ及びＲはビューポートの幅を指定するが、Ｂ及びＴはビューポートの高さを指定する。対称的ビューポートの場合、−ＬはＲに等しくなることができ、−ＢはＴに等しくなることができる。
【００４８】
幾つかの例では、クリッピング平面は対称的であり得る。例えば、−ＬはＲに等しくなることができ、−ＢはＴに等しくなることができる。これらの事例では、ＰＲＪ行列は次のように簡略化し得る。
【数４】
0005882367.tif 000005
【００４９】
ＯｐｅｎＧＬ及びＯｐｅｎＧＬ  ＥＳ  ＡＰＩは、次のようにＭＶＴ行列を定義する。
【数５】
0005882367.tif 000006
【００５０】
ＰＲＪ行列とＭＶＴ行列との変数の全ては、アプリケーションプロセッサ２１２上で実行されるアプリケーション２３２によって定義され得、グラフィックスドライバ２１４は、これらの変数を頂点プロセッサ２２２に与え得る。式１、式４、及び式５からわかるように、これらの変数を用いて、頂点プロセッサ２２２は、頂点の各々についてＶｃｌｉｐ座標を決定し得る。ＧＰＵ２２０は、表示のために画像をレンダリングするために、頂点についてのクリップ座標を利用し、更なる機能を実行し得る。このようにして、ＧＰＵ２２０は、アプリケーション２３２によって生成された３Ｄグラフィックスコンテンツのためのモノビューを生成し得る。
【００５１】
本開示で説明する１つ以上の例示的な技法では、アプリケーションプロセッサ２１２上で実行されるソフトウェアであり得るグラフィックスドライバラッパー２１６は、立体視ビューについてのクリッピング座標（例えば、左眼画像についてのクリッピング座標及び右眼画像についてのクリッピング座標）を定義するために、モノビューについてのクリッピング座標を定義するＡＰＩ呼を修正し得る。また、グラフィックスドライバラッパー２１６は、クリッピング座標を定義するＡＰＩ呼を修正することに加えて、立体視ビューについてのビューポートを定義するために、モノビューについてのビューポートを定義するＡＰＩ呼を修正し得る。例えば、アプリケーション２３２は、画像を表示する表示器上の単一の画像（例えば、モノビュー）のサイズ及び位置を定義し得る。グラフィックスドライバラッパー２１６は、単一の画像のサイズ及び位置を定義するＡＰＩ呼を、左眼画像と右眼画像とのサイズ及び位置を定義する修正ＡＰＩ呼（例えば、左眼画像についてのビューポートと右眼画像についてのビューポートとのための命令）に修正し得る。このようにして、グラフィックスドライバラッパー２１６は、モノビューのための単一のＡＰＩ呼を横取りし、左ビューと右ビューの両方のための修正ＡＰＩ呼を生成し得る。
【００５２】
グラフィックスドライバラッパー２１６がＡＰＩ呼を修正することができる方法の一例として、グラフィックスドライバラッパーは、上記で説明したＰＲＪとＭＶＴとについての変数をもつＡＰＩ呼を横取りすることができる。上記で説明したように、ＰＲＪとＭＶＴとについての変数は、クリッピング座標Ｖｃｌｉｐをもつモノ３Ｄビューをレンダリングするために、ＧＰＵ２２０によって使用され得る。グラフィックスドライバラッパー２１６は、クリッピング座標Ｖｃｌｉｐleft_eyeをもつ左画像とクリッピング座標Ｖｃｌｉｐright_eyeをもつ右画像とを生成するようにＡＰＩ呼を修正することができる。
【００５３】
上記で式（１）に示すように、Vclip=PRJ*Veye=PRJ*MVT*Vworldである。Ｖｃｌｉｐについての式は、左眼についてのクリッピング座標と右眼についてのクリッピング座標とを生成するように修正され得る。例えば、左眼と右眼とについてのクリッピング座標は、次の通りであり得る。
【数６】
0005882367.tif 000007
【数７】
0005882367.tif 000008
【００５４】
ＶＴleft_eye及びＶＴright_eyeは、モノビューからの左眼と右眼との仮定された距離に基づく４×４ビュー変換行列であり得る。例えば、モノビューの座標が（０，０，０）であると仮定される場合、左眼は、（−Ｄ，０，０）に位置すると見なされ得、右眼は、（Ｄ，０，０）に位置すると見なされ得る。言い換えれば、（０，０，０）位置は、視聴者の右眼と左眼との中間にあるものと見なされ得る。左眼が、右眼と左眼との中間から−Ｄだけ離れて位置すると見なされ、右眼が、右眼と左眼との中間から＋Ｄだけ離れて位置すると見なされる場合、Ｄは、視聴者の右眼と左眼との間の距離の１／２を示す。
【００５５】
ＶＴleft_eye及びＶＴright_eyeのためのビュー変換行列は、次のように定義され得る。
【数８】
0005882367.tif 000009
【数９】
0005882367.tif 000010
【００５６】
ＶＴleft_eye及びＶＴright_eyeは、２つの行列の和として書き直され得る。例えば、ＶＴleft_eyeは、次のように書き直され得る。
【数１０】
0005882367.tif 000011
【００５７】
ＶＴright_eyeは、次のように書き直され得る。
【数１１】
0005882367.tif 000012
【００５８】
ＶＴleft_eye行列をＶｃｌｉｐleft_eyeについての式（式６）に置換することによって、Ｖｃｌｉｐleft_eyeは、次の式に等しくなる。
【数１２】
0005882367.tif 000013
【００５９】
ＶＴright_eye行列をＶｃｌｉｐright_eyeについての式（式７）に置換することによって、Ｖｃｌｉｐright_eyeは、次の式に等しくなる。
【数１３】
0005882367.tif 000014
【００６０】
式１０と式１１の両方において、例えば、Ｖｃｌｉｐleft_eye及びＶｃｌｉｐright_eyeについては次の通りである。
【数１４】
0005882367.tif 000015
【００６１】
式１で上述したように、ＰＲＪ＊ＭＶＴ＊Ｖｗｏｒｌｄは、ＭＶＰ＊Ｖｗｏｒｌｄに等しい。したがって、Ｖｃｌｉｐleft_eye及びＶｃｌｉｐright_eyeの式（例えば、それぞれ、式１０及び式１１）は、次のように書き直され得る。
【数１５】
0005882367.tif 000016
【００６２】
及び
【数１６】
0005882367.tif 000017
【００６３】
ＰＲＪ（式３又は式４）及びＭＶＴ（式５）のための行列を置換し、式１０の行列乗算を実行することによって、Ｖｃｌｉｐleft_eyeについての式は、次のように簡略化し得る。
【数１７】
0005882367.tif 000018
【００６４】
より詳細には、次の通りである。
【数１８】
0005882367.tif 000019
【００６５】
Ｖｃｌｉｐleft_eyeについての置換と同様の置換を用いて、Ｖｃｌｉｐright_eyeの式は、次のように簡略化し得る。
【数１９】
0005882367.tif 000020
【００６６】
上記で説明した左ビュー変換行列（ＶＴleft_eye）を使用して、グラフィックスドライバラッパー２１６は、左眼３Ｄ画像を生成するために、３Ｄ画像のためのＡＰＩ呼を修正することができる。同様に、上記で説明した右ビュー変換行列（ＶＴright_eye）を使用して、グラフィックスドライバラッパー２１６は、右眼３Ｄ画像を生成するために、３Ｄ画像のためのＡＰＩ呼を修正することができる。左眼３Ｄ画像と右眼３Ｄ画像とを同時に表示することによって、機器２１０は、Ｓ３Ｄ画像をレンダリングすることができる。
【００６７】
式７〜式１６に関して上記で説明した技法は、ＡＰＩ呼を修正することによって、ＧＰＵ２２０又はグラフィックスドライバ２１４への修正なしに実施され得る。式７〜式１６に関して説明した技法は、錐台独立Ｓ３Ｄレンダリング近似（frustum-independent S3D rendering approximation）のために使用され得る。説明した技法は、それらが、ｇｌＦｒｕｓｔｕｍ（）呼中に含まれ得るパラメータなどの特定の錐台パラメータの知識を必要としないので、錐台独立であると見なされる。本開示の技法は、右ビューと左ビューとについて、それぞれ、Ｄ及びＤだけ視認位置をシフトすることを除いて、Ｖｃｌｉｐleft_eyeとＶｃｌｉｐright_eyeとを決定するときに、元のコンテンツによって定義された同じ視野錐台を使用することを含む。各眼について平行な視認方向を仮定した結果として、左ビュー変換と右ビュー変換の両方は、式８ａ及び式８ｂと、式９ａ及び式９ｂとに関して上記で説明したように、水平方向でのシフトをもつ単位行列に近いと仮定され得る。同じ射影行列（例えば、上記の式３又は式４のいずれかによって説明したＰＲＪ）は、左眼と右眼の両方について決定及び使用され得る。本開示の技法に従ってＳ３Ｄ画像を作成するために、ＰＲＪ又はＰＲＪについての実効値を決定するために使用されるパラメータを知ることは必要でない。同様に、本開示の技法によれば、ＭＶＴ又はＭＶＴについての実効値を決定するために使用されるパラメータを知ることは必要でない。ＰＲＪ及びＭＶＴがどんなパラメータを含んでいるとしても、パラメータは、１つの行列、即ちＭＶＰとして扱われ得る。Ｓ３Ｄ画像を作成するために、定数、即ち２＊Ｚnear＊Ｄ／（Ｒ−Ｌ）は、ＭＶＰ行列の第１の行及び第４の列における要素に加算されるか、又はそれから減算され得る。所与の３Ｄコンテンツについて、Ｚnear／（Ｒ−Ｌ）の値は、定数であり得る。したがって、Ｚnear／（Ｒ−Ｌ）をＤと組み合わせることにより、更に定数を生じる。幾つかの実施形態では、異なる定数は、正しく快適なＳ３Ｄ効果を作成する定数を見つけるまで試みられ得る。ＭＶＰのみが修正されるので、本開示の技法は、ＰＲＪとＭＶＴとについて別個の行列を受信して又は受信せずに動作することができる。
【００６８】
図３Ａに示すように、表示平面３３０上にレンダリングされるときに、左画像３２０の一部分と、右画像３１０の一部分とは最終Ｓ３Ｄ画像からクロップされ得る。明快のために、図３Ａは、表示平面３３０のわずかに前の左画像３２０と、表示平面３３０のわずかに後ろの右画像３１０とを示す。しかしながら、これは、左画像３２０と右画像３１０とが表示平面３３０上に実際にレンダリングされるように図３Ａを作成することにすぎない。同じ視野錐台が左画像３２０と右画像３１０とを生成するために使用されるように、Ｓ３Ｄ画像のゼロ視差平面（ＺＤＰ：zero disparity plane）は、表示平面３３０の前にあるように見えることがあり、視聴者に、飛び出し効果（popped out effect）を知覚させる。以下で更に詳細に説明するように、左眼画像と右眼画像とのビューポートオフセットをシフトすることによって、この効果は逆転させられ得る。
【００６９】
幾つかの実施形態では、左眼画像と右眼画像とのビューポートオフセットに適用されるシフトの量は、ユーザ入力パラメータに基づき得る。対称的射影行列（symmetrical projection matrix）と、平行な視認方向と、ビューポートオフセットのシフトとを使用することによって、Ｓ３Ｄ画像のための左眼ビューと右眼ビューとを生成することを含む本開示の技法は、幾つかの事例では、ランタイム環境において高品質Ｓ３Ｄ画像をレンダリングすることができ、表示器の２Ｄエリアによって制限された画像を視認することと比較して、よりリッチでより完全な経験であるＳ３Ｄ経験を視聴者に提供できる。
【００７０】
図３Ｂに、物体（物体Ａ）が、本開示で説明する技法を使用してシフトされ得る方法の一例を示す。図３Ｂに、対応するビューポートシフトをもつＺＤＰ変化の図を示す。図３Ｂにおいて、ライン３０１Ａ及び３０１Ｂは、ビューポートシフトより前の右眼ビューポートを表し、ライン３０３Ａ及び３０３Ｂは、ビューポートシフトの後の右眼ビューポートを表す。ライン３０２Ａ及び３０２Ｂは、ビューポートシフトの前の左眼ビューポートを表し、ライン３０４Ａ及び３０４Ｂは、ビューポートシフトの後のビューポートを表す。ビューポートのシフトの深度変化の数学的関係は、次のように導出され得る。
【００７１】
Δは、ポイントＡに位置する物体の射影ビューポート距離の１／２を示し、
ＶＰsは、ビューポートについてのビューポートシフト量を示し、
Ｅは、眼間隔の１／２の距離を示す。
【００７２】
第１に、点Ａ、点Ａ’ならびに左眼の位置及び右眼の位置の三角法に基づいて、次のようになる。
【数２０】
0005882367.tif 000021
【数２１】
0005882367.tif 000022
【００７３】
上記の式１７と式１８とを組み合わせて、ビューポートシフトの後の視聴者空間における物体距離は、次のように導出され得る。
【数２２】
0005882367.tif 000023
【００７４】
上記の式１９に基づいて、視聴者空間における新しいＺＤＰ位置を式２０に基づいて得ることができる。
【数２３】
0005882367.tif 000024
【００７５】
図４は、図２の例示的な機器を更に詳細に示すブロック図である。例えば、図４に、図２の機器２１０を更に詳細に示す。例えば、上記のように、機器２１０の例には、限定はしないが、モバイルワイヤレス電話、ＰＤＡ、ビデオ表示器を含むビデオゲーミングコンソール、モバイルビデオ会議ユニット、ラップトップコンピュータ、デスクトップコンピュータ、テレビジョンセットトップボックスなどがある。
【００７６】
図４に示すように、機器２１０は、アプリケーションプロセッサ４１２と、ＧＰＵ４２０と、フレームバッファ４５２を含むシステムメモリ４２６と、トランシーバモジュール４５６と、ユーザインターフェース４５８と、表示器４６０と、表示プロセッサ４６２とを含み得る。アプリケーションプロセッサ４１２、ＧＰＵ、及びシステムメモリ４２６は、それぞれ、図２のアプリケーションプロセッサ２１２、ＧＰＵ２２０、及びシステムメモリ２２６と実質的に同様であり得る。簡潔のために、図４に示したが図２に示されていない構成要素のみについて、詳細に説明する。
【００７７】
図４に示す機器２１０は、明快のために図４に示されていない追加のモジュール又はユニットを含み得る。例えば、機器２１０は、機器２１０がモバイルワイヤレス電話である例において電話通信を実現するために、そのいずれも図４に示されていないスピーカー及びマイクロフォン、又は機器２１０がメディアプレーヤであるスピーカーを含み得る。更に、機器２１０に示す様々なモジュール及びユニットは、機器２１０のあらゆる例において必要であるとは限らない。例えば、ユーザインターフェース４５８及び表示器４６０は、機器２１０がデスクトップコンピュータ、又は外部ユーザインターフェース又は表示器とインターフェースする能力がある他の機器である例において、機器２１０の外部にあり得る。
【００７８】
ユーザインターフェース４５８の例には、限定はしないが、トラックボール、マウス、キーボード、及び他のタイプの入力機器がある。ユーザインターフェース４５８はまた、タッチスクリーンであり得、表示器４６０の一部として組み込まれ得る。トランシーバモジュール４５６は、機器４１０と別の機器又はネットワークとの間のワイヤレス又はワイヤード通信を可能にするための回路を含み得る。トランシーバモジュール４６は、ワイヤード又はワイヤレス通信のための変調器、復調器、増幅器及び他のそのような回路を含み得る。表示器４６０は、液晶表示器（ＬＣＤ）、有機発光ダイオード表示器（ＯＬＥＤ）、陰極線管（ＣＲＴ）表示器、プラズマ表示器、分極表示器、又は別のタイプの表示器機器を備え得る。
【００７９】
表示器プロセッサ４６２は、表示器４６０に立体視ビューを表示させるように構成され得る。表示器プロセッサ４６２が表示器４６０に立体視ビューを表示させるために利用し得る様々な技法があり得、本開示の態様は、これらの技法のいずれかを利用し得る。例えば、表示器プロセッサ４６２は、立体視ビューを与えるために、フレームバッファ４５２の左半分から左眼画像を取り出し、フレームバッファ４５２の右半分から右眼画像を取り出し、２つの画像を互いにインターリーブし得る。
【００８０】
別の例として、表示器プロセッサ４６２は、表示器４６０のリフレッシュ速度を制御し得る。この例では、各リフレッシュサイクル中に、表示器プロセッサ４６２は、左眼画像と右眼画像との間で循環し得る。例えば、表示器プロセッサ４６２は、フレームバッファ４５２の左半分から左眼画像を取り出し、表示器４６０の全体に左眼画像を拡張し、１つのリフレッシュサイクルの間表示器４６０上に左眼画像を表示し得る。次いで、次のリフレッシュサイクルの間、表示器プロセッサ４６２は、フレームバッファ４５２の右半分に記憶された右眼画像がなければ、実質的に同様の機能を実行し得る。言い換えれば、表示器４６０は、左眼画像を表示し、次いで右眼画像を表示し、次いで左眼画像を表示し得、以下同様である。
【００８１】
視聴者は、表示器プロセッサ４６２のリフレッシュ速度と同期する特殊な眼鏡を着用していることがある。例えば、表示器４６０が左眼画像を表示している間、特殊な眼鏡は、視聴者の左眼のみが左眼画像をキャプチャするように右レンズをシャッタークローズし得る。次いで、表示器４６０が右眼画像を表示している間、特殊な眼鏡は、視聴者の右眼のみが右眼画像をキャプチャするように左レンズをシャッタークローズし得、以下同様である。リフレッシュ速度が十分に速い場合、視聴者は、画像が表示器４６０から飛び出し３Ｄボリュームを包含する立体視ビューを知覚する。
【００８２】
幾つかの例では、幾つかの従来の表示器プロセッサは、表示器４６０に立体視ビューを表示させるように構成されないことがある。これらの例では、視聴者は、機器２１０を、表示器に立体視ビューを提示させるように構成された、表示器プロセッサ４６２などの表示器プロセッサを含む表示器に結合し得る。例えば、視聴者は、機器２１０を、トランシーバモジュール４５６を介して立体視ビュー対応テレビジョンに結合し得る。例えば、視聴者は、トランシーバモジュール４５６を、高解像度マルチメディアインターフェース（ＨＤＭＩ（登録商標））ワイヤを介してテレビジョンに結合し得る。この例では、アプリケーションプロセッサ４１２又はＧＰＵ４２０は、トランシーバモジュール４５６に、フレームバッファ４５２に記憶された画素値をテレビジョンの表示器プロセッサに送信するように命令し得る。次いで、このテレビジョンの表示器プロセッサは、テレビジョンに、立体視ビューを形成するように左眼画像と右眼画像とを表示させ得る。
【００８３】
これらの例では、機器２１０の表示器が左眼画像と右眼画像とを表示することは、依然として可能であり得る。しかしながら、機器２１０の表示器プロセッサ４６２が、機器４１０の表示器４６０に立体視ビューを提示させることが可能でないことがあるので、この例では、表示器４６０は、左眼画像と右眼画像とを並列に表示し得る。例えば、表示器４６０の左半分は左眼画像を表示し得、表示器４６０の右半分は右眼画像を表示し得る。これは、上記で説明したビューポート変換のためであり得る。この場合、特殊な眼鏡を用いた場合でも、視聴者は、単に表示器４６０を視認することによって立体視ビューを経験し得ないが、立体視ビュー対応テレビジョンを視聴することによって立体視ビューを経験することになる。
【００８４】
図５は、本開示で説明する１つ以上の例示的な技法による例示的な３Ｄ−Ｓ３Ｄ変換動作を示すフローチャートである。上記で説明したように、図５の技法を含む、本開示で説明する３Ｄ−Ｓ３Ｄ変換技法は、上記で説明した図２及び図４の機器２１０など、ＧＰＵをもつシステムによって実行され得る。
【００８５】
図５の技法によれば、図２のグラフィックスドライバラッパー２１４などのグラフィックスドライバラッパーは、ＡＰＩ呼を横取りする（５１０）。ＡＰＩ呼は、例えば、３Ｄグラフィックスコンテンツ（即ち、非立体視３Ｄコンテンツ）を生成するように構成されたアプリケーションからであり得る。ＡＰＩ呼から、グラフィックスドライバラッパー２１６は、３Ｄコンテンツのためのモデルビュー射影行列を決定する（５２０）。上記で説明したように、モデルビュー射影行列のエントリについての値は、それらの値を決定するために使用される個々のパラメータが特に知られていない場合でも決定され得る。幾つかの事例では、グラフィックスドライバラッパー２１６は、上記で説明したようにＰＲＪ＊ＭＶＴに基づいてモデルビュー射影行列を決定し得る。しかしながら、他の例では、ＰＲＪ及びＭＶＴは、グラフィックスドライバラッパー２１６に知られていないことがある。グラフィックスドライバラッパー２１６は、修正モデルビュー射影行列を生成するためにモデルビュー射影行列を修正する（５３０）。
【００８６】
グラフィックスドライバラッパー２１６は、修正モデルビュー射影行列に基づいて左ビュークリッピング座標を生成する（５４０）。左ビュークリッピング座標は、例えば、上記で説明した式６に従って決定され得、ただし、ＰＲＪ＊ＭＶＴはＭＶＰに等しい。グラフィックスドライバラッパー２１６は、修正モデルビュー射影行列に基づいて右ビュークリッピング座標を生成する（５５０）。右ビュークリッピング座標は、例えば、上記で説明した式７に従って決定され得、ただし、ＰＲＪ＊ＭＶＴ＝ＭＶＰである。ＧＰＵ２２０は、左ビュークリッピング座標に基づいて左ビューを生成し（５６０）、ＧＰＵ２２０は、右ビュークリッピング座標に基づいて右ビューを生成する（５７０）。ＧＰＵ２２０は、左ビューと右ビューとに基づいてＳ３Ｄ画像をレンダリングする（５８０）。表示器上にレンダリングする前に、ＧＰＵ２２０は、左ビューにビューポートシフトを適用し、右ビューにビューポートシフトを適用することができる。
【００８７】
１つ以上の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組合せで実施され得る。ソフトウェアで実施した場合、機能は、１つ以上の命令又はコードとしてコンピュータ可読媒体上に記憶され得る。コンピュータ可読媒体はコンピュータデータ記憶媒体を含み得る。データ記憶媒体は、本開示で説明した技法の実施のための命令、コード及び／又はデータ構造を取り出すために１つ以上のコンピュータあるいは１つ以上のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。限定ではなく、例として、そのようなコンピュータ可読媒体は、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ又は他の光ディスク記憶装置、磁気ディスク記憶装置又は他の磁気記憶装置機器、あるいは命令又はデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。本明細書で使用するディスク（disk）及びディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザーディスク（登録商標）（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）及びブルーレイ（登録商標）ディスク（disc）を含み、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
【００８８】
コードは、１つ以上のデジタル信号プロセッサ（ＤＳＰ）などの１つ以上のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、あるいは他の等価な集積回路又はディスクリート論理回路によって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、又は本明細書で説明した技法の実施に好適な他の構造のいずれかを指し得る。また、本技法は、１つ以上の回路又は論理要素中に十分に実施され得る。
【００８９】
本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）、又はＩＣのセット（例えば、チップセット）を含む、多種多様な機器又は装置において実施され得る。本開示では、開示する技法を実行するように構成された機器の機能的態様を強調するために様々な構成要素、モジュール、又はユニットについて説明したが、それらの構成要素、モジュール、又はユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェア及び／又はファームウェアとともに、上記で説明した１つ以上のプロセッサを含めて、ハードウェアユニットにおいて組み合わせられるか、又は相互動作ハードウェアユニットの集合によって与えられ得る。
【００９０】
様々な例について説明した。これら及び他の例は以下の特許請求の範囲内に入る。
以下に本件出願当初の特許請求の範囲に記載された発明を付記する。
［１］  非立体視３次元（３Ｄ）コンテンツを立体視３Ｄ（Ｓ３Ｄ）コンテンツに変換する方法であって、アプリケーションプログラムインターフェース（ＡＰＩ）呼を横取りすることと、前記ＡＰＩ呼から、前記非立体視３Ｄコンテンツのためのモデルビュー射影行列を決定することと、修正モデルビュー射影行列を生成するために前記モデルビュー射影行列を修正することと、前記修正モデルビュー射影行列に基づいて、左ビュークリッピング座標を生成することと、前記修正モデルビュー射影行列に基づいて、右ビュークリッピング座標を生成することと、前記左ビュークリッピング座標に基づいて、左ビューを生成することと、前記右ビュークリッピング座標に基づいて、右ビューを生成することと、前記左ビューと前記右ビューとに基づいて、Ｓ３Ｄ画像をレンダリングすることとを備える方法。
［２］  前記左ビューにビューポートシフトを適用することと、前記右ビューにビューポートシフトを適用することとを更に備える、請求項１に記載の方法。
［３］  前記左ビューへの前記ビューポートシフトについての量と、前記右ビューへの前記ビューポートシフトについての量とが、１つ以上のユーザ入力パラメータに基づいて決定される、請求項２に記載の方法。
［４］  前記左ビューへの前記ビューポートシフトについての量と、前記右ビューへの前記ビューポートシフトについての量とが、前に生成された画像のシーンについての深度範囲を決定することに基づいて決定される、請求項２に記載の方法。
［５］  前記修正モデルビュー射影行列を生成するために前記モデルビュー射影行列を修正することが、前記モデルビュー射影行列に定数を加算することを備える、請求項１に記載の方法。
［６］  前記定数が、前記モデルビュー射影行列の第１の行、第４の列における要素に加算される、請求項５に記載の方法。
［７］  前記モデルビュー射影行列が前記非立体視３Ｄコンテンツについて定義される、請求項１に記載の方法。
［８］  システムコマンドを受信することを更に備え、前記システムコマンドは、３ＤコンテンツがＳ３Ｄコンテンツに変換される動作モードを可能にする、請求項１に記載の方法。
［９］  前記左ビュークリッピング座標を生成するために使用される前記修正モデルビュー射影行列についての値が、前記右ビュークリッピング座標を生成するために使用される前記修正モデルビュー射影行列についての値と同じである、請求項１に記載の方法。
［１０］  命令を記憶するメモリと、グラフィックス処理ユニット（ＧＰＵ）と、前記命令の実行時に、アプリケーションプログラムインターフェース（ＡＰＩ）呼を横取りすることと、前記ＡＰＩ呼から、非立体視３Ｄコンテンツのためのモデルビュー射影行列を決定することと、修正モデルビュー射影行列を生成するために前記モデルビュー射影行列を修正することと、前記ＧＰＵに、前記修正モデルビュー射影行列に基づいて左ビュークリッピング座標を生成させることと、前記ＧＰＵに、前記修正モデルビュー射影行列に基づいて右ビュークリッピング座標を生成させることと、前記ＧＰＵに、前記左ビュークリッピング座標に基づいて左ビューを生成させることと、前記ＧＰＵに、前記右ビュークリッピング座標に基づいて右ビューを生成させることと、前記ＧＰＵに、前記左ビューと前記右ビューとに基づいてＳ３Ｄ画像をレンダリングさせることとを行うように動作可能なプロセッサとを備える装置。
［１１］  前記プロセッサが、前記ＧＰＵに、前記左ビューにビューポートシフトを適用することと、前記右ビューにビューポートシフトを適用することとを行わせるように更に動作可能である、請求項１０に記載の装置。
［１２］  前記左ビューへの前記ビューポートシフトについての量と、前記右ビューへの前記ビューポートシフトについての量とが、１つ以上のユーザ入力パラメータに基づいて決定される、請求項１１に記載の装置。
［１３］  前記左ビューへの前記ビューポートシフトについての量と、前記右ビューへの前記ビューポートシフトについての量とが、前に生成された画像のシーンについての深度範囲を決定することに基づいて決定される、請求項１１に記載の装置。
［１４］  前記プロセッサが、前記モデルビュー射影行列に定数を加算することによって前記モデルビュー射影行列を修正する、請求項１０に記載の装置。
［１５］  前記定数が、前記モデルビュー射影行列の第１の行、第４の列における要素に加算される、請求項１４に記載の装置。
［１６］  前記モデルビュー射影行列が前記非立体視３Ｄコンテンツについて定義される、請求項１０に記載の装置。
［１７］  前記プロセッサが、システムコマンドを受信することを行うように更に動作可能であり、前記システムコマンドは、３ＤコンテンツがＳ３Ｄコンテンツに変換される動作モードを可能にする、請求項１０に記載の装置。
［１８］  前記左ビュークリッピング座標を生成するために使用される前記修正モデルビュー射影行列についての値が、前記右ビュークリッピング座標を生成するために使用される前記修正モデルビュー射影行列についての値と同じである、請求項１０に記載の装置。
［１９］  非立体視３次元（３Ｄ）コンテンツを立体視３Ｄ（Ｓ３Ｄ）コンテンツに変換するための装置であって、アプリケーションプログラムインターフェース（ＡＰＩ）呼を横取りするための手段と、前記ＡＰＩ呼から、前記非立体視３Ｄコンテンツのためのモデルビュー射影行列を決定するための手段と、修正モデルビュー射影行列を生成するために前記モデルビュー射影行列を修正するための手段と、前記修正モデルビュー射影行列に基づいて左ビュークリッピング座標を生成するための手段と、前記修正モデルビュー射影行列に基づいて右ビュークリッピング座標を生成するための手段と、前記左ビュークリッピング座標に基づいて左ビューを生成するための手段と、前記右ビュークリッピング座標に基づいて右ビューを生成するための手段と、前記左ビューと前記右ビューとに基づいてＳ３Ｄ画像をレンダリングするための手段とを備える装置。
［２０］  前記左ビューにビューポートシフトを適用するための手段と、前記右ビューにビューポートシフトを適用するための手段とを更に備える、請求項１９に記載の装置。
［２１］  前記左ビューへの前記ビューポートシフトについての量と、前記右ビューへの前記ビューポートシフトについての量とが、１つ以上のユーザ入力パラメータに基づいて決定される、請求項２０に記載の装置。
［２２］  前記左ビューへの前記ビューポートシフトについての量と、前記右ビューへの前記ビューポートシフトについての量とが、前に生成された画像のシーンについての深度範囲を決定することに基づいて決定される、請求項２０に記載の装置。
［２３］  前記修正モデルビュー射影行列を生成するために前記モデルビュー射影行列を修正するための手段が、前記モデルビュー射影行列に定数を加算するための手段を備える、請求項１９に記載の装置。
［２４］  前記定数を加算するための手段が、前記定数を、前記モデルビュー射影行列の第１の行、第４の列における要素に加算する、請求項２３に記載の装置。
［２５］  前記モデルビュー射影行列が前記非立体視３Ｄコンテンツについて定義される、請求項１９に記載の装置。
［２６］  システムコマンドを受信するための手段を更に備え、前記システムコマンドは、３ＤコンテンツがＳ３Ｄコンテンツに変換される動作モードを可能にする、請求項１９に記載の装置。
［２７］  前記左ビュークリッピング座標を生成するために使用される前記修正モデルビュー射影行列についての値が、前記右ビュークリッピング座標を生成するために使用される前記修正モデルビュー射影行列についての値と同じである、請求項１９に記載の装置。
［２８］  実行されたとき、１つ以上のプロセッサに、アプリケーションプログラムインターフェース（ＡＰＩ）呼を横取りすることと、前記ＡＰＩ呼から、前記非立体視３Ｄコンテンツのためのモデルビュー射影行列を決定することと、修正モデルビュー射影行列を生成するために前記モデルビュー射影行列を修正することと、前記修正モデルビュー射影行列に基づいて、左ビュークリッピング座標を生成することと、前記修正モデルビュー射影行列に基づいて、右ビュークリッピング座標を生成することと、前記左ビュークリッピング座標に基づいて、左ビューを生成することと、前記右ビュークリッピング座標に基づいて、右ビューを生成することと、前記左ビューと前記右ビューとに基づいて、Ｓ３Ｄ画像をレンダリングすることとを行わせる命令を記憶したコンピュータ可読記憶媒体。
［２９］  実行されたとき、前記１つ以上のプロセッサに、前記左ビューにビューポートシフトを適用することと、前記右ビューにビューポートシフトを適用することとを行わせる更なる命令を記憶した、請求項２８に記載のコンピュータ可読記憶媒体。
［３０］  前記左ビューへの前記ビューポートシフトについての量と、前記右ビューへの前記ビューポートシフトについての量とが、１つ以上のユーザ入力パラメータに基づいて決定される、請求項２９に記載のコンピュータ可読記憶媒体。
［３１］  前記左ビューへの前記ビューポートシフトについての量と、前記右ビューへの前記ビューポートシフトについての量とが、前に生成された画像のシーンについての深度範囲を決定することに基づいて決定される、請求項２９に記載のコンピュータ可読記憶媒体。
［３２］  前記１つ以上のプロセッサが、前記モデルビュー射影行列に定数を加算することによって前記モデルビュー射影行列を修正する、請求項２８に記載のコンピュータ可読記憶媒体。
［３３］  前記定数が、前記モデルビュー射影行列の第１の行、第４の列における要素に加算される、請求項３２に記載のコンピュータ可読記憶媒体。
［３４］  前記モデルビュー射影行列が前記非立体視３Ｄコンテンツについて定義される、請求項２８に記載のコンピュータ可読記憶媒体。
［３５］  実行されたとき、前記１つ以上のプロセッサに、システムコマンドを受信することを行わせる更なる命令を記憶し、前記システムコマンドは、３ＤコンテンツがＳ３Ｄコンテンツに変換される動作モードを可能にする、請求項２８に記載のコンピュータ可読記憶媒体。
［３６］  前記左ビュークリッピング座標を生成するために使用される前記修正モデルビュー射影行列についての値が、前記右ビュークリッピング座標を生成するために使用される前記修正モデルビュー射影行列についての値と同じである、請求項２８に記載のコンピュータ可読記憶媒体。
【図１】
0005882367.tif 000025
【図２】
0005882367.tif 000026
【図３Ａ】
0005882367.tif 000027
【図３Ｂ】
0005882367.tif 000028
【図４】
0005882367.tif 000029
【図５】
0005882367.tif 000030