(57)【特許請求の範囲】
【請求項１】
３次元ポリゴン表面に描かれる模様のデータを作成する３次元ポリゴン表面模様処理方式において、
３次元ポリゴンモデルを投影する投影手段と、
前記投影された３次元ポリゴンモデルの表面に模様書き込みが行われた場合、前記３次元ポリゴン表面に描かれる模様の元となるラインを構成するライン点を抽出するライン点抽出手段と、
前記抽出されたライン点のスクリーン座標についてポリゴンの３頂点との位置関係を表す重みを演算する重み演算手段と、
前記演算された重みを含む各ライン点の重み付けデータを記憶するデータ蓄積実行部と、
を備えたことを特徴とする３次元ポリゴン表面模様処理方式。
【請求項２】
３次元ポリゴン表面に描かれる模様を再現する３次元ポリゴン表面模様処理方式において、
３次元ポリゴンモデルを投影する投影手段と、
重み付けデータを記憶するメモリ手段と、
投影された３次元ポリゴンモデルの表面に対応する重み付けデータを前記メモリ手段から読み出す読出手段と、
前記読み出された重み付けデータから残りの重みを演算する重み演算手段と、ポリゴンモデルの３頂点と、その位置関係を表す重みからライン点のスクリーン座標を求めるライン位置判定手段と、
前記スクリーン座標に基づき模様を描画する描画手段と、
を備えたことを特徴とする３次元ポリゴン表面模様処理方式。
【請求項３】
記憶された前記ライン点の重み付けデータは、ライン点を内包するポリゴン番号，第１重み，第２重みであり、ライン点を（ａ，ｂ），内包するポリゴンの３点を（ｘ１  ，ｙ１），（ｘ２  ，ｙ２），（ｘ３  ，ｙ３）とすると、以下の（１）  （２）  および（３）  式により重みを算出することを特徴とする請求項１または２記載の３次元ポリゴン表面模様処理方式。
ａ＝ｗ１  ｘ１  ＋ｗ２  ｘ２  ＋ｗ３  ｘ３    ・・・（１）
ｂ＝ｗ１  ｙ１  ＋ｗ２  ｙ２  ＋ｗ３  ｙ３    ・・・（２）
ｗ１  ＋ｗ２  ＋ｗ３  ＝１．０            ・・・（３）
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、３次元キャラクタの表面に描かれる模様を、データサイズを大きくすることなく容易に再現できるようにする３次元ポリゴン表面模様処理方式に関する。
【０００２】
【従来の技術】
従来のポリゴン表面のラインを構成するライン点は、（Ｘ，Ｙ，Ｚ）と云うような３次元座標で表わされている。そのため、土台となるポリゴンモデルの形状が変形した場合、その変形したポリゴン上にあるライン点を正確にポリゴンの表面上に載るように制御するのは困難であった。例えば関節部分など異なる座標系に跨がって変形するポリゴンの場合、その上にあるライン点を制御するとき、片方の座標系だけでライン点を制御するとポリゴンの表面からライン点がずれてしまうからである。
【０００３】
【発明が解決しようとする課題】
また、ライン点を３次元座標で表示する場合、十分な精度を維持するためには３２ｂｉｔ浮動小数点で表すことが必要である。そのため、データサイズが大きくなるという欠点があった。
本発明の目的は、ポリゴン表面上の模様を形成するライン点を重み付けすることによりポリゴンが変形した場合でもデータサイズを大きくすることなく変形に合わせた模様を再現することができる３次元ポリゴン表面模様処理方式を提供することにある。
【０００４】
【課題を解決するための手段】
前記目的を達成するために本発明による３次元ポリゴン表面模様処理方式は、３次元ポリゴン表面に描かれる模様のデータを作成する３次元ポリゴン表面模様処理方式において、３次元ポリゴンモデルを投影する投影手段と、前記投影された３次元ポリゴンモデルの表面に模様書き込みが行われた場合、前記３次元ポリゴン表面に描かれる模様の元となるラインを構成するライン点を抽出するライン点抽出手段と、前記抽出されたライン点のスクリーン座標についてポリゴンの３頂点との位置関係を表す重みを演算する重み演算手段と、前記演算された重みを含む各ライン点の重み付けデータを記憶するデータ蓄積実行部とを備えている。また、本発明は３次元ポリゴン表面に描かれる模様を再現する３次元ポリゴン表面模様処理方式において、３次元ポリゴンモデルを投影する投影手段と、重み付けデータを記憶するメモリ手段と、投影された３次元ポリゴンモデルの表面に対応する重み付けデータを前記メモリ手段から読み出す読出手段と、前記読み出された重み付けデータから残りの重みを演算する重み演算手段と、ポリゴンモデルの３頂点と、その位置関係を表す重みからライン点のスクリーン座標を求めるライン位置判定手段と、前記スクリーン座標に基づき模様を描画する描画手段とを備えている。
本発明における記憶された前記ライン点の重み付けデータは、ライン点を内包するポリゴン番号，第１重み，第２重みであり、ライン点を（ａ，ｂ），内包するポリゴンの３点を（ｘ１  ，ｙ１），（ｘ２  ，ｙ２），（ｘ３  ，ｙ３）とすると、以下の式により重みを算出することができる。
ａ＝ｗ１  ｘ１  ＋ｗ２  ｘ２  ＋ｗ３  ｘ３    ・・・（１）
ｂ＝ｗ１  ｙ１  ＋ｗ２  ｙ２  ＋ｗ３  ｙ３    ・・・（２）
ｗ１  ＋ｗ２  ＋ｗ３  ＝１．０            ・・・（３）
【０００５】
【作用】
上記構成によれば、３次元形状のポリゴン（多面体）の表面に点を置き、その点を結ぶラインでポリゴンの表面に簡単に模様を描くことができる。
模様ラインを構成するライン点は（Ｘ，Ｙ，Ｚ）といった３次元座標ではなくポリゴン上の位置関係で表す“重み”で構成される。
ライン点を構成する３つの重みデータは合計すると１．０となり、重みデータは全て０．０〜１．０の範囲に収まるので、３２ｂｉｔ浮動小数点ではなく１６ｂｉｔ固定小数点でも十分な精度を維持できデータサイズを小さくすることができる。さらに、合計が１．０であるので２つの値が判れば最後の１つは計算して求めることができる。
【０００６】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を詳しく説明する。
図１は本発明による３次元ポリゴン表面模様処理方式を適用したポリゴンモデルの外形例を示す図である。
ポリゴンモデルが画面上に表示され、（ａ）に示すような模様が描かれたとする。このときの各面のデータは重み付けデータとしてＲＡＭ（図２参照）に格納される。例えば、ゲーム進行中に形状のゆがんだポリゴンモデルを再現する場合、ポリゴンモデル面の模様を形成する各点の重み付けデータはＲＡＭより読み出され演算され、そのライン点位置が決定する。そして、これらライン点を繋ぐ処理をすることにより、ポリゴンモデルを（ｂ）に示すように模様部分も変形させて再現することができる。
【０００７】
図２は、本発明による３次元ポリゴン表面模様処理方式を適用した画像処理部の実施の形態を示すブロック図である。
この実施の形態は、ゲーム機の画像処理部分を示すもので、本発明に直接関係する回路のみを記載してある。
操作部１５を操作することによりゲーム処理部１２がゲーム全体の制御を行い、ゲームを進行させることができる。ＲＯＭ１６からゲームプログラムを読み出し実行することによりゲームが開始し、ゲームメニュー選択画面が画像表示部１９に表示されるとともにバックグランド音がサウンド処理部２０を介してスピーカ２１より出力される。
【０００８】
制御部１１はゲーム処理部１２，ジオメトリ処理部１３およびレンダリング部１４より構成されている。ジオメトリ処理部１３は、ポリゴンの３次元座標データを高速に処理する制御部で、ゲーム処理部１２から送られてくるポリゴンの座標データにモデルの移動，変形，回転等に対する処理を行い、クリッピング，視野変換等の処理を行う。
レンダリング部１４は、ポリゴンモデルのレンダリングを高速に処理する制御部で、ゲーム処理部１２およびジオメトリ処理部１３から送られてくるポリゴンデータに対してレンダリング処理を行い、陰面処理およびシェーディング処理等を行う。レンダリング部１４で処理されたモデルのデータは、１画面毎に画像制御部１８中のグラフィックメモリに格納され、このデータは図示しないＤ／Ａコンバータで映像信号に変換され、画像表示部１９に表示される。
【０００９】
レンダリング部１４は、レンダリング処理においてポリゴンモデル表面の模様を描くときの制御、および描かれたデータに基づきポリゴンモデルを再現する制御機能を備えている。すなわち、ポリゴンモデルに模様を描き、模様を構成するライン点の重み付けデータを保存するまでの制御のためにポリゴンモデル投影部１４ａ，ライン書込指示部１４ｂ，ライン抽出部１４ｃ，ライン点重み演算部１４ｄおよびデータ蓄積実行部１４ｅを備えている。また、重み付けデータを読み出し、投影されたポリゴンモデルを再現するまでの制御のためにポリゴンモデル投影部１４ａ，重み付けデータ読出演算部１４ｆ，ライン点位置判定部１４ｇおよび描画部１４ｈを備えている。
【００１０】
ポリゴンモデル投影部１４ａは、ポリゴンモデルを作成する場合、または再生する場合にそのポリゴンモデルデータをＲＡＭ１７より読み出し、ポリゴンモデルを生成してスクリーン（画面）に投影する。ライン書込指示部１４ｂは、ポリゴンモデル作成時、ポリゴンモデル表面に操作部１５を用いて模様（ライン）を書き込むように指示する。ライン点抽出部１４ｃは、例えば図３（ａ）に示すようにポリゴンモデル表面２６に模様（ライン）２５を書き、確定操作をした場合、その模様（ライン）を構成する各ライン点を抽出する。
図３（ｂ）に模様２５の抽出点２５ａ，２５ｂ・・・２５ｎが示されている。
【００１１】
ライン点重み演算部１４ｄは、求めたライン点を内包するポリゴンとそのポリゴンの３頂点との位置関係を表す重みを求める演算を行う。すなわち図４に示すように求めたライン点（ａ，ｂ）と、このライン点を内包するポリゴンの３点（ｘ１  ，ｙ１），（ｘ２  ，ｙ２），（ｘ３  ，ｙ３）を（１）  （２）  および（３）  式に代入し、方程式を解いて重みｗ１  ，ｗ２  ，ｗ３  を求める。
ａ＝ｗ１  ｘ１  ＋ｗ２  ｘ２  ＋ｗ３  ｘ３    ・・・（１）
ｂ＝ｗ１  ｙ１  ＋ｗ２  ｙ２  ＋ｗ３  ｙ３    ・・・（２）
ｗ１  ＋ｗ２  ＋ｗ３  ＝１．０              ・・・（３）
【００１２】
ポリゴンの中央付近と隅付近では同じような間隔でライン点を抽出しているが、抽出した各ライン点の内、冗長なライン点は上記重み点を算出した後に削除される。隣合うライン点の重みの差の絶対値の和を算出し、ある値（しきい値，例えば０．５）より小さい場合は冗長点と判断され、間引きされる。
図３（ｃ）に冗長点ｗ’  の間引き方法を示してある。
ライン上の各点をｗ，ｗ’，ｗ”  とすると、（４）  式の左辺の演算を行う。
｜ｗ１  −ｗ１’｜＋｜ｗ２  −ｗ２’｜＋｜ｗ３  −ｗ３’｜＜０．５・・・（４）
演算の結果、（４）  式の不等式を満たす場合、ライン点ｗ’  の間引きが行われる。満たさない場合は間引きは行われない。ｗ”  についても同様に（４）  式の演算が行われる。
なお、隣のポリゴンに移ったときの最初のライン点はかならず残している。入力時は多めにライン点を抽出し、重み演算の後に冗長なライン点を間引くようにしている。
【００１３】
データ蓄積実行部１４ｅは算出された重みｗ１  ，ｗ２  ，ｗ３  のうち、重みｗ１  ，ｗ２  と、このライン点を内包するポリゴン番号を重み付けデータとしてＲＡＭ１７に格納する。重みｗ３  を記憶しないのは、ポリゴンモデルを再生する場合、ポリゴンモデルが変形したとき、その座標の重みが変わるので、再度、重みｗ３  を演算する必要があるからである。このように算出された全ての重み付けデータを格納することによりポリゴンモデルに描かれた模様の作成動作が終了する。
【００１４】
重み付けデータ読出演算部１４ｆは、ポリゴンを再生する場合、ポリゴンモデルを投影してスクリーン上に表示したとき、各ポリゴンが内包する重みｗ１  ，ｗ２  を読み出す。そして、（３）  式より重みｗ３  を導き、（１）  （２）  式を解くことによりライン点（ａ，ｂ）を求める。ライン点位置判定部１４ｇは、このライン点データによりポリゴンモデル上の位置を判定する。描画部１４ｈは、各ライン点を結合することによりポリゴンモデル上に模様を再現する。
このようにして再現される模様は、ポリゴンが移動したり，変形したり，回転したりする場合、移動，変形，回転に合わせた見え方で表示される。
【００１５】
図５は、ポリゴン上に描かれる模様の作成手順を説明するためのフローチャートである。
ユーザがポリゴンモデルに模様を描く場合、ゲーム機を立ち上げ、画面上のキャラクタの模様作成を選択する。これにより、選択したキャラクタのポリゴンモデルが画像表示部（スクリーン座標）に投影される（ステップ（以下「Ｓ」という）５０１）。制御部１１はユーザに対し、ポリゴンモデル表面に描画するように指示を表示する。この指示に従い、ユーザは操作部によってポリゴンモデル上にラインを描くこととなる（Ｓ５０２）。ライン描画を終了させる場合には、ユーザはライン描画の確定操作を行う。
【００１６】
制御部１１は、すべてのラインに対し、ラインを構成するライン点を求める（Ｓ５０３）。隣接するライン点は、予め決められている間隔になるように設定される。ライン点が求まると、ライン点とそのライン点を内包するポリゴンの３頂点の座標との位置関係を示す（１）  （２）  および（３）  式よりライン点について重みｗ１  ，ｗ２  を算出する（Ｓ５０４）。算出された重みｗ１  ，ｗ２  とポリゴン番号はＲＡＭ１７に格納される。
つぎにすべてのライン点についてＳ５０４の処理がなされたか否かを判断し、すべてのライン点について処理がなされていない場合にはＳ５０４の処理を繰り返し実行する。処理がすべて終了すると、ポリゴンモデル模様作成は終了し、その旨の表示が行われる。
【００１７】
図６は、様々な視点，変形，距離から見るポリゴン表面の模様再現の手順を説明するためのフローチャートである。
ゲーム進行中にユーザが模様作成したキャラクタが出現する場合、そのポリゴンモデルがスクリーン座標に投影される（Ｓ６０１）。投影されたポリゴンモデルのポリゴン番号対応の重み付けデータである重みｗ１  ，ｗ２  が読み出され、（３）  式により重みｗ３  の演算が行われる（Ｓ６０２）。重みｗ１  ，ｗ２  ，ｗ３  とポリゴンの頂点の座標を（１）  （２）  式に代入することにより、ライン点（ａ，ｂ）が算出される（Ｓ６０３）。１つのライン点を算出すると、つぎのライン点が残っているか否かを判定し、残っている場合には繰り返し残りのライン点を算出する（Ｓ６０４）。
すべてのライン点の算出を終了すると、各ライン点を結んで模様ラインを表示する（Ｓ６０５）。
【００１８】
以上の実施の形態は、ポリゴンモデルの模様作成をユーザが行う場合の例について説明したが、当初、デフォルトでポリゴンモデルの模様作成を行って重み付けデータをメモリ手段に格納しておいても良い。
【００１９】
【発明の効果】
以上、説明したように本発明は、３次元ポリゴンモデルを投影し、この投影された３次元ポリゴンモデルの表面にライン書き込みが行われた場合、３次元ポリゴン表面に描かれる模様の元となるラインを構成するライン点を抽出し、抽出されたライン点のスクリーン座標についてポリゴンの３頂点との位置関係を表す重みを演算し、演算された重みを含む各ライン点の重み付けデータを記憶するものである。また、３次元ポリゴンを再現する場合は、３次元ポリゴンモデルを投影し、投影された３次元ポリゴンモデルの表面に対応する重み付けデータを読み出し、読み出した重み付けデータから残りの重みを演算し、ポリゴンモデルの３頂点と、その位置関係を表す重みからライン点のスクリーン座標を求め、このスクリーン座標に基づき模様を描画するものである。
したがって、土台となるポリゴンの変形に同期させてポリゴンの制御とは別に模様ラインを制御する必要がないため、回路構成が簡易となる。また、土台となるポリゴンが変形しても常にポリゴン表面上に模様ラインを描画するようにしているため模様の作成が容易であり、データサイズがコンパクトになるという効果がある。レンダリング処理の一部を簡単化できるのでレンダリング処理の高速化に寄与できる。
【図面の簡単な説明】
【図１】本発明による３次元ポリゴン表面模様処理方式を適用したポリゴンモデルの外形例を示す図である。
【図２】本発明による３次元ポリゴン表面模様処理方式に用いる回路の実施の形態を示すブロック図である。
【図３】ポリゴン表面上に描いたラインの例を説明するための図である。
【図４】ポリゴン表面上の一点を算出する重み付けを説明するための図である。
【図５】ポリゴン上に描かれる模様の作成手順を説明するためのフローチャートである。
【図６】様々な視点，変形，距離から見るポリゴン表面の模様の再現手順を説明するためのフローチャートである。
【符号の説明】
１  作成時のポリゴンモデル
２  再現時のポリゴンモデル
１１  制御部
１２  ゲーム処理部
１３  ジオメトリ処理部
１４  レンダリング部
１４ａ  ポリゴンモデル投影部
１４ｂ  ライン書込指示部
１４ｃ  ライン点抽出部
１４ｄ  ライン点重み演算部
１４ｅ  データ蓄積実行部
１４ｆ  重み付けデータ読出演算部
１４ｇ  ライン点位置判定部
１４ｈ  描画部
１５  操作部
１６  ＲＯＭ
１７  ＲＡＭ
１８  画像制御部
１９  画像表示部
２０  サウンド処理部
２１  スピーカ
【図１】
0003589657.tif 000002
【図２】
0003589657.tif 000003
【図３】
0003589657.tif 000004
【図４】
0003589657.tif 000005
【図５】
0003589657.tif 000006
【図６】
0003589657.tif 000007