(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024123274
(43)【公開日】2024-09-10
(54)【発明の名称】画像処理プログラム、画像処理装置、画像処理システム、および画像処理方法
(51)【国際特許分類】
G06T 15/04 20110101AFI20240903BHJP
【FI】
G06T15/04
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2024106524
(22)【出願日】2024-07-02
(62)【分割の表示】P 2022097609の分割
【原出願日】2022-06-16
(71)【出願人】
【識別番号】000233778
【氏名又は名称】任天堂株式会社
(74)【代理人】
【識別番号】110001276
【氏名又は名称】弁理士法人小笠原特許事務所
(74)【代理人】
【識別番号】100130269
【弁理士】
【氏名又は名称】石原 盛規
(72)【発明者】
【氏名】宮城 暁志
(72)【発明者】
【氏名】上田 和英
(57)【要約】
【課題】透明感を有するオブジェクトの表現を低い処理負荷で可能な画像処理プログラム、画像処理システム、画像処理装置、画像処理方法を提供すること。
【解決手段】第1の色情報を含む第1テクスチャと、第2の色情報を含む第2テクスチャと、高さ情報を含む第3テクスチャとを管理する。第1の対応関係に基づいて取得される、オブジェクトの表面に対応する第1テクスチャの第1の色情報を取得する。オブジェクトの表面と第2テクスチャとの関係である第2の対応関係を、仮想カメラの視線方向とオブジェクトの表面の向きとの関係、および、第3の対応関係に基づいて特定される高さ情報に基づいて補正し、補正後の第2の対応関係に基づいて第2テクスチャから第2の色情報を取得する。そして、取得した色情報を用いて描画色を決定し、オブジェクトの表面を描画する。
【選択図】
図22
【特許請求の範囲】
【請求項1】
仮想空間に配置されたオブジェクトを描画するための画像処理プログラムであって、
コンピュータを、
前記オブジェクトの表面に対して第1の対応関係に基づいて対応付けられる、第1の色情報を含む第1テクスチャと、前記オブジェクトの表面に対して第2の対応関係に基づいて対応付けられる、第2の色情報を含む第2テクスチャと、前記オブジェクトの表面に対して第3の対応関係に基づいて対応付けられる、高さ情報を含む第3テクスチャとを管理する管理手段、
前記仮想空間に配置された仮想カメラの視線方向を制御する仮想カメラ制御手段、
前記第1の対応関係に基づいて取得される、前記オブジェクトの表面に対応する前記第1テクスチャの前記第1の色情報と、前記仮想カメラの視線方向と前記オブジェクトの表面の向きとの関係および前記第3の対応関係に基づいて特定される前記高さ情報に基づいた補正によって前記第2の対応関係を補正した補正後対応関係に基づいて取得される、前記オブジェクトの表面に対応する前記第2テクスチャの前記第2の色情報と、を少なくとも用いて描画色を決定し、前記オブジェクトの表面を描画する描画手段、
として機能させる、画像処理プログラム。
【請求項2】
前記描画手段は、描画の際に参照される前記第2テクスチャ内の位置を、前記第2の対応関係に基づいて特定される位置から更に前記補正に基づいてずらされた位置にすることによって前記第2の色情報を取得する、請求項1に記載の画像処理プログラム。
【請求項3】
前記描画手段は、描画の際に参照される前記第2テクスチャ内の位置をずらす方向およびずらし量を、前記仮想カメラの視線方向と前記オブジェクトの表面の向きとの相対的な関係に基づいて決定する、請求項2に記載の画像処理プログラム。
【請求項4】
前記描画手段は、前記仮想カメラの視線方向が前記オブジェクトの表面の法線方向の逆方向に近い程、前記ずらし量が小さくなるように前記ずらし量を決定する、請求項2に記載の画像処理プログラム。
【請求項5】
前記画像処理プログラムは、前記コンピュータを、仮想的な光源を前記仮想空間内に配置する光源配置手段として更に機能させ、
前記描画手段は、
少なくとも前記第1の色情報と、前記第2の色情報とを所定の比率で合成することによって前記描画色を決定し、
前記オブジェクトの表面の裏側に前記光源が位置する場合は、前記オブジェクトの表面側に前記光源が位置する場合よりも前記第2の色情報の比率が高くなるように当該描画色を決定する、請求項1に記載の画像処理プログラム。
【請求項6】
仮想空間に配置されたオブジェクトを描画する画像処理装置であって、
前記オブジェクトの表面に対して第1の対応関係に基づいて対応付けられる、第1の色情報を含む第1テクスチャと、前記オブジェクトの表面に対して第2の対応関係に基づいて対応付けられる、第2の色情報を含む第2テクスチャと、前記オブジェクトの表面に対して第3の対応関係に基づいて対応付けられる、高さ情報を含む第3テクスチャとを管理する管理手段、
前記仮想空間に配置された仮想カメラの視線方向を制御する仮想カメラ制御手段、
前記第1の対応関係に基づいて取得される、前記オブジェクトの表面に対応する前記第1テクスチャの前記第1の色情報と、前記仮想カメラの視線方向と前記オブジェクトの表面の向きとの関係、および、前記第3の対応関係に基づいて特定される前記高さ情報に基づいた補正によって、前記第2の対応関係を補正した補正後対応関係に基づいて取得され
る、前記オブジェクトの表面に対応する前記第2テクスチャの前記第2の色情報と、を少なくとも用いて描画色を決定し、前記オブジェクトの表面を描画する描画手段、とを備える、画像処理装置。
【請求項7】
仮想空間に配置されたオブジェクトを描画する画像処理システムであって、
前記オブジェクトの表面に対して第1の対応関係に基づいて対応付けられる、第1の色情報を含む第1テクスチャと、前記オブジェクトの表面に対して第2の対応関係に基づいて対応付けられる、第2の色情報を含む第2テクスチャと、前記オブジェクトの表面に対して第3の対応関係に基づいて対応付けられる、高さ情報を含む第3テクスチャとを管理する管理手段、
前記仮想空間に配置された仮想カメラの視線方向を制御する仮想カメラ制御手段、
前記第1の対応関係に基づいて取得される、前記オブジェクトの表面に対応する前記第1テクスチャの前記第1の色情報と、前記仮想カメラの視線方向と前記オブジェクトの表面の向きとの関係、および、前記第3の対応関係に基づいて特定される前記高さ情報に基づいた補正によって、前記第2の対応関係を補正した補正後対応関係に基づいて取得される、前記オブジェクトの表面に対応する前記第2テクスチャの前記第2の色情報と、を少なくとも用いて描画色を決定し、前記オブジェクトの表面を描画する描画手段、とを備える、画像処理システム。
【請求項8】
仮想空間に配置されたオブジェクトを描画する画像処理装置のコンピュータに実行させる画像処理方法であって、
前記コンピュータに、
前記オブジェクトの表面に対して第1の対応関係に基づいて対応付けられる、第1の色情報を含む第1テクスチャと、前記オブジェクトの表面に対して第2の対応関係に基づいて対応付けられる、第2の色情報を含む第2テクスチャと、前記オブジェクトの表面に対して第3の対応関係に基づいて対応付けられる、高さ情報を含む第3テクスチャとを管理させ、
前記仮想空間に配置された仮想カメラの視線方向を制御させ、
前記第1の対応関係に基づいて取得される、前記オブジェクトの表面に対応する前記第1テクスチャの前記第1の色情報と、前記仮想カメラの視線方向と前記オブジェクトの表面の向きとの関係、および、前記第3の対応関係に基づいて特定される前記高さ情報に基づいた補正によって、前記第2の対応関係を補正した補正後対応関係に基づいて取得される、前記オブジェクトの表面に対応する前記第2テクスチャの前記第2の色情報と、を少なくとも用いて描画色を決定し、前記オブジェクトの表面を描画させる、画像処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、透明感を有する3次元オブジェクトを表現する画像処理に関する。
【背景技術】
【0002】
従来から、3次元仮想オブジェクトを描画する手法の一つとして、テクスチャ画像をオブジェクトに貼り付けるようにして描画する、テクスチャマッピングと呼ばれる手法がある(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記のテクスチャマッピングによって、オブジェクトの表面の質感の表現力を高めることはできる。しかし、例えば表面が半透明であるオブジェクト等、透明感のあるオブジェクトを表現する場合、この手法では十分ではない場合があった。そのため、透明感のあるオブジェクトを描画しようとする場合、例えばαブレンド法等を用いた透過処理を行うことが一般的であった。しかし、従来の透過処理は一般に、その処理負荷が高いものとなっていた。例えば、第1オブジェクトの表面が透けて、その向こう側にある第2オブジェクトが見えているという表現を行う場合を想定する。この場合、まず、透過先のオブジェクトである第2オブジェクトを描画する。次に、第2オブジェクトの手前に、半透明のオブジェクトである第1オブジェクトを配置して描画する。あるいは、半透明の第1オブジェクトを第2オブジェクトにかぶせるように配置して描画する。この際、更に、第1オブジェクトの表面部分に各種のエフェクトをかぶせて、描画することも行われる。また、第2オブジェクトについても、更に画像をゆがませるようなエフェクトをかぶせて描画する場合もある。このような処理の場合、オブジェクトの描画順が重要となるが、一般にその管理が煩雑であったり、描画順が干渉して処理負荷が高くなったりしていた。その結果、場合によっては破綻した画像が表示される可能性もあった。
【0005】
それ故に、本発明の目的は、透明感を有するオブジェクトの表現を低い処理負荷で可能な画像処理プログラム、画像処理装置、画像処理システム、画像処理方法を提供することである。
【課題を解決するための手段】
【0006】
上記目的を達成するために、例えば以下のような構成例が挙げられる。
【0007】
(構成1)
構成1は、仮想空間に配置されたオブジェクトを描画するための画像処理プログラムであって、コンピュータを、管理手段と、仮想カメラ制御手段と、描画手段として機能させる。管理手段は、オブジェクトの表面に対して第1の対応関係に基づいて対応付けられる、第1の色情報を含む第1テクスチャと、オブジェクトの表面に対して第2の対応関係に基づいて対応付けられる、第2の色情報を含む第2テクスチャと、オブジェクトの表面に対して第3の対応関係に基づいて対応付けられる、高さ情報を含む第3テクスチャとを管理する。仮想カメラ制御手段は、仮想空間に配置された仮想カメラの視線方向を制御する。描画手段は、(1)第1の対応関係に基づいて取得される、オブジェクトの表面に対応
する第1テクスチャの第1の色情報と、(2)仮想カメラの視線方向とオブジェクトの表面の向きとの関係、および、第3の対応関係に基づいて特定される高さ情報に基づいた補正によって上記第2の対応関係を補正した補正後対応関係に基づいて取得される、オブジェクトの表面に対応する第2テクスチャの第2の色情報と、を少なくとも用いて描画色を決定する。そして、描画手段は、当該描画色を用いてオブジェクトの表面を描画する。
【0008】
上記構成例によれば、実際にオブジェクトの表面を透過させるような透過処理等を行うことなく、各画素の描画色を決定する段階の処理において、透明感のあるオブジェクトの表現が可能となる。そのため、透明感のあるオブジェクトの表現を、負荷が低い処理で実現できる。
【0009】
(構成2)
構成2は、上記構成1において、描画手段は、描画の際に参照される第2テクスチャ内の位置を、第2の対応関係に基づいて特定される位置から更に上記補正に基づいてずらされた位置にすることによって、第2の色情報を取得してもよい。
【0010】
上記構成例によれば、各画素(ピクセル)毎に第2の対応関係を補正する。つまり、仮想カメラとオブジェクトとの位置関係を画素毎に正確に反映させた描画が可能となる。
【0011】
(構成3)
構成3は、上記構成2において、描画手段は、描画の際に参照される第2テクスチャ内の位置をずらす方向およびずらし量を、仮想カメラの視線方向とオブジェクトの表面の向きとの相対的な関係に基づいて決定してもよい。
【0012】
上記構成例によれば、仮想カメラの向き(視線方向)とオブジェクトの面の向きの関係を考慮してずらし方向およびずらし量を決定する。これにより、透明感のあるオブジェクトの表現において、その見た目上、違和感の少ない画像を提供できる。
(構成4)
構成4は、上記構成2において、描画手段は、仮想カメラの視線方向がオブジェクト表面の法線方向の逆方向に近い程、ずらし量が小さくなるように上記ずらし量を決定してもよい。
【0013】
上記構成例によれば、例えば仮想カメラの視線方向がオブジェクト(の面)に対して水平に近づくほどずらし量が大きくなる。これにより、オブジェクト表面の凹凸感や高低差を踏まえた透明感の表現をより豊かなものにすることができる。
【0014】
(構成5)
構成5は、上記構成1~4のいずれかにおいて、画像処理プログラムは、コンピュータを、仮想的な光源を仮想空間内に配置する光源配置手段として更に機能させてもよい。
そして、描画手段は、少なくとも第1の色情報と第2の色情報とを所定の比率で合成することによって描画色を決定してもよく、この際に、オブジェクトの表面の裏側に光源が位置する場合は、オブジェクトの表面側に光源が位置する場合よりも第2の色情報の比率が高くなるように当該描画色を決定してもよい。
【0015】
上記構成例によれば、光源と仮想カメラの位置関係に応じて、第1の色情報および第2の色情報に係る色の合成比率を決定する。具体的には、光源との位置関係が逆光りとなる関係であれば、順光となる場合よりも、第2の色情報に係る色の比率のほうが高くなるように合成する。そのため、逆光の場合は、順光の場合よりも第2の色情報に係る色が強く表現できる。このような光源との位置関係を考慮することで、より豊かな透明感の表現が可能となる。
【発明の効果】
【0016】
本実施形態によれば、透明感のあるオブジェクトの表現を、負荷の低い処理で実現できる。
【図面の簡単な説明】
【0017】
【
図2】本実施形態に係る処理の概要を説明するための図
【
図3】本実施形態に係る処理の概要を説明するための図
【
図6】本実施形態に係る処理を用いない場合の画面例
【
図7】本実施形態に係る処理を用いない場合の画面例
【
図8】本実施形態に係る処理を用いない場合の画面例
【
図10】本実施形態に係る処理を用いた場合の画面例
【
図11】本実施形態に係る処理を用いた場合の画面例
【
図13】本実施形態に係る処理の概要を説明するための図
【
図14】本実施形態に係る処理を用いない場合の画面例
【
図15】本実施形態に係る処理を用いない場合の画面例
【
図16】本実施形態に係る処理を用いない場合の画面例
【
図17】本実施形態に係る処理を用いた場合の画面例
【
図18】本実施形態に係る処理を用いた場合の画面例
【
図19】本実施形態に係る処理を用いた場合の画面例
【
図20】ゲーム装置2の記憶部84に格納されるプログラムおよびデータの一例
【
図21】本実施形態に係る処理の詳細を示すフローチャート
【
図22】オブジェクト描画処理の詳細を示すフローチャート
【発明を実施するための形態】
【0018】
以下、一実施形態について説明する。
【0019】
[情報処理装置のハードウェア構成]
まず、本実施形態にかかる情報処理を実行するための情報処理装置について説明する。当該情報処理装置は、例えばスマートフォン、据置型または携帯型のゲーム装置、タブレット端末、携帯電話、パーソナルコンピュータ、ウェアラブル端末等である。また、本実施形態にかかる情報処理は、上記のようなゲーム装置等と、所定のサーバとから構成されるゲームシステムにも適用可能である。本実施形態では、据置型ゲーム装置(以下、単にゲーム装置と呼ぶ)を情報処理装置の一例として説明する。
【0020】
図1は、本実施形態に係るゲーム装置2の内部構成の一例を示すブロック図である。ゲーム装置2は、プロセッサ81を備える。プロセッサ81は、ゲーム装置2において実行される各種の情報処理を実行する情報処理部であって、例えば、CPU(Central
Processing Unit)のみから構成されてもよいし、CPU機能、GPU(Graphics Processing Unit)機能等の複数の機能を含むSoC(System-on-a-chip)から構成されてもよい。プロセッサ81は、記憶部84に記憶される情報処理プログラムを実行することによって、各種の情報処理を実行する。なお、記憶部84は、例えば、フラッシュメモリやDRAM(Dynamic Random Access Memory)等の内部記憶媒体であってもよいし、図示しないスロットに装着される外部記憶媒体等を利用する構成でもよい。
【0021】
また、ゲーム装置2は、ゲーム装置2がコントローラ4と有線または無線通信を行うためのコントローラ通信部86を備える。なお、図示は省略するが、コントローラ4には、十字キーやABXYボタン等の各種のボタン、および、アナログスティック等が設けられている。
【0022】
また、ゲーム装置2には、画像音声出力部87を介して表示部5(例えば、テレビ等)が接続される。プロセッサ81は、(例えば、上記の情報処理の実行によって)生成した画像や音声を、画像音声出力部87を介して表示部5に出力する。
【0023】
以下、本実施形態に係る処理の一例について説明する。本実施形態に係る処理は、(3次元の)オブジェクトの描画に関するものである。より具体的には、透明感のあるオブジェクトを表現するための描画処理に関する。また、当該描画処理は、例えばゲーム処理の一環として行われ得る。
【0024】
一般に、オブジェクトの表面の質感等を表現するためにテクスチャ画像を用いる技法が知られている(いわゆるテクスチャマッピング)。そして、本実施形態では、あるオブジェクトの透明感を表現するために、少なくとも2枚のテクスチャを用いる。1枚目のテクスチャ(以下、第1テクスチャ)は、概念的には、オブジェクトの表面を表現するための画像である(いわば前景の色)。2枚目のテクスチャ(以下、第2テクスチャ)は、概念的には、オブジェクトの内部に位置していることを想定した画像であって、オブジェクト表面が透けることで見えていることを想定した場合の画像である。つまり、透けて見えるオブジェクトの内部のものを表現するための画像である(いわば、透過先の背景の色)。そして、オブジェクト(に対応する各画素)を描画する際に、1枚目のテクスチャのうち、透明感を出したい部分の画素について、2枚目のテクスチャの色をブレンドして描画する。この際のブレンド率を調整することで、1枚目のテクスチャ画像の当該部分について、2枚目のテクスチャに係る画像が透けて見えるような表現が可能である。例えば、1枚目のテクスチャの色のブレンド率を高めにすれば、2枚目のテクスチャの画像がうっすらと透けて見えるような半透明感が表現できる。また、2枚目のテクスチャのブレンド率のほうを高くすれば、そのオブジェクトの表面がより透き通っている感じを表現できる。
【0025】
上記のような手法でも、オブジェクトの表面について、ある程度の透明感は表現可能ではあるが、本実施形態では、以下に説明するような処理で、より透明感を有するオブジェクトの表現を可能とする。詳細は後述するが、本実施形態では、上記の2枚目のテクスチャに対してのみ、いわゆる視差マッピングの技法を用いて、より立体的に見えるように描画する処理を行う。これにより、オブジェクトの表面により透明感を与え、また、透けて見えている(ように見せたい)オブジェクト内部の奥行き感や立体感をより効果的に表現できる。また、このような透明感のあるオブジェクトの表現を、透過処理を用いる場合に比べて低い処理負荷で実現できる。
【0026】
図2~
図11を用いて、本実施形態にかかる処理を用いない場合のオブジェクト画像の例と、本実施形態にかかる処理を用いた場合のオブジェクト画像の一例を示す。ここでは一例として、
図2に示すような縦長で長方形状である柱型のオブジェクトを描画する例を示す。当該柱オブジェクトには、第1の面に四角い開口部が設けられ、第2の面に丸い開口部が設けられている。また、仮想カメラの動きとして、第1面をやや見下ろすような高さから撮像している状態から第2面に回り込むように移動させる場合を想定する(
図3参照)。また、この例では、これらの開口部の内壁部分が透けて見えるような表現を想定している。
【0027】
また、第1テクスチャとしては、
図4に示すようなテクスチャが用意され、第2テクス
チャとしては、
図5に示すようなテクスチャが用意されているとする。それぞれ模式的に示した図ではあるが、第1テクスチャは、上記柱オブジェクトの表面部分に対応する画像であり、基本となる画像ともいえる。
図4では、第1テクスチャは、四角い開口部と丸い開口部が表現された画像となっている。また、説明の簡便化のため、第1テクスチャにおける柱オブジェクトの色は所定の単色であるとする。すなわち、第1テクスチャは、単色の画像であるとする。
【0028】
一方、第2テクスチャについては、開口部から透けて見える内壁を想定した画像である。本例では、第2テクスチャは、上記開口部の「縁」に対応する部分について、上記所定の単色とは異なる色を用いて表現したような画像となっている。例えば、上記第1テクスチャにおける所定の単色がオレンジ色であり、第2テクスチャの当該「縁」の部分は白色であるとする。また、第2テクスチャの当該「縁」以外の色は、第1テクスチャと同じ色であるとする。
【0029】
上記のようなテクスチャを用いて、本実施形態に係る処理を行わずに柱オブジェクトを描画した場合の一例を示す。
図6~
図8は、このような場合の画面の一例である。
図6では、仮想カメラが、四角い開口部を右斜め上からやや見下ろすような高さから撮像している状態である。
図6では、四角い開口部の「縁」となる箇所(画素)について、その箇所に対応する第1テクスチャ上のテクセルの色(以下、第1色)に、当該箇所に対応する第2テクスチャ上のテクセルの色(以下、第2色)がブレンドされた色が描画色として用いられていることを示している。また、右上にある丸い開口部についても、その「縁」の箇所について、第1色に第2色がブレンドされた描画色で描画されていることを示している。
【0030】
図6の状態から、仮想カメラが第2面側に回り込むような動きをすると、
図7~
図8に示すような画像が表示される。いずれの図でも、各開口部の「縁」となる箇所について、第1色に第2色がブレンドされた描画色で描画されている。そのため、これらの図では、各開口部の「縁」の部分が、若干透けているような感じの表現となっていることを示している。
【0031】
次に、本実施形態に係る処理を適用した場合の柱オブジェクトの画面例を
図9~
図11に示す。これらの図において、網掛けパターンで示している部分は、上記第2テクスチャにおける上記「縁」の部分に係る第2色がブレンドされて描画される箇所(画素)を示している。本実施形態に係る処理を適用した場合、各開口部の「縁」の周辺について、上記「縁」の部分の第2色がブレンドされて描画される箇所が上記
図6~
図8の場合よりも大きい(広い)範囲になっている。また、これらの図では、仮想カメラの位置(撮像方向と高さ)の変化に応じて、「縁」の部分の第2色がブレンドされて描画される箇所の大きさ・範囲も変化していることを示している。このような描画が行われることで、透けて見える開口部の内壁部分(描画色が異なる部分)の見せ方を視点の変化に応じて変化させることができる。これにより、透けて見える(ように見せたい)部分について、より立体感・奥行き感のある表現ができ、より透明感を感じられる画像が提供できる。この例では、上記の場合よりも、開口部周辺の透明感がより強く感じられるような表現となっている。また、当該表現に係る処理は、実際にオブジェクトを透過させているわけではなく、あくまでそれらしく見せるための処理である。つまり、いわゆる透過処理等を行うわけではないため、オブジェクトの描画順等を制御する必要も無く、その処理負荷も軽いものとなっている。なお、本実施形態に係る処理は、いわゆるフラグメントシェーダー(ピクセルシェーダー)における処理である。
【0032】
次に、本実施形態に係るオブジェクトの描画処理の原理および概要について説明する。本実施形態では、上記のような2枚のテクスチャに加え、上記視差マッピング技法で用い
られる第3のテクスチャ(以下、第3テクスチャ)を加えた3枚のテクスチャを用いる。以下、各テクスチャについて改めて説明する。
【0033】
まず、第1テクスチャは、概念的には「オブジェクトの表面」に該当するようなテクスチャである。本実施形態では、第1テクスチャは、例えば、いわゆるアルベドの画像(光源の影響を受けていない画像、アルベドマップ等とも呼ばれる)である。
【0034】
第2テクスチャは、上記のように、「透けて見えている」ように見せたいものの画像である。本実施形態では、通常のRGB画像を例として説明するが、他の実施形態では、例えば色の明るさや濃さをRGB値を用いて指定した内容であってもよい。この場合は、RGB画像で見た場合、例えばグレースケールの画像となる。
【0035】
第3テクスチャは、上記視差マッピングの技法を用いる際に利用されるテクスチャであり、具体的には、バンプマッピングでも用いられる「高さマップ(ハイトマップ)」と呼ばれるものである。当該高さマップは、オブジェクト表面の高さ(凹凸具合)を示す情報(高さデータ)をRGBの形式で画像データに格納したものである。例えば、高さマップは、最も高い高さを1(白色)とし、最も低い高さを0(黒色)として、0~1の範囲内の値で示されるデータが格納された画像データである(例えばグレースケール画像となる)。
【0036】
ここで、視差マッピング技法に関して、これ自体は既知の技法であるため詳細な説明は省くが、本実施形態の処理に関する点について、簡単に説明する。まず、視差マッピングは、凹凸がないテクスチャに、画素に対応づけた高さ情報を組み合わせることで、オブジェクト表面の凹凸の立体感や高低差を表現するライティングの技法である。また、上記高さマップが、オブジェクト表面の高さを指定した情報となる。そして、視差マッピングは、この高さを考慮して、オブジェクトを描画する際に参照するテクスチャ座標をずらす(シフトする)という技術である。これにより、高さを考慮した陰影付けを行うことができる。この視差は、仮想カメラの視線方向と、オブジェクトの面(ポリゴン)の方向(法線)との角度差に基づいて決まる。また、上記座標をずらす方向(以下、シフト方向)やずらす量(以下、シフト量)は、仮想カメラとオブジェクト表面との位置関係(視差)によって変化する。例えば、オブジェクト(ポリゴン)の面に対して仮想カメラの視線方向が水平に近いほど、シフト量は大きくなる。逆に、仮想カメラの視線方向がオブジェクトの面の正面方向に沿った方向になるほど、シフト量は小さくなる(真正面から撮像した場合はシフト量が0になる)。また、オブジェクトを正面から撮像する場合を基準として、仮想カメラが上下左右のいずれの方向に移動したのかによって、シフト方向が決まる。例えば、仮想カメラが右方向に移動した場合は、シフト方向は左側に決定される。つまり、視差マッピングの技法は、仮想カメラの向きや上記高さマップで示される高さを考慮して、参照するテクスチャ座標をずらす技法である。例えば、
図12に示すように、高さを考慮しない場合の仮想カメラの注視点となるオブジェクト座標があり、この座標に関する高さの情報(高さマップ)と上記視差とに基づいて、注視点の位置のずれが求められる。そして、このずれを反映した座標に対応するテクスチャ座標が参照される、という技法である。
【0037】
上記のような視差マッピングの技法を応用して、本実施形態では、以下のような処理でオブジェクトを描画する。まず、オブジェクトの描画処理に先立って、オブジェクトの表面(メッシュ)の各部分がテクスチャ上のどの部分を使用するかを示す対応付けの情報、つまり、オブジェクト表面に対応するテクスチャ座標が予め指定される。すなわち、オブジェクトの表面の各部分に対応する第1テクスチャ座標を示す第1の対応関係、オブジェクトの表面の各部分に対応する第2テクスチャ座標を示す第2の対応関係、オブジェクトの表面の各部分に対応する第3テクスチャ座標を示す第3の対応関係、が設定される。以
下、これらの対応付けのことを総称して「基本対応定義」と呼ぶ
【0038】
次に、各ピクセルの描画に用いる色を各テクスチャから取得するが、上記第1色については、上記基本対応定義に従って、描画対象となる画素(描画対象画素)に対応する第1テクスチャのテクスチャ座標(以下、第1テクスチャ座標)の色が取得される。
【0039】
一方、第2色については、基本対応定義に従って決まる第2テクスチャのテクスチャ座標(以下、第2テクスチャ座標)をそのまま用いるのではなく、上記視差マッピング技法を用いてシフトした座標(以下、シフト座標)から取得した色を第2色として用いる。換言すれば、本実施形態では、第2色に関しては、視差マッピングの技法を用いて上記第2の対応関係を補正したうえで、第2色を取得する(参照する)ための第2テクスチャ座標を決定する。例えば、第2テクスチャ座標について、
図13で示すようなテクスチャ座標Aが、上記基本対応定義に基づく第2テクスチャ座標となる場合を想定する。この場合、視差マッピングの技法によって、当該座標がテクスチャ座標Bにシフトされ、このテクスチャ座標Bの色が第2色として決定され得る。その結果、上記
図9~
図11で示したように、開口部の「縁」の部分の色が第1色にブレンドされ、当該ブレンド後の色で描画される部分(
図9~11の網掛け部分)が、仮想カメラの向きや高さに応じて、変化するような画像が表現されることになる。例えば上記の図の例でいうと、「縁」の部分(の色)が、いわば引き延ばされたような絵となり得る。また、仮想カメラの位置の変化に応じて、この引き延ばされる量が変化するような表現がなされる。
【0040】
更に、本実施形態では、上記第1色と第2色をブレンドする際に、仮想カメラ、オブジェクト、および光源の位置を考慮した処理も行う。具体的には、仮想カメラから見て、光源がオブジェクトよりも視点側にある場合(順光の場合)と、光源がオブジェクトよりも視線方向の奥行き側にある場合(逆光の場合)とで、第1色と第2色のブレンド率を変化させている。本実施形態では、順光の場合は、第1色の比率が第2色よりも高くなるようにしてブレンドする。逆光の場合は、第2色の比率が第1色よりも高くなるようにしてブレンドする。これにより、順光の場合は、オブジェクトの表面に光が反射しているような表現ができる。また、逆光の場合は、光が透過して、オブジェクトの内部がより照らされているような表現ができ、オブジェクトの透明感をより強く表現できる。
【0041】
上記では、開口部のある柱オブジェクトを例にして説明したが、この他、例えば、現実世界でも透明感を有する「氷」のようなオブジェクトの透明感を表現したい場合等にも上記の処理は有用である。
図14~
図16に、氷塊オブジェクトを、上記のような処理を用いずに描画した場合の一例を示す。また、
図17~
図19に、上記のような処理を適用して描画した場合の一例を示す。また、これらの図の変化において想定する仮想カメラの動きとしては、右から左に回り込むような動きをしつつ、氷塊オブジェクトに若干寄っていくような動きを想定したものである。また、当該氷塊オブジェクトに用いるテクスチャについて、第1テクスチャについては、例えば明るめの青色を中心として作成された画像であり、氷塊の表面を表現する画像であるとする。また、第2テクスチャについては、暗めの青色や紫色を中心に作成された画像であり、透けて見える氷塊の内部を表現する画像であるとする。また、
図14~
図19では、当該第2テクスチャに係る部分については、網掛けパターンで示している。
【0042】
図14~
図16では、上記第2テクスチャに係る部分については、仮想カメラが近づくことによって拡大表示されるような画像にはなっているが、その形状自体は大きな変化がないような表現となっている。一方、
図17~
図19では、当該部分について、仮想カメラの移動に伴って、上記
図14~
図16の場合よりも形状自体の変化(特に横幅)が大きくなっている。いわば、氷の内部の画像(第2テクスチャ)について、仮想カメラの動きに伴う氷の表面(第1テクスチャ)の表現変化(動き)とは同期せずに、ずれて動いてい
るような表現がされている。そのため、氷の表面が透けて見えている(ように見せかけている)第2テクスチャに係る部分について、仮想カメラの動きに応じて形状(表示範囲)等が変化するという表現ができる。これにより、氷(の内部)の立体感がより感じられるような表現ができ、ひいては、透明感についてより豊かな表現が可能となる。
【0043】
ところで、上記柱オブジェクトにおいて、仮に、開口部以外の表面部分に凹凸がない場合を想定すると、上記高さマップについては一律に同じ高さを示す値が設定されることになる。その結果、上記シフト量については均一なものとなる。一方、表面に凹凸がある(ことを想定した)オブジェクトを想定した場合、上記シフト量は画素によって異なり得る。例えば、上記の氷塊オブジェクトの例で、氷の表面に凹凸があることを想定しているとする。この場合、氷の表面の凹凸に対応するような高さマップが用意される。つまり、第2色として取得される第2テクスチャ座標(シフト座標)について、氷の表面の凹凸具合が考慮(反映)されることになる。そのため、上記シフト量は均一なものとならず、画素毎に異なり得る。その結果、上記
図17~
図19では、網掛け部分のいわば外周について、氷塊オブジェクトの表面の凹凸(高さ)に応じて段差がついたような表現となっている。
【0044】
このように、本実施形態では、第1テクスチャの色に第2テクスチャの色をブレンドして、透明感のあるオブジェクトを表現する。そして、この際に、第2テクスチャのみ視差マッピングの技法を適用して、上記第2色として参照するテクスチャ座標をずらしたうえで、描画色を決定している。これにより、仮想カメラの移動に応じて、オブジェクトの内部に対応する画像の見え方が立体的に変化するように見せることができる。その結果、透けて見えている(ように見せかけている)オブジェクト内部の立体感が表現でき、より透明感のあるオブジェクトの表現が、少ない処理負荷で実現できる。
【0045】
[本実施形態の処理の詳細]
次に、
図20~
図22を参照して本実施形態の処理をより詳細に説明する。なお、本処理は、例えばゲーム処理の一環として実行されることを想定するが、以下の説明では、上述したようなオブジェクトの描画に関する処理についてのみ説明し、その他のゲーム処理の詳細説明は省略する。
【0046】
[使用データについて]
まず、本実施形態に係る処理にて用いられる各種データに関して説明する。
図20は、ゲーム装置2の記憶部84に格納されるプログラムおよびデータの一例を示している。記憶部84には、ゲームプログラム301、オブジェクトデータ302、第1テクスチャデータ303、第2テクスチャデータ304、第3テクスチャデータ305、仮想カメラ制御用データ306、光源データ307等が格納される。
【0047】
ゲームプログラム301は、本実施形態に係るオブジェクト描画処理を含むゲームを実行するためのプログラムである。
【0048】
オブジェクトデータ302は、描画対象となるオブジェクトに関するデータである。具体的には、オブジェクトデータ302には、当該オブジェクトのポリゴンデータが含まれている。また、オブジェクトデータ302には、当該オブジェクトの仮想空間内における配置位置を示す位置情報や姿勢情報も含まれる。
【0049】
第1テクスチャデータ303、第2テクスチャデータ304、第3テクスチャデータ305は、それぞれ、上記第1テクスチャ、第2テクスチャ、第3テクスチャの画像データである。これらのテクスチャデータは、上記オブジェクト毎に用意されている。
【0050】
仮想カメラ制御用データ306は、仮想空間内で仮想カメラの動きなどを制御するためのデータである。仮想カメラ制御用データ306には、仮想カメラの位置、視線方向(撮像方向)、画角等を示す情報が含まれる。
【0051】
光源データ307は、仮想空間内における光源の位置や光の強さを定義したデータである。
【0052】
その他、記憶部84には、オブジェクト描画処理に必要な各種データが必要に応じて適宜格納される。
【0053】
[描画処理の詳細]
次に、フローチャートを参照して、本実施形態に係る処理の詳細を説明する。本実施形態では、1以上のプロセッサが1以上のメモリに記憶された上記プログラムを読み込んで実行することにより、以下に示すフローチャートが実現される。なお、当該フローチャートは、処理過程の単なる一例にすぎない。そのため、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、変数の値や、判定ステップで利用される閾値も、単なる一例であり、必要に応じて他の値を採用してもよい。
【0054】
図21は、本実施形態に係る処理の詳細を示すフローチャートである。なお、
図21のステップS4~S7の処理ループは、1フレーム毎に繰り返し実行される。
【0055】
図21において、まず、ステップS1で、プロセッサ81は、描画対象となるオブジェクトを仮想空間内に配置する。また、プロセッサ81は、光源も当該仮想空間内に配置する。更に、ステップS2で、プロセッサ81は、仮想カメラを仮想空間内に配置する。
【0056】
次に、ステップS3で、プロセッサ81は、上記オブジェクトデータ302からポリゴンデータを読み出す。更に、当該オブジェクトに対応づけられている第1テクスチャデータ303、第2テクスチャデータ304、第3テクスチャデータ305を読み出す。また、この際、上述した基本対応定義が設定される。すなわち、オブジェクトの表面と、上記の各テクスチャのテクスチャ座標との対応関係の設定が行われる。
【0057】
次に、ステップS4で、プロセッサ81は、仮想カメラの制御を行う。すなわち、仮想カメラの移動と視線方向(撮像方向)の設定が行われる。当該制御は、コントローラ4に対するユーザの操作に基づいて仮想カメラを移動させる制御であってもよいし、ユーザの操作無しで自動的に移動させる制御であってもよい。
【0058】
次に、ステップS5で、プロセッサ81は、オブジェクト描画処理を実行する。
図22は、当該オブジェクト描画処理の詳細を示すフローチャートである。
図22において、まず、ステップS21で、プロセッサ81は、描画対象のオブジェクトを構成する全てのポリゴンについて描画したか否かを判定する。まだ全て描画していない場合は(ステップS21でNO)、ステップS22で、プロセッサ81は、まだ描画していないポリゴンから、次に描画対象とする描画対象ポリゴンを選択する。
【0059】
次に、ステップS23で、プロセッサ81は、現在の描画対象ポリゴンについて、そのポリゴンに対応する画素(ピクセル)の全てを描画したか否かを判定する。当該判定の結果、描画対象ポリゴンに係る全ての画素を描画していれば(ステップS23でYES)、上記ステップS21に戻り、処理が繰り返される。一方、全ての画素をまだ描画していない場合は(ステップS23でNO)、ステップS24で、プロセッサ81は、未描画の画素から、次の描画対象とする描画対象画素を選択する。
【0060】
次に、ステップS25で、プロセッサ81は、上記基本対応定義に基づくオブジェクト表面と第1テクスチャとの対応関係に基づき、描画対象画素に対応する第1テクスチャ座標の色を示す第1色情報を取得する。
【0061】
次に、ステップS26で、プロセッサ81は、上記基本対応定義に基づくオブジェクト表面と第3テクスチャ(高さマップ)との対応関係に基づき、描画対象画素に対応する第3テクスチャ座標の高さ情報を取得する。
【0062】
次に、ステップS27で、プロセッサ81は、上記視差マッピングの技法を用いて、上記第2色の情報である第2色情報を上記第2テクスチャから取得する。具体的には、まず、プロセッサ81は、上記基本対応定義に基づくオブジェクト表面と第2テクスチャとの対応関係に基づき、描画対象画素に対応する第2テクスチャ座標を特定する。更に、上記高さ情報と、仮想カメラの位置・向きに基づいて、上記シフト量を算出する。当該シフト量は、例えば、以下のような数式で算出される。
第2テクスチャ座標-(視線方向ベクトルのXY成分×高さ×所定の係数)・・・式1そして、プロセッサ81は、算出されたシフト量だけずらした第2テクスチャ座標に係る色情報を第2色情報として取得する。
【0063】
次に、ステップS28で、プロセッサ81は、第1色に第2色をブレンドして、現在の描画対象画素の描画色を決定する。この際、プロセッサ81は、光源データ307に基づき、描画対象オブジェクトと光源との位置関係を考慮して、第1色と第2色のブレンドの割合を決定する。本実施形態では、この割合をブレンド率として算出する。上記のように、順光となる位置関係であれば、第1色の比率が第2色よりも高くなるようにブレンド率が算出される。また、逆光となる位置関係の場合は、第2色の比率が第1色よりも高くなるようにブレンド率が算出される。そして、プロセッサ81は、算出されたブレンド率に基づいて第1色と第2色をブレンドすることで、描画色を決定する。そして、当該決定された描画色で現在の描画対象画素を描画する(例えば、フレームバッファへの書き込みが行われる)。その後、上記ステップS23に戻り、処理が繰り返される。
【0064】
一方、上記ステップS21の判定の結果、描画対象オブジェクトを構成する全てのポリゴンについて描画が終わっていれば(ステップS21でYES)、当該オブジェクト描画処理は終了する。
【0065】
図21に戻り、オブジェクト描画処理の次に、ステップS6で、プロセッサ81は、上記の処理が反映された画像を表示部5に出力する。
【0066】
次に、ステップS7で、プロセッサ81は、本実施形態に係る処理を終了する条件が満たされたか否かを判定する。満たされていない場合は(ステップS7でNO)、上記ステップS4に戻り処理が繰り返される。満たされていれば(ステップS7でYES)、プロセッサ81は、本実施形態に係る処理を終了する。
【0067】
以上で、本実施形態に係る処理の詳細説明を終了する。
【0068】
このように、本実施形態では、第1テクスチャと第2テクスチャの色をブレンドしてオブジェクトを描画する際に、第2テクスチャにのみ視差マッピングの技法を適用して、上記第2色を取得するテクスチャを座標ずらしている。そのため、第2テクスチャに係る画像部分について、オブジェクト表面の凹凸や仮想カメラとの位置関係が考慮された、より立体感・奥行き感のある画像が表現できる。これにより、あたかもオブジェクトの内部が透けて見えているような透明感のあるオブジェクトが表現でき、かつ、その内部の立体感・奥行き感がより強調されたような表現ができる。更に、このような処理は、いわゆるフ
ラグメント/ピクセルシェーダーの段階で行われるため、比較的軽い処理負荷で済む処理となっている。そのため、例えばαブレンド法等を用いる従来の透過処理によって表現する場合に比べて低い処理負荷で、透明感のあるオブジェクトの表現が実現できる。
【0069】
[変形例]
なお、上述の実施形態では、第2テクスチャとして、オブジェクトの内部にあることを想定したような画像(透けて見えているように見せたい画像)を通常のRGB画像として用いる例を示した。この他、上記でも言及したが、例えば色の明るさや色の濃さを示す情報をRGB形式の画像としたものを第2テクスチャとしてもよい。この場合の第2テクスチャは、概念的には、各画素に対応するオブジェクト表面の光を通す量(透過度)を定義したものともいえる(但し、上述の処理のように、実際に透過させる処理を行うわけではない)。このような第2テクスチャを用いる場合は、例えば、上記の視差マッピングの技法を用いて決定された第2テクスチャ座標(シフト座標)から上記第2色の「明度情報」を取得する。そして、表現したい所定の色を当該「明度情報」に掛け合わせることで、第2色を決定すればよい。また、当該掛け合わせる色数として2以上の色を掛け合わせてもよい。
【0070】
また、上記第1テクスチャについては、上記のアルベドマップの他、法線マップやラフネスマップ等を併用して処理してもよい。これにより、オブジェクトの表面についてより多彩な表現を行いつつ、透明感も有するオブジェクトが表現できる。
【0071】
また、上記第1色と第2色のブレンドに関して、上記の例ではブレンド率を算出する例を挙げたが、両者の割合が指定できるパラメータであれば、ブレンド率に限らず、他のパラメータを用いて指定してもよい。
【0072】
また、上記実施形態では、高さ情報については、高さマップ(第3テクスチャ)として用いていた。他の実施形態では、当該高さ情報を、例えばRGBα形式の画像データにおけるαの値に埋め込むようにして、例えば、1枚の上記第1テクスチャにまとめるような構成としてもよい。この場合は、使用するテクスチャの枚数が2枚で済むことになる。
【0073】
また、上記実施形態においては、上記一連の処理が単一の装置において実行される場合を説明したが、他の実施形態においては、上記一連の処理が複数の情報処理装置からなる情報処理システムにおいて実行されてもよい。例えば、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの一部の処理がサーバ側装置によって実行されてもよい。更には、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの主要な処理がサーバ側装置によって実行され、当該端末側装置では一部の処理が実行されてもよい。また、上記情報処理システムにおいて、サーバ側のシステムは、複数の情報処理装置によって構成され、サーバ側で実行するべき処理を複数の情報処理装置が分担して実行してもよい。
【0074】
その他、いわゆるクラウドゲーミングの構成を採用してもよい。例えば、ゲーム装置2は、ユーザの操作を示す操作データを所定のサーバに送り、当該サーバにおいて各種処理が実行され、その実行結果が動画・音声としてゲーム装置2にストリーミング配信されるような構成としてもよい。
【符号の説明】
【0075】
2 ゲーム装置
4 コントローラ
5 表示部
81 プロセッサ
84 記憶部
87 画像音声出力部