(57)【要約】【課題】水平方向に視差を有する立体画像と垂直方向に視差を有する立体画像とを切り替えて描画できる立体画像描画装置、立体画像描画方法および立体画像描画プログラムを提供する。【解決手段】本発明の一態様に係る立体画像描画装置は、互いに異なる第１ないし第３の方向で表わされる座標空間に配置されたオブジェクトの座標成分を記憶する記憶部と、第１または第２のいずれかの方向に視差を有するオブジェクトの立体画像を表示する表示部と、表示部が第１または第２のいずれの方向に視差を有するかを検出する検出部と、検出部での検出結果が第１の方向である場合、オブジェクトを第１の方向に平行投影し、検出部での検出結果が第２の方向である場合、オブジェクトを第２の方向に平行投影する投影演算部と、を具備する。【選択図】図２
2010182094.tif 000002
【特許請求の範囲】
【請求項１】
互いに異なる第１ないし第３の方向で表わされる座標空間に配置されたオブジェクトの座標成分を記憶する記憶部と、
前記第１または前記第２のいずれかの方向に視差を有するオブジェクトの立体画像を表示する表示部と、
前記表示部が前記第１または前記第２のいずれの方向に視差を有するかを検出する検出部と、
前記検出部での検出結果が前記第１の方向である場合、前記オブジェクトを前記第１の方向に平行投影し、前記検出部での検出結果が前記第２の方向である場合、前記オブジェクトを前記第２の方向に平行投影する投影演算部と、
を具備することを特徴する立体画像描画装置。
【請求項２】
前記投影演算部は、
前記検出部での検出結果が前記第１の方向である場合、前記投影行列を乗算後の前記オブジェクトの座標成分のうち前記第１の方向に対応する座標成分を逆透視演算した後、前記オブジェクトの各座標成分を透視除算し、
前記検出部での検出結果が前記第２の方向である場合、前記投影行列を乗算後の前記オブジェクトの座標成分のうち、前記第２の方向に対応する座標成分を逆透視演算した後、前記オブジェクトの各座標成分を透視除算する第２の透視演算部をさらに具備することを特徴とする請求項１に記載の立体画像描画装置。
【請求項３】
前記投影演算部は、
前記検出部での検出結果が前記第１の方向である場合、前記オブジェクトを前記第１の方向に平行投影し、前記第２、第３の方向に透視投影する第１の投影行列を前記オブジェクトの各座標成分に乗算し、
前記検出部での検出結果が前記第２の方向である場合、前記オブジェクトを前記第２の方向に平行投影し、前記第１、第３の方向に透視投影する第２の投影行列を前記オブジェクトの各座標成分に乗算する投影行列乗算部を具備することを特徴とする請求項１に記載の立体画像描画装置。
【請求項４】
前記投影演算部は、
前記検出部での検出結果が前記第１の方向である場合、前記投影行列を乗算後の前記オブジェクトの座標成分のうち、前記第２、第３の方向に対応する座標成分を透視演算し、
前記検出部での検出結果が前記第２の方向である場合、前記投影行列を乗算後の前記オブジェクトの座標成分のうち、前記第１、第３の方向に対応する座標成分を透視演算する第１の透視演算部をさらに具備することを特徴とする請求項３に記載の立体画像描画装置。
【請求項５】
記憶部に記憶された互いに異なる第１ないし第３の方向で表わされる座標空間に配置されたオブジェクトの立体画像を表示するステップと、
前記オブジェクトの立体画像が前記第１または前記第２のいずれの方向に視差を有するかを検出するステップと、
前記検出部での検出結果が前記第１の方向である場合、前記オブジェクトを前記第１の方向に平行投影し、前記検出部での検出結果が前記第２の方向である場合、前記オブジェクトを前記第２の方向に平行投影するステップと、
を具備することを特徴する立体画像描画方法。
【請求項６】
コンピュータを、
互いに異なる第１ないし第３の方向で表わされる座標空間に配置されたオブジェクトの座標成分を記憶する記憶部と、
前記第１または前記第２のいずれかの方向に視差を有するオブジェクトの立体画像を表示する表示部と、
前記表示部が前記第１または前記第２のいずれの方向に視差を有するかを検出する検出部と、
前記検出部での検出結果が前記第１の方向である場合、前記オブジェクトを前記第１の方向に平行投影し、前記検出部での検出結果が前記第２の方向である場合、前記オブジェクトを前記第２の方向に平行投影する投影演算部と、
して動作させることを特徴する立体画像描画プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、立体画像を描画する立体画像描画装置、立体画像描画方法および立体画像描画プログラムに関する。
【背景技術】
【０００２】
従来の立体画像描画方法には、視差を有する複数枚の画像（多視点画像）の各画素を１つの画像（以下、合成画像と称する）に離散的に配置し、この合成画像を構成する各画素からの光線の軌道をレンチキュラーレンズなどにより制御して、観察者に立体画像を知覚させるインテグラルイメージング（以下、ＩＩと称する）方式と呼ばれるものがある（このＩＩ方式は、インテグラルフォトグラフィ（ＩＰ）方式とも呼ばれる）。このＩＩ方式は、現実に近い光線を再生できる理想的な立体画像の描画方式として知られている。
しかし、ＩＩ方式では、１枚の合成画像に複数枚の画像の各画素を離散的に配置しているため画像の精細度が低くなる。
このため、合成画像の水平方向だけに視差をつけることにより精細度の低下を防ぐ１次元ＩＩ方式が提案されている。この１次元ＩＩ方式では、３次元のＣＧモデルを構成する描画対象物の各頂点の座標（ｘ、ｙ、ｚ）に透視投影行列を乗算した後、ｙ座標とｚ座標の値を１−ｚ／ｄ（ｄは投影中心）の値で除算する。これにより、水平方向（ｘ座標軸）を平行投影、垂直方向（ｙ座標軸）を透視投影している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−２５７１２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載の方法では、水平方向を平行投影、垂直方向を透視投影する方法（以下、第１の立体画像描画方法と称する）は開示されている。しかしながら、水平方向を透視投影し、垂直方向を平行投影する方法（以下、第２の立体画像描画方法と称する）については開示されていない。このため、これら第１、第２の立体画像描画方法を切り替えて描画することができない。
上記に鑑み、本発明は、水平方向に視差を有する立体画像と垂直方向に視差を有する立体画像とを切り替えて描画できる立体画像描画装置、立体画像描画方法および立体画像描画プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の一態様に係る立体画像描画装置は、互いに異なる第１ないし第３の方向で表わされる座標空間に配置されたオブジェクトの座標成分を記憶する記憶部と、第１または第２のいずれかの方向に視差を有するオブジェクトの立体画像を表示する表示部と、表示部が第１または第２のいずれの方向に視差を有するかを検出する検出部と、検出部での検出結果が第１の方向である場合、オブジェクトを第１の方向に平行投影し、検出部での検出結果が第２の方向である場合、オブジェクトを第２の方向に平行投影する投影演算部と、を具備する。
【０００６】
本発明の一態様に係る立体画像描画方法は、記憶部に記憶された互いに異なる第１ないし第３の方向で表わされる座標空間に配置されたオブジェクトの立体画像を表示するステップと、オブジェクトの立体画像が第１または第２のいずれの方向に視差を有するかを検出するステップと、検出部での検出結果が第１の方向である場合、オブジェクトを第１の方向に平行投影し、検出部での検出結果が第２の方向である場合、オブジェクトを第２の方向に平行投影するステップと、を具備する。
【０００７】
本発明の一態様に係る立体画像描画プログラムは、コンピュータを、互いに異なる第１ないし第３の方向で表わされる座標空間に配置されたオブジェクトの座標成分を記憶する記憶部と、第１または第２のいずれかの方向に視差を有するオブジェクトの立体画像を表示する表示部と、表示部が第１または第２のいずれの方向に視差を有するかを検出する検出部と、検出部での検出結果が第１の方向である場合、オブジェクトを第１の方向に平行投影し、検出部での検出結果が第２の方向である場合、オブジェクトを第２の方向に平行投影する投影演算部と、して動作させる。
【発明の効果】
【０００８】
本発明によれば、水平方向に視差を有する立体画像と垂直方向に視差を有する立体画像とを切り替えて描画できる立体画像描画装置、立体画像描画方法および立体画像描画プログラムを提供することができる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態に係る立体画像描画装置のハードウェア構成の一例を示した図である。
【図２】第１の実施形態に係る立体画像描画装置の構成の一例を示した図である。
【図３】透視投影を説明するための図である。
【図４】平行投影を説明するための図である。
【図５Ａ】θを説明するための図である。
【図５Ｂ】φを説明するための図である。
【図６Ａ】透視除算制御部が記憶しているテーブルデータを示した図である。
【図６Ｂ】透視除算制御部が記憶しているテーブルデータを示した図である。
【図７】第１の実施形態に係る立体画像描画装置の動作を示したフローチャートである。
【図８】第２の実施形態に係る立体画像描画装置の構成の一例を示した図である。
【図９Ａ】透視乗算制御部が記憶しているテーブルデータを示した図である。
【図９Ｂ】透視乗算制御部が記憶しているテーブルデータを示した図である。
【図１０】第２の実施形態に係る立体画像描画装置の動作を示したフローチャートである。
【発明を実施するための形態】
【００１０】
以下、図面を参照して、本発明の実施形態を詳細に説明する。
（第１の実施形態）
図１は、第１の実施形態に係る立体画像描画装置１のハードウェア構成の一例を示した図である。図２は、第１の実施形態に係る立体画像描画装置１の機能構成の一例を示した図である。図３は、透視投影を説明するための図である。図４は、平行投影を説明するための図である。図５Ａは、図４に示すパラメータθを説明するための図である。図５Ｂは、図４に示すパラメータφを説明するための図である。
【００１１】
なお、通常のカメラで、水平方向を透視投影、垂直方向を平行投影または水平方向を平行投影、垂直方向を透視投影することは困難である。このため、この第１の実施形態では、ＣＧにより仮想３次元空間上に描画された対象物（オブジェクト）を、水平方向または垂直方向に視差を有する立体画像を切り替えて描画する形態について説明する。ここで、水平方向に視差を有するとは、水平方向に画像を立体的に視認させることである。また、垂直方向に視差を有するとは、垂直方向に画像を立体的に視認させることである。
【００１２】
図１に示すように、立体画像描画装置１は、ＧＰＵ（Graphic Processing Unit）１１、ＶＲＡＭ１２、ＣＰＵ１３、ＲＡＭ１４、Ｉ/Ｆ１５、ＨＤＤ１６、マウスやキーボードなどで構成される入力部１７および表示部１８、変換部１９などを具備する。
【００１３】
入力部１７やハードディスク１６からデータが入力されると、ＣＰＵ１３とＲＡＭ１４によりグラフィックス処理のための入力データがＧＰＵ１１に送られる。ＧＰＵ１１は、入力データに基づいて視差を有する複数枚の画像データ（多視点画像データ）を生成し、該画像データをＶＲＡＭ１２に書き込む。変換部１９は、ＧＰＵ１１で生成された多視点画像の各画素を１つの画像に離散的に配置して合成画像に変換する。表示部１８には、ＶＲＡＭ１２に書き込まれた画像データを変換部１９が変換した画像が表示される。なお変換部１９は、ＧＰＵ１１やＣＰＵ１３を用いて変換することにより、省略する事もできる。
【００１４】
また、図２に示すように、第１の実施形態に係る立体画像描画装置１は、記憶部１０１、モデルビュー行列乗算部１０２、投影行列乗算部１０３、透視除算部１０４、ビューポート変換部１０５、ラスタライズ部１０６、ピクセル処理部１０７、表示部１８、変換部１９、透視除算制御部１０９を具備する。
【００１５】
モデルビュー行列乗算部１０２および投影行列乗算部１０３は頂点シェーダ２１に含まれる。透視除算部１０４、ビューポート変換部１０５、ラスタライズ部１０６および透視除算制御部１０９はラスタライザ２２に含まれる。ピクセル処理部１０７は、ピクセルシェーダ２３に含まれる。
【００１６】
また、投影行列乗算部１０３、透視除算部１０４および透視除算制御部１０９は、投影演算部に含まれる。また、透視除算部１０４および透視除算制御部１０９は、第１の透視演算部に含まれる。
【００１７】
なお、近年のグラフィックスプロセッサでは、頂点シェーダ２１およびピクセルシェーダ２３の動作をユーザ（利用者）がプログラムで制御できるように構成されていることが多い。このため、頂点シェーダ２１およびピクセルシェーダ２３の機能はソフトウェアにより変更できる。また、ラスタライザ２２の機能は固定されている。このため、ラスタライザ２２の機能の変更にはハードウェア回路の変更が必要となる。
【００１８】
以下、第１の実施形態に係る立体画像描画装置１の詳細について説明する。
（記憶部１０１）
記憶部１０１には、ＣＧにより、仮想３次元空間上に描画されるオブジェクトの各頂点の座標（以下、オブジェクト座標と称する）などのデータが記憶されている。オブジェクトの各頂点の座標は、４次元（ｘ、ｙ、ｚ、ｗ）で表わされる。
【００１９】
ｘ軸、ｙ軸、ｚ軸は互いに直行しており、３次元直行座標を形成する。ｘ軸は、表示部１８の画面に対して水平方向（第１の方向）、ｙ軸は垂直方向（第２の方向）、ｚ軸は奥行方向（第３の方向）として定義される。ここで、オブジェクトの各頂点の座標が４次元（ｘ、ｙ、ｚ、ｗ）で表わされているのは、ＯｐｅｎＧＬなどのＡＰＩ（Application Programming Interface）で使用される変換行列が４行４列の４次元座標であることに対応している。変換行列として４次元座標を用いることで、回転と平行移動の座標変換を１つの行列で記載できる。なお、ｗ座標は、通常「１」に設定される。
【００２０】
また、記憶部１０１には、モデルビュー行列乗算部１０２で使用されるモデルビュー行列および投影行列乗算部１０３で使用される投影行列が記憶されている。さらに、記憶部１０１には、頂点シェーダ処理およびピクセルシェーダ処理の手順を記述したプログラムに関するデータなどが記憶されている。なお、記憶部１０１に記憶されているデータの形式は、様々な形式が適用できる。そして、記憶部１０１には、所望のＣＧを描画するために必要なデータが記憶されている。
【００２１】
ここで、投影について説明する。
一般に、ＣＧで使用される投影には透視投影(Perspective Projection)と平行投影(Orthographic Projection)の２種類がある。
【００２２】
（透視投影）
透視投影とは、オブジェクトから出る光線軸をある一点（視点）に収束させる投影方法である。透視投影では、視点から近いオブジェクトが、視点から遠いオブジェクトよりも大きく表現される。
【００２３】
図３に示すように、透視投影では視体積Ｏ１の形状は、四角錐台となる。視体積Ｏ１とは、視点Ｐに対して相対的に配置されたシーン内のボリュームである。この視体積Ｏ１内に配置されたオブジェクトが描画対象となり、表示部１８に表示される。
【００２４】
透視投影を行うための投影行列（透視投影行列）を以下に示す。
【数１】
2010182094.tif 000003
【００２５】
ここで、図３に示したｎ１は、視点Ｐから近クリップ面Ｓ１までの長さである。ｆ１は、視点Ｐから遠クリップ面Ｓ２までの長さである。ｒ１は、近クリップ面Ｓ１の右辺の長さである。ｌ１は、近クリップ面Ｓ１の左辺の長さである。ｔ１は、近クリップ面Ｓ１の上辺の長さである。ｂ１は、近クリップ面Ｓ１の下辺の長さである。
【００２６】
（平行投影）
平行投影とは、オブジェクトから出る光線軸を任意の軸（投影軸）に対して平行する投影方法である。平行投影には、正投影と斜投影がある。
【００２７】
正投影とは、例えば、視点を中心とした視点座標において、投影軸が奥行き方向（Ｚ軸方向）に対して平行である場合の平行投影である。すなわち、投影面と投影線との角度が垂直となる。
【００２８】
一方、斜投影とは、投影軸が奥行き方向（Ｚ軸方向）に対して平行でない場合の平行投影である。すなわち、投影面と投影線との角度が垂直とならない。ＩＩ方式を用いた立体画像描画装置１による立体画像の描画には、後者の斜投影が用いられる。以降、平行投影と記述した場合、この斜投影のことを示すものとする。図４に示すように、平行投影では視体積Ｏ２の形状は、直方体となる。
【００２９】
平行投影を行うための投影行列（平行投影行列）を以下に示す。
【数２】
2010182094.tif 000004
【００３０】
ここで、図４に示したｎ２は、視点Ｐから近クリップ面Ｓ３までの長さである。ｆ２は、視点Ｐから遠クリップ面Ｓ４までの長さである。ｒ２は、近クリップ面Ｓ３の右辺の長さである。ｌ２は、近クリップ面Ｓ３の左辺の長さである。ｔ２は、近クリップ面Ｓ３の上辺の長さである。ｂ２は、近クリップ面Ｓ３の下辺の長さである。また、図５Ａ、５Ｂに示すように、θは、投影軸をｘｚ平面に射影したベクトルとｚ軸との角度である。φは、投影軸をｙｚ平面に射影したベクトルとｚ軸との角度である。
【００３１】
（１次元ＩＩ用の投影行列）
この第１の実施形態に係る立体画像描画装置１は、水平方向または垂直方向にのみ視差を有する画像を表示部１８に表示する。水平方向に視差を有する画像を表示する場合、オブジェクトの各頂点のｘ座標を平行投影、ｙ座標を透視投影する必要がある。また、垂直方向に視差を有する画像を表示する場合、各頂点のｘ座標を透視投影、ｙ座標を平行投影する必要がある。
【００３２】
このような特殊な投影を実現するために、記憶部１０１には、水平方向に視差を有する画像を表示する場合に使用する投影行列（以下、第１の投影行列と称する）および垂直方向に視差を有する画像を表示する場合に使用する投影行列（以下、第２の投影行列と称する）が記憶されている。
【００３３】
第１の投影行列を以下に示す。
【数３】
2010182094.tif 000005
【００３４】
この第１の投影行列は、ｘ座標の算出に関係する箇所（１行目）に平行投影行列の対応する要素が設定され、ｙ座標、ｚ座標、ｗ座標の算出に関係する箇所（２行目から４行目）に透視投影行列の対応する要素が設定されている。
【００３５】
次に、第２の投影行列を以下に示す。
【数４】
2010182094.tif 000006
【００３６】
この第２の投影行列は、ｘ座標、ｚ座標、ｗ座標の算出に関係する箇所（１行目、３行目および４行目）に透視投影行列の対応する要素が設定され、ｙ座標に関係する箇所（２行目）に平行投影行列の対応する要素が設定されている。
【００３７】
（モデルビュー行列乗算部）
モデルビュー行列乗算部１０２は、記憶部１０１に記憶されているモデルビュー行列およびオブジェクト座標を読み出す。そして、読み出したモデルビュー行列とオブジェクト座標を乗算してオブジェクト座標を視点座標に変換する。
【００３８】
この変換は、モデルビュー変換と呼ばれる。モデルビュー変換では、ローカル座標系で表わされたオブジェクト座標を視点座標に変換する。なお、視点座標は、オブジェクトを観察するカメラ（ユーザ）の視点を中心とした座標である。
【００３９】
（投影行列乗算部）
投影行列乗算部１０３は、種別保持部１８ａに保持されている表示部１８の種別を検出する検出部（図示せず）を具備する。投影行列乗算部１０３は、検出部での検出結果に応じて記憶部１０１に記憶されている投影行列を読み出す。すなわち、表示部１８が水平方向に視差を有する画像を表示する場合、第１の投影行列を読み出す。また、表示部１８が垂直方向に視差を有する画像を表示する場合、第２の投影行列を読み出す。投影行列乗算部１０３は、読み出した投影行列とモデルビュー行列乗算部１０２で算出された視点座標とを乗算してオブジェクトの各頂点のクリップ座標を算出する。
【００４０】
（透視除算制御部）
透視除算制御部１０９は、種別保持部１８ａに保持されている表示部１８の種別を検出する検出部（図示せず）を具備する。また、図６Ａ、６Ｂに示すテーブルデータが記憶されている記憶部（図示せず）を具備する。
【００４１】
表示部１８が水平方向に視差を有する画像を表示する場合、投影行列を乗算した後の頂点座標のｘ座標については除算せず、その他の座標成分についてはｗ座標で除算する必要がある。
【００４２】
一方、表示部１８が垂直方向に視差を有する画像を表示する場合、投影行列を乗算した後の頂点座標のｙ座標については除算せず、その他の座標成分についてはｗ座標で除算する必要がある。
【００４３】
透視除算制御部１０９は、特定の座標成分を選択して透視除算する処理を透視除算部１０４で実現するために、透視除算制御部１０９は、表示部１８の種別に応じて透視除算部１０４を制御する。具体的には、表示部１８が水平方向または垂直方向のどちらに視差を有するかに応じて座標成分ごとに除算を有効にするか、あるいは無効にするかを指定する制御信号を生成し、該制御信号を透視除算部１０４へ入力する。
【００４４】
透視除算制御部１０９は、検出部での検出結果に応じて記憶部に記憶されているテーブルデータを使用する。透視除算制御部１０９は、表示部１８が水平方向に視差を有する場合、図６Ａのテーブルデータを使用する。この場合、透視除算制御部１０９は、座標成分ｘについては、透視除算を無効にし、座標成分ｙ、ｚ、ｗについては、透視除算を有効とする制御信号を透視除算部１０４へ入力する。
【００４５】
また、透視除算制御部１０９は、表示部１８が垂直方向に視差を有する場合、図６Ｂのテーブルデータを使用する。この場合、透視除算制御部１０９は、座標成分ｙについては、透視除算を無効にし、座標成分ｘ、ｚ、ｗについては、透視除算を有効とする制御信号を透視除算部１０４へ入力する。なお、図６Ａ、６Ｂに示したテーブルデータを記憶部１０１に記憶しておき、透視除算制御部１０９が検出結果に応じて記憶部１０１から読みだすように構成してもよい。
【００４６】
（透視除算部）
透視除算部１０４は、透視除算制御部１０９から入力される制御信号に基づいて投影行列乗算部１０３から入力される各頂点のクリップ座標の座標成分ｘ、ｙ、ｚ、ｗをｗ座標で除算する。
【００４７】
透視除算部１０４は、透視除算制御部１０９から入力される制御信号から透視除算を有効とする座標成分を判別する。そして、透視除算部１０４は、透視除算が有効であると判別された座標成分について、下記の式（５）ないし（８）を実行する。
ｘ’＝ｘ／ｗ…（５）
ｙ’＝ｙ／ｗ…（６）
ｚ’＝ｚ／ｗ…（７）
ｗ’＝ｗ／ｗ…（８）
【００４８】
これにより、各頂点の正規化デバイス座標が算出される。
表示部１８が垂直方向に視差を有する画像を表示する場合の各頂点の正規化デバイス座標は（ｘ、ｙ’、ｚ’、ｗ’）となる。また、表示部１８が水平方向に視差を有する画像を表示する場合の各頂点の正規化デバイス座標は（ｘ’、ｙ、ｚ’、ｗ’）となる。
【００４９】
（ビューポート変換部）
ビューポート変換部１０５は、記憶部１０１から読み出した描画領域（ビューポート）の大きさに応じて透視除算部１０４で算出されたオブジェクトの各頂点の正規化デバイス座標のｘ座標およびｙ座標を拡大あるいは縮小し、オブジェクトの各頂点のウィンドウ座標を算出する。
【００５０】
（ラスタライズ部）
ラスタライズ部１０６は、コンピュータが扱う文字や画像をディスプレイに描画、またはプリンタで印刷したりできるように、ビューポート変換部１０５で算出されたウィンドウ座標をもつ各頂点によって定義される多角形（ポリゴン）領域の内部をピクセル（画素）の集合に分解する。
【００５１】
ビューポート変換部１０５で算出される多角形は、頂点のウィンドウ座標とそれらの連結情報によって画像を表現している。こうした表現方法をベクタ形式という。一方、ディスプレイは、画像をピクセルの集合として扱う。このため、ベクタ形式の情報をそのまま印刷、または描画することはできない。そこで、ラスタライズ部１０６は、ベクタ形式の情報を展開してピクセルの集まりに分解する。
【００５２】
（ピクセル処理部）
ピクセル処理部１０７は、ラスタライズ部１０６から出力された各ピクセルの描画色を算出し、記憶部１０１の画像メモリ内に記憶する。
【００５３】
変換部１９は、ピクセル処理部１０７により記憶部１０１へ書き込まれた画像の各画素を１つの画像に離散的に配置して合成画像に変換し、該合成画像を記憶部１０１へ書き込む。
【００５４】
（表示部１８）
表示部１８は、表示部１８の種別を保持する種別保持部１８ａを具備する。また、表示部１８は、変換部１９により記憶部１０１の画像メモリに記憶された合成画像を表示する。表示部１８は、立体表示すべき画像の要素画素が表示されるディスプレイと、このディスプレイからの光線を制御するレンチキュラーレンズ（アレイレンズ）またはピンホール板などを具備する。ここで前記ディスプレイは、画素がマトリクス状に固定的に配置されて表示されるタイプであれば、直視型或いは投影型の液晶表示装置、プラズマ表示装置、電界放出型表示装置、又は、有機ＥＬ表示装置等であってもよい。
【００５５】
次に、第１の実施形態に係る立体画像描画装置１の動作について説明する。
図７は、立体画像描画装置１の動作を示したフローチャートである。
モデルビュー行列乗算部１０２は、モデルビュー行列とオブジェクト座標を乗算してオブジェクト座標を視点座標に変換する（ステップＳ１０１）。
【００５６】
投影行列乗算部１０３は、表示部１８の種別保持部１８ａから表示部１８の種別を検出する。投影行列乗算部１０３は、検出した表示部１８の種別に基づき表示部１８が水平方向または垂直方向のどちらに視差を有する画像を表示するかを判定する（ステップＳ１０２）。
【００５７】
表示部１８が水平方向に視差を有する画像を表示する場合、投影行列乗算部１０３は、第１の投影行列を記憶部１０１から読み出す（ステップＳ１０３）。また、表示部１８が垂直方向に視差を有する画像を表示する場合、投影行列乗算部１０３は、第２の投影行列を記憶部１０１から読み出す（ステップＳ１０４）。投影行列乗算部１０３は、読み出した投影行列とモデルビュー行列乗算部１０２で算出された視点座標とを乗算してオブジェクトの各頂点のクリップ座標を算出する（ステップＳ１０５）。
【００５８】
透視除算制御部１０９は、表示部１８の種別保持部１８ａから表示部１８の種別を検出する。透視除算制御部１０９は、検出した表示部１８の種別に基づき表示部１８が水平方向または垂直方向のどちらに視差を有する画像を表示するかを判定する（ステップＳ１０６）。
【００５９】
表示部１８が水平方向に視差を有する画像を表示する場合、透視除算制御部１０９は、座標成分ｘについては、透視除算を無効にし、座標成分ｙ、ｚ、ｗについては、透視除算を有効とする制御信号を透視除算部１０４へ入力する（ステップＳ１０７）。
【００６０】
また、表示部１８が垂直方向に視差を有する画像を表示する場合、透視除算制御部１０９は、座標成分ｙについては、透視除算を無効にし、座標成分ｘ、ｚ、ｗについては、透視除算を有効とする制御信号を透視除算部１０４へ入力する（ステップＳ１０８）。
【００６１】
透視除算部１０４は、透視除算制御部１０９から入力される制御信号に基づいて投影行列乗算部１０３から入力される各頂点のクリップ座標の座標成分をｗ座標で除算する（ステップＳ１０９）。
【００６２】
ビューポート変換部１０５は、オブジェクトの各頂点のウィンドウ座標を算出する（ステップＳ１１０）。ラスタライズ部１０６は、ビューポート変換部１０５で算出されたウィンドウ座標をもつ各頂点によって定義される多角形（ポリゴン）領域の内部をピクセルの集合に分解する（ステップＳ１１１）。
【００６３】
ピクセル処理部１０７は、ラスタライズ部１０６から出力された各ピクセルの描画色を算出し、記憶部１０１の画像メモリ内に記憶する（ステップＳ１１２）。変換部１９は、ピクセル処理部１０７により記憶部１０１へ書き込まれた多視点画像を合成画像に変換し、該合成画像を記憶部１０１へ書き込む（ステップＳ１１３）。表示部１８は、変換部１９により記憶部１０１の画像メモリに記憶された合成画像を表示する（ステップＳ１１４）。
【００６４】
以上のように、第１の実施形態に係る立体画像描画装置１によれば、投影行列を乗算した後の頂点座標から特定の座標成分を選択して除算できる。その結果、ＧＰＵ１１を用いて１次元ＩＩ方式の立体画像を高速に描画できる。また、表示部１８の種別に応じて、水平方向に視差を有する１次元ＩＩ方式の立体画像と垂直方向に視差を有する１次元ＩＩ方式の立体画像とを切り替えて描画できる。
【００６５】
なお、表示部１８の種別をユーザが入力部１７から入力するように構成してもよい。この場合、投影行列乗算部１０３は、入力部１７から入力された表示部１８の種別に応じて記憶部１０１に記憶されている投影行列を読み出す。また、透視除算制御部１０９は、入力部１７から入力された表示部１８の種別に応じて図６Ａまたは図６Ｂのテーブルデータを使用する。
【００６６】
このように構成すれば、表示部１８の種別が種別保持部１８ａに記憶されていない場合でも、ユーザが表示部１８の種別をユーザが入力して、表示部１８の種別に適した立体画像を描画できる。
【００６７】
（第２の実施形態）
第１の実施形態では、ラスタライザ２２に含まれる透視除算部１０４の動作を制御することにより、頂点座標の特定の座標成分を選択して透視除算する処理を実現する実施形態について説明した。しかしながらグラフィックスプロセッサに固定機能として組み込まれているラスタライザ２２の動作を制御するためにはハードウェア回路が透視除算制御部を含む必要がある。
【００６８】
この第２の実施形態では、ユーザがプログラムで制御できる頂点シェーダで必要な処理を行うことで頂点座標の特定の座標成分を選択的に透視除算する実施形態について説明する。この第２の実施形態に係る立体画像描画装置２では、頂点シェーダにおいて、頂点座標の特定の座標成分に対して選択的に透視除算の逆演算である透視乗算を行う。その後、頂点座標の全ての座標成分を透視除算部で除算することにより、透視除算部での透視除算の効果を打ち消している。このため、ハードウェア回路が透視除算制御部を含む必要がなく頂点座標の特定の座標成分を選択的に透視除算できる。
【００６９】
図８は、第２の実施形態に係る立体画像描画装置２の機能構成の一例を示した図である。この第２の実施形態に係る立体画像描画装置２は、記憶部１０１、モデルビュー行列乗算部１０２、投影行列乗算部１０３、透視除算部１０４Ａ、ビューポート変換部１０５、ラスタライズ部１０６、ピクセル処理部１０７、表示部１８、変換部１９、透視乗算部１１１、透視乗算制御部１１２を具備する。なお、第１の実施形態と同様に、変換部１９は、ＧＰＵ１１やＣＰＵ１３を用いて変換することにより、省略する事もできる。
【００７０】
モデルビュー行列乗算部１０２、投影行列乗算部１０３、透視乗算部１１１および透視乗算制御部１１２は頂点シェーダ２１Ａに含まれる。透視除算部１０４Ａ、ビューポート変換部１０５およびラスタライズ部１０６はラスタライザ２２Ａに含まれる。ピクセル処理部１０７は、ピクセルシェーダ２３Ａに含まれる。
【００７１】
また、投影行列乗算部１０３、透視除算部１０４Ａ、透視乗算部１１１および透視乗算制御部１１２は、投影演算部に含まれる。また、透視除算部１０４Ａ、透視乗算部１１１および透視乗算制御部１１２は、第２の透視演算部に含まれる。
【００７２】
なお、ハードウェア構成については、第１の実施形態に係る立体画像描画装置１と同様であるため図示およびその説明を省略する。また、図２で説明した構成要素と同様の構成要素については、同一の符号を付して重複した説明を省略する。
【００７３】
以下、第２の実施形態に係る立体画像描画装置２の詳細について説明する。
（透視乗算制御部）
透視乗算制御部１１２は、種別保持部１８ａに保持されている表示部１８の種別を検出する検出部（図示せず）を具備する。また、図９Ａ、９Ｂに示すテーブルデータが記憶されている記憶部（図示せず）を具備する。
【００７４】
透視乗算制御部１１２は、表示部１８の種別に応じて透視乗算部１１１を制御する。具体的には、透視乗算制御部１１２は、特定の座標成分を選択して透視乗算する処理を透視乗算部１１１で実現するために、表示部１８が水平方向または垂直方向のどちらに視差を有するかに応じて座標成分ごとに乗算を有効にするか、あるいは無効にするかを指定する制御信号を生成し、該制御信号を透視乗算部１１１へ入力する。
【００７５】
透視乗算制御部１１２の検出部は、種別保持部１８ａに保持されている表示部１８の種別を検出する。透視乗算制御部１１２は、表示部１８が水平方向に視差を有する画像を表示する場合、図９Ａのテーブルデータを使用する。この場合、透視乗算制御部１１２は、座標成分ｘについては、透視乗算を有効にし、座標成分ｙ、ｚ、ｗについては、透視乗算を無効とする制御信号を透視乗算部１１１へ入力する。
【００７６】
また、透視乗算制御部１１２は、表示部１８が垂直方向に視差を有する画像を表示する場合、図９Ｂのテーブルデータを使用する。この場合、透視乗算制御部１１２は、座標成分ｙについては、透視乗算を有効にし、座標成分ｘ、ｚ、ｗについては、透視除算を無効とする制御信号を透視乗算部１１１へ入力する。なお、図９Ａ、９Ｂに示したテーブルデータを記憶部１０１に記憶しておき、透視乗算制御部１１２が表示部１８の種別に応じて読みだすように構成してもよい。
【００７７】
（透視乗算部）
透視乗算部１１１は、透視乗算制御部１１２から入力される制御信号に基づいて投影行列乗算部１０３から入力される各頂点のクリップ座標の各座標成分ｘ、ｙ、ｚ、ｗをｗ座標で乗算（透視除算の逆演算）する。
【００７８】
透視乗算部１１１は、透視乗算制御部１１２から入力される制御信号から透視乗算を有効とする座標成分を判別する。そして、透視乗算部１１１は、透視乗算が有効であると判別された座標成分について、下記の式（９）ないし（１２）を実行する。
ｘ’’＝ｘ×ｗ…（９）
ｙ’’＝ｙ×ｗ…（１０）
ｚ’’＝ｚ×ｗ…（１１）
ｗ’’＝ｗ×ｗ…（１２）
【００７９】
（透視除算部）
透視除算部１０４Ａは、透視乗算部１１１から入力される各頂点のクリップ座標のすべての座標成分をｗ座標で除算し、各頂点の正規化デバイス座標を算出する。
【００８０】
表示部１８が水平方向に視差を有する画像を表示する場合、前段の透視乗算部１１１によって頂点座標のｘ座標にｗ座標が乗算される。そして、透視除算部１０４Ａでｘ座標がｗ座標で除算される。その結果、乗算と除算の効果が打ち消されて頂点座標のｘ座標は、投影行列乗算部１０３から出力された座標成分に戻る。
【００８１】
一方、表示部１８が垂直方向に視差を有する画像を表示する場合、前段の透視乗算部１１１によって頂点座標のｙ座標にｗ座標が乗算される。そして、透視除算部１０４Ａでｙ座標がｗ座標で除算される。その結果、乗算と除算の効果が打ち消されて頂点座標のｙ座標は、投影行列乗算部１０３から出力された座標成分に戻る。
【００８２】
すなわち、表示部１８の種別が垂直方向に視差を有する１次元ＩＩ方式の描画装置である場合の各頂点の正規化デバイス座標は、（ｘ、ｙ’、ｚ’、ｗ’）となり、第１の実施形態と同じ結果が得られる。また、表示部１８の種別が水平方向に視差を有する１次元ＩＩ方式の描画装置である場合の各頂点の正規化デバイス座標は、（ｘ’、ｙ、ｚ’、ｗ’）となり、同様に第１の実施形態と同じ結果が得られる。
【００８３】
次に、第２の実施形態に係る立体画像描画装置２の動作について説明する。
図１０は、立体画像描画装置１の動作を示したフローチャートである。
立体画像描画装置２は、図７で説明したＳ１０１からＳ１０５の処理（第１の処理）を実施する（ステップＳ２０１）。
【００８４】
透視乗算制御部１１２は、表示部１８の種別保持部１８ａから表示部１８の種別を検出する。透視乗算制御部１１２は、検出した種別保持部１８ａに基づき表示部１８が水平方向または垂直方向のどちらに視差を有する画像を表示するかを判定する（ステップＳ２０２）。
【００８５】
表示部１８が水平方向に視差を有する画像を表示する場合、透視乗算制御部１１２は、座標成分ｘについては、透視乗算を有効にし、座標成分ｙ、ｚ、ｗについては、透視乗算を無効とする制御信号を透視乗算部１１１へ入力する（ステップＳ２０３）。
【００８６】
また、表示部１８が垂直方向に視差を有する画像を表示する場合、透視乗算制御部１１２は、座標成分ｙについては、透視乗算を有効にし、座標成分ｘ、ｚ、ｗについては、透視乗算を無効とする制御信号を透視乗算部１１１へ入力する（ステップＳ２０４）。
【００８７】
透視乗算部１１１は、透視乗算制御部１１２から入力される制御信号に基づいて投影行列乗算部１０３から入力される各頂点のクリップ座標の座標成分ｘ、ｙ、ｚ、ｗをｗ座標で乗算する（ステップＳ２０５）。
【００８８】
透視除算部１０４Ａは、透視乗算部１１１から入力される各頂点のクリップ座標のすべての座標成分をｗ座標で除算し、各頂点の正規化デバイス座標を算出する（ステップＳ２０６）。立体画像描画装置２は、図７で説明したＳ１１０からＳ１１４の処理（第２の処理）を実施する（ステップＳ２０７）。
【００８９】
以上のように、第２の実施形態に係る立体画像描画装置２によれば、投影行列を乗算した後の頂点座標において特定の座標成分を選択して乗算することにより、透視除算の効果を打ち消すことができるようになる。その結果、グラフィックスプロセッサに固定機能として組み込まれている一般的な透視除算機能を用いる事ができる。このため、既存のグラフィックスプロセッサを利用して１次元ＩＩ方式の立体画像を描画する処理を高速化できる。その他の効果は、第１の実施形態に係る立体画像描画装置１と同様である。
【００９０】
（その他の実施形態）
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【００９１】
１，２…立体画像描画装置、１１…ＧＰＵ、１２…ＶＲＡＭ、１３…ＣＰＵ、１４…ＲＡＭ、１５…Ｉ/Ｆ、１６…ＨＤＤ、１７…入力部、１８…表示部、１９…変換部、２１…頂点シェーダ、２２…ラスタライザ、２３…ピクセルシェーダ、１０１…記憶部、１０２…モデルビュー行列乗算部、１０３…投影行列乗算部、１０４…透視除算部、１０５…ビューポート変換部、１０６…ラスタライズ部、１０７…ピクセル処理部、１０９…透視除算制御部、１１１…透視乗算部、１１２…透視乗算制御部。
【図１】
2010182094.tif 000007
【図２】
2010182094.tif 000008
【図３】
2010182094.tif 000009
【図４】
2010182094.tif 000010
【図５Ａ】
2010182094.tif 000011
【図５Ｂ】
2010182094.tif 000012
【図６Ａ】
2010182094.tif 000013
【図６Ｂ】
2010182094.tif 000014
【図７】
2010182094.tif 000015
【図８】
2010182094.tif 000016
【図９Ａ】
2010182094.tif 000017
【図９Ｂ】
2010182094.tif 000018
【図１０】
2010182094.tif 000019
【手続補正書】
【提出日】平成21年8月20日(2009.8.20)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００３
【補正方法】変更
【補正の内容】
【０００３】
【特許文献１】特開２００５−１０２１９８号公報