画像処理装置、画像処理方法及び画像処理プログラム
【課題】 体毛、頭髪、芝生等の線状オブジェクトが風などに影響される動きを描写する画像処理方法及び画像処理装置が提案されないでいた。
【解決手段】 仮想3次元空間に、視点と、地面と、前記地面に一端が固定される複数の線状オブジェクトとが配置されており、前記視点から見える前記線状オブジェクトを2次元平面に投影して描画する画像処理装置において実行される画像処理方法であって、前記複数の線状オブジェクトを前記地面に平行な複数の面で切断して形成される前記複数のオブジェクトの断面を、前記複数の面毎に半透明層として重ね合わせて前記2次元平面に描画する描画ステップと、時間が経過するとき、前記半透明層の一部又は全部を所定の方向に移動させて前記2次元平面に再描画する再描画ステップとを有することを特徴とする描画方法を提供する。
【解決手段】 仮想3次元空間に、視点と、地面と、前記地面に一端が固定される複数の線状オブジェクトとが配置されており、前記視点から見える前記線状オブジェクトを2次元平面に投影して描画する画像処理装置において実行される画像処理方法であって、前記複数の線状オブジェクトを前記地面に平行な複数の面で切断して形成される前記複数のオブジェクトの断面を、前記複数の面毎に半透明層として重ね合わせて前記2次元平面に描画する描画ステップと、時間が経過するとき、前記半透明層の一部又は全部を所定の方向に移動させて前記2次元平面に再描画する再描画ステップとを有することを特徴とする描画方法を提供する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、仮想3次元空間に配置される毛髪、芝生、毛皮等の線状オブジェクトを2次元平面に描画する画像処理装置、画像処理方法及び画像処理プログラムに関する。
【背景技術】
【0002】
現在、コンピュータにより画像処理を行うコンピュータグラフィックス(Computer Graphics、以下CG)技術は、科学、工学、製造、ゲーム等の分野において、CAD(Computer Aided Design)やCAM(Computer Aided Manufacturing)として幅広く利用されている。CG技術により描写される対象物は数多くあるが、中でも、哺乳動物に見られる体毛や、人間の頭髪、風景画における稲や麦、芝生等の線状オブジェクトの描写に関しては、一定の困難性が認められている。
【0003】
これは、線状オブジェクトが配置される表皮や肌、大地等の形状が複雑であることや、線状オブジェクトの生え方(上方への伸び方や長さ)に規則性がないことが原因である。そこで、従来技術においても、こうした線状オブジェクトの描写方法が提案されている。
【0004】
非特許文献1によれば、毛を微小円柱とみなし、この微小円柱に対する拡散光と反射光の和をレンダリング(数値データとして与えられた物体や図形に関する情報を計算によって画像化すること)におけるパラメータとして追加し、動物の毛皮の質感表現を行うことが提案される。この微小円柱は、異方性反射特性を有するものの例であり、非特許文献1においてテクセルとして導入されている。
【0005】
非特許文献2によれば、非特許文献1に紹介された光の反射が全ての方向に対して均等であるのに対し、反射成分と透過成分を分けるGoldmanによる毛の表現を一歩進めて、陰影表現に本非特許文献の筆者の独自性を持たせた毛の表現が紹介される。非特許文献3によれば、地肌から垂直に伸びる毛を、高さ方向と垂直に複数の半透明層で切断し、地肌に近い方から半透明層を複数回描画し重ね合わせることで、毛皮を高速に描画する方法が提案される。この半透明層は、非特許文献3においてシェル(shell)として導入されている。
【0006】
特許文献1によれば、非特許文献3に示されるように、毛皮を高さ方向にスライスして、それぞれを別々のシェルに対応するマップとみなすのではなく、毛の全体を皮膚面に相当する2次元マップ上に投影することで、少ないメモリ容量で高画質な表現を可能にする画像処理装置が提案されている。
【非特許文献1】Kajiya、他2名、"Rendering Fur with Three Dimensional Textures"、SIGGRAPH 89 conference proceedings
【非特許文献2】今給黎、"擬似ファーライティングの頂点シェーダーによる実装"、XFC2001、[平成14年8月25日検索]、インターネット<URL http://if.dynsite.net/t-pot/program/23_fur/index.html>
【非特許文献3】Jerome Lengyel、他3名、"Real-Time Fur Over Arbitrary Surfaces"、ACM Symposium on Interactive 3D Graphics 2001、pages 227-332、[平成14年8月25日検索]、インターネット<URL http://research.microsoft.com/~hoppe/fur.pdf>
【特許文献1】特開2004−54612号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
しかしながら、従来技術における表現は、毛等の線状オブジェクトは静止していることを前提とするものであり、稲穂が揺れる様子や、麦畑を風が吹き抜ける様子や、芝生が風になびく様子といった線状オブジェクトの動きを表現するものではない。非特許文献3には、毛を動かすことの可能性について言及されているが、何ら具体的なことを示唆するものではなく、将来に向けての課題項目として挙げられているに過ぎない。
【0008】
そこで、本発明の目的は、哺乳動物に見られる体毛や、人間の頭髪、風景画における稲や麦、芝生等の線状オブジェクトが風などの要因によって運動する様子を高速かつ安価に描画可能な画像処理方法、画像処理プログラム、そして画像処理装置を提供することにある。
【課題を解決するための手段】
【0009】
上記目的は、本発明の第一の側面によれば、仮想3次元空間に、視点と、地面と、前記地面に一端が固定される複数の線状オブジェクトとが配置されており、前記視点から見える前記線状オブジェクトを2次元平面に投影して描画する画像処理を実行するコンピュータに、前記複数の線状オブジェクトを前記地面に平行な複数の面で切断して形成される前記複数のオブジェクトの断面を、前記複数の面毎に半透明層として重ね合わせて前記2次元平面に描画する描画ステップと、所定時間経過後、前記半透明層の一部又は全部を所定の方向に移動させて前記2次元平面に再描画する再描画ステップとを実行させるためのプログラムを提供することにより達成される。
【0010】
上記発明の側面においてより好ましい実施例によれば、そのプログラムは、更に、前記線状オブジェクト毎に、前記3次元仮想空間に固定される静的な光源に基づく第一の輝度と、前記第一の輝度とは異なる輝度であって、時間と共に変化する第二の輝度とを算出するステップと、前記第一及び前記第二の輝度の影響度をそれぞれ決定するステップと、前記第一及び前記第二の輝度と、前記第一及び前記第二の輝度に対してそれぞれ決定される前記影響度とに基づき、前記複数の線状オブジェクトの輝度をそれぞれ求めるステップとを有する。
【0011】
上記発明の側面においてより好ましい実施例によれば、前記地面に近い半透明層ほど、移動量が少ない。また、上記発明の側面においてより好ましい実施例によれば、前記再描画ステップは、繰り返し行われ、前記再描画ステップにおいて移動される半透明層は、前記所定の方向に所定の移動量移動されると、該所定の方向の反対方向に前記所定の移動量移動され、往復運動をする。
【0012】
また、上記発明の側面においてより好ましい実施例によれば、前記描画ステップでは、前記視点からの距離の増加に応じて、前記描画される半透明層の数が減少され、前記再描画ステップでは、前記3次元空間において前記半透明層の数が第一の閾値を下回る距離を越える箇所で、前記半透明層を移動させない。また、上記発明の側面においてより好ましい実施例によれば、前記描画ステップでは、前記視点からの距離の増加に応じて、前記描画される半透明層の数が減少され、前記3次元仮想空間において前記半透明層の数が第二の閾値を下回る距離を越える箇所で、前記第二の輝度の影響度が前記第一の輝度の影響度より大きい。また、上記発明の側面においてより好ましい実施例によれば、前記移動される半透明層の位置や前記線状オブジェクトの第二の輝度は、時間を変数とする同一周期の周期関数で決定されてもよい。
【0013】
また上記目的は、本発明の第二の側面によれば、仮想3次元空間に、視点と、地面と、前記地面に一端が固定される複数の線状オブジェクトとが配置されており、前記視点から見える前記線状オブジェクトを2次元平面に投影して描画する画像処理装置であって、制御プログラム及び前記視点、前記地面、そして前記線状オブジェクトに関するそれぞれのデータが格納される記憶部と、前記複数の線状オブジェクトを前記地面に平行な複数の面で切断して形成される前記複数のオブジェクトの断面を、前記複数の面毎に半透明層として重ね合わせて前記2次元平面に描画する描画機能と、所定時間経過後、前記半透明層の一部又は全部を所定の方向に移動させて前記2次元平面に再描画する再描画機能とを、前記記憶部から前記制御プログラム及び前記それぞれのデータを読み出して実現する制御部とを有することを特徴とする画像処理装置を提供することにより達成される。
【0014】
また上記目的は、本発明の第三の側面によれば、仮想3次元空間に、視点と、地面と、前記地面に一端が固定される複数の線状オブジェクトとが配置されており、前記視点から見える前記線状オブジェクトを2次元平面に投影して描画する画像処理を実行する画像処理装置において実行される画像処理方法であって、前記複数の線状オブジェクトを前記地面に平行な複数の面で切断して形成される前記複数のオブジェクトの断面を、前記複数の面毎に半透明層として重ね合わせて前記2次元平面に描画する描画ステップと、所定時間経過後、前記半透明層の一部又は全部を所定の方向に移動させて前記2次元平面に再描画する再描画ステップとを実行させるためのプログラムを提供することにより達成される。
【0015】
また、本発明の第四の側面によれば、上記プログラムを記録したコンピュータ読み取り可能な記録媒体を提供することにより達成される。
【発明の効果】
【0016】
本発明によれば、3次元仮想空間に配置される線状オブジェクトを表現するに当たり、高さの異なる半透明層(シェル)を重ね合わせて高速に芝生を描画すると共に、時間経過に合わせてシェルを揺らすことによって、例えば、芝生が風になびいたり、揺れるといった芝生の運動を表現する。こうすることにより、低計算量で線状オブジェクトの動きを表現することが可能となる。
【0017】
更に、LOD(Level of Detail)を実現すべく、3次元空間に配置される視点からの距離に応じて、線状オブジェクトを描くシェルの数を減じる場合に、視点からの距離が遠い所では線状オブジェクトの運動を表現するために揺らすシェルがない、又は、あったとしても数が少ないためその視覚効果が薄いという課題も、ライティング処理を行う際に、3次元仮想空間に固定される光源からの輝度(ミクロの輝度)に加えて、時間を変数とする周期関数により決定される値を使用することによって解決することができる。輝度をこのように計算することで、視点からの距離が遠い所の芝生が、所定の周期で明るくなったり、暗くなったりする効果を演出することになるからである。この周期的な明暗の変化により、シェル数が少ない箇所でも線状オブジェクトの動きを表現することができ、線上オブジェクトを力学的に揺らさなくても線状オブジェクトが風向きに沿って揺れる動きを表現することが可能となる。
【発明を実施するための最良の形態】
【0018】
以下、本発明の実施の形態について図面に従って説明する。しかしながら、本発明の技術的範囲はかかる実施の形態に限定されるものではなく、特許請求の範囲に記載された発明とその均等物にまで及ぶものである。
【0019】
図1は、本発明の実施形態における画像処理装置1の構成ブロック図である。本実施形態の画像処理装置1は、哺乳動物に見られる体毛や、人間の頭髪、風景画における稲や麦、芝生等の線状オブジェクトの描画を行う。その描画に際して、例えば、3次元仮想空間に配置される芝生を表現するに当たり、高さの異なる半透明層(シェル)を重ね合わせて高速に芝生を描画すると共に、時間経過に合わせてシェルを揺らすことによって、芝生が風になびいたり、揺れるといった芝生の運動を表現する。こうすることにより、低計算量で芝生の動きを表現することが可能となる。
【0020】
更に、本実施形態の画像処理装置1は、LOD(Level of Detail)を実現すべく、3次元空間に配置される視点からの距離に応じて、芝生を描くシェルの数を減じる場合に、視点からの距離が遠い所では芝生の運動を表現するために揺らすシェルがない、又は、あったとしても数が少ないためその視覚効果が薄いという課題も解決する。そのために、本実施形態の画像処理装置1は、ライティング処理を行う際に、3次元仮想空間に固定される光源からの輝度(ミクロの輝度)に加えて、時間を変数とする周期関数により決定される値を使用することによって、視点からの距離が遠い所の芝生が、所定の周期で明るくなったり、暗くなったりする効果を演出する。この周期的な明暗の変化により、シェル数が少ない箇所でも線状オブジェクトの動きを表現することができる。
【0021】
このようにすることで、芝生が風により揺れる動きを集団的に表現することができる。ここでは、この集団的な動きを表現するための輝度をマクロの輝度と称する。こうして、ミクロの輝度に加え、マクロの輝度を用いることにより、芝生を力学的に揺らさなくても芝生が風向きに沿って揺れる動きを表現することができる。
【0022】
図1の画像処理装置は、バス20を介して互いに接続される制御部11、RAM(Random Access Memory)12、記憶部13、周辺機器接続用インタフェース(I/F)15、入力部16、表示部17を含む。制御部11は、図示省略されたCPU(Central Processing Unit)を含み、RAMに格納されるプログラムを実行し、画像処理装置1に含まれる各部を制御する。
【0023】
RAM12は、画像処理装置1の処理における演算結果やプログラムが一時的に格納される記憶手段である。記憶部13は、ハードディスク、光ディスク、磁気ディスク、フラッシュメモリ等の不揮発性記憶手段であり、各種データやRAMへ読み出される前のOS(Operating System)等のプログラムが格納される。
【0024】
周辺機器I/F15は、画像処理装置1に周辺機器を接続するためのインタフェースであり、USB(Universal Serial Bus)ポートや、PCIカードスロット等である。周辺機器は、例えば、プリンタ、SCSI(Small Computer System Interface)機器、メモリカードリーダライタ、ネットワークカード、無線LANカード、モデムカードなどである。周辺機器IF15を介した周辺機器の接続形態は、無線であるか、有線であるかを問わない。
【0025】
入力部16は、キーボード、マウス、タッチパネル、ボタン等ユーザからの指示(コマンド)の入力信号を画像処理装置1に入力する入力装置である。表示部17は、液晶ディスプレイ、CRT(Cathode Ray Tube)等ユーザに対する情報を表示するための表示装置である。図1の画像処理装置は、入力部16、表示部17を備えているが、画像処理装置1に周辺機器I/F15を介して外部接続されるUSBマウスや、プレゼンテーション用のプロジェクタ、ディスプレイといった入力装置、表示装置があってもよい。また、他に、ネットワークに接続するためのネットワークインタフェースが画像処理装置1の本体に備えられていてもよい。
【0026】
図2は、本発明の実施形態における画像処理装置1の機能ブロック図である。図2には、CPU11、ワークRAM322、ジオメトリ演算部31、トランスフォーム&ライティング部(以下T&L部)33、レンダリング部34、テクスチャRAM35、表示部17、フレームバッファ37を有する。各機能ブロックはプログラムで実現され、画像処理装置1に備えられたCPU(Central Processing Unit)11にてそのプログラムが実行されるが、DSP(Digital Signal Processor)等のハードウェアで構成することも可能である。
【0027】
CPU11は、画像を生成するプログラムを制御する。ワークRAM32には、CPU11で使用するプログラムやデータが格納される。ジオメトリ演算部31には、CPU11の制御の下に、ワークRAM32からワールド座標系の3次元オブジェクトデータとしてのポリゴンデータが読み出されて入力される。ジオメトリ演算部31は、3次元オブジェクトデータに含まれる頂点のワールド座標系における座標等を計算し、T&L部33に出力する。
【0028】
ジオメトリ演算部31で処理されたポリゴンデータはT&L部33に入力され、T&L部33において、ポリゴン毎に光源による影響(輝度)を計算するライティング処理が行われ、視点を原点とする視点座標系のデータに座標変換を行う。また、T&L部33は、3次元オブジェクトの表面に貼り付ける模様(テクスチャ)に対する処理として、テクスチャRAM35からテクスチャを読み出し、読み出したテクスチャを3次元オブジェクトの形状に合わせて変形させるテクスチャ変換も行う。
【0029】
T&L部33で処理されたデータはレンダリング部34に入力され、レンダリング部34において、ポリゴン単位のデータがピクセル単位のデータに変換される。レンダリング部34は、視界から外れる立体部分を消去するクリッピング、陰面消去、陰線消去を行い、ピクセル単位のデータに対し、テクスチャ変換後のテクスチャデータと輝度に基づき、テクスチャカラーを生成する。そして、レンダリング部34は、各ピクセルのテクスチャカラーを表示部17上での2次元座標に変換しながらフレームバッファ37に書き込む。フレームバッファ37に書き込まれたデータは、繰り返し読み出され、ビデオ信号に変換され表示部17に出力される。
【0030】
なお、図2に示されるワークRAM32、テクスチャRAM35、フレームバッファ37は、図1のRAM12により実現することができる。次に、本実施形態の画像処理装置1における特徴部分を説明する。
【0031】
図3は、本実施形態の画像処理装置1における特徴部分を詳細に説明するためにT&L部33を詳細に説明する図である。なお、以下においては、本実施形態の画像処理装置1が、LODを実現すべく、視点からの距離に応じて、芝生を描くためのシェルの数を減らすことを前提として説明を進める。本実施形態の説明を容易にするための描画対象として、ゴルフコースの芝生という具体例を導入し、図3の説明に入る前に、その具体例について説明する。
【0032】
図4は、本実施形態で使用するゴルフコースが仮想3次元空間に配置される具体的な様子を説明する図である。本実施形態の画像処理装置1が、ゴルフゲームにおける芝生を描画するものとし、図4Aでは、仮想3次元空間のワールド座標系(w-xyz座標系)に配置されるゴルフコースが描かれている。
【0033】
ゴルフコース81には、ティーグラウンド82、木83、グリーン84、旗85、ホール86、バンカー87、地面88が配置され、図4では図示されないが芝生が一端が地面に固定され、地面から生えている。ゲームプレイヤの打った球の位置に応じて視点54は移動する。プレイヤが目にする画面は、ワールド座標系の場景を投影する2次元平面の投影面52を視点54から眺めた様子が映し出される。
【0034】
前方クリップ面53、後方クリップ面51は、レンダリング部34がクリッピング等を行う際に、平行移動、拡大縮小などのスケーリングを施し、正規化するために使用される。これは、クリッピング等の処理を高速化したり、ハードウェアによる実装を可能にするものであるが、本実施形態においては詳細な説明は避ける。
【0035】
仮想3次元空間に配置されるゴルフコース81を投影面52に投影するには、ワールド座標系における立体図形の各座標値を、投影面52を定義する座標系である視野参照座標系(o-uvn座標系)の座標値で表現し直す必要がある。この変換が視野変換である。
【0036】
図4Bは、投影面に定義される視野参照座標系を示す図である。u軸、v軸は、投影面52に平行に定義され、n軸は、投影面52に垂直に定義される。一般に投影面52の中心がo-uvn座標の原点である必要はないが、ここでは、原点oが投影面52の中心に一致している。また、視点54がn軸上にある必要もないが、ここでは、視点54がn軸上にあるものとする。
【0037】
図5は、実際のゲームにおける画面例である。プレイヤが何打かした結果、フェアウェイ62上にゴルフボール64が移動し、クラブを手にしたキャラクタ63をプレイヤが操作し、次の一打を打とうとする場面である。ゴルフボール64の移動に伴い、視点がグリーン84に近くなり、ティーグラウンドから見るよりグリーン84が大きい。
【0038】
フェアウェイ62の周囲は、芝66の丈がフェアウェイ62の芝より長いラフ65が広がっている。図5に示されるように、キャラクタに近い手前側の芝は、視点に近いことから丈の長いものから短いものまで描かれるが、グリーン84に近づくにつれ、描かれる芝は、丈の短いものしか現れないようになる。
【0039】
また、矢印52は、風向き表示であり、手前側左斜めから奥側右斜めに風が吹くことを示す。
図5は静止画であり、芝66が風に揺れる様子は表現できないが、本実施形態の画像処理装置1は、シェルを揺らし、視点から離れた箇所の芝の輝度を周期的に変えることによって芝66が風になびいたり、揺れたりする一連の動きを表現する。
【0040】
図3に戻り、T&L部33の説明を行う。まず、ジオメトリ部31より3次元オブジェクトデータに含まれる頂点のワールド座標系における座標等が入力されると、T&L部33では、シェル数決定部331が、LODを考慮したシェル数を決定する。シェル数決定部331は、例えば、視点からの距離に応じて複数のゾーンを決定し、視点からの距離が遠くなるほど、そのゾーンのシェル数が少なくなるように適宜ゾーン毎のシェル数を設定する。
【0041】
図6は、シェル数決定部331が決定するゾーンの例を示す表である。図6に示されるように、視点からの距離に応じてゾーンが区切られ、視点からの距離が遠くなるゾーンほどシェル数が少なくされ、LODが実現される。図6の表に示されるデータは、シェル数決定部331によりRAM12に記憶される。
【0042】
ゾーンの区切り方は、所定のアルゴリズムにより決定される。例えば、視点の位置に関係なくゾーン数が最初に決められており、投影面を水平に等間隔で決められたゾーン数を満たすように区切る方法や、グリーンと視点との距離に応じて、ゾーン数を変える方法がある。ゾーン数を可変にする場合、予めグリーンとの距離とゾーン数とを対応付けたルールテーブルをRAM12に格納しておけば、そのルールに基づいてシェル数決定部331がゾーン分割をすることが可能である。
【0043】
図7は、具体例のゴルフコースにおけるゾーン分割の例を示す図である。図7では、1番目のゾーン71から6番目のゾーン76まで6つのゾーンが視点に近い方から登場する。なお、本実施形態では、芝の描写に焦点を当てているため、ゴルフコースが途切れ、芝が描かれることのない、ゾーン76より奥側は特にゾーン設定を行っていない。
【0044】
図7にはまた、各ゾーンに描かれる芝の種類が示される。即ち、視点から最も遠いゾーン76には、最も丈の短い芝101のみが登場する。次に視点から遠いゾーン75には、芝101に加えて、芝101より少し丈の長い芝102が登場する。以下、同様にして、視点に近づくにつれ、それまでの芝より丈の少し長い芝が追加され、最終的に、視点に最も近いゾーン71では、芝101〜芝106までの6種類の丈の異なる芝が登場する。
【0045】
図3に戻り、シェル数が決定されると、シェル数決定部331は、次の処理を開始するため、最大輝度決定部332に処理完了を通知する。最大輝度決定部332は、マクロの輝度の算出に用いられる周期関数の振幅(最大輝度)を、視点からの距離に応じて決定する。例えば、最大輝度決定部332は、最大輝度として、シェル数決定部331が決定するゾーン毎に異なる値を与える。
【0046】
図8は、最大輝度決定部332が各ゾーンに対して与える最大輝度の例を示す表である。図8に示されるように、視点からの距離が離れると、最大輝度が大きくなるように設定される。これは、視点からの距離が離れると、芝生の動きをシェルの揺れによって表現することが難しく、マクロの輝度が、それを補うべく導入されたことに起因する。図8の表に示されるデータは、RAM12に記憶される。
【0047】
なお、図8においては、ゾーン毎に異なる最大輝度が設定されるが、最大輝度は、単純に距離に所定の係数を乗じて、距離に比例する値とすることもできる。その場合、予め、所定の係数がRAM12に格納されており、輝度決定部332は、視点から線状オブジェクトまでの距離に、RAM12から読み出した所定の係数を乗じて最大輝度を与える。
【0048】
図3に戻り、視点からの距離に応じた最大輝度が決定されると、最大輝度決定部332は、次の処理を開始するため、ライティング処理部333に処理完了を通知する。ライティング処理部333は、ミクロの輝度、マクロの輝度を算出する。特にマクロの輝度の算出に当たり、ライティング処理部333は、風の影響を考慮に入れる。
【0049】
[ミクロの輝度]
図9は、ミクロの輝度の算出法の一例を説明する図である。図9は、非特許文献1にて提唱される方法を説明するものであり、図9Aは、拡散光成分Adの算出法を説明する図であり、図9Bは、正反射光成分Asを説明する図である。またこの図は、非特許文献2より引用するものである。この場合、ミクロの輝度MICは、拡散光成分Adと正反射光成分Asの和として算出される。
【0050】
線状オブジェクト(ここでは芝)92が、円柱状のオブジェクトとして示され、一端が地面93に固定される。光源91による拡散光成分は、地面93の法線ベクトル94と、光線方向のベクトル95とのなす角がθ(シ−タ)である。
【0051】
詳細な説明は非特許文献1に譲るが、図9Aに示される記号を用いて、拡散光成分Adは次式(A)により算出される。
【0052】
【数1】
【0053】
但し、Kdは拡散反射率である。同様にして、図9Bに示される記号を用いて、正反射光成分Asは次式(B)により算出される。
【0054】
【数2】
【0055】
但し、Ksは正反射率、nは、反射光の広がりを示すハイライト特性係数である。nが大きいほど、反射光の広がりが狭くなりシャープになる。γは、光の反射ベクトル96が形成する稜線97と視線ベクトル98のなす角である。ライティング処理部333は、ミクロの輝度をMIC=Ad+Asとして算出する。
【0056】
[マクロの輝度]
続いて、周期関数によって周期的に変化するマクロの輝度の算出法の一例を説明する。ライティング処理部333は、例えば、次式(C)に従って所定時刻でのマクロの輝度MAC(t)を算出する。
【0057】
【数3】
【0058】
但し、A=k*xであり、kは、輝度の最大変化量を決定する定数、xは、視点から線状オブジェクトまでの距離である。fは周期の逆数である周波数、tは時間である。また、
【0059】
【数4】
【0060】
としてベクトルKとベクトルPの内積で表される。ベクトルKは、風向きを、ベクトルPは、線状オブジェクトの位置ベクトルをそれぞれ示す。ベクトルKとベクトルPの内積を取ることによって、風向きと線状オブジェクトの位置ベクトルとの角度に応じて時間位相が異なるようになり、ちょうど芝生を照らす光の帯が風向きにそって移動するような効果が得られる。
【0061】
なお、式(C)において定数Aは、単純に距離に比例する量としているが、最大輝度決定部332の説明で述べたように、Aは、ゾーン毎に割り当てられる係数(図8参照)を用いることもできる。
【0062】
ライティング処理部333は、以上のようにして求められるミクロの輝度、マクロの輝度を影響度を考慮し、一方を取捨選択し、あるいは、両者を加重平均して線状オブジェクトの輝度を最終的に算出する。例えば、ミクロの輝度とマクロの輝度を比較して、大きい値の方が影響度が大きいを判断し、大きい値を持つ輝度が使用される。
【0063】
図10は、ミクロの輝度とマクロの輝度の影響度を割合で表した一例を示すルールテーブルである。このルールテーブルに示されるように、ミクロの輝度の影響度は、視点から距離が遠くなるほど小さくなり、マクロの輝度は視点から距離が遠くなるほど大きくなる。この表は、シェル数決定部331がゾーンを決定する際に、RAM12に格納される。ミクロの輝度とマクロの輝度の混合割合(それぞれの輝度の影響度)の数値は自由に設定することができ、周期的な輝度の明暗による効果が、どの位置から強調されだすかは柔軟に変更できる。
【0064】
図11は、風向きを考慮したマクロの輝度による効果を説明する図である。この図は、マクロの輝度の影響だけを説明するものであり、視点からの距離に関係なく、マクロの輝度の影響を100%にした状態とする。式(C)により各地点での輝度の明暗が周期的に変化することにより、図11に示されるような光のスポット122(帯状に広げることもできる)が、風向きに沿って手前から奥へ周期的に何度も移動することになり、ちょうど芝生を吹き抜ける風をうまく表現できる。これは、見方を変えると移動光源121を風向きにそって移動させそのときの輝度を算出していることに等しい。ただし、3次元仮想空間に実際に移動光源を用意するものではない。
【0065】
[シェルの揺れ]
図3に戻り、ライティング処理部333において、上記したような風向きを考慮した輝度計算が完了すると、続いて、テクスチャ座標計算部334が、丈の長い芝が揺れる視覚効果を得るための計算を行う。
【0066】
図12は、シェルの様子を説明するための図であり、図7においてゾーン71の領域77を抜き出した図である。領域77には、図7に現れる最も丈の長い芝が4本の描かれ、図12左上図において描かれる4つの円柱状積み立て型ブロックが対応する。シェルは、6段あるブロックの断面が各層に現れるように切断する面であり、芝の一端が固定される地面に平行な面である。
【0067】
図13は、視点からの距離とシェル数との関係を示す図である。視点に近いゾーン71(Z71で示される)では、シェル1(SHL1)からシェル6までの6層により芝が描画され、隣のゾーン72(Z72)では、シェル1からシェル5までの5層と、次のゾーン73では4層と、段々シェル数が減らされ、視点から最も遠いゾーン76においては、シェル1の1層だけで芝が描画される。こうして、LODが実現されている。
【0068】
図14は、シェルの揺れによる線状オブジェクトの揺れ方の一例を示す図である。ここでは、単純化するために、風向きを向かって左から右方向とする。すなわち、図14において導入された座標系において、(x,y,z)=(1,0,0)の向きにシェルを揺らす。線状オブジェクトは、原点からy軸方向に伸びるよう配置されるものとする。
【0069】
各層(各シェル)の揺らし方は自由に設定できる。ここでは、シェル1〜シェル6を次のようなルールで揺らすものとする。即ち、シェル1:ほぼフィボナッチ数列に従う移動、シェル2:単位時間当たり移動量2、シェル3:単位時間当たり移動量1、シェル4:単位時間当たり移動量1、但し2単位時間後に移動開始、シェル5:単位時間当たり移動量1、但し3単位時間後に移動開始。
【0070】
それぞれのシェルのx軸での位置を時間の関数として表示すると、次のようになる。シェル1:x(t+2)=x(t+1)+x(t)、t≧2、x(0)=0、x(1)=0、x(2)=2、x(3)=3、シェル2:x(t)=2t、シェル3:x(t)=t、シェル4:x(t)=t−2、シェル5:x(t)=t−3、シェル6:x(t)=0。
【0071】
こうすると、時間を変化させたとき、図14のように、芝生が風に揺れている様子を描画することができる。始点(x=0)から、シェル毎に設定される最大移動量移動するまでの往復運動時間が経過したとき、揺れの方向を逆向きに切り替えることを繰り返してシェルを往復運動させると、風が間欠的に吹く様子を描くことが可能になる。逆向きの往復運動させる際は、シェルの揺らし方(上記各シェルの動きを定義するx(t))を順方向((x,y,z)=(1,0,0)の向き)とは変えてもよい。
【0072】
また、往復運動する速度を変えると、そよそよとした風が吹いているのか、強風が吹き荒れているかを描画し分けることもできる。更に、逆向きの運動をさせているとき、図14でいうと原点に直立するt=0の状態に戻る前に、再び順方向への移動に切替えれば、間欠的に吹く風の間隔が変わる状況を描画することもできる。
【0073】
このように層(シェル)毎に揺らし方を変えることができるが、移動量の上限を層毎に変えることも可能である。図14においては、地面に近い部位(シェル6)は移動させず、先端に近い部位(シェル1)は、移動量も大きい。こうして、地面に近い部位は、あまり移動させず、先端に近い部位はある程度自由に移動させることで、より自然な動きを描画することができる。
【0074】
図15は、シェル毎に設定される最大移動量の例を示す表である。図15には、先端に近いシェル1(SHL1)から地面に近いシェル6(SHL6)の最大移動量が対応付けられる。移動量が「0」であるシェル6は、シェルを揺らすことが無いことを示す。もちろん、すべてのシェルを揺らすような設定をすることも可能である。図15の表に示されるデータは、シェル数を決定する際、シェル数決定部331によりRAM12に記憶され、テクスチャ座標計算部335が読み出して使用する。
【0075】
更に、視点からの距離に応じて最大移動量を変えることもできる。これは、視点からの距離が遠ざかる箇所においては、LOD実現のためシェル数が減らされており、シェルを揺らしてもその視覚効果があまり発揮されなかったり、揺らすべきシェルがない場合が想定されるためである。
【0076】
図16は、視点からの距離に応じた最大移動量の分布を示す図である。図16に示されるように、視点からの距離が最も遠いゾーンであるゾーン76では、シェルは移動しない。つまり最大移動量が0である。隣接するゾーン75では、矢印161の幅によって示される所定の移動量が設定される。そして、ゾーンが視点に近いほど矢印の幅が広くなり、最大移動量が少しずつ大きく設定されることがわかる。図16に示されるゾーン毎の最大移動量のデータは、シ
ェル数を決定する際、シェル数決定部331によりRAM12に格納され、図10において、ゾーン毎に対応付けられる「揺れ」の項目に影響度の割合として格納される。
【0077】
テクスチャ座標計算部334は、上記図12から図16において説明した処理を行うため、シェル毎にシェルを移動させるが、その計算式の一例を次式(D)、(E)に示す。これは、視野参照座標系において、現在のuv座標に追加するオフセット値を計算する式である。u軸方向のオフセットをu0、v軸方向のオフセットをv0とすると、
【0078】
【数5】
【0079】
で表される。但し、ベクトルM=(M_u、M_v)は、シェルを揺らす向きのuv成分、fは1秒間にシェルを揺らす回数、tは時間である。Apは、調整用の定数で、地面からの距離(何層目のシェルか)と視点からの距離の影響が反映され、次式(F)で表される。
【0080】
【数6】
【0081】
但し、Shは、地面からシェルまでの高さであり、式(F)では、地面から離れたところにあるシェルほど揺れが大きくなっている。式(F)における、Sh x Shの部分は、図15において、シェル毎に設定される最大移動量を使用してもよい。また、Znは、ゾーン毎に設定される最大移動量に対する影響度の割合(図10「揺れ」の項目参照)である。
【0082】
こうして、シェルを揺らすとき、その移動量は、シェルの高さとゾーンの位置を考慮して算出される。また、三角関数の周期性により、往復運動させるための往復運動時間が経過すると、オフセットは、正から負、負から正へと変わるため、芝を往復運動させることができ、これにより芝が風に揺られる様子を自然に再現できる。
【0083】
図3に戻り、テクスチャ座標計算部334において、上記したようなシェルの座標に関するオフセット計算が完了すると、続いて、透視変換部335が、実際にワールド座標系から視野参照座標系に変換を行う。ここで、各シェルに含まれる線状オブジェクトの座標に対してテクスチャ座標計算部334で算出されたオフセット値が加えられ、座標データ等がレンダリング用にレンダリング部34に入力される。
【0084】
図17は、以上において説明した風向きを考慮したライティングとシェルの揺動を、図10に示される影響度に応じてミックスしたときの効果を説明する画面例である。図17に示される画面例において、画面は、シェルの揺動がより強く表れる領域142と、周期的に変動するライティングの影響がより強く表れる領域141に分けることができる。
【0085】
領域142においては、図17に示されるように、芝生の先端が風向き61にそってなびいており、時間経過とともに、このなびく様子が例えば、式(D)、(E)によって変化する。領域141においては、シェルの揺れによる効果はあまり見られず、代わりに光のスポット143が時間経過とともに、手前から奥に向かって移動することにより、芝生の表面を風が吹き抜ける様子が描かれる。これは、例えば式(C)によって、輝度が周期的に変化することによりもたらされる効果である。
【0086】
最後に、本実施形態の画像処理装置1における画像処理を説明する。
【0087】
図18は、本実施形態の画像処理装置1における芝生の描画処理を説明するフローチャートである。まず、ジオメトリ演算部31がワールド座標を計算する(S1)。これにより、描画対象のオブジェクトを構成するポリゴンの頂点座標等が求まる。続いて、シェル数決定部332がシェル数を決定する(S2)。
【0088】
シェル数決定部332は、線状オブジェクトが登場する範囲を所定のアルゴリズムに則りゾーンに分割する。このとき、図6、図10に示される表に関係する各種設定を行い、RAM12に格納する。
【0089】
そして、最大輝度決定部333が輝度の最大変化量を決定する(S3)。例えば、図8に示されるようにゾーン毎に数値を決定する。単純に、視点からの距離に比例させるよう設定してもよい。続いて、シェル毎に、風向きを考慮したライティング処理を実行する(S4)。
【0090】
ライティング処理部333の説明において述べたように、ミクロの輝度、マクロの輝度を算出し、図10に示される影響度を考慮し、一方を取捨選択し、または、両者を影響度に応じてミックスして、最終的な輝度を算出する。
【0091】
さらに、テクスチャ座標計算部334が、線状オブジェクト(例えば、芝生)の動きを加味し、テクスチャ座標を計算する(S5)。具体的には、シェル毎にその移動量のオフセット値をテクスチャ座標計算部334が算出する。その計算に当たっては、地面から遠ざかるほど移動量を大きくしたり、視点からの距離が遠ざかるほど移動量を少なくしたりすることで、柔軟な動きが形成される。
【0092】
そして、透視変換部335が、ワールド座標系から視野参照座標系への変換を行う(S6)。
レンダリング部34は、前方クリップ面、後方クリップ面を利用したクリッピング、陰面消去、陰線消去等の処理を行い(S7)、以上の処理で得られるデータを合成し(S8)、CRT等の表示部の表示位置に対応するフレームバッファ37の各アドレスに、データを書き込む。
【0093】
そして、フレームバッファ37に書き込まれたデータが、繰り返し読み出され、ビデオ信号に変換され表示部17に出力される(S9)。ステップS9が済むと、すべてのシェルについて処理が完了したか判定され、まだ描画すべきシェルがあれば(S10No)、ステップS4に処理が戻る。
【0094】
すべてのシェルについて描画が完了すれば(S10Yes)、所定時間経過後再描画するかが判定される(S11)。再描画は、表示部の表示タイミングに合わせて行われるため、所定時間は、例えば、60分の1秒、30分の1秒などである。ステップS11では、通常、画面の切り替え(例えば、プレイヤの操作により次の一打が行われ、ゴルフボールが移動する場合)があるまでは、再描画の必要ありとして、肯定判定(S11Yes)に処理が進む。再描画は、例えば、上記した例においては、式(C)、(D)、(E)において、時間tに所定時間経過後の新たな時間を代入して演算を行えば済む。時間に依存しないデータは、前回の処理に求めた値をそのまま使用する(例えば、ミクロの輝度)。画面の切り替えによって、再描画の必要なしとされる場合(S11No)には、本処理は終了し、次なるコースの描画に備えて待機する。
【0095】
以上に説明したように、本実施形態によれば、3次元仮想空間に配置される芝生を表現するに当たり、高さの異なる半透明層(シェル)を重ね合わせて高速に芝生を描画すると共に、時間経過に合わせてシェルを揺らすことによって、芝生が風になびいたり、揺れるといった芝生の運動を表現する。こうすることにより、低計算量で芝生の動きを表現することが可能となる。
【0096】
更に、本実施形態の画像処理装置1は、LOD(Level of Detail)を実現すべく、3次元空間に配置される視点からの距離に応じて、芝生を描くシェルの数を減じる場合に、視点からの距離が遠い所では芝生の運動を表現するために揺らすシェルがない、又は、あったとしても数が少ないためその視覚効果が薄いという課題も解決する。そのために、本実施形態の画像処理装置1は、ライティング処理を行う際に、3次元仮想空間に固定される光源からの輝度(ミクロの輝度)に加えて、時間を変数とする周期関数により決定される値を使用することによって、視点からの距離が遠い所の芝生が、所定の周期で明るくなったり、暗くなったりする効果を演出する。この周期的な明暗の変化により、シェル数が少ない箇所でも線状オブジェクトの動きを表現することができる。
【0097】
輝度に時間を変数とする周期的な要素を使用することで、固定光源が影響する領域より広い範囲に所定の輝度を与えることができる。こうして、芝生が風により揺れる動きを集団的に表現することができる。ここでは、この集団的な動きを表現するための輝度をマクロの輝度と称する。こうして、ミクロの輝度に加え、マクロの輝度を用いることにより、芝生を力学的に揺らさなくても芝生が風向きに沿って揺れる動きを表現することができる。
【図面の簡単な説明】
【0098】
【図1】本発明の実施形態における画像処理装置の構成ブロック図である。
【図2】本発明の実施形態における画像処理装置の機能ブロック図である。
【図3】本実施形態の画像処理装置におけるT&L部を詳細に説明する図である。
【図4】本実施形態で使用するゴルフコースが仮想3次元空間に配置される具体的な様子を説明する図であり、Aは、仮想3次元空間のワールド座標系(w-xyz座標系)に配置されるゴルフコースを示し、Bは、投影面に定義される視野参照座標系を示す図である。。
【図5】実際のゲームにおける画面例である。。
【図6】シェル数決定部が決定するゾーンの例を示す表である。
【図7】具体例のゴルフコースにおけるゾーン分割の例を示す図である。
【図8】最大輝度決定部が各ゾーンに対して与える最大輝度の例を示す表である。
【図9】ミクロの輝度の算出法の一例を説明する図である。
【図10】ミクロの輝度とマクロの輝度の影響度を割合で表した一例を示すルールテーブルである。
【図11】風向きを考慮したマクロの輝度による効果を説明する図である。
【図12】シェルの様子を説明するための図である。
【図13】視点からの距離とシェル数との関係を示す図である。
【図14】シェルの揺れによる線状オブジェクトの揺れ方の一例を示す図である。
【図15】シェル毎に設定される最大移動量の例を示す表である。
【図16】視点からの距離に応じた最大移動量の分布を示す図である。
【図17】風向きを考慮したライティングとシェルの揺動を、影響度に応じてミックスしたときの効果を説明する画面例である。
【図18】本実施形態の画像処理装置における芝生の描画処理を説明するフローチャートである。
【符号の説明】
【0099】
11 CPU、17 表示部、31 ジオメトリ演算部、32 ワークRAM、33 トランスフォーム&ライティング部、34 レンダリング部、35 テクスチャRAM、37 フレームバッファ、331 シェル数決定部、332 輝度決定部、333 ライティング処理部、334 テクスチャ座標計算部、335 透視変換部
【技術分野】
【0001】
本発明は、仮想3次元空間に配置される毛髪、芝生、毛皮等の線状オブジェクトを2次元平面に描画する画像処理装置、画像処理方法及び画像処理プログラムに関する。
【背景技術】
【0002】
現在、コンピュータにより画像処理を行うコンピュータグラフィックス(Computer Graphics、以下CG)技術は、科学、工学、製造、ゲーム等の分野において、CAD(Computer Aided Design)やCAM(Computer Aided Manufacturing)として幅広く利用されている。CG技術により描写される対象物は数多くあるが、中でも、哺乳動物に見られる体毛や、人間の頭髪、風景画における稲や麦、芝生等の線状オブジェクトの描写に関しては、一定の困難性が認められている。
【0003】
これは、線状オブジェクトが配置される表皮や肌、大地等の形状が複雑であることや、線状オブジェクトの生え方(上方への伸び方や長さ)に規則性がないことが原因である。そこで、従来技術においても、こうした線状オブジェクトの描写方法が提案されている。
【0004】
非特許文献1によれば、毛を微小円柱とみなし、この微小円柱に対する拡散光と反射光の和をレンダリング(数値データとして与えられた物体や図形に関する情報を計算によって画像化すること)におけるパラメータとして追加し、動物の毛皮の質感表現を行うことが提案される。この微小円柱は、異方性反射特性を有するものの例であり、非特許文献1においてテクセルとして導入されている。
【0005】
非特許文献2によれば、非特許文献1に紹介された光の反射が全ての方向に対して均等であるのに対し、反射成分と透過成分を分けるGoldmanによる毛の表現を一歩進めて、陰影表現に本非特許文献の筆者の独自性を持たせた毛の表現が紹介される。非特許文献3によれば、地肌から垂直に伸びる毛を、高さ方向と垂直に複数の半透明層で切断し、地肌に近い方から半透明層を複数回描画し重ね合わせることで、毛皮を高速に描画する方法が提案される。この半透明層は、非特許文献3においてシェル(shell)として導入されている。
【0006】
特許文献1によれば、非特許文献3に示されるように、毛皮を高さ方向にスライスして、それぞれを別々のシェルに対応するマップとみなすのではなく、毛の全体を皮膚面に相当する2次元マップ上に投影することで、少ないメモリ容量で高画質な表現を可能にする画像処理装置が提案されている。
【非特許文献1】Kajiya、他2名、"Rendering Fur with Three Dimensional Textures"、SIGGRAPH 89 conference proceedings
【非特許文献2】今給黎、"擬似ファーライティングの頂点シェーダーによる実装"、XFC2001、[平成14年8月25日検索]、インターネット<URL http://if.dynsite.net/t-pot/program/23_fur/index.html>
【非特許文献3】Jerome Lengyel、他3名、"Real-Time Fur Over Arbitrary Surfaces"、ACM Symposium on Interactive 3D Graphics 2001、pages 227-332、[平成14年8月25日検索]、インターネット<URL http://research.microsoft.com/~hoppe/fur.pdf>
【特許文献1】特開2004−54612号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
しかしながら、従来技術における表現は、毛等の線状オブジェクトは静止していることを前提とするものであり、稲穂が揺れる様子や、麦畑を風が吹き抜ける様子や、芝生が風になびく様子といった線状オブジェクトの動きを表現するものではない。非特許文献3には、毛を動かすことの可能性について言及されているが、何ら具体的なことを示唆するものではなく、将来に向けての課題項目として挙げられているに過ぎない。
【0008】
そこで、本発明の目的は、哺乳動物に見られる体毛や、人間の頭髪、風景画における稲や麦、芝生等の線状オブジェクトが風などの要因によって運動する様子を高速かつ安価に描画可能な画像処理方法、画像処理プログラム、そして画像処理装置を提供することにある。
【課題を解決するための手段】
【0009】
上記目的は、本発明の第一の側面によれば、仮想3次元空間に、視点と、地面と、前記地面に一端が固定される複数の線状オブジェクトとが配置されており、前記視点から見える前記線状オブジェクトを2次元平面に投影して描画する画像処理を実行するコンピュータに、前記複数の線状オブジェクトを前記地面に平行な複数の面で切断して形成される前記複数のオブジェクトの断面を、前記複数の面毎に半透明層として重ね合わせて前記2次元平面に描画する描画ステップと、所定時間経過後、前記半透明層の一部又は全部を所定の方向に移動させて前記2次元平面に再描画する再描画ステップとを実行させるためのプログラムを提供することにより達成される。
【0010】
上記発明の側面においてより好ましい実施例によれば、そのプログラムは、更に、前記線状オブジェクト毎に、前記3次元仮想空間に固定される静的な光源に基づく第一の輝度と、前記第一の輝度とは異なる輝度であって、時間と共に変化する第二の輝度とを算出するステップと、前記第一及び前記第二の輝度の影響度をそれぞれ決定するステップと、前記第一及び前記第二の輝度と、前記第一及び前記第二の輝度に対してそれぞれ決定される前記影響度とに基づき、前記複数の線状オブジェクトの輝度をそれぞれ求めるステップとを有する。
【0011】
上記発明の側面においてより好ましい実施例によれば、前記地面に近い半透明層ほど、移動量が少ない。また、上記発明の側面においてより好ましい実施例によれば、前記再描画ステップは、繰り返し行われ、前記再描画ステップにおいて移動される半透明層は、前記所定の方向に所定の移動量移動されると、該所定の方向の反対方向に前記所定の移動量移動され、往復運動をする。
【0012】
また、上記発明の側面においてより好ましい実施例によれば、前記描画ステップでは、前記視点からの距離の増加に応じて、前記描画される半透明層の数が減少され、前記再描画ステップでは、前記3次元空間において前記半透明層の数が第一の閾値を下回る距離を越える箇所で、前記半透明層を移動させない。また、上記発明の側面においてより好ましい実施例によれば、前記描画ステップでは、前記視点からの距離の増加に応じて、前記描画される半透明層の数が減少され、前記3次元仮想空間において前記半透明層の数が第二の閾値を下回る距離を越える箇所で、前記第二の輝度の影響度が前記第一の輝度の影響度より大きい。また、上記発明の側面においてより好ましい実施例によれば、前記移動される半透明層の位置や前記線状オブジェクトの第二の輝度は、時間を変数とする同一周期の周期関数で決定されてもよい。
【0013】
また上記目的は、本発明の第二の側面によれば、仮想3次元空間に、視点と、地面と、前記地面に一端が固定される複数の線状オブジェクトとが配置されており、前記視点から見える前記線状オブジェクトを2次元平面に投影して描画する画像処理装置であって、制御プログラム及び前記視点、前記地面、そして前記線状オブジェクトに関するそれぞれのデータが格納される記憶部と、前記複数の線状オブジェクトを前記地面に平行な複数の面で切断して形成される前記複数のオブジェクトの断面を、前記複数の面毎に半透明層として重ね合わせて前記2次元平面に描画する描画機能と、所定時間経過後、前記半透明層の一部又は全部を所定の方向に移動させて前記2次元平面に再描画する再描画機能とを、前記記憶部から前記制御プログラム及び前記それぞれのデータを読み出して実現する制御部とを有することを特徴とする画像処理装置を提供することにより達成される。
【0014】
また上記目的は、本発明の第三の側面によれば、仮想3次元空間に、視点と、地面と、前記地面に一端が固定される複数の線状オブジェクトとが配置されており、前記視点から見える前記線状オブジェクトを2次元平面に投影して描画する画像処理を実行する画像処理装置において実行される画像処理方法であって、前記複数の線状オブジェクトを前記地面に平行な複数の面で切断して形成される前記複数のオブジェクトの断面を、前記複数の面毎に半透明層として重ね合わせて前記2次元平面に描画する描画ステップと、所定時間経過後、前記半透明層の一部又は全部を所定の方向に移動させて前記2次元平面に再描画する再描画ステップとを実行させるためのプログラムを提供することにより達成される。
【0015】
また、本発明の第四の側面によれば、上記プログラムを記録したコンピュータ読み取り可能な記録媒体を提供することにより達成される。
【発明の効果】
【0016】
本発明によれば、3次元仮想空間に配置される線状オブジェクトを表現するに当たり、高さの異なる半透明層(シェル)を重ね合わせて高速に芝生を描画すると共に、時間経過に合わせてシェルを揺らすことによって、例えば、芝生が風になびいたり、揺れるといった芝生の運動を表現する。こうすることにより、低計算量で線状オブジェクトの動きを表現することが可能となる。
【0017】
更に、LOD(Level of Detail)を実現すべく、3次元空間に配置される視点からの距離に応じて、線状オブジェクトを描くシェルの数を減じる場合に、視点からの距離が遠い所では線状オブジェクトの運動を表現するために揺らすシェルがない、又は、あったとしても数が少ないためその視覚効果が薄いという課題も、ライティング処理を行う際に、3次元仮想空間に固定される光源からの輝度(ミクロの輝度)に加えて、時間を変数とする周期関数により決定される値を使用することによって解決することができる。輝度をこのように計算することで、視点からの距離が遠い所の芝生が、所定の周期で明るくなったり、暗くなったりする効果を演出することになるからである。この周期的な明暗の変化により、シェル数が少ない箇所でも線状オブジェクトの動きを表現することができ、線上オブジェクトを力学的に揺らさなくても線状オブジェクトが風向きに沿って揺れる動きを表現することが可能となる。
【発明を実施するための最良の形態】
【0018】
以下、本発明の実施の形態について図面に従って説明する。しかしながら、本発明の技術的範囲はかかる実施の形態に限定されるものではなく、特許請求の範囲に記載された発明とその均等物にまで及ぶものである。
【0019】
図1は、本発明の実施形態における画像処理装置1の構成ブロック図である。本実施形態の画像処理装置1は、哺乳動物に見られる体毛や、人間の頭髪、風景画における稲や麦、芝生等の線状オブジェクトの描画を行う。その描画に際して、例えば、3次元仮想空間に配置される芝生を表現するに当たり、高さの異なる半透明層(シェル)を重ね合わせて高速に芝生を描画すると共に、時間経過に合わせてシェルを揺らすことによって、芝生が風になびいたり、揺れるといった芝生の運動を表現する。こうすることにより、低計算量で芝生の動きを表現することが可能となる。
【0020】
更に、本実施形態の画像処理装置1は、LOD(Level of Detail)を実現すべく、3次元空間に配置される視点からの距離に応じて、芝生を描くシェルの数を減じる場合に、視点からの距離が遠い所では芝生の運動を表現するために揺らすシェルがない、又は、あったとしても数が少ないためその視覚効果が薄いという課題も解決する。そのために、本実施形態の画像処理装置1は、ライティング処理を行う際に、3次元仮想空間に固定される光源からの輝度(ミクロの輝度)に加えて、時間を変数とする周期関数により決定される値を使用することによって、視点からの距離が遠い所の芝生が、所定の周期で明るくなったり、暗くなったりする効果を演出する。この周期的な明暗の変化により、シェル数が少ない箇所でも線状オブジェクトの動きを表現することができる。
【0021】
このようにすることで、芝生が風により揺れる動きを集団的に表現することができる。ここでは、この集団的な動きを表現するための輝度をマクロの輝度と称する。こうして、ミクロの輝度に加え、マクロの輝度を用いることにより、芝生を力学的に揺らさなくても芝生が風向きに沿って揺れる動きを表現することができる。
【0022】
図1の画像処理装置は、バス20を介して互いに接続される制御部11、RAM(Random Access Memory)12、記憶部13、周辺機器接続用インタフェース(I/F)15、入力部16、表示部17を含む。制御部11は、図示省略されたCPU(Central Processing Unit)を含み、RAMに格納されるプログラムを実行し、画像処理装置1に含まれる各部を制御する。
【0023】
RAM12は、画像処理装置1の処理における演算結果やプログラムが一時的に格納される記憶手段である。記憶部13は、ハードディスク、光ディスク、磁気ディスク、フラッシュメモリ等の不揮発性記憶手段であり、各種データやRAMへ読み出される前のOS(Operating System)等のプログラムが格納される。
【0024】
周辺機器I/F15は、画像処理装置1に周辺機器を接続するためのインタフェースであり、USB(Universal Serial Bus)ポートや、PCIカードスロット等である。周辺機器は、例えば、プリンタ、SCSI(Small Computer System Interface)機器、メモリカードリーダライタ、ネットワークカード、無線LANカード、モデムカードなどである。周辺機器IF15を介した周辺機器の接続形態は、無線であるか、有線であるかを問わない。
【0025】
入力部16は、キーボード、マウス、タッチパネル、ボタン等ユーザからの指示(コマンド)の入力信号を画像処理装置1に入力する入力装置である。表示部17は、液晶ディスプレイ、CRT(Cathode Ray Tube)等ユーザに対する情報を表示するための表示装置である。図1の画像処理装置は、入力部16、表示部17を備えているが、画像処理装置1に周辺機器I/F15を介して外部接続されるUSBマウスや、プレゼンテーション用のプロジェクタ、ディスプレイといった入力装置、表示装置があってもよい。また、他に、ネットワークに接続するためのネットワークインタフェースが画像処理装置1の本体に備えられていてもよい。
【0026】
図2は、本発明の実施形態における画像処理装置1の機能ブロック図である。図2には、CPU11、ワークRAM322、ジオメトリ演算部31、トランスフォーム&ライティング部(以下T&L部)33、レンダリング部34、テクスチャRAM35、表示部17、フレームバッファ37を有する。各機能ブロックはプログラムで実現され、画像処理装置1に備えられたCPU(Central Processing Unit)11にてそのプログラムが実行されるが、DSP(Digital Signal Processor)等のハードウェアで構成することも可能である。
【0027】
CPU11は、画像を生成するプログラムを制御する。ワークRAM32には、CPU11で使用するプログラムやデータが格納される。ジオメトリ演算部31には、CPU11の制御の下に、ワークRAM32からワールド座標系の3次元オブジェクトデータとしてのポリゴンデータが読み出されて入力される。ジオメトリ演算部31は、3次元オブジェクトデータに含まれる頂点のワールド座標系における座標等を計算し、T&L部33に出力する。
【0028】
ジオメトリ演算部31で処理されたポリゴンデータはT&L部33に入力され、T&L部33において、ポリゴン毎に光源による影響(輝度)を計算するライティング処理が行われ、視点を原点とする視点座標系のデータに座標変換を行う。また、T&L部33は、3次元オブジェクトの表面に貼り付ける模様(テクスチャ)に対する処理として、テクスチャRAM35からテクスチャを読み出し、読み出したテクスチャを3次元オブジェクトの形状に合わせて変形させるテクスチャ変換も行う。
【0029】
T&L部33で処理されたデータはレンダリング部34に入力され、レンダリング部34において、ポリゴン単位のデータがピクセル単位のデータに変換される。レンダリング部34は、視界から外れる立体部分を消去するクリッピング、陰面消去、陰線消去を行い、ピクセル単位のデータに対し、テクスチャ変換後のテクスチャデータと輝度に基づき、テクスチャカラーを生成する。そして、レンダリング部34は、各ピクセルのテクスチャカラーを表示部17上での2次元座標に変換しながらフレームバッファ37に書き込む。フレームバッファ37に書き込まれたデータは、繰り返し読み出され、ビデオ信号に変換され表示部17に出力される。
【0030】
なお、図2に示されるワークRAM32、テクスチャRAM35、フレームバッファ37は、図1のRAM12により実現することができる。次に、本実施形態の画像処理装置1における特徴部分を説明する。
【0031】
図3は、本実施形態の画像処理装置1における特徴部分を詳細に説明するためにT&L部33を詳細に説明する図である。なお、以下においては、本実施形態の画像処理装置1が、LODを実現すべく、視点からの距離に応じて、芝生を描くためのシェルの数を減らすことを前提として説明を進める。本実施形態の説明を容易にするための描画対象として、ゴルフコースの芝生という具体例を導入し、図3の説明に入る前に、その具体例について説明する。
【0032】
図4は、本実施形態で使用するゴルフコースが仮想3次元空間に配置される具体的な様子を説明する図である。本実施形態の画像処理装置1が、ゴルフゲームにおける芝生を描画するものとし、図4Aでは、仮想3次元空間のワールド座標系(w-xyz座標系)に配置されるゴルフコースが描かれている。
【0033】
ゴルフコース81には、ティーグラウンド82、木83、グリーン84、旗85、ホール86、バンカー87、地面88が配置され、図4では図示されないが芝生が一端が地面に固定され、地面から生えている。ゲームプレイヤの打った球の位置に応じて視点54は移動する。プレイヤが目にする画面は、ワールド座標系の場景を投影する2次元平面の投影面52を視点54から眺めた様子が映し出される。
【0034】
前方クリップ面53、後方クリップ面51は、レンダリング部34がクリッピング等を行う際に、平行移動、拡大縮小などのスケーリングを施し、正規化するために使用される。これは、クリッピング等の処理を高速化したり、ハードウェアによる実装を可能にするものであるが、本実施形態においては詳細な説明は避ける。
【0035】
仮想3次元空間に配置されるゴルフコース81を投影面52に投影するには、ワールド座標系における立体図形の各座標値を、投影面52を定義する座標系である視野参照座標系(o-uvn座標系)の座標値で表現し直す必要がある。この変換が視野変換である。
【0036】
図4Bは、投影面に定義される視野参照座標系を示す図である。u軸、v軸は、投影面52に平行に定義され、n軸は、投影面52に垂直に定義される。一般に投影面52の中心がo-uvn座標の原点である必要はないが、ここでは、原点oが投影面52の中心に一致している。また、視点54がn軸上にある必要もないが、ここでは、視点54がn軸上にあるものとする。
【0037】
図5は、実際のゲームにおける画面例である。プレイヤが何打かした結果、フェアウェイ62上にゴルフボール64が移動し、クラブを手にしたキャラクタ63をプレイヤが操作し、次の一打を打とうとする場面である。ゴルフボール64の移動に伴い、視点がグリーン84に近くなり、ティーグラウンドから見るよりグリーン84が大きい。
【0038】
フェアウェイ62の周囲は、芝66の丈がフェアウェイ62の芝より長いラフ65が広がっている。図5に示されるように、キャラクタに近い手前側の芝は、視点に近いことから丈の長いものから短いものまで描かれるが、グリーン84に近づくにつれ、描かれる芝は、丈の短いものしか現れないようになる。
【0039】
また、矢印52は、風向き表示であり、手前側左斜めから奥側右斜めに風が吹くことを示す。
図5は静止画であり、芝66が風に揺れる様子は表現できないが、本実施形態の画像処理装置1は、シェルを揺らし、視点から離れた箇所の芝の輝度を周期的に変えることによって芝66が風になびいたり、揺れたりする一連の動きを表現する。
【0040】
図3に戻り、T&L部33の説明を行う。まず、ジオメトリ部31より3次元オブジェクトデータに含まれる頂点のワールド座標系における座標等が入力されると、T&L部33では、シェル数決定部331が、LODを考慮したシェル数を決定する。シェル数決定部331は、例えば、視点からの距離に応じて複数のゾーンを決定し、視点からの距離が遠くなるほど、そのゾーンのシェル数が少なくなるように適宜ゾーン毎のシェル数を設定する。
【0041】
図6は、シェル数決定部331が決定するゾーンの例を示す表である。図6に示されるように、視点からの距離に応じてゾーンが区切られ、視点からの距離が遠くなるゾーンほどシェル数が少なくされ、LODが実現される。図6の表に示されるデータは、シェル数決定部331によりRAM12に記憶される。
【0042】
ゾーンの区切り方は、所定のアルゴリズムにより決定される。例えば、視点の位置に関係なくゾーン数が最初に決められており、投影面を水平に等間隔で決められたゾーン数を満たすように区切る方法や、グリーンと視点との距離に応じて、ゾーン数を変える方法がある。ゾーン数を可変にする場合、予めグリーンとの距離とゾーン数とを対応付けたルールテーブルをRAM12に格納しておけば、そのルールに基づいてシェル数決定部331がゾーン分割をすることが可能である。
【0043】
図7は、具体例のゴルフコースにおけるゾーン分割の例を示す図である。図7では、1番目のゾーン71から6番目のゾーン76まで6つのゾーンが視点に近い方から登場する。なお、本実施形態では、芝の描写に焦点を当てているため、ゴルフコースが途切れ、芝が描かれることのない、ゾーン76より奥側は特にゾーン設定を行っていない。
【0044】
図7にはまた、各ゾーンに描かれる芝の種類が示される。即ち、視点から最も遠いゾーン76には、最も丈の短い芝101のみが登場する。次に視点から遠いゾーン75には、芝101に加えて、芝101より少し丈の長い芝102が登場する。以下、同様にして、視点に近づくにつれ、それまでの芝より丈の少し長い芝が追加され、最終的に、視点に最も近いゾーン71では、芝101〜芝106までの6種類の丈の異なる芝が登場する。
【0045】
図3に戻り、シェル数が決定されると、シェル数決定部331は、次の処理を開始するため、最大輝度決定部332に処理完了を通知する。最大輝度決定部332は、マクロの輝度の算出に用いられる周期関数の振幅(最大輝度)を、視点からの距離に応じて決定する。例えば、最大輝度決定部332は、最大輝度として、シェル数決定部331が決定するゾーン毎に異なる値を与える。
【0046】
図8は、最大輝度決定部332が各ゾーンに対して与える最大輝度の例を示す表である。図8に示されるように、視点からの距離が離れると、最大輝度が大きくなるように設定される。これは、視点からの距離が離れると、芝生の動きをシェルの揺れによって表現することが難しく、マクロの輝度が、それを補うべく導入されたことに起因する。図8の表に示されるデータは、RAM12に記憶される。
【0047】
なお、図8においては、ゾーン毎に異なる最大輝度が設定されるが、最大輝度は、単純に距離に所定の係数を乗じて、距離に比例する値とすることもできる。その場合、予め、所定の係数がRAM12に格納されており、輝度決定部332は、視点から線状オブジェクトまでの距離に、RAM12から読み出した所定の係数を乗じて最大輝度を与える。
【0048】
図3に戻り、視点からの距離に応じた最大輝度が決定されると、最大輝度決定部332は、次の処理を開始するため、ライティング処理部333に処理完了を通知する。ライティング処理部333は、ミクロの輝度、マクロの輝度を算出する。特にマクロの輝度の算出に当たり、ライティング処理部333は、風の影響を考慮に入れる。
【0049】
[ミクロの輝度]
図9は、ミクロの輝度の算出法の一例を説明する図である。図9は、非特許文献1にて提唱される方法を説明するものであり、図9Aは、拡散光成分Adの算出法を説明する図であり、図9Bは、正反射光成分Asを説明する図である。またこの図は、非特許文献2より引用するものである。この場合、ミクロの輝度MICは、拡散光成分Adと正反射光成分Asの和として算出される。
【0050】
線状オブジェクト(ここでは芝)92が、円柱状のオブジェクトとして示され、一端が地面93に固定される。光源91による拡散光成分は、地面93の法線ベクトル94と、光線方向のベクトル95とのなす角がθ(シ−タ)である。
【0051】
詳細な説明は非特許文献1に譲るが、図9Aに示される記号を用いて、拡散光成分Adは次式(A)により算出される。
【0052】
【数1】
【0053】
但し、Kdは拡散反射率である。同様にして、図9Bに示される記号を用いて、正反射光成分Asは次式(B)により算出される。
【0054】
【数2】
【0055】
但し、Ksは正反射率、nは、反射光の広がりを示すハイライト特性係数である。nが大きいほど、反射光の広がりが狭くなりシャープになる。γは、光の反射ベクトル96が形成する稜線97と視線ベクトル98のなす角である。ライティング処理部333は、ミクロの輝度をMIC=Ad+Asとして算出する。
【0056】
[マクロの輝度]
続いて、周期関数によって周期的に変化するマクロの輝度の算出法の一例を説明する。ライティング処理部333は、例えば、次式(C)に従って所定時刻でのマクロの輝度MAC(t)を算出する。
【0057】
【数3】
【0058】
但し、A=k*xであり、kは、輝度の最大変化量を決定する定数、xは、視点から線状オブジェクトまでの距離である。fは周期の逆数である周波数、tは時間である。また、
【0059】
【数4】
【0060】
としてベクトルKとベクトルPの内積で表される。ベクトルKは、風向きを、ベクトルPは、線状オブジェクトの位置ベクトルをそれぞれ示す。ベクトルKとベクトルPの内積を取ることによって、風向きと線状オブジェクトの位置ベクトルとの角度に応じて時間位相が異なるようになり、ちょうど芝生を照らす光の帯が風向きにそって移動するような効果が得られる。
【0061】
なお、式(C)において定数Aは、単純に距離に比例する量としているが、最大輝度決定部332の説明で述べたように、Aは、ゾーン毎に割り当てられる係数(図8参照)を用いることもできる。
【0062】
ライティング処理部333は、以上のようにして求められるミクロの輝度、マクロの輝度を影響度を考慮し、一方を取捨選択し、あるいは、両者を加重平均して線状オブジェクトの輝度を最終的に算出する。例えば、ミクロの輝度とマクロの輝度を比較して、大きい値の方が影響度が大きいを判断し、大きい値を持つ輝度が使用される。
【0063】
図10は、ミクロの輝度とマクロの輝度の影響度を割合で表した一例を示すルールテーブルである。このルールテーブルに示されるように、ミクロの輝度の影響度は、視点から距離が遠くなるほど小さくなり、マクロの輝度は視点から距離が遠くなるほど大きくなる。この表は、シェル数決定部331がゾーンを決定する際に、RAM12に格納される。ミクロの輝度とマクロの輝度の混合割合(それぞれの輝度の影響度)の数値は自由に設定することができ、周期的な輝度の明暗による効果が、どの位置から強調されだすかは柔軟に変更できる。
【0064】
図11は、風向きを考慮したマクロの輝度による効果を説明する図である。この図は、マクロの輝度の影響だけを説明するものであり、視点からの距離に関係なく、マクロの輝度の影響を100%にした状態とする。式(C)により各地点での輝度の明暗が周期的に変化することにより、図11に示されるような光のスポット122(帯状に広げることもできる)が、風向きに沿って手前から奥へ周期的に何度も移動することになり、ちょうど芝生を吹き抜ける風をうまく表現できる。これは、見方を変えると移動光源121を風向きにそって移動させそのときの輝度を算出していることに等しい。ただし、3次元仮想空間に実際に移動光源を用意するものではない。
【0065】
[シェルの揺れ]
図3に戻り、ライティング処理部333において、上記したような風向きを考慮した輝度計算が完了すると、続いて、テクスチャ座標計算部334が、丈の長い芝が揺れる視覚効果を得るための計算を行う。
【0066】
図12は、シェルの様子を説明するための図であり、図7においてゾーン71の領域77を抜き出した図である。領域77には、図7に現れる最も丈の長い芝が4本の描かれ、図12左上図において描かれる4つの円柱状積み立て型ブロックが対応する。シェルは、6段あるブロックの断面が各層に現れるように切断する面であり、芝の一端が固定される地面に平行な面である。
【0067】
図13は、視点からの距離とシェル数との関係を示す図である。視点に近いゾーン71(Z71で示される)では、シェル1(SHL1)からシェル6までの6層により芝が描画され、隣のゾーン72(Z72)では、シェル1からシェル5までの5層と、次のゾーン73では4層と、段々シェル数が減らされ、視点から最も遠いゾーン76においては、シェル1の1層だけで芝が描画される。こうして、LODが実現されている。
【0068】
図14は、シェルの揺れによる線状オブジェクトの揺れ方の一例を示す図である。ここでは、単純化するために、風向きを向かって左から右方向とする。すなわち、図14において導入された座標系において、(x,y,z)=(1,0,0)の向きにシェルを揺らす。線状オブジェクトは、原点からy軸方向に伸びるよう配置されるものとする。
【0069】
各層(各シェル)の揺らし方は自由に設定できる。ここでは、シェル1〜シェル6を次のようなルールで揺らすものとする。即ち、シェル1:ほぼフィボナッチ数列に従う移動、シェル2:単位時間当たり移動量2、シェル3:単位時間当たり移動量1、シェル4:単位時間当たり移動量1、但し2単位時間後に移動開始、シェル5:単位時間当たり移動量1、但し3単位時間後に移動開始。
【0070】
それぞれのシェルのx軸での位置を時間の関数として表示すると、次のようになる。シェル1:x(t+2)=x(t+1)+x(t)、t≧2、x(0)=0、x(1)=0、x(2)=2、x(3)=3、シェル2:x(t)=2t、シェル3:x(t)=t、シェル4:x(t)=t−2、シェル5:x(t)=t−3、シェル6:x(t)=0。
【0071】
こうすると、時間を変化させたとき、図14のように、芝生が風に揺れている様子を描画することができる。始点(x=0)から、シェル毎に設定される最大移動量移動するまでの往復運動時間が経過したとき、揺れの方向を逆向きに切り替えることを繰り返してシェルを往復運動させると、風が間欠的に吹く様子を描くことが可能になる。逆向きの往復運動させる際は、シェルの揺らし方(上記各シェルの動きを定義するx(t))を順方向((x,y,z)=(1,0,0)の向き)とは変えてもよい。
【0072】
また、往復運動する速度を変えると、そよそよとした風が吹いているのか、強風が吹き荒れているかを描画し分けることもできる。更に、逆向きの運動をさせているとき、図14でいうと原点に直立するt=0の状態に戻る前に、再び順方向への移動に切替えれば、間欠的に吹く風の間隔が変わる状況を描画することもできる。
【0073】
このように層(シェル)毎に揺らし方を変えることができるが、移動量の上限を層毎に変えることも可能である。図14においては、地面に近い部位(シェル6)は移動させず、先端に近い部位(シェル1)は、移動量も大きい。こうして、地面に近い部位は、あまり移動させず、先端に近い部位はある程度自由に移動させることで、より自然な動きを描画することができる。
【0074】
図15は、シェル毎に設定される最大移動量の例を示す表である。図15には、先端に近いシェル1(SHL1)から地面に近いシェル6(SHL6)の最大移動量が対応付けられる。移動量が「0」であるシェル6は、シェルを揺らすことが無いことを示す。もちろん、すべてのシェルを揺らすような設定をすることも可能である。図15の表に示されるデータは、シェル数を決定する際、シェル数決定部331によりRAM12に記憶され、テクスチャ座標計算部335が読み出して使用する。
【0075】
更に、視点からの距離に応じて最大移動量を変えることもできる。これは、視点からの距離が遠ざかる箇所においては、LOD実現のためシェル数が減らされており、シェルを揺らしてもその視覚効果があまり発揮されなかったり、揺らすべきシェルがない場合が想定されるためである。
【0076】
図16は、視点からの距離に応じた最大移動量の分布を示す図である。図16に示されるように、視点からの距離が最も遠いゾーンであるゾーン76では、シェルは移動しない。つまり最大移動量が0である。隣接するゾーン75では、矢印161の幅によって示される所定の移動量が設定される。そして、ゾーンが視点に近いほど矢印の幅が広くなり、最大移動量が少しずつ大きく設定されることがわかる。図16に示されるゾーン毎の最大移動量のデータは、シ
ェル数を決定する際、シェル数決定部331によりRAM12に格納され、図10において、ゾーン毎に対応付けられる「揺れ」の項目に影響度の割合として格納される。
【0077】
テクスチャ座標計算部334は、上記図12から図16において説明した処理を行うため、シェル毎にシェルを移動させるが、その計算式の一例を次式(D)、(E)に示す。これは、視野参照座標系において、現在のuv座標に追加するオフセット値を計算する式である。u軸方向のオフセットをu0、v軸方向のオフセットをv0とすると、
【0078】
【数5】
【0079】
で表される。但し、ベクトルM=(M_u、M_v)は、シェルを揺らす向きのuv成分、fは1秒間にシェルを揺らす回数、tは時間である。Apは、調整用の定数で、地面からの距離(何層目のシェルか)と視点からの距離の影響が反映され、次式(F)で表される。
【0080】
【数6】
【0081】
但し、Shは、地面からシェルまでの高さであり、式(F)では、地面から離れたところにあるシェルほど揺れが大きくなっている。式(F)における、Sh x Shの部分は、図15において、シェル毎に設定される最大移動量を使用してもよい。また、Znは、ゾーン毎に設定される最大移動量に対する影響度の割合(図10「揺れ」の項目参照)である。
【0082】
こうして、シェルを揺らすとき、その移動量は、シェルの高さとゾーンの位置を考慮して算出される。また、三角関数の周期性により、往復運動させるための往復運動時間が経過すると、オフセットは、正から負、負から正へと変わるため、芝を往復運動させることができ、これにより芝が風に揺られる様子を自然に再現できる。
【0083】
図3に戻り、テクスチャ座標計算部334において、上記したようなシェルの座標に関するオフセット計算が完了すると、続いて、透視変換部335が、実際にワールド座標系から視野参照座標系に変換を行う。ここで、各シェルに含まれる線状オブジェクトの座標に対してテクスチャ座標計算部334で算出されたオフセット値が加えられ、座標データ等がレンダリング用にレンダリング部34に入力される。
【0084】
図17は、以上において説明した風向きを考慮したライティングとシェルの揺動を、図10に示される影響度に応じてミックスしたときの効果を説明する画面例である。図17に示される画面例において、画面は、シェルの揺動がより強く表れる領域142と、周期的に変動するライティングの影響がより強く表れる領域141に分けることができる。
【0085】
領域142においては、図17に示されるように、芝生の先端が風向き61にそってなびいており、時間経過とともに、このなびく様子が例えば、式(D)、(E)によって変化する。領域141においては、シェルの揺れによる効果はあまり見られず、代わりに光のスポット143が時間経過とともに、手前から奥に向かって移動することにより、芝生の表面を風が吹き抜ける様子が描かれる。これは、例えば式(C)によって、輝度が周期的に変化することによりもたらされる効果である。
【0086】
最後に、本実施形態の画像処理装置1における画像処理を説明する。
【0087】
図18は、本実施形態の画像処理装置1における芝生の描画処理を説明するフローチャートである。まず、ジオメトリ演算部31がワールド座標を計算する(S1)。これにより、描画対象のオブジェクトを構成するポリゴンの頂点座標等が求まる。続いて、シェル数決定部332がシェル数を決定する(S2)。
【0088】
シェル数決定部332は、線状オブジェクトが登場する範囲を所定のアルゴリズムに則りゾーンに分割する。このとき、図6、図10に示される表に関係する各種設定を行い、RAM12に格納する。
【0089】
そして、最大輝度決定部333が輝度の最大変化量を決定する(S3)。例えば、図8に示されるようにゾーン毎に数値を決定する。単純に、視点からの距離に比例させるよう設定してもよい。続いて、シェル毎に、風向きを考慮したライティング処理を実行する(S4)。
【0090】
ライティング処理部333の説明において述べたように、ミクロの輝度、マクロの輝度を算出し、図10に示される影響度を考慮し、一方を取捨選択し、または、両者を影響度に応じてミックスして、最終的な輝度を算出する。
【0091】
さらに、テクスチャ座標計算部334が、線状オブジェクト(例えば、芝生)の動きを加味し、テクスチャ座標を計算する(S5)。具体的には、シェル毎にその移動量のオフセット値をテクスチャ座標計算部334が算出する。その計算に当たっては、地面から遠ざかるほど移動量を大きくしたり、視点からの距離が遠ざかるほど移動量を少なくしたりすることで、柔軟な動きが形成される。
【0092】
そして、透視変換部335が、ワールド座標系から視野参照座標系への変換を行う(S6)。
レンダリング部34は、前方クリップ面、後方クリップ面を利用したクリッピング、陰面消去、陰線消去等の処理を行い(S7)、以上の処理で得られるデータを合成し(S8)、CRT等の表示部の表示位置に対応するフレームバッファ37の各アドレスに、データを書き込む。
【0093】
そして、フレームバッファ37に書き込まれたデータが、繰り返し読み出され、ビデオ信号に変換され表示部17に出力される(S9)。ステップS9が済むと、すべてのシェルについて処理が完了したか判定され、まだ描画すべきシェルがあれば(S10No)、ステップS4に処理が戻る。
【0094】
すべてのシェルについて描画が完了すれば(S10Yes)、所定時間経過後再描画するかが判定される(S11)。再描画は、表示部の表示タイミングに合わせて行われるため、所定時間は、例えば、60分の1秒、30分の1秒などである。ステップS11では、通常、画面の切り替え(例えば、プレイヤの操作により次の一打が行われ、ゴルフボールが移動する場合)があるまでは、再描画の必要ありとして、肯定判定(S11Yes)に処理が進む。再描画は、例えば、上記した例においては、式(C)、(D)、(E)において、時間tに所定時間経過後の新たな時間を代入して演算を行えば済む。時間に依存しないデータは、前回の処理に求めた値をそのまま使用する(例えば、ミクロの輝度)。画面の切り替えによって、再描画の必要なしとされる場合(S11No)には、本処理は終了し、次なるコースの描画に備えて待機する。
【0095】
以上に説明したように、本実施形態によれば、3次元仮想空間に配置される芝生を表現するに当たり、高さの異なる半透明層(シェル)を重ね合わせて高速に芝生を描画すると共に、時間経過に合わせてシェルを揺らすことによって、芝生が風になびいたり、揺れるといった芝生の運動を表現する。こうすることにより、低計算量で芝生の動きを表現することが可能となる。
【0096】
更に、本実施形態の画像処理装置1は、LOD(Level of Detail)を実現すべく、3次元空間に配置される視点からの距離に応じて、芝生を描くシェルの数を減じる場合に、視点からの距離が遠い所では芝生の運動を表現するために揺らすシェルがない、又は、あったとしても数が少ないためその視覚効果が薄いという課題も解決する。そのために、本実施形態の画像処理装置1は、ライティング処理を行う際に、3次元仮想空間に固定される光源からの輝度(ミクロの輝度)に加えて、時間を変数とする周期関数により決定される値を使用することによって、視点からの距離が遠い所の芝生が、所定の周期で明るくなったり、暗くなったりする効果を演出する。この周期的な明暗の変化により、シェル数が少ない箇所でも線状オブジェクトの動きを表現することができる。
【0097】
輝度に時間を変数とする周期的な要素を使用することで、固定光源が影響する領域より広い範囲に所定の輝度を与えることができる。こうして、芝生が風により揺れる動きを集団的に表現することができる。ここでは、この集団的な動きを表現するための輝度をマクロの輝度と称する。こうして、ミクロの輝度に加え、マクロの輝度を用いることにより、芝生を力学的に揺らさなくても芝生が風向きに沿って揺れる動きを表現することができる。
【図面の簡単な説明】
【0098】
【図1】本発明の実施形態における画像処理装置の構成ブロック図である。
【図2】本発明の実施形態における画像処理装置の機能ブロック図である。
【図3】本実施形態の画像処理装置におけるT&L部を詳細に説明する図である。
【図4】本実施形態で使用するゴルフコースが仮想3次元空間に配置される具体的な様子を説明する図であり、Aは、仮想3次元空間のワールド座標系(w-xyz座標系)に配置されるゴルフコースを示し、Bは、投影面に定義される視野参照座標系を示す図である。。
【図5】実際のゲームにおける画面例である。。
【図6】シェル数決定部が決定するゾーンの例を示す表である。
【図7】具体例のゴルフコースにおけるゾーン分割の例を示す図である。
【図8】最大輝度決定部が各ゾーンに対して与える最大輝度の例を示す表である。
【図9】ミクロの輝度の算出法の一例を説明する図である。
【図10】ミクロの輝度とマクロの輝度の影響度を割合で表した一例を示すルールテーブルである。
【図11】風向きを考慮したマクロの輝度による効果を説明する図である。
【図12】シェルの様子を説明するための図である。
【図13】視点からの距離とシェル数との関係を示す図である。
【図14】シェルの揺れによる線状オブジェクトの揺れ方の一例を示す図である。
【図15】シェル毎に設定される最大移動量の例を示す表である。
【図16】視点からの距離に応じた最大移動量の分布を示す図である。
【図17】風向きを考慮したライティングとシェルの揺動を、影響度に応じてミックスしたときの効果を説明する画面例である。
【図18】本実施形態の画像処理装置における芝生の描画処理を説明するフローチャートである。
【符号の説明】
【0099】
11 CPU、17 表示部、31 ジオメトリ演算部、32 ワークRAM、33 トランスフォーム&ライティング部、34 レンダリング部、35 テクスチャRAM、37 フレームバッファ、331 シェル数決定部、332 輝度決定部、333 ライティング処理部、334 テクスチャ座標計算部、335 透視変換部
【特許請求の範囲】
【請求項1】
仮想3次元空間に、視点と、地面と、前記地面に一端が固定される複数の線状オブジェクトとが配置されており、前記視点から見える前記線状オブジェクトを2次元平面に投影して描画する画像処理を実行するコンピュータに、
前記複数の線状オブジェクトを前記地面に平行な複数の面で切断して形成される前記複数のオブジェクトの断面を、前記複数の面毎に半透明層として重ね合わせて前記2次元平面に描画する描画ステップと、
所定時間経過後、前記半透明層の一部又は全部を所定の方向に移動させて前記2次元平面に再描画する再描画ステップとを実行させるためのプログラム。
【請求項2】
請求項1において、更に、
前記線状オブジェクト毎に、前記3次元仮想空間に固定される静的な光源に基づく第一の輝度と、前記第一の輝度とは異なる輝度であって、時間と共に変化する第二の輝度とを算出させるステップと、
前記第一及び前記第二の輝度の影響度をそれぞれ決定させるステップと、
前記第一及び前記第二の輝度と、前記第一及び前記第二の輝度に対してそれぞれ決定される前記影響度とに基づき、前記複数の線状オブジェクトの輝度をそれぞれ求めさせるステップとを有することを特徴とするプログラム。
【請求項3】
請求項1又は2において、
前記地面に近い半透明層ほど、移動量が少ないことを特徴とするプログラム。
【請求項4】
請求項1又は2において、
前記再描画ステップは、繰り返し行われ、
前記再描画ステップにおいて移動される半透明層は、前記所定の方向に所定の移動量移動されると、該所定の方向の反対方向に前記所定の移動量移動され、往復運動をすることを特徴とするプログラム。
【請求項5】
請求項1又は2において、
前記描画ステップでは、前記視点からの距離の増加に応じて、前記描画される半透明層の数が減少され、
前記再描画ステップでは、前記3次元空間において前記半透明層の数が第一の閾値を下回る距離を越える箇所で、前記半透明層を移動させないことを特徴とするプログラム。
【請求項6】
請求項2において、
前記描画ステップでは、前記視点からの距離の増加に応じて、前記描画される半透明層の数が減少され、
前記3次元仮想空間において前記半透明層の数が第二の閾値を下回る距離を越える箇所で、前記第二の輝度の影響度が前記第一の輝度の影響度より大きいことを特徴とするプログラム。
【請求項7】
請求項1乃至4のいずれかにおいて、
前記移動される半透明層の位置は、時間を変数とする第一の周期関数で決定されることを特徴とするプログラム。
【請求項8】
請求項7において、
前記線状オブジェクトの第二の輝度は、時間を変数とし、前記第一の周期関数と同じ周期の第二の周期関数で決定されることを特徴とするプログラム。
【請求項9】
仮想3次元空間に、視点と、地面と、前記地面に一端が固定される複数の線状オブジェクトとが配置されており、前記視点から見える前記線状オブジェクトを2次元平面に投影して描画する画像処理装置であって、
制御プログラム及び前記視点、前記地面、そして前記線状オブジェクトに関するそれぞれのデータが格納される記憶部と、
前記複数の線状オブジェクトを前記地面に平行な複数の面で切断して形成される前記複数のオブジェクトの断面を、前記複数の面毎に半透明層として重ね合わせて前記2次元平面に描画する描画機能と、
所定時間経過後、前記半透明層の一部又は全部を所定の方向に移動させて前記2次元平面に再描画する再描画機能とを、前記記憶部から前記制御プログラム及び前記それぞれのデータを読み出して実現する制御部とを有することを特徴とする画像処理装置。
【請求項10】
請求項9において、
前記制御部は、更に、前記線状オブジェクト毎に、前記3次元仮想空間に固定される静的な光源に基づく第一の輝度と、前記第一の輝度とは異なる輝度であって、時間と共に変化する第二の輝度とを算出し、前記第一及び前記第二の輝度の影響度をそれぞれ決定し、前記第一及び前記第二の輝度と、前記第一及び前記第二の輝度に対してそれぞれ決定される前記影響度とに基づき、前記複数の線状オブジェクトの輝度をそれぞれ求める機能を実現することを特徴とする画像処理装置。
【請求項11】
請求項9又は10において、
前記地面に近い半透明層ほど、移動量が少ないことを特徴とする画像処理装置。
【請求項12】
請求項9又は10において、
前記再描画は、繰り返し行われ、
前記再描画の際移動される半透明層は、前記所定の方向に所定の移動量移動されると、該所定の方向の反対方向に前記所定の移動量移動され、往復運動をすることを特徴とする画像処理装置。
【請求項13】
請求項9又は10において、
前記制御部は、前記描画機能を実行するとき、前記視点からの距離の増加に応じて、前記描画される半透明層の数を減少させ、前記再描画機能を実行するとき、前記3次元空間において前記半透明層の数が第一の閾値を下回る距離を越える箇所で、前記半透明層を移動させないことを特徴とする画像処理装置。
【請求項14】
請求項10において、
前記制御部は、前記描画機能を実行するとき、前記視点からの距離の増加に応じて、前記描画される半透明層の数を減少させ、
前記3次元仮想空間において前記半透明層の数が第二の閾値を下回る距離を越える箇所で、前記第二の輝度の影響度が前記第一の輝度の影響度より大きいことを特徴とする画像処理装置。
【請求項15】
請求項9乃至12のいずれかにおいて、
前記移動される半透明層の位置は、時間を変数とする第一の周期関数で決定されることを特徴とする画像処理装置。
【請求項16】
請求項15において、
前記線状オブジェクトの第二の輝度は、時間を変数とし、前記第一の周期関数と同じ周期の第二の周期関数で決定されることを特徴とする画像処理装置。
【請求項17】
仮想3次元空間に、視点と、地面と、前記地面に一端が固定される複数の線状オブジェクトとが配置されており、前記視点から見える前記線状オブジェクトを2次元平面に投影して描画する画像処理装置において実行される画像処理方法であって、
前記複数の線状オブジェクトを前記地面に平行な複数の面で切断して形成される前記複数のオブジェクトの断面を、前記複数の面毎に半透明層として重ね合わせて前記2次元平面に描画する描画ステップと、
所定時間経過後、前記半透明層の一部又は全部を所定の方向に移動させて前記2次元平面に再描画する再描画ステップとを有することを特徴とする描画方法。
【請求項18】
請求項1乃至8のいずれかに記載されたプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項1】
仮想3次元空間に、視点と、地面と、前記地面に一端が固定される複数の線状オブジェクトとが配置されており、前記視点から見える前記線状オブジェクトを2次元平面に投影して描画する画像処理を実行するコンピュータに、
前記複数の線状オブジェクトを前記地面に平行な複数の面で切断して形成される前記複数のオブジェクトの断面を、前記複数の面毎に半透明層として重ね合わせて前記2次元平面に描画する描画ステップと、
所定時間経過後、前記半透明層の一部又は全部を所定の方向に移動させて前記2次元平面に再描画する再描画ステップとを実行させるためのプログラム。
【請求項2】
請求項1において、更に、
前記線状オブジェクト毎に、前記3次元仮想空間に固定される静的な光源に基づく第一の輝度と、前記第一の輝度とは異なる輝度であって、時間と共に変化する第二の輝度とを算出させるステップと、
前記第一及び前記第二の輝度の影響度をそれぞれ決定させるステップと、
前記第一及び前記第二の輝度と、前記第一及び前記第二の輝度に対してそれぞれ決定される前記影響度とに基づき、前記複数の線状オブジェクトの輝度をそれぞれ求めさせるステップとを有することを特徴とするプログラム。
【請求項3】
請求項1又は2において、
前記地面に近い半透明層ほど、移動量が少ないことを特徴とするプログラム。
【請求項4】
請求項1又は2において、
前記再描画ステップは、繰り返し行われ、
前記再描画ステップにおいて移動される半透明層は、前記所定の方向に所定の移動量移動されると、該所定の方向の反対方向に前記所定の移動量移動され、往復運動をすることを特徴とするプログラム。
【請求項5】
請求項1又は2において、
前記描画ステップでは、前記視点からの距離の増加に応じて、前記描画される半透明層の数が減少され、
前記再描画ステップでは、前記3次元空間において前記半透明層の数が第一の閾値を下回る距離を越える箇所で、前記半透明層を移動させないことを特徴とするプログラム。
【請求項6】
請求項2において、
前記描画ステップでは、前記視点からの距離の増加に応じて、前記描画される半透明層の数が減少され、
前記3次元仮想空間において前記半透明層の数が第二の閾値を下回る距離を越える箇所で、前記第二の輝度の影響度が前記第一の輝度の影響度より大きいことを特徴とするプログラム。
【請求項7】
請求項1乃至4のいずれかにおいて、
前記移動される半透明層の位置は、時間を変数とする第一の周期関数で決定されることを特徴とするプログラム。
【請求項8】
請求項7において、
前記線状オブジェクトの第二の輝度は、時間を変数とし、前記第一の周期関数と同じ周期の第二の周期関数で決定されることを特徴とするプログラム。
【請求項9】
仮想3次元空間に、視点と、地面と、前記地面に一端が固定される複数の線状オブジェクトとが配置されており、前記視点から見える前記線状オブジェクトを2次元平面に投影して描画する画像処理装置であって、
制御プログラム及び前記視点、前記地面、そして前記線状オブジェクトに関するそれぞれのデータが格納される記憶部と、
前記複数の線状オブジェクトを前記地面に平行な複数の面で切断して形成される前記複数のオブジェクトの断面を、前記複数の面毎に半透明層として重ね合わせて前記2次元平面に描画する描画機能と、
所定時間経過後、前記半透明層の一部又は全部を所定の方向に移動させて前記2次元平面に再描画する再描画機能とを、前記記憶部から前記制御プログラム及び前記それぞれのデータを読み出して実現する制御部とを有することを特徴とする画像処理装置。
【請求項10】
請求項9において、
前記制御部は、更に、前記線状オブジェクト毎に、前記3次元仮想空間に固定される静的な光源に基づく第一の輝度と、前記第一の輝度とは異なる輝度であって、時間と共に変化する第二の輝度とを算出し、前記第一及び前記第二の輝度の影響度をそれぞれ決定し、前記第一及び前記第二の輝度と、前記第一及び前記第二の輝度に対してそれぞれ決定される前記影響度とに基づき、前記複数の線状オブジェクトの輝度をそれぞれ求める機能を実現することを特徴とする画像処理装置。
【請求項11】
請求項9又は10において、
前記地面に近い半透明層ほど、移動量が少ないことを特徴とする画像処理装置。
【請求項12】
請求項9又は10において、
前記再描画は、繰り返し行われ、
前記再描画の際移動される半透明層は、前記所定の方向に所定の移動量移動されると、該所定の方向の反対方向に前記所定の移動量移動され、往復運動をすることを特徴とする画像処理装置。
【請求項13】
請求項9又は10において、
前記制御部は、前記描画機能を実行するとき、前記視点からの距離の増加に応じて、前記描画される半透明層の数を減少させ、前記再描画機能を実行するとき、前記3次元空間において前記半透明層の数が第一の閾値を下回る距離を越える箇所で、前記半透明層を移動させないことを特徴とする画像処理装置。
【請求項14】
請求項10において、
前記制御部は、前記描画機能を実行するとき、前記視点からの距離の増加に応じて、前記描画される半透明層の数を減少させ、
前記3次元仮想空間において前記半透明層の数が第二の閾値を下回る距離を越える箇所で、前記第二の輝度の影響度が前記第一の輝度の影響度より大きいことを特徴とする画像処理装置。
【請求項15】
請求項9乃至12のいずれかにおいて、
前記移動される半透明層の位置は、時間を変数とする第一の周期関数で決定されることを特徴とする画像処理装置。
【請求項16】
請求項15において、
前記線状オブジェクトの第二の輝度は、時間を変数とし、前記第一の周期関数と同じ周期の第二の周期関数で決定されることを特徴とする画像処理装置。
【請求項17】
仮想3次元空間に、視点と、地面と、前記地面に一端が固定される複数の線状オブジェクトとが配置されており、前記視点から見える前記線状オブジェクトを2次元平面に投影して描画する画像処理装置において実行される画像処理方法であって、
前記複数の線状オブジェクトを前記地面に平行な複数の面で切断して形成される前記複数のオブジェクトの断面を、前記複数の面毎に半透明層として重ね合わせて前記2次元平面に描画する描画ステップと、
所定時間経過後、前記半透明層の一部又は全部を所定の方向に移動させて前記2次元平面に再描画する再描画ステップとを有することを特徴とする描画方法。
【請求項18】
請求項1乃至8のいずれかに記載されたプログラムを記録したコンピュータ読み取り可能な記録媒体。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【公開番号】特開2006−72577(P2006−72577A)
【公開日】平成18年3月16日(2006.3.16)
【国際特許分類】
【出願番号】特願2004−253521(P2004−253521)
【出願日】平成16年8月31日(2004.8.31)
【出願人】(000132471)株式会社セガ (811)
【Fターム(参考)】
【公開日】平成18年3月16日(2006.3.16)
【国際特許分類】
【出願日】平成16年8月31日(2004.8.31)
【出願人】(000132471)株式会社セガ (811)
【Fターム(参考)】
[ Back to top ]