(57)【要約】【課題】  曲面パッチを細分割処理によりポリゴン近似する場合に、単純なハードウェア及び小規模なメモリで処理が可能な曲面細分割装置を提供する。【解決手段】  曲面細分割装置１０の細分割レベル決定部１３は、曲面の形状を定義する制御点の情報の入力を受け付け、当該曲面の細分割レベルを決定する。次に、決定された細分割レベルに対応する制御テーブルを、細分割処理演算制御部１６に設定する。細分割処理演算制御部１６は、設定された制御テーブルに基づき、ワークメモリ部１４及び細分割処理演算部１５を制御して細分割処理を実行する。【選択図】  図２
2005056385.tif 000002
【特許請求の範囲】
【請求項１】
曲面の細分割回数を決定する細分割レベル決定手段と、
前記曲面の形状を定義する制御点情報と、細分割処理の中間結果及び最終結果とを格納するワークメモリ部と、
前記ワークメモリ部より前記曲面を定義する第１軸方向又は第２軸方向に隣接する一連の細分割処理前の制御点情報である第１制御点情報を読み出し、前記細分割処理を実行して生成した細分割処理後の新たな制御点情報である第２制御点情報を生成し、前記ワークメモリ部に書き込む細分割処理演算手段と、
前記細分割処理演算手段において細分割処理の演算が実行される前記第１制御点情報が格納されているワークメモリ部の第１メモリ番地、及び前記細分割処理演算手段において細分割処理が実行されることにより生成される前記第２制御点情報を格納する前記ワークメモリ部の第２メモリ番地を決定する演算制御手段とを備え、
前記細分割処理演算手段は、前記演算制御手段からの制御に従って、前記ワークメモリ部の前記第１メモリ番地に重複する前記第２メモリ番地に前記第２制御点情報を上書き可能である
ことを特徴とする曲面細分割装置。
【請求項２】
前記演算制御手段は、細分割回数の多い軸方向の細分割処理を実行し、続いて前記細分割回数の少ない軸方向の前記細分割処理を実行する場合においては、前記細分割回数の少ない軸方向の前記細分割処理が実行されることにより生成される前記第２制御点情報を、前記細分割回数の少ない軸方向の前記細分割処理が実行される前に格納されていた前記ワークメモリ部の前記第１メモリ番地から上書きするように前記第２メモリ番地を決定する
ことを特徴とする請求項１記載の曲面細分割装置。
【請求項３】
前記演算制御手段は、さらに、細分割処理により順次生成される曲面の形状を定義する制御点情報を再帰的に処理するように、前記演算手段に入力する前記制御点情報が格納されているワークメモリ部の第１メモリ番地、及び前記細分割処理演算手段において細分割処理が実行されることにより生成される前記制御点情報を格納する前記第２メモリ番地を決定する
ことを特徴とする請求項１記載の曲面細分割装置。
【請求項４】
前記演算制御手段は、さらに、前記細分割レベル決定手段において決定された前記曲面を定義する前記第１軸方向及び前記第２軸方向の前記細分割回数を比較し、細分割回数の少ない軸方向より前記細分割処理を終了し、且つ当該細分割処理の１つ以前の細分割処理においては当該軸方向と異なる軸方向で前記細分割処理を行うように前記細分割処理演算手段の動作を制御する
ことを特徴とする請求項１記載の曲面細分割装置。
【請求項５】
前記演算制御手段は、さらに、前記細分割レベル決定手段において決定された前記曲面を定義する前記第１軸方向及び前記第２軸方向の前記細分割回数を比較し、前記細分割回数の多い軸方向より前記細分割処理を開始するように前記細分割処理演算手段の動作を制御する
ことを特徴とする請求項１記載の曲面細分割装置。
【請求項６】
前記演算制御手段は、さらに、曲面を定義する第１軸方向及び第２軸方向における細分割回数を比較し、前記細分割回数の多い方の値から、前記細分割回数の少ない方の値を減算して差分値を算出し、細分割処理の開始から、算出された前記差分値の回数だけ連続して前記細分割回数の多い方と判定された軸方向に、前記細分割処理を実行するように前記細分割処理演算手段の動作を制御する
ことを特徴とする請求項１記載の曲面細分割装置。
【請求項７】
前記細分割処理演算手段は、２個の制御点の中点を算出する手段を基本単位として、前記基本単位を並列及び直列に組み合わせることで前記曲面の細分割処理を行う
ことを特徴とする請求項１記載の曲面細分割装置。
【請求項８】
前記曲面細分割装置は、さらに、
前記細分割レベル決定手段において決定される細分割回数の組み合わせについて、前記演算手段に入力する前記第１制御点情報が格納されている前記ワークメモリ部の前記第１メモリ番地、及び前記細分割処理演算手段において細分割処理が実行されることにより生成される前記第２制御点情報を格納する前記ワークメモリ部の前記第２メモリ番地を、前記細分割処理の開始から終了まで処理順に記述した制御テーブルを保持する制御テーブル保持手段を備え、
前記演算制御手段は、前記制御テーブルを参照して、前記第１メモリ番地及び前記第２メモリ番地を決定する
ことを特徴とする請求項１記載の曲面細分割装置。
【請求項９】
前記演算制御手段は、前記第１軸方向及び前記第２軸方向の細分割回数が入れ替わっている場合においては、同一の制御テーブルを参照して前記細分割処理演算手段に前記第１メモリ番地及び前記第２メモリ番地を指定する
ことを特徴とする請求項８記載の曲面細分割装置。
【請求項１０】
前記曲面細分割装置は、さらに、
前記細分割レベル決定手段において決定された前記第１軸方向及び前記第２軸方向の細分割回数の大小に応じて、曲面の形状を定義する制御点情報の前記ワークメモリ部への格納順序を制御する曲面情報入力制御手段を備える
ことを特徴とする請求項９記載の曲面細分割装置。
【請求項１１】
前記曲面情報入力制御手段は、前記第１軸方向の細分割回数が前記第２軸方向の細分割回数よりも大きい又は等しい場合には、前記ワークメモリ部の先頭アドレスから、曲面の形状を定義する制御点情報を、前記制御点情報に付与された第２軸方向のインデックスの小さい方から順に、また前記第２軸方向のインデックスが等しければ第１軸方向の前記インデックスの小さい方から順に格納し、
前記第２軸方向の細分割回数が前記第１軸方向の細分割回数よりも大きい場合には、前記ワークメモリ部の先頭アドレスから、前記制御点情報に付与された前記第１軸方向のインデックスの大きい方から順に、また前記第１軸方向のインデックスが等しければ前記第２軸方向のインデックスの小さい方から順に格納する
ことを特徴とする請求項１０記載の曲面細分割装置。
【請求項１２】
前記細分割処理演算手段が前記第１軸方向と前記第２軸方向の細分割回数が入れ替わっている制御テーブルを用いて細分割処理を行う場合には、
前記曲面情報入力手段は、制御テーブルの書き換えを行い、
前記細分割処理演算手段は、前記書き換え後の前記制御テーブルを用いて細分割処理を行う
ことを特徴とする請求項９記載の曲面細分割装置。
【請求項１３】
前記曲面情報入力手段は、前記制御テーブルの基本ブロック以外のインプットとアウトプットの列を入れ替えて、且つ読み込み方向と書き込み方向とを書き換える
ことを特徴とする請求項１２記載の曲面細分割装置。
【請求項１４】
前記細分割レベル決定手段は、前記細分割処理演算手段における細分割回数として、整数値でない細分割回数を設定可能である
ことを特徴とする請求項１記載の曲面細分割装置。
【請求項１５】
前記曲面細分割装置は、さらに、
前記細分割処理演算手段における細分割回数が整数値又は半整数値であるか否かを判定して、ポリゴン生成における制御点を選択する制御点選択手段と、
前記制御点選択手段において選択された制御点を用いてポリゴンを生成するポリゴン生成手段とを備える
ことを特徴とする請求項１４記載の曲面細分割装置。
【請求項１６】
前記制御点選択手段は、前記細分割回数が前記第１軸方向及び前記第２軸方向のいずれの方向も整数値であると判定した場合においては、前記曲面上に存在する全ての制御点を選択し、
前記ポリゴン生成手段は、前記制御点選択手段において選択された近接する前記制御点を連結することにより前記ポリゴンを生成する
ことを特徴とする請求項１４記載の曲面細分割装置。
【請求項１７】
前記制御点選択手段は、曲面を定義する前記第１軸方向又は前記第２軸方向のいずれかの方向のみが半整数値である場合には、前記曲面上に存在する制御点のうち、前記曲面の４隅に存在する制御点と、前記曲面のエッジ上に存在しない制御点と、前記細分割回数が半整数値でない軸方向のエッジ上に存在する制御点とを選択し、
前記ポリゴン生成手段は、前記制御点選択手段において選択された近接する制御点を連結することにより前記ポリゴンを生成する
ことを特徴とする請求項１４記載の曲面細分割装置。
【請求項１８】
前記制御点選択手段は、曲面を定義する第１軸方向及び第２軸方向のいずれの方向も半整数値である場合には、前記曲面上に存在する制御点のうち、前記曲面の４隅に存在する前記制御点、及び前記曲面のエッジ上に存在しない前記制御点を選択し、
前記ポリゴン生成手段は、前記制御点選択手段において選択された近接する制御点を連結することによってポリゴンを生成する
ことを特徴とする請求項１４記載の曲面細分割装置。
【請求項１９】
前記制御点選択手段は、前記曲面が四角形状であり、且つ前記第１軸方向及び前記第２軸方向が半整数値である場合においては、前記曲面の四隅及び前記四角形状のエッジ上に存在しない制御点を選択し、
前記ポリゴン生成手段は、前記エッジ上に存在しない制御点と、前記四隅に位置する制御点を連結することにより前記ポリゴンを生成する
ことを特徴とする請求項１４記載の曲面細分割装置。
【請求項２０】
前記曲面は、有理又は非有理ベジェ曲面である
ことを特徴とする請求項１から請求項１９のいずれか１項に記載の曲面細分割装置。
【請求項２１】
曲面の細分割回数を決定する細分割レベル決定手段と、
前記曲面の形状を定義する制御点情報と、細分割処理の中間結果及び最終結果を格納するワークメモリ部と、
前記ワークメモリ部より前記曲面を定義する第１軸方向又は第２軸方向に隣接する一連の細分割処理前の制御点情報である第１制御点情報を読み出し、前記細分割処理を実行して生成した細分割処理後の新たな制御点情報である第２制御点情報を生成し、前記ワークメモリ部に書き込む細分割処理演算手段と、
前記細分割処理演算手段において細分割処理の演算が実行される前記第１制御点情報が格納されているワークメモリ部の第１メモリ番地、及び前記細分割処理演算手段において細分割処理が実行されることにより生成される前記第２制御点情報を格納する前記ワークメモリ部の第２メモリ番地を決定する演算制御手段とを備え、
前記細分割処理演算手段は、前記演算制御手段からの制御に従って、前記ワークメモリ部の前記第１メモリ番地に重複する前記第２メモリ番地に前記第２制御点情報を上書き可能であり、
前記細分割レベル決定手段は、前記細分割処理演算手段における細分割回数として、整数値でない細分割回数を設定可能である
ことを特徴とする曲面細分割装置。
【請求項２２】
前記曲面細分割装置は、さらに、
前記細分割処理演算手段における細分割回数が整数値又は半整数値であるか否かを判定して、ポリゴン生成における制御点を選択する制御点選択手段と、
前記制御点選択手段において選択された制御点を用いてポリゴンを生成するポリゴン生成手段とを備える
ことを特徴とする請求項２１記載の曲面細分割装置。
【請求項２３】
前記制御点選択手段は、前記細分割回数が前記第１軸方向及び前記第２軸方向のいずれの方向も整数値であると判定した場合においては、前記曲面上に存在する全ての制御点を選択し、
前記ポリゴン生成手段は、前記制御点選択手段において選択された近接する前記制御点を連結することにより前記ポリゴンを生成する
ことを特徴とする請求項２１記載の曲面細分割装置。
【請求項２４】
前記制御点選択手段は、曲面を定義する前記第１軸方向又は前記第２軸方向のいずれかの方向のみが半整数値である場合には、前記曲面上に存在する制御点のうち、前記曲面の４隅に存在する制御点と、前記曲面のエッジ上に存在しない制御点と、前記細分割回数が半整数値でない軸方向のエッジ上に存在する制御点とを選択し、
前記ポリゴン生成手段は、前記制御点選択手段において選択された近接する制御点を連結することにより前記ポリゴンを生成する
ことを特徴とする請求項２１記載の曲面細分割装置。
【請求項２５】
前記制御点選択手段は、曲面を定義する第１軸方向及び第２軸方向のいずれの方向も半整数値である場合には、前記曲面上に存在する制御点のうち、前記曲面の４隅に存在する前記制御点、及び前記曲面のエッジ上に存在しない前記制御点を選択し、
前記ポリゴン生成手段は、前記制御点選択手段において選択された近接する制御点を連結することによってポリゴンを生成する
ことを特徴とする請求項２１記載の曲面細分割装置。
【請求項２６】
曲面の細分割回数を決定する細分割レベル決定ステップと、
前記曲面の形状を定義する制御点情報と、細分割処理の中間結果及び最終結果を格納するワークメモリ部より前記曲面を定義する第１軸方向又は第２軸方向に隣接する一連の細分割処理前の制御点情報である第１制御点情報を読み出し、前記細分割処理を実行して生成した細分割処理後の新たな制御点情報である第２制御点情報を生成し、前記ワークメモリ部に書き込む細分割処理演算ステップと、
前記細分割処理演算ステップにおいて細分割処理の演算が実行される前記第１制御点情報が格納されているワークメモリ部の第１メモリ番地、及び前記細分割処理演算ステップにおいて細分割処理が実行されることにより生成される前記第２制御点情報を格納する前記ワークメモリ部の第２メモリ番地を決定する演算制御ステップとを含み、
前記細分割処理演算ステップにおいては、前記演算制御ステップにおける制御に従って、前記ワークメモリ部の前記第１メモリ番地に重複する前記第２メモリ番地に前記第２制御点情報を上書き可能である
ことを特徴とする曲面細分割方法。
【請求項２７】
曲面の細分割回数を決定する細分割レベル決定ステップと、
前記曲面の形状を定義する制御点情報と、細分割処理の中間結果及び最終結果を格納するワークメモリ部より前記曲面を定義する第１軸方向又は第２軸方向に隣接する一連の細分割処理前の制御点情報である第１制御点情報を読み出し、前記細分割処理を実行して生成した細分割処理後の新たな制御点情報である第２制御点情報を生成し、前記ワークメモリ部に書き込む細分割処理演算ステップと、
前記細分割処理演算ステップにおいて細分割処理の演算が実行される前記第１制御点情報が格納されているワークメモリ部の第１メモリ番地、及び前記細分割処理演算ステップにおいて細分割処理が実行されることにより生成される前記第２制御点情報を格納する前記ワークメモリ部の第２メモリ番地を決定する演算制御ステップとをコンピュータに実行させ、
前記細分割処理演算ステップにおいては、前記演算制御ステップにおける制御に従って、前記ワークメモリ部の前記第１メモリ番地に重複する前記第２メモリ番地に前記第２制御点情報を上書き可能である
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータグラフィックスにおいて曲面を表現する装置に関し、特に曲面を細分割処理によりポリゴン近似する曲面細分割装置に関する。
【背景技術】
【０００２】
コンピュータグラフィックス（以降、ＣＧと称す）は、近年、映像制作の一手法として不可欠な技術となっている。ＣＧ分野における重要な要素技術であるモデリングでは、描画対象となるオブジェクトを、ポリゴンと呼ばれる多角形の集合で表現する方法が現在主流である。しかし、ＣＧ技術の発展に伴い、様々な形式で表現されたオブジェクトを描画したいという要求が高まっている。ＮＵＲＢＳ曲面やベジェ曲面などのパラメトリック曲面の描画は、その代表的な例である。曲面形式で表現されたオブジェクトは、多角形ポリゴンで表現されたオブジェクトと比較して一般的にデータ量が少なく、ＬＡＮやインターネットなどのネットワークを利用したデータ伝送などとも親和性が高い。
【０００３】
代表的なパラメトリック曲面である４階（３次）の有理ベジェ曲面の例を図１に示す。４階（３次）の有理ベジェ曲面は、以下の形式で表される。
【０００４】
【数１】
2005056385.tif 000003
【０００５】
有理ベジェ曲面は、２個の独立したパラメータを用いて表現される。ここでは、曲面を定義するパラメータが張る平面の第１軸方向をｕ方向、第２軸方向をｖ方向とするが、その限りではない。尚、０＜＝ｕ＜＝１、０＜＝ｖ＜＝１である。Ｑij（ｉ＝０、．．．、３、ｊ＝０、．．．、３）は、有理ベジェ曲面の形状を定義する制御点であり、４階（３次）の場合には４×４＝１６点存在する。尚、以降では制御点をコントロールポイントと称することがある。
【０００６】
これらのコントロールポイントのうち、Ｑ00、Ｑ30、Ｑ03、Ｑ33は曲面上に存在するが、それ以外は曲面上に存在しない。各コントロールポイントは、位置を表すｘ、ｙ、ｚ成分に加えて、ウェイトに相当するｗ成分を含んでいる。ウェイトとは、各々の制御点が有理ベジェ曲面の形状に与える影響の強さを表す指標である。また、これらを統一的に扱うために４次同次座標系表現を用いると都合が良い場合も多い。同次座標系で表現された成分Ｘ、Ｙ、Ｚ、Ｗと、ｘ、ｙ、ｚ、ｗの間には、Ｘ＝ｗ＊ｘ、Ｙ＝ｗ＊ｙ、Ｚ＝ｗ＊ｚ、Ｗ＝ｗの関係がある。ここで＊は積である。
【０００７】
さらに、ベジェ曲面には凸包性があり、曲面はコントロールポイントによって張られる多面体に完全に包含されることが知られている。
曲面形式で表現されたオブジェクトを、ハードウェアを用いて高速に描画するためには、コントロールポイントから曲面上に存在する点を算出し、それらの点を連結することによってポリゴンモデルとして近似する方法が非常に有効である。また、ベジェ曲面には、コントロールポイント間の内分点を順次求めることにより、最終的に曲面上の点を算出できるという性質がある（詳細は後述）。この性質を利用して曲面図形を処理する従来技術として、「図形情報生成装置、画像処理装置、情報処理装置、図形情報生成方法及び記憶媒体」がある（特許文献１参照）。
【０００８】
前記の従来技術では、曲面の形状を定義する制御点を格子状に与え、この格子状の制御点から当該曲面図形を表現するための頂点値を生成する場合に、所定のビット幅の制御点Ａ、Ｂと所定のビット幅で０≦ｔ≦１の値をとる補間係数ｔとに基づき、制御点間を内分する新たな制御点の座標値に関してＡ×（１−ｔ）＋Ｂ×ｔを順次演算する線形補間器を備えている。そして、隣接する制御点間の新たな制御点を順次求めていき、最終的に曲面図形を表現する頂点座標値を得る。また補間係数ｔの値を更新することにより、曲面図形を表現する多数の座標値を算出する。
【特許文献１】特開２００１−３３１８１２号公報（第７−１１頁）
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、前記の従来技術では、図形情報生成部において、制御点の入出力制御だけでなく、補間係数ｔについても現在の値を保持し、一連の処理後に更新するなどの制御が必要となり、線形演算器の構成が複雑になる。従って、曲面画像の表示においては、演算量をいかに削減するかが問題となる。
【００１０】
また、３次元オブジェクトをより細かくリアルに表現するためには、必然的に曲面を近似するポリゴン分割数を大きくする必要があり、計算負荷が大きくなるという問題もある。
【００１１】
そこで、本発明は、前記課題に鑑みてなされたものであり、単純なハードウェア構成及び小規模なメモリで細分割処理が可能な曲面細分割装置を提供することを目的とする。
また、本発明は、パラメトリック曲面における第１軸方向及び第２軸方向の細分割レベルが異なる場合であっても、３次元曲面生成の高速処理が可能な曲面細分割装置を提供することをも目的とする。
【課題を解決するための手段】
【００１２】
以上の課題を解決するために、本発明に記載の曲面細分割装置は、［請求項１］。
この構成によると、前記細分割処理演算手段において曲面を定義する制御点情報を細分割処理した後の新たな制御点情報を別のワークメモリ部に格納するのではなく、細分割処理を行った第１制御点情報に上書きして格納する。従って、細分割処理演算手段は、より小規模なワークメモリ部のメモリ容量で細分割処理を行うことが可能となる。
【００１３】
また、本発明に係る曲面細分割装置は、［請求項８］。
この構成においては、細分割処理演算手段における細分割処理の前後におけるメモリ番地が記述される制御テーブルを記憶する制御テーブル保持手段を備える。従って、演算制御部は、複雑な制御を行う必要がなくなり、演算量を削減することが可能となる。
【００１４】
さらに、本発明に係る曲面細分割装置は、［請求項１４］、より好ましくは［請求項１５］。
この構成においては、細分割レベル決定手段において半整数値の細分割レベルを設定して、細分割回数が整数値か半整数値かを判定して、条件に合わせた制御点の選択を行う制御点選択手段を備えるために、細分割処理後のポリゴン生成手段におけるポリゴン生成数を急激に増加させることを防止して、ポリゴン生成における計算負荷を軽減することが可能となる。
【００１５】
尚、本発明は、上述のような曲面細分割装置として実現できるのみではなく、この曲面細分割装置が備える手段をステップとする曲面細分割方法、この曲面細分割方法をコンピュータ等で実現させるプログラムとして実現したりすることができる。そして、当該プログラムをＣＤ−ＲＯＭ等の記録媒体や通信ネットワーク等の伝送媒体を介して流通させることができるのは言うまでもない。
【発明の効果】
【００１６】
以上のように、本発明に係る曲面細分割装置においては、細分割処理演算部では補間係数を制御する必要がなく、非常に単純なハードウェアで構成することができる。
また、細分割処理演算部で処理された結果を、そのデータが処理される前に格納されていたメモリアドレスから上書きすることや、再帰的な処理を用いることによって、より小規模なメモリ容量で実現することができる。
【００１７】
さらに、各細分割レベルに対応する制御テーブルが予め作成され、細分割処理演算制御部に保持されているため、細分割処理演算制御部は条件分岐などの複雑な制御を行う必要がない。
【００１８】
またさらに、制御テーブルは、細分割レベルの高い方向から処理を実行するように構成されるために、法線ベクトルなどを重複して算出しなければならない制御点の個数を最小限に抑えることができる。従って、ｕ、ｖ方向で細分割レベルが異なる場合であっても、高速な処理が可能となる。
【００１９】
そして、本発明に係る曲面細分割装置においては、ｕ方向とｖ方向で細分割レベル数が入れ替わっているだけの細分割処理は、同一の制御テーブルで実行するように制御でき、細分割処理演算制御部の規模を縮小することができる。従って、細分割処理演算制御部に格納される制御テーブル数を増やすことなく、細分割レベルをより柔軟に制御することができる。また、細分割処理のレベル上昇に伴うポリゴン数の急激な増加を緩和することが可能となる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明に係る曲面細分割装置の各実施の形態について、図面を参照しながら説明する。尚、本発明の実施の形態では、４階（３次）の有理ベジェ曲面を例に挙げて説明するが、本発明は任意の階数（次数）の有理又は非有理ベジェ曲面に対して適用可能である。また、ＮＵＲＢＳ曲面はノット挿入アルゴリズムにより、有理ベジェ曲面の集合で表現可能であることが一般的に知られている。従って、それが可能な手段が備えられている場合には、任意のＮＵＲＢＳ曲面に対しても適用可能である。
（実施の形態１）
以下、本発明の実施の形態１に係る曲面細分割装置を、図面を参照しながら説明する。
【００２１】
図２は、本発明の実施の形態１における曲面細分割装置の機能ブロック図である。
本発明の実施の形態１に係る曲面細分割装置１０は、曲面情報入力受付部１２、細分割レベル決定部１３、ワークメモリ部１４、細分割処理演算部１５、及び細分割処理演算制御部１６を備える。以下、それぞれの機能について詳細に説明する。
【００２２】
曲面情報１１は、描画対象となるオブジェクトの形状データである。オブジェクトは有理ベジェ曲面で表現されているため、形状データは、具体的にはコントロールポイントの座標値及びウェイトである。コントロールポイントは、３次元空間座標系で表現されていても、４次元同次座標系で表現されていても良い。本発明の実施の形態１では、４次元同次座標系で表現されているものとする。また、オブジェクトは複数の有理ベジェ曲面の集合で表現されていても良く、さらに各コントロールポイントには、形状データ以外にテクスチャ座標データやマテリアルデータなどが含まれても良い。
【００２３】
曲面情報入力受付部１２は、曲面情報１１の入力を受け付け、細分割レベル決定部１３に転送する。オブジェクトが複数の有理ベジェ曲面で構成されている場合には、上述した処理を全ての曲面パッチデータの入力が終了するまで繰り返す。
【００２４】
次に、細分割レベル決定部１３を説明する前に、細分割処理、及び細分割レベルについて定義する。
上述したように、有理ベジェ曲面には、コントロールポイント間の内分点を順次求めることによって、最終的に曲面上に存在する点を算出することができるという性質がある。以降では、この性質を利用して曲面上に存在する点を算出し、有理ベジェ曲面を複数の区分曲面パッチに分割する処理を、細分割処理と称す。
【００２５】
図３に、代表的な細分割処理アルゴリズムであるド・カステリョのアルゴリズムを用いて、有理ベジェ曲線を細分割した一例を示す。図３に示すように本アルゴリズムでは、コントロールポイントＱ0、Ｑ1、Ｑ2、Ｑ3によって構成されている４階（３次）有理ベジェ曲線において、まず隣接するコントロールポイント間に、Ｃ＝Ａ×（１−ｔ）＋Ｂ×ｔを適用することによって内分点を算出する。ここで、Ａ、Ｂは隣接するコントロールポイント、ｔは内分の比を表す補間係数であり、Ｃは新たに算出される点である。本アルゴリズムでは、この処理により頂点Ｑ4、Ｑ5、Ｑ6を取り、さらにそれらの間の内分点を求めてＱ7、Ｑ8を取る。最終的にＱ7、Ｑ8の内分点Ｑ9を求めると、頂点Ｑ9は有理ベジェ曲線上に存在し、Ｑ0−Ｑ4−Ｑ7−Ｑ9とＱ9−Ｑ8−Ｑ6−Ｑ3を新たにコントロールポイントとする２個のベジェ曲線Ｂ0、Ｂ1に細分割される。尚、算出された頂点Ｑ9は、パラメトリック空間上でｕ＝ｔの点になる。曲線をさらに細分割するには細分割されたベジェ曲線Ｂ0、Ｂ1に対してそれぞれ同様の処理を適用すれば良い。
【００２６】
有理ベジェ曲面の場合には上述した処理をｕ、ｖ両方向に適用することにより、１個の曲面パッチを複数の小パッチの集合に細分割する。以降では、１個の曲面パッチを細分割することによって生成される小パッチを、細分割前の曲面パッチに対するサブパッチと称す。ｕ、ｖ方向各１回の処理で、１個の曲面パッチは４個のサブパッチに細分割されるが、必ずしも両方向とも同一回数だけ細分割する必要はない。（図４）図４（ａ）に、細分割処理前の有理ベジェ曲面パッチの例を示し、図４（ｂ）に、ｕ、ｖ方向に各１回の細分割処理を適用した場合の例、図４（ｃ）に、ｕ方向に３回、ｖ方向に１回の細分割処理を適用した場合の例を示す。以降では、細分割処理を実行する回数を細分割レベルと定義する。
【００２７】
細分割レベル決定部１３は、入力された曲面パッチに関して、ｕ、ｖそれぞれの方向に対する細分割レベルを決定する。細分割レベルの決定には、様々な方法が考えられるが、特に限定しない。以下で、４通りの方法について説明する。
【００２８】
（１）固定値を用いる方法
細分割レベルを予め決定しておき、全てのパッチを固定レベルで細分割する。細分割レベルの決定は非常に高速に行えるが、細かく分割されなければならないパッチが分割されなかったり、逆に細分割する必要のないパッチが分割されてしまうなど、処理効率が低下するという問題がある。
【００２９】
（２）視点からの距離を用いる方法
３次元ＣＧにおいて、オブジェクトを描画するためには、仮想空間中に視点位置及び視線方向を決定する必要がある。ここで、視点に近い位置にあるオブジェクトは大きく表示される可能性が高く、視点から離れた位置にあるオブジェクトは小さく表示される可能性が高い。従って、視点に近いオブジェクトは細かく分割し、離れた位置のオブジェクトは粗く分割すると考えるのが自然である。そこで、視点位置からオブジェクトへの距離を算出し、算出された距離に応じて細分割レベルを動的に制御する。具体的には、例えば図５に示すような、視点からの距離とそれに対応する細分割レベルの関係を表すテーブルを用意しておき、そのテーブルを参照することによって、それぞれの曲面パッチに対する細分割レベルを決定する。例えば、図５においてＭＬ４＜＝Ｌの場合には５回の細分割処理を行うことを意味している。
【００３０】
（３）スクリーン上での表示面積を用いる方法
（２）と同様の理由から、曲面パッチを仮想空間中に設置されたスクリーンに投影し、その表示面積に応じて細分割レベルを決定する。具体的には、（２）の例と同様に、スクリーン上での表示面積とそれに対応する細分割レベルの関係を表すテーブルを用意し、それを参照することによって、それぞれの曲面パッチに対する細分割レベルを決定すれば良い。
【００３１】
（４）コントロールポイント間の距離を用いる方法
（２）や（３）の方法では、ｕ、ｖ方向に対して異なる細分割レベルを決定することができない。そこで、コントロールポイント間の距離を用いることにより、ｕ、ｖそれぞれの方向に対する細分割レベルを決定する。例えば、図２において、以下の値をそれぞれ算出する。
【００３２】
ＬＵ＝（｜Ｑ30−Ｑ00｜＋｜Ｑ33−Ｑ03｜）／２
ＬＶ＝（｜Ｑ03−Ｑ00｜＋｜Ｑ33−Ｑ30｜）／２
｜・｜は、２個のコントロールポイント間の距離を表す。そして、（２）や（３）の場合と同様に、ＬＵ、ＬＶとそれに対応する細分割レベルの関係を表すテーブルを用意しておき、算出されたＬＵの値に基づいてｕ方向の細分割レベルを、ＬＶの値に基づいてｖ方向の細分割レベルを決定する。
【００３３】
上述した（１）から（４）の方法、又はその組み合わせを用いて、曲面パッチの細分割レベルを決定する。以降では、ｕ方向の細分割レベルをｕ方向レベル、ｖ方向の細分割レベルをｖ方向レベルと称す。決定されたｕ方向レベル、ｖ方向レベルは、細分割処理演算制御部１６に転送される。また、曲面パッチを構成するコントロールポイントデータは、ワークメモリ部１４に転送される。
【００３４】
次に、ワークメモリ部１４、細分割処理演算部１５、及び細分割処理演算制御部１６の機能について詳述する。尚、以下では細分割レベル決定部１３において、当該曲面パッチのｕ方向レベルが２、ｖ方向レベルが１であると決定された場合を例に挙げて説明するが、それ以外の細分割レベルに決定された場合でも同様の方法で処理可能である。
【００３５】
図３から明らかなように、４階（３次）の有理ベジェ曲線の場合、細分割処理は４個のコントロールポイント（図３の例ではＱ0、Ｑ1、Ｑ2、Ｑ3）を取得し、内分点を算出して７個の頂点（図３の例ではＱ0、Ｑ4、Ｑ7、Ｑ9、Ｑ8、Ｑ6、Ｑ3）を生成する処理である。曲面の場合には、同様の処理をｕ、ｖそれぞれの方向に対して行うため、それを２次元に拡張したものであると考えれば良い。
【００３６】
図６は、本発明の実施の形態１における曲面細分割装置１０のワークメモリ部１４の構成を模式的に表した図である。図６に示すように、ワークメモリ部１４は細分割処理を効率的に実行するため、７×７要素を１ブロックとした構成になっており、１ブロックを利用してｕ方向１レベル、ｖ方向１レベルの細分割処理を基本的に行う。以降、このブロックを基本ブロックと称す。基本ブロックは、細分割レベルの最大値以上の個数を確保しなければならない。従って、例えば最大細分割レベルが３であれば、基本ブロックは少なくとも３ブロック必要である。
【００３７】
また、図６は細分割レベル決定部１３で細分割レベルが決定された曲面パッチが、ワークメモリ部１４に転送されてきた直後の初期状態を表している。図６に示すように、ｕ方向に隣接するコントロールポイントは、ワークメモリ部１４のｊ方向に隣接するように格納され、ｖ方向に隣接するコントロールポイントはｋ方向に隣接するように格納される。以降では説明を容易にするために、ワークメモリ部１４にＷＯＲＫＭＥＭという名前を付与し、メモリアドレスは、基本ブロック番号ｉ、列方向の位置ｊ、行方向の位置ｋを用いて、ＷＯＲＫＭＥＭ［ｉ］［ｊ］［ｋ］と表現するものとする。例えば、図６では、ＷＯＲＫＭＥＭ［０］［１］［２］＝Ｑ12．ｘである。
【００３８】
尚、図６に示すように、本発明の実施の形態１では、Ｘ、Ｙ、Ｚ、Ｗ成分がそれぞれ別のワークメモリで構成されている場合について説明するが、その限りではない。例えば、ワークメモリ部１４の各要素ＷＯＲＫＭＥＭ［ｉ］［ｊ］［ｋ］に、Ｘ、Ｙ、Ｚ、Ｗ成分が連続して格納される構造であっても良い。
【００３９】
細分割処理演算部１５は、細分割処理演算制御部１６により指定されたアドレスの頂点データをワークメモリ部１４より読み出し、ド・カステリョのアルゴリズムに基づいて、補間係数ｔ＝１／２の場合の細分割処理を実行するハードウェアである。入力された頂点データをＱ0、Ｑ1、Ｑ2、Ｑ3、細分割処理後に生成されるデータをＱ0’、Ｑ1’、Ｑ2’、Ｑ3’、Ｑ4’、Ｑ5’、Ｑ6’とすると、以下の関係が成立する。
【００４０】
【数２】
2005056385.tif 000004
【００４１】
細分割処理演算部１５は、上式の演算を実行するために、加算器や乗算器、シフタなどにより構成される。図７は、細分割処理演算部１５を模式的に表現した例であるが、ハードウェア構成は特に限定しない。図７からも明らかなように、細分割処理演算部１５は、非常に単純なハードウェアで実現することができる。
【００４２】
細分割処理演算制御部１６には、各細分割レベルに対応した、ワークメモリ部１４の入出力を制御するための制御テーブルが格納されている。また、細分割処理演算制御部１６は、細分割処理の前後における制御点情報のワークメモリ部１４上のメモリ番地が記載される制御テーブルを格納している制御テーブル格納部１６ａを備える。
【００４３】
以降、ワークメモリ部１４の入出力を制御するためのテーブルを制御テーブルと称す。そして、細分割処理演算制御部１６は、細分割レベル決定部１３から細分割レベルを取得すると、それに対応する制御テーブルを設定する。この例の場合は、ｕ方向レベル＝２、ｖ方向レベル＝１に対応する制御テーブルが設定される。制御テーブルの一例を図８に示す。
【００４４】
図８の制御テーブル２０では、左から順に細分割処理演算部１５に入力する先頭のデータのワークメモリ部１４における基本ブロック番号、ｊ方向位置、ｋ方向位置、読み込み方向、演算結果の先頭のデータを格納する基本ブロック番号、ｊ方向位置、ｋ方向位置、書き込み方向をそれぞれ表す。読み込み方向及び書き込み方向において、ｊはｊ方向に読み込む（書き込む）ことを表し、ｋはｋ方向に読み込む（書き込む）ことを表す。
【００４５】
例えば、ステップＳ１０は、ＷＯＲＫＭＥＭ［０］［０］［０］のデータを先頭に、ｊ方向に４個のデータを読み出して、細分割処理を実行した後、生成された７個のデータをＷＯＲＫＭＥＭ［０］［０］［０］を先頭にｊ方向に書き込むことを意味する。また、ステップＳ１１では、ＷＯＲＫＭＥＭ［１］［０］［０］のデータを先頭に、ｋ方向に４個のデータを読み出して処理し、生成されたデータをＷＯＲＫＭＥＭ［１］［０］［０］を先頭にｋ方向に書き込むことを意味する。これらの一連のステップが、細分割処理の終了まで時系列に記述されたものが制御テーブルである。尚、制御テーブルの構造はこの限りではなく、例えば、ループ回数を表す項目を追加し、１行目から４行目までのステップを１行のステップとして記述しても良い。
【００４６】
細分割処理演算制御部１６の制御テーブル格納部１６ａには、細分割レベル決定部１３において決定され得る全ての細分割レベルの組み合わせに対応する制御テーブルが保持されている。尚、ハードウェア規模の問題などにより、制御テーブル格納部１６ａが制御テーブルを保持することが不可能な場合には、制御テーブルを外部の記憶装置に格納しても良い。その場合には、細分割レベル決定部１３において細分割レベルが決定された時点で、外部記憶装置から対応する制御テーブルを読み出し、細分割処理演算制御部１６に設定すれば良い。
【００４７】
次に、制御テーブルの作成手順について説明する。まず、制御テーブルの基本的な入出力制御アルゴリズムについて述べる。以降では、ワークメモリ部１４における各基本ブロックを４個の領域に分割し、それぞれの領域をゾーンと称す。すなわち、ＷＯＲＫＭＥＭ［ｉ］［ｊ］［ｋ］で、
ゾーン０：ｊ＝０、１、２、３  ｋ＝０、１、２、３
ゾーン１：ｊ＝３、４、５、６  ｋ＝０、１、２、３
ゾーン２：ｊ＝０、１、２、３  ｋ＝３、４、５、６
ゾーン３：ｊ＝３、４、５、６  ｋ＝３、４、５、６
と定義する。尚、同一ゾーン内に格納されるデータは１個の曲面パッチを構成するコントロールポイントの集合である。
【００４８】
制御テーブルでは、以下の３通りの場合で入出力制御アルゴリズムが異なっている。
（１）初期状態
（２）ｕ、ｖいずれかの方向のみ処理する場合
（３）ｕ、ｖ両方向処理する場合
以下で、それぞれの場合について述べる。
【００４９】
（１）初期状態
初期状態では、図６に示されるように、基本ブロック番号０、ゾーン０の位置に入力データが格納されている。従って、いずれの方向の処理を行う場合にも、このデータを読み出し、演算結果を基本ブロック番号０の領域に再び書き込む。従って、入力データが格納されていた領域は、新たに生成されたデータによって上書きされる。
【００５０】
図１１（ａ）に、初期状態においてｕ方向にのみ１回細分割処理された直後のワークメモリ部１４の状態、図１１（ｂ）に、ｖ方向に１回処理された直後の状態、図１１（ｃ）に、ｕｖ両方向に各１回処理された直後の状態をそれぞれ示す。
【００５１】
（２）ｕ、ｖいずれかの方向のみ処理する場合
ｕ、ｖいずれかの方向のみ処理する場合には、細分割処理演算部１５で処理された結果を、次の基本ブロック番号の領域に書き込む。従って、入出力アルゴリズムは以下のようになる。
【００５２】
（イ）基本ブロック番号ｉのデータを、ｊ方向（又はｋ方向）に読み込む。
（ロ）演算の結果生成されたデータを、基本ブロック番号（ｉ＋１）の領域に、ｊ方向（又はｋ方向）に書き込む。
【００５３】
図１２（ａ）に、細分割処理前のワークメモリ部１４の状態を示し、図１２（ｂ）に、基本ブロックｉ、ゾーン０のデータをｕ方向にのみ細分割処理した直後の状態の例を示す。
【００５４】
（３）ｕ、ｖ両方向処理する場合
ｕ、ｖ両方向とも処理する場合には、ｕ方向の演算処理結果は次の基本ブロック番号の領域に書き込む。続いて、ｖ方向の処理では演算結果を同一の基本ブロック番号の領域に書き込む。従って、ｖ方向処理前のデータが格納されていた領域は、新たに生成されたデータによって上書きされる。入出力アルゴリズムは以下の通りである。
【００５５】
（イ）基本ブロック番号ｉのデータを、ｊ方向に読み込む。
（ロ）演算の結果生成されたデータを、基本ブロック（ｉ＋１）の領域に、ｊ方向に書き込む。
【００５６】
（ハ）基本ブロック番号（ｉ＋１）のデータを、ｋ方向に読み込む。
（ニ）演算の結果生成されたデータを、基本ブロック（ｉ＋１）の領域に、ｋ方向に書き込む。
【００５７】
図１３（ａ）に、細分割処理前のワークメモリ部１４の状態を示し、図１３（ｂ）に、基本ブロックｉ、ゾーン０のデータをｕ方向に処理した直後の状態、図１３（ｃ）に、ｕｖ両方向の処理が実行された直後の状態の例を示す。尚、本発明の実施の形態１では、ｕ方向から先に処理する場合について説明したが、ｖ方向から先に処理しても同様のアルゴリズムを用いることができる。
【００５８】
次に、細分割処理の演算における基本的なアルゴリズムを補足的に説明する。
図１４は、本発明の細分割処理演算部１５のｕ方向分割における基本的なアルゴリズムの説明図である。
【００５９】
図１４（ａ）に示すように、ｕ方向の分割処理においてｊ方向のメモリ領域に空きがある場合には、同一基本ブロック上でデータ上書きを行う。また、図１４（ｂ）に示すように、ｕ方向の分割処理においてｊ方向のメモリ領域に空きがない場合には、次の基本ブロックにデータ書込みを行う。
【００６０】
図１５は、本発明の細分割処理演算部１５のｖ方向分割における基本的なアルゴリズムの説明図である。
図１５（ａ）に示すように、ｋ方向のメモリ領域に空きがある場合においては、同一基本ブロック上でデータ上書きを行う。また、図１５（ｂ）に示すように、ｋ方向のメモリ領域に空きがない場合においては、次の基本ブロックにデータ書込みを行う。
【００６１】
あるゾーンに存在するデータの処理が終了すると、基本ブロックには、一つ前の基本ブロックの、次のゾーンに存在するデータが入力される。すなわち、制御テーブルは、ワークメモリ部１４の各基本ブロックに格納されているデータを、再帰的に処理するように構成される。
【００６２】
次に、制御テーブルはｕ方向レベルとｖ方向レベルのうち、高い方のレベルから処理を開始するように作成されるが、その理由を以下で述べる。
細分割処理が終了した時点で、描画処理のために次段に転送される頂点データの構成には以下の３通りの場合が考えられる。
【００６３】
（ａ）ｕ方向の頂点数がｖ方向の頂点数よりも多い場合
（ｂ）ｖ方向の頂点数がｕ方向の頂点数よりも多い場合
（ｃ）ｕ方向の頂点数とｖ方向の頂点数が等しい場合
それぞれの場合における頂点の構成を模式的に表現したものを図９に示す。図９（ａ）〜（ｃ）が、上述した３通りの場合にそれぞれ対応している。また、黒点はベジェ曲面上にない頂点であり、白抜きの点は曲面上に存在する頂点である。ＣＧにおいて、オブジェクトを描画するには、オブジェクトを構成する各頂点の輝度を計算するための法線ベクトルが必要である。従って、曲面を描画するにも、次段で曲面上に存在する各頂点における法線ベクトルを算出しなければならない。ここで、図９（ａ）及び（ｂ）では、最終的に生成される頂点のうち、曲面上に存在する点は６個である。一方、図９（ｃ）では、曲面上に存在する頂点が９個ある。これは次段でまとめて処理可能な法線ベクトルの数に、差があることを意味している。細分割レベルが同じであれば最終的に生成される頂点数は変わらないことを考慮すると、図９（ａ）及び（ｂ）では、重複して計算する法線ベクトルの個数が多くなり、効率が悪い。また、重複計算を避けるためには算出した法線ベクトルを一時的に保持するバッファメモリを設ければよいが、メモリの規模が大きくなってしまうという問題がある。従って、できる限り図９（ｃ）の構成で出力することが望ましい。この理由から、各制御テーブルはレベルの高い方向から処理を開始し、細分割レベルの低い方向で細分割処理を終了し、且つその直前にはそれと異なる方向で分割することが必要となるために、最終ステップでｕｖ両方向の細分割処理を実行するように作成される。尚、ｕ方向レベルとｖ方向レベルが同一である場合にはどちらの方向から処理を開始しても良い。
【００６４】
各細分割レベルに対応する制御テーブルは、上述した処理の組み合わせで構成される。例えば、ｕ方向レベル＝２、ｖ方向レベル＝１の制御テーブルでは、初期状態においてｕ方向のみの処理を行い、続いてｕ、ｖ両方向処理を１回行うように構成される。（図１０）図１０は、ｕ方向＝２、ｖ方向＝１の分割回数の場合のワークメモリ部１４の状態を示す図である。重複して計算する法線の数から、出力される形式はｕ→ｕ→ｖ方向で分割処理を行うパターン１が望ましいこととなる。
【００６５】
また、ｕ方向レベル＝１、ｖ方向レベル＝３の制御テーブルでは、初期状態においてｖ方向のみの処理、続いて再びｖ方向の処理を実行した後、ｕｖ両方向処理を１回行うように構成される。
【００６６】
次に、細分割処理演算制御部１６では、細分割レベルに応じて設定された制御テーブルを解釈し、ワークメモリ部１４におけるデータ入出力を制御する。制御テーブルの各行に関して、まず左から１番目から３番目の値を解釈し、ワークメモリ部１４のどのアドレスのデータから読み出すのかを決定する。そして、左から４番目の値を読み、データをｊ方向又はｋ方向のいずれの方向に読み出すのかを決定し、４個のデータを細分割処理演算部１５に入力する。演算された結果は、左から５番目から７番目までの値を解釈することによって、ワークメモリ部１４のどのアドレスから書き込むのかを決定し、左から８番目の値を解釈して、結果をｊ方向又はｋ方向のいずれの方向に書き込むのかを決定する。細分割処理演算制御部１６において、細分割処理演算により算出されたデータの出力アドレスの決定と、次のステップの入力データアドレスの決定を並行して行うことにより、高速な処理が可能となる。
【００６７】
有理ベジェ曲面を構成するコントロールポイントのＸ成分について制御テーブルの実行がすべて終了すると、細分割処理演算制御部１６は、ワークメモリをＹ成分が格納された領域に切り替え、制御テーブルを１行目から再び実行する。同様の処理を、Ｚ成分、及びＷ成分に対しても行うことにより、有理ベジェ曲面の細分割処理が完了する。
【００６８】
尚、本発明の実施の形態１では、４階（３次）の有理ベジェ曲面に適用する例について述べたが、（ｎ＋１）階（ｎ次）（ｎ＞０）の有理ベジェ曲面に適用する場合には、細分割処理演算部１５は、（ｎ＋１）個の頂点データの入力を受け付け、（２ｎ＋１）個のデータを出力するハードウェアとなる。また、ワークメモリ部１４は（２ｎ＋１）×（２ｎ＋１）個の領域を基本ブロックとする構成となる。
【００６９】
以上の説明のように、本発明の実施の形態１に係る曲面細分割装置によれば、細分割レベル決定部１３は、まず曲面の形状を定義するコントロールポイントの入力を受け付け、当該曲面パッチの細分割レベルを決定する。
【００７０】
次に、決定された細分割レベルに対応する制御テーブルを、細分割処理演算制御部１６に設定する。細分割処理演算制御部１６は、設定された制御テーブルに基づき、ワークメモリ部１４及び細分割処理演算部１５を制御して細分割処理を実行する。細分割処理演算部１５は、従来技術のように補間係数を制御する必要はなく、非常に単純なハードウェアで構成される。
【００７１】
また、細分割処理演算部１５で処理された結果を、そのデータが処理される前に格納されていたメモリアドレスから上書きすることや、再帰的な処理を用いることによってメモリ領域を効率的に利用する。従って、ワークメモリ部１４は、必要最小限の小規模なメモリで実現される。
【００７２】
さらに、制御テーブルには、ワークメモリ部１４の入出力制御ステップが時系列に記述されている。従って、細分割処理演算制御部１６は、条件分岐などの複雑な制御を行う必要はない。
【００７３】
また、制御テーブルは、ｕ方向とｖ方向の細分割レベルが異なる場合、細分割レベルの高い方向から処理を実行するように構成されるため、法線ベクトルなどを重複して計算しなければならない制御点の数を最小限に抑えられる。以上より、ｕ、ｖ方向の細分割レベルが異なる場合であっても、高速な曲面細分割処理が可能である。
【００７４】
（実施の形態２）
以下、本発明の実施の形態２に係る曲面細分割装置を、図面を参照しながら説明する。尚、本実施の形態２において、ｕ方向とｖ方向で細分割レベル数が入れ替わっている細分割処理においては、同一の制御テーブルで実行するように制御でき、細分割処理演算制御部１６の規模を縮小できることを特徴とする。
【００７５】
図１６は、本発明の実施の形態２における曲面細分割装置の機能ブロック図である。図１６の曲面細分割装置３０は、本発明の実施の形態１で説明した構成に加えて、曲面情報入力制御部３１を備えている。この曲面情報入力制御部３１を備えることにより、細分割処理演算制御部１６の制御テーブル格納部１６ａに保持する制御テーブルの量を減らすことができ、より小規模なハードウェアで実現することが可能となる。以下でそれぞれの機能について詳細に説明するが、図１と同様のものには同一番号を付し、説明を省略する。
【００７６】
本発明の実施の形態１と同様に、曲面情報入力受付部１２は、曲面情報１１の入力を受け付ける。そして、細分割レベル決定部１３において細分割レベルが決定される。決定された細分割レベルは、細分割処理演算制御部１６に転送されるだけでなく、曲面情報入力制御部３１にも転送される。また、曲面パッチのコントロールポイントのデータは、ワークメモリ部１４に格納される前に、一旦曲面情報入力制御部３１に保持される。
【００７７】
初期状態において、ｕ方向の細分割処理とｖ方向の細分割処理では、ワークメモリ部１４での読み出し／書き込み方向が異なる。従って、上述した実施の形態１においては、ｕ方向レベル＝２、ｖ方向レベル＝１の処理と、ｕ方向レベル＝１、ｖ方向レベル＝２の処理では方向を入れ換えた異なる制御テーブルを用意する必要がある。そこで、本実施の形態２の場合においては、同一の制御テーブルを用いて細分割処理が実行可能となるように、曲面情報入力制御部３１では、入力データのワークメモリ部１４への格納順序を制御する。    
【００７８】
図１７は、曲面情報入力制御部３１の処理の流れを示すフローチャートである。まずステップＳ２０において、曲面のコントロールポイントデータ及びｕｖ方向レベルが入力されると、いずれの方向のレベルが大きいのかを判定する。そして、ｕ方向レベルがｖ方向レベルよりも大きいか、もしくは同一レベルの場合（ステップＳ２１がＹＥＳの場合）には、以下の関係が成り立つようにコントロールポイントデータを格納する（ステップＳ２２）。
【００７９】
ＷＯＲＫＭＥＭ［０］［ｊ］［ｋ］＝Ｑjk
また、ｖ方向レベルがｕ方向レベルよりも大きい場合（ステップＳ２１がＮＯの場合）には、図１５に示すように、データを反時計回りに９０度回転させた並びでデータを格納する。すなわち、以下の関係が成り立つ（ステップＳ２３）。
【００８０】
ＷＯＲＫＭＥＭ［０］［ｊ］［ｋ］＝Ｑ(3-k)j
最後に、ステップＳ２４において、決定された順序に従ってワークメモリ部１４にデータを格納する（ステップＳ２４）。そして、曲面情報の入力制御における一連の動作を終了する。尚、ワークメモリ部１４、細分割処理演算部１５、及び細分割処理演算制御部１６の動作は上述した実施の形態１と同様である。
【００８１】
図１８に、ワークメモリ内に格納されている制御点情報の順番を変更する場合の参考図を示す。図１８においては、図６のワークメモリ部１４に格納されている制御点情報を反時計方向に９０度回転させて再格納する。このため、ｕ方向とｖ方向の細分割回数が入れ替わっている細分割処理において、同一の制御テーブルを用いてワークメモリ内のメモリ番地の指定を行うことが可能となる。
【００８２】
図１９に、ｕ方向及びｖ方向の細分割回数を入れ替えた場合の制御テーブルの参考図を示す。
図１９に示すように、ｕ方向＝２、ｖ方向＝１の細分割回数の制御テーブルと、ｕ方向＝１、ｖ方向＝２の細分割回数の制御テーブルを比較すると、下記の３つの点が異なる。
（１）基本ブロック番号ｉは変化しない。
（２）ｊ列とｋ列はｉｎｐｕｔ及びｏｕｔｐｕｔ共に列を入れ替える。
（３）Ｄに記載されている読み込み方向及び書き込み方向であるｊ列をｋ列を入れ替える。
【００８３】
従って、細分割処理演算制御部１６は、上記の（１）〜（３）を用いて制御テーブルを書き換えることにより、制御テーブル格納部１６ａに格納される制御テーブルの容量を削減することが可能となる。
【００８４】
以上の説明のように、本発明の実施の形態２に係る曲面細分割装置は、ｕ、ｖ方向の細分割レベルの大小に応じて、コントロールポイントデータのワークメモリ部１４への格納順序を制御する曲面情報入力制御部３１を備えている。
【００８５】
その結果、ｕ方向とｖ方向でレベル数が入れ換わっているだけの細分割処理は、同一の制御テーブルで実行することが可能となる。従って、制御テーブルの総容量が小さくなり、細分割処理演算制御部１６の規模を縮小することができる。
【００８６】
（実施の形態３）
次に、本発明の実施の形態３に係る曲面細分割装置を、図面を参照しながら説明する。尚、本実施の形態３においては、曲面細分割装置は、曲面上に存在する点を用いたポリゴンの構成方法を制御することによって、ポリゴン数の急激な増加を抑制するポリゴン生成部を備えることを特徴とする。
【００８７】
図２０は、本発明の実施の形態３における曲面細分割装置の機能ブロック図である。図２０の曲面細分割装置４０は、本発明の実施の形態１で説明した構成に加えて、ポリゴン生成部４１を備えている。以下でそれぞれの機能について詳述するが、図１と同様のものには同一番号を付し、説明を省略する。
【００８８】
図２１にポリゴン生成部におけるポリゴン近似の参考図を示す。
細分割処理を用いた曲面の描画では通常、生成されたコントロールポイントのうち、ベジェ曲面上に存在する頂点を連結することによってポリゴン近似を行う。例えば、図９（ｃ）のような頂点データが得られたとすると、曲面パッチを図２１（ａ）に示すように、８個の三角形ポリゴンに分割する。また、曲面パッチはｕｖ方向に各１回細分割処理されると、４個のサブパッチに分割される（図４参照）。従って、ｕｖ方向に各１回細分割処理すると、最終的に生成されるポリゴン数は４倍になり、細分割レベルが大きくなるにつれて、ポリゴン数は急激に増大する。
【００８９】
そのために、細分割レベル決定部１３は、これまでの実施例で述べた整数刻みの細分割レベルに加えて、その中間のレベル（０．５刻みのレベル）が決定可能な構成にする。以降では、小数部が０でない細分割レベルを中間レベルと称す。
【００９０】
例えば、オブジェクト（曲面パッチ）の視点からの距離に応じて細分割レベルを決定するテーブルを用意する方法の場合には、細分割レベルをさらに細かく分類し、図２２のようなテーブルを用意することが考えられる。また、コントロールポイント間の距離を用いてｕｖ方向レベルをそれぞれ決定する方法を用いる場合にも同様に、中間レベルを設定可能なテーブルを用意し、コントロールポイント間の距離に応じて、ｕ方向レベル、ｖ方向レベルを求めれば良い。決定された細分割レベルは、細分割処理演算制御部１６に転送されるだけでなく、ポリゴン生成部４１にも転送される。
【００９１】
決定された細分割レベルが中間レベルであった場合、細分割処理演算制御部１６は、整数部に１を加えたレベルに対応する制御テーブルを設定する。例えば、細分割レベルがｕ方向レベル＝２．５、ｖ方向レベル＝１．５と決定されたとすると、細分割処理演算制御部１６には、ｕ方向レベル＝３、ｖ方向レベル＝２に対応する制御テーブルが設定される。
【００９２】
細分割処理演算制御部１６では、設定された制御テーブルに基づき、ワークメモリ部１４、及び細分割処理演算部１５を制御して細分割処理を実行する。ｕ方向レベル又はｖ方向レベルのいずれかが０である場合以外には、最終的に生成される曲面パッチは、図９（ｃ）の形式となる。
【００９３】
ポリゴン生成部４１では、まず細分割レベルが中間レベルであるか否かを判定する。中間レベルでない場合には、図２１（ａ）に示すように、曲面上に存在する頂点Ｑ00、Ｑ30、Ｑ60、Ｑ03、Ｑ33、Ｑ63、Ｑ06、Ｑ36、Ｑ66を連結することにより８個のポリゴンを生成する。次に、ｕ方向のみが中間レベルである場合には、図２１（ｂ）に示すように、曲面上に存在する頂点のうち、Ｑ30、Ｑ36を使用せず、頂点Ｑ00、Ｑ60、Ｑ03、Ｑ33、Ｑ63、Ｑ06、Ｑ66のみを用いて６個のポリゴンを生成し、ｖ方向のみが中間レベルである場合には、図２１（ｃ）に示すように、頂点Ｑ03、Ｑ63を使用せず、Ｑ00、Ｑ30、Ｑ60、Ｑ33、Ｑ06、Ｑ36、Ｑ66のみを用いて６個のポリゴンを生成する。また、ｕｖ両方向とも中間レベルである場合には、図２１（ｄ）に示すように、頂点Ｑ30、Ｑ03、Ｑ63、Ｑ36を使用せず、Ｑ00、Ｑ60、Ｑ33、Ｑ06、Ｑ66を用いて４個のポリゴンを生成する。但し、図２１に示した頂点の連結方法は一例であり、その限りではない。尚、ｕｖいずれかのレベルが０の場合には、最終的に生成される曲面パッチは、図９（ａ）又は（ｂ）の形式となるため、中間レベルであるか否かに関わらず、全ての曲面上の頂点を連結することによって４個のポリゴンを生成する。また、図２１（ｅ）は、ポリゴン生成における制御点間の他の連結方法を示す図であり、両軸方向の細分割レベルが整数である場合に、細分割処理によって生成された全ての制御点からポリゴンを構成する。
【００９４】
このように、本発明の実施の形態３に係る曲面細分割装置によれば、細分割レベル決定部１３において、整数値ではない中間レベルの値を取ることが可能である。そして、ポリゴン生成部４１において、細分割レベルが中間レベルであるか否かを判定し、その判定結果によってポリゴンの構成方法を制御する。
【００９５】
従って、ポリゴン数が増えると曲面を滑らかに表現できる一方、ポリゴン数が増えすぎるとポリゴン生成における演算量が増加することを防止して、制御プログラムを増やすことなく、細分割レベルをより柔軟に制御することが可能となる。また、細分割処理によるポリゴン数の急激な増加を緩和することができる。
【産業上の利用可能性】
【００９６】
本発明に係る曲面細分割装置は、３次元ＣＧの世界において、ベジェ曲面やＮＵＲＢＳ曲面等の自由曲面を用いて滑らかな３次元オブジェクトを描画する際の細分割及びポリゴン生成時における曲面細分割装置として用いることができ、例えば、画面に３次元オブジェクトを表示する携帯端末、カーナビゲーション装置、携帯ゲーム機、テレビ等のエンタテインメント装置に適用することができる。
【図面の簡単な説明】
【００９７】
【図１】４階（３次）有理ベジェ曲面の一例を示す図
【図２】本発明の実施の形態１における曲面細分割装置の機能ブロック図
【図３】ド・カステリョのアルゴリズムを用いた細分割処理を説明するための図
【図４】（ａ）細分割処理を施す前の曲面パッチの例を示す図（ｂ）細分割処理を１レベル実行した後の曲面パッチの例を示す図（ｃ）細分割処理をｕ方向に３レベル、ｖ方向に１レベル実行した後の曲面パッチの例を示す図
【図５】視点からの距離に応じて細分割レベルを決定する場合に用いるテーブルの例を示す図
【図６】ワークメモリ部を模式的に表した図
【図７】細分割処理演算部のハードウェア構成を模式的に表した図
【図８】細分割処理演算制御部に格納されている制御テーブルの一例を示す図
【図９】（ａ）ｕ方向にのみ１レベル細分割処理を実行した後に生成されるコントロールポイントの構成を示す図（ｂ）ｖ方向にのみ１レベル細分割処理を実行した後に生成されるコントロールポイントの構成を示す図（ｃ）ｕ、ｖ方向に各１回細分割処理を実行した後に生成されるコントロールポイントの構成を示す図
【図１０】Ｕ方向＝２、Ｖ方向＝１の分割回数の場合のワークメモリ部の状態を示す図
【図１１】（ａ）初期状態からｕ方向にのみ細分割処理を実行した後のワークメモリ部の内部状態を示す図（ｂ）初期状態からｖ方向にのみ処理を実行した後のワークメモリ部の内部状態を示す図（ｃ）ｕ、ｖ方向に各１回処理を実行した後のワークメモリ部の内部状態を示す図
【図１２】（ａ）細分割処理前のワークメモリ部の内部状態を示す図（ｂ）基本ブロックｉ、ゾーン０のデータにｕ方向処理を実施した直後のワークメモリ部の内部状態を示す図
【図１３】（ａ）処理を実行する前のワークメモリ部の内部状態を示す図（ｂ）基本ブロックｉ、ゾーン０のデータにｕ方向処理を実施した直後のワークメモリ部の内部状態を示す図（ｃ）はさらにｖ方向処理を実施した直後のワークメモリ部の内部状態を示す図
【図１４】細分割処理演算部のＵ方向分割における基本的なアルゴリズムの説明図
【図１５】細分割処理演算部のＶ方向分割における基本的なアルゴリズムの説明図
【図１６】本発明の実施の形態２における、曲面細分割処理装置の機能ブロック図
【図１７】曲面情報入力制御部における処理の流れを示すフローチャート
【図１８】ｖ方向レベルがｕ方向レベルよりも大きい場合に、入力データがワークメモリ部に格納された直後の状態を示す図
【図１９】Ｕ方向及びＶ方向の細分割回数を入れ替えた場合の制御テーブルの参考図
【図２０】本発明の実施の形態３における、曲面細分割処理装置の機能ブロック図
【図２１】（ａ）細分割レベルが整数である場合に、細分割処理によって生成された頂点からポリゴンを構成する方法を示す図（ｂ）ｕ方向レベルのみが中間レベルの場合に、ポリゴンを構成する方法を示す図（ｃ）ｖ方向レベルのみが中間レベルの場合に、ポリゴンを構成する方法を示す図（ｄ）ｕ、ｖ両方向とも中間レベルの場合に、ポリゴンを構成する方法を示す図（ｅ）ポリゴン生成における制御点間の他の連結方法を示す図
【図２２】オブジェクトの視点からの距離に基づいて、中間レベルを設定することが可能なテーブルの一例を示す図
【符号の説明】
【００９８】
１０，３０，４０    曲面細分割装置
１１    曲面情報
１２    曲面情報入力受付部
１３    細分割レベル決定部
１４    ワークメモリ部
１５    細分割処理演算部
１６    細分割処理演算制御部
１６    制御テーブル格納部
２０    制御テーブル
３１    曲面情報入力制御部
４１    ポリゴン生成部
【図１】
2005056385.tif 000005
【図２】
2005056385.tif 000006
【図３】
2005056385.tif 000007
【図４】
2005056385.tif 000008
【図５】
2005056385.tif 000009
【図６】
2005056385.tif 000010
【図７】
2005056385.tif 000011
【図８】
2005056385.tif 000012
【図９】
2005056385.tif 000013
【図１０】
2005056385.tif 000014
【図１１】
2005056385.tif 000015
【図１２】
2005056385.tif 000016
【図１３】
2005056385.tif 000017
【図１４】
2005056385.tif 000018
【図１５】
2005056385.tif 000019
【図１６】
2005056385.tif 000020
【図１７】
2005056385.tif 000021
【図１８】
2005056385.tif 000022
【図１９】
2005056385.tif 000023
【図２０】
2005056385.tif 000024
【図２１】
2005056385.tif 000025
【図２２】
2005056385.tif 000026