(57)【特許請求の範囲】
【請求項１】
バンプマップされた曲面に対して光源からの入射光を与え、曲面の反射光を求めるバンプマツプシェーディング演算回路に関し、バンプおよび曲面の法線をデバイス座標系における視点座標軸に対する水平および垂直角の２つの傾き成分で定義し、水平あるいは垂直角成分のうちの１つを、それぞれの三角関数テーブルの入力変数とすると共に、積和回路を用いて反射光を求める回路構成において、シェーディング演算回路を光源入射角には依存しない三角関数テーブルで構成する手段と、拡散反射成分にはそれぞれ拡散係数、テキスチャー色、光源色を、また鏡面反射成分には鏡面反射係数、鏡面反射色、光源色をそれぞれ乗算した後、それらを加算する手段と、バンプマッピングにおいては、前記シェーディング演算の前処理としてバンプ法線と曲面法線との回転計算を三角関数テーブルと、積和回路で構成すると共に、それぞれの法線との回転において演算結果が不定状態とはならない組み合わせ回路で構成することを特徴とするバンプマップシェーディング回路。
【発明の詳細な説明】
この発明はバンプマップされた面に対して光による拡散および鏡面反射を行うコンピュータ・グラフィックス表示技術に関し、よりリアルな物体の表示に効果をもつバンプマップシェーディングモデルのハードウェア回路である。この技術はリアルタイム性が要求されるバーチャルリアルティシステム等に応用される。
【００１】
［従来の技術］
シェーディングのハードウェア回路は法線ベクターを用いた光反射を伴う計算複雑性のため実例はほとんど見られない。特願平７−１０２９０６では法線ベクターを２つの水平および垂直角成分で定義し、シェーディングの曲面法線と光源入射角とによって生じる物体上の反射角および視点軸とその反射角との角度を求める手段として、三角関数計算のためのメモリテーブルと積和回路のみを用いて実現すると同時に、メモリの大容量化を避けるためにメモリ入力変数（アドレス）は水平あるいは垂直角のうちの一つとすることでシェーディング回路を構成していた。前記回路では光源入射角成分が三角関数テーブル値を決定しており、この結果、光源入射角の変移があると、その都度テーブルの内容の書換えが必要であった。また、物体の色、光源の色と、反射光との関係は定義されていない。一方、特願平７−１０２９０５ではバンプマップ処理についてハードウェア回路が示めされた。バンプマップ回路はシェーディング回路の前段処理として、曲面の傾き（原始法線）に対して、バンプ法線を独立して定義し、これを曲面にマッピングする。すなわちこの回路はバンプ法線を面の傾きで回転させる回路であり、後段のシェーディング回路に与えられる傾き値を決定するものである。この回転処理に用いるメモリテーブルには、前記回路においては、回転角の組合せによっては、演算結果が不定の状態があり、特定の組合せ角度において補正を必要とした。本発明のシェーディング回路では光源入射角の変移による三角関数メモリテーブルの書き換えを除くため、光源入射角成分とメモリテーブル値の決定とは非依存の構造とし、シェーディング回路の鏡面反射指数テーブルを除くすべてのメモリテーブルをＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｅｏｒｙ）化して、入射光の変移による環境設定負荷を軽減し、またこの回路における拡散および鏡面反射成分と物体および光源色との関係を定義する一方、バンプマップ回路では演算過程において不定条件の生じない回路とした。
【００２】
［課題を解決するための手段］
フォンシェーディングモデルはすでによく知られているように
Ｉｐ＝Ｉｄｃｏｓθ＋Ｉｓｃｏｓｎα    （１）
で定義される。ここでＩｐは反射光、Ｉｄ，Ｉｓはそれぞれ拡散および鏡面反射係数、θは光源入射角と面法線との角度、αは反射光と視点軸との角度、ｎは物体鏡面反射指数である。（１）式においてｃｏｓθおよびｃｏｓαは特願平７−１０２９０６に示されたように
ｃｏｓθ＝ｃｏｓＮｖ｛ｃｏｓＬｖ［ｃｏｓ（Ｌｈ−Ｎｈ）−１］｝＋
ｃｏｓ（Ｌｖ−Ｎｖ）
ｃｏｓα＝２ｃｏｓＮｈ・ｃｏｓＮｖ・ｃｏｓθ−ｃｏｓＬｈ・ｃｏｓＬｖ
の関係となる。ここでＮｈ，Ｎｖはそれぞれ面の視点軸に対する水平および垂直角、Ｌｈ，Ｌｖは光源の入射角の水平および垂直成分角である。従来の方法ではこの式にもとづきｃｏｓ（Ｌｎ−Ｎｈ）およびｃｏｓ（Ｌｖ−Ｎｖ）あるいはｃｏｓ（Ｌｈ−Ｎｈ）−１成分が直接メモリテーブル値として与えられていた。この結果、ＬｈあるいはＬｖが変化すればそれにもとづきテーブル値を再計算し、これを再ロードすることが必要であった。本発明ではＬｈ−ＮｈおよびＬｖ−Ｎｖの項をそれぞれテーブルの外部回路で求める。すなわちＨ＝Ｌｈ−Ｎｖ，Ｖ＝Ｌｖ−Ｎｖをあらかじめ求め、このＨ、およびＶをテーブルの入力変数とする。これによって前記の項は（ｃｏｓＨ−１）とｃｏｓＶとなり、テーブルはアドレスＨおよびＶで読み出される一般的な三角関数値となる。この結果、Ｌｈ，あるいはＬｖ値とは独立してＲＯＭ化できることになると共に、光源入射角の変移による環境設定は面の傾きとの減算だけで可能となる。一方、ｃｏｓθおよびｃｏｓｎα成分をそれぞれ求め、Ｉｄ，ｃｏｓθ，Ｏｃ，ＬｃとＩｓ，ｃｏｓｎα，Ｓｃ，Ｌｃとを乗算した後、これを加算することによって反射光に物体色、光源色を反影することができる。ここでＯｃ，Ｌｃ，およびＳｃはそれぞれ物体色、光源色、鏡面反射色である。一方、バンプマップでは特願平７−１０２９０５においてバンプ法線を２つの水平および垂直の角度成分をＢｈ，Ｂｖ、面の原始法線をＮｈ，Ｎｖとで定義し、この原始法線でバンプ法線を回転した。この結果得られる水平垂直角成分Ｎｈ′およびＮｖ′はそれぞれ
Ｎｖ′＝ａｒｃｓｉｎ［ｓｉｎ｜Ｎｖ＋Ａｚ｜ｓｉｎ｜Ａｘ｜］ｓ１    （２）Ｎｈ′＝ａｒｃｓｉｎ［ｃｏｓＡｘ／ｓｑｒ（１−ｓｉｎ２Ｎｖ’）］ｓ２＋Ｎｈ        （３）
Ａｘ＝ａｒｃｃｏｓ（ｓｉｎ｜  Ｂｈ｜  ｃｏｓＢｖ）ｓ３
Ａｚ＝ａｒｃｓｉｎ（ｓｉｎＢｖ  ／  ｓｉｎ  ｜Ａｘ｜）
で与えられた。ここでＳ１，Ｓ２，Ｓ３，はそれぞれ各角度成分が特定の角度範囲をとるときによって異なる符号を、ｓｑｒ（）は平方根を示す。上記の式のうちＮｈ′に見られるｃｏｓＡｘ／ｓｑｒ（１−ｓｉｎ２Ｎｖ′）項は回路構成においてｃｏｓＡｘと、１／ｓｑｒ（１−ｓｉｎ２Ｎｖ′）のそれぞれ２つのＲＯＭテーブルと乗算器で求められている。この場合１／ｓｑｒ（１−ｓｉｎ２Ｎｖ′）項ではＮｖ′＝π／２で無限大に、またｃｏｓＡｘ／ｓｑｒ（１−ｓｉｎ２Ｎｖ′）ではＮｖ＋Ａｚ＝Ａｘ＝π／２でｃｏｓＡｘ／ｃｏｓＮｖ′がともにゼロとなり不定となっている。これを避けるため、本発明では（２）式を（３）式のｃｏｓＡｘ／ｓｑｒ（１−ｓｉｎ２Ｎｖ′）に代入して
ｈ＝１／ｓｑｒ［１＋ｔａｎ２Ａｘｃｏｓ２（Ｎｖ＋Ａｚ）］    （４）
を用いる。この結果（４）式はそれぞれの角度の組合せによって０≦ｈ≦１の誤差を生じる可能性があるが、従来のように値が不定となることはない。
この誤差は角度成分の精度を上げることで減少することができる。
【００３】
［実施例］
図１に従来のフォンシェーディング回路を示す。
ここで１１はｃｏｓ［ｃｏｓ（Ｌｈ−Ｎｈ）−１］記憶素子、１２はｃｏｓＮｖ、１３はｃｏｓ（Ｌｖ−Ｎｖ）また１４はｃｏｓｎα、１５は２ｃｏｓＮｈ、１６ａ−ｅは乗算器、１７ａ−ｃは加算器であり、１１，１３，１４はＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）で構成されている。図２に本発明の回路を示す。本発明ではそれぞれ入射光と面の傾きをあらかじめ計算する。２１は減算回路でＨ＝Ｌｈ−Ｎｈを実行する。２２はｃｏｓ（Ｈ−１）のテーブルである。２３はｃｏｓＮｖテーブルである。また２４はＶ＝Ｌｖ−Ｎｖの減算回路、２５はｃｏｓＶテーブル、２６は２ｃｏｓＮｈテーブルとなる。これらテーブルはすべてＲＯＭで構成する。２７はｃｏｓｎαテーブル、２８ａ−ｆは乗算器、２９ａ−ｃは加算器である。一方、これらの回路により拡散成分ｃｏｓθおよび鏡角反射成分ｃｏｓαは図２に示すようにそれぞれ別々に取り出し、これらに拡散成分では物体色Ｏｃ、光源色Ｌｃおよび拡散係数Ｉｄを、また、鏡面反射成分では鏡面反射色Ｓｃ、光源色Ｌｃおよび鏡面反射係数Ｉｓをそれぞれ乗算器２８ｃおよび２８ｆで乗算した後、加算器２９ｃで加算して反射光Ｉｐを得る。一方、図３に従来のバップマップ回路を示す。この回路では３１，３２はｓｉｎ，３３はｃｏｓ、３４は１／ｓｑｒ（１−ｔ２）、３５，３６はａｒｃｓｉｎのすべてＲＯＭテーブルから構成されている。３７ａ−ｂは加算器、３８ａ−ｂは乗算器を示す。ＲＯＭテーブル３４では、前項で示したように、特定の面の原始法線とバップ法線との関係で分母分子が共にゼロとなり乗算器３８ｂの出力で不定となった。図４には本発明の回路を示す。この回路では４１，４２はそれぞれｓｉｎ（Ｎｖ＋Ａｚ）、ｓｉｎＡｘであり、、４３はｔａｎ２Ａｘ、４４はｃｏｓ２（Ｎｖ＋Ａｚ）、４５はａｒｃｓｉｎのそれぞれＲＯＭテーブル、４７ａ−ｂは加算器、４８ａ−ｂは乗算器であり、乗算器４８ｂでｔ＝ｔａｎ２Ａｘ・ｃｏｓ２（Ｎｖ＋Ａｚ）を計算し、これを１／ｓｑｒ（１＋ｔ２）のａｒｃｓｉｎテーブル４６の入力変数とする。よって本発明の回路では不定は生じない。バップマップ回路はシェーディング回路の前段に位置し、図４に示すようにすべてＲＯＭテーブルの構成が可能である。以上から本発明ではシェーディング回路部ではメモリテーブルの書き換えは、物体属性が異なり鏡面反射指数テーブル２７の変更時のみ行い、テーブル生成の負荷が軽減すると共に、バンプマップ回路部では不定値のない出力値が得られる。
【図の簡単な説明】
【図１】従来のフォンシェーディング回路
【符号の説明】
１１  ｃｏｓ［ｃｏｓ（Ｌｈ−Ｎｈ）−１］  記憶素子
１２  ｃｏｓＮｖ記憶素子
１３  ｃｏｓ（Ｌｖ−Ｎｖ）記憶素子
１４  ｃｏｓｎα記憶素子
１５  ２ｃｏｓＮｈ記憶素子
１６ａ−ｅ  乗算器
１７ａ−ｃ  加算器
【図２】本発明のフォンシェーディング回路
【符号の説明】
２１  減算回路
２２  ｃｏｓ（Ｈ−１）ＲＯＭ
２３  ｃｏｓＮｖ  ＲＯＭ
２４  減算回路
２５  ｃｏｓＶ  ＲＯＭ
２６  ｃｏｓＮｈ  ＲＯＭ
２７  ｃｏｓｎα記憶素子
２８ａ−ｆ  乗算器
２９ａ−ｃ  加算器
【図３】従来のバンプマップ回路
【符号の説明】
３１、３２  ｓｉｎ  ＲＯＭ
３３  ｃｏｓ  ＲＯＭ
３４  １／ｓｑｒ（１  −  ｔ２）  ＲＯＭ
３５、３６  ａｒｃｓｉｎ  ＲＯＭ
３７ａ−ｂ  加算器
３８ａ−ｂ  乗算器
【図４】本発明のバンプマップ回路
【符号の説明】
４１  ｓｉｎ（Ｎｖ＋Ａｚ）ＲＯＭ
４２  ｓｉｎ  Ａｘ  ＲＯＭ
４３  ｔａｎ２Ａｘ  ＲＯＭ
４４  ｃｏｓ２（Ｎｖ＋Ａｚ）  ＲＯＭ
４５  ａｒｃｓｉｎ  ＲＯＭ
４６  ａｒｃｓｉｎ［  １／ｓｑｒ（１＋ｔ２）  ］  ＲＯＭ
４７ａ−ｂ  加算器
４８ａ−ｂ  乗算器
【図１】
0003577654.tif 000002
【図２】
0003577654.tif 000003
【図３】
0003577654.tif 000004
【図４】
0003577654.tif 000005