JP2005521168A - リアルタイムでサブディディビジョンサーフェスを生成するための方法およびシステム - Google Patents

リアルタイムでサブディディビジョンサーフェスを生成するための方法およびシステム Download PDF

Info

Publication number
JP2005521168A
JP2005521168A JP2003579172A JP2003579172A JP2005521168A JP 2005521168 A JP2005521168 A JP 2005521168A JP 2003579172 A JP2003579172 A JP 2003579172A JP 2003579172 A JP2003579172 A JP 2003579172A JP 2005521168 A JP2005521168 A JP 2005521168A
Authority
JP
Japan
Prior art keywords
subdivision
vertex
ridgeline
subdivided
ridgelines
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2003579172A
Other languages
English (en)
Inventor
モーテン ペダーセン,
Original Assignee
エレクトロニック アーツ インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by エレクトロニック アーツ インコーポレイテッド filed Critical エレクトロニック アーツ インコーポレイテッド
Publication of JP2005521168A publication Critical patent/JP2005521168A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Abstract

コンピュータグラッフィクスに関連して用いられる、サブディビジョンサーフェスをリアルタイムで生成する方法を提供する。例示的実施形態によれば、細分割した面についての面情報とサブディビジョンデータとを生成する。細分割した面は、多数のサブディビジョンサーフェスから構成される。細分割した面についての面情報とサブディビジョンデータとはそれぞれ、細分割した面を定義する頂点と稜線とを含む。さらに、2つのビットフラグは、細分割した面についてのサブディビジョンデータに特定された各稜線に対応付けられる。一方のビットフラグを用いて、対応付けられた稜線の使用が二度目であるかどうか特定し、他方のビットフラグを用いて、対応付けられた稜線が二回使用されているかどうか示す。次に細分割した面についてのサブディビジョンデータを用いて、さらに細分された稜線を生成する。

Description

発明の背景
本発明は、一般にコンピュータグラッフィクス処理に関する。すなわち、本発明は、コンピュータグラッフィクスに関連する、サブディビジョンサーフェスをリアルタイムで生成する方法およびシステムに関する。
サブディビジョンサーフェスを用いて、滑らかな幾何学的表面を生成する。細分割することにより、サブディビジョンサーフェスを生成する。全てのサブディビジョンサーフェスは、オリジナルの多角形の表面から開始される。オリジナルの多角形の表面をさらに多角形に細分割して、あるセットの規則に従って全ての頂点を移動させる。頂点を移動させる規則は、方式毎に異なる。例えば、ある規則は、古い頂点を周囲に置いておき、必要に応じてこれらを回転させて新しい頂点を挿入することを要する。
通常用いられる方式の1つは、ループサーフェス細分割方式である。ループサーフェス細分割方式は、頂点を余分に生成して挿入し、次にあらかじめ定義された重み付け定数によりオリジナルの頂点をずらすことにより行われる。サブディビジョンサーフェスは、全細分割ステップにより徐々に滑らかになる。オリジナルの頂点に基づいて頂点を余分に生成し、各組のオリジナルの頂点から定義される稜線の中央にこれらを挿入する。各既存の頂点は、これにつながる他の頂点から影響を受ける。細分割によりさらに細かな形状が繰り返し生成される。このループサーフェス細分割方式の他に、例えば多面体方式といった、他にも多くの方法があり、サブディビジョンサーフェスの生成に用いられている。
サブディビジョンサーフェスは、コンピュータグラッフィクス産業でよく用いられていて、とりわけ、アニメ映画またはアニメ製作に用いられている。しかしながら、処理と一般管理費とに費用がかかることから、サブディビジョンサーフェスは、リアルタイムではない応用に限って用いられていた。例えば、グラフィックアートパッケージや映画/テレビ製作といったものである。
リアルタイムでサブディビジョンサーフェスを生成しようとするある方式が紹介されている。かかる方式は、細分割プリミティブを生成するのに用いられる形状ポインタと稜線とを含む大型で複雑なデータベース用いることにより行われる。大型で複雑なデータベースを用いるので、コードサイズが大きくなり、処理能率が非常に悪くなってしまう。従って、かかるサブディビジョンサーフェスをリアルタイムで実施し利用できるような、より能率的な方法でサブディビジョンサーフェスを生成できる、改良された方法およびシステムを提供することが望ましい。
発明の概要
コンピュータグラッフィクスに関連して用いられる、リアルタイムでサブディビジョンサーフェスを生成する方法およびシステムを提供する。本発明の例示の実施の形態によれば、細分割した面についての面情報とサブディビジョンデータとを、まず生成する。細分割した面は、多数のサブディビジョンサーフェスから構成される。細分割した面についての面情報とサブディビジョンデータとはそれぞれ、細分割した面を定義する頂点と稜線とを含む。さらに、2つのビットフラグを、細分割した面についてのサブディビジョンデータに特定された各稜線に対応付ける。一方のビットフラグを用いて、対応付けられた稜線の使用が二度目であるかどうか特定し、他方のビットフラグを用いて、対応付けられた稜線を二回用いているかどうか示す。
次に、細分割した面についてのサブディビジョンデータを用いて、さらに細分割した稜線を生成する。細分割した面についてのサブディビジョンデータが特定する各稜線は、1組の細分割した稜線から定義される。稜線が二回用いられていて、かつ使用が二度目ならば、この稜線を構成する細分割した稜線の順序を逆にする。次に、第一の所定の手法に従って細分割した面についての面情報とサブディビジョンデータとを用いて、サブディビジョンサーフェスについての面情報を生成する。第二の所定の手法に従ってさらに細分割した稜線を用いて、サブディビジョンサーフェスについてのサブディビジョンデータを生成する。同様に、サブディビジョンサーフェスについての面情報とサブディビジョンデータとはそれぞれ、サブディビジョンサーフェスを定義する頂点と稜線とを含む。2つのビットフラグは、サブディビジョンサーフェスについてのサブディビジョンデータに特定された各稜線に対応付けられている。
各細分割した面とサブディビジョンサーフェスとについての面情報とサブディビジョンデータとを生成した後、この細分割した面を定義する各稜線に対して新しい頂点を生成する。内部頂点ビットフラグを用いて、新規に生成した頂点が内部頂点かどうか示す。新しい頂点が内部頂点ならば、次に標準(3/8、3/8、1/8、1/8)頂点重み付けシステムを用いて、稜線を共有する近傍の頂点に対する混合重みを二等分する。そして全ての頂点をずらして、より滑らかな細分割した面を生成する。
図面と請求項とを含む以下の明細書を参照することにより、本発明の他の特徴および利点について理解されるであろう。本発明のさらなる特徴および利点について、本発明のいろいろな実施の形態に関する構造および動作と共に、添付の図面について以下に詳細に説明する。同じ構成要素または機能的に同じ構成要素には同じ符号が付けられている。
発明の詳細な説明
本発明について、各種の例示の実施の形態により説明する。本発明は一般に、リアルタイムの方法でサブディビジョンサーフェスを生成する、改良された方法に関する。一例の実施の形態によれば、この方法は、多数のインデックスプリミティブを用いる。これらのプリミティブは、頂点アレイと、これらの頂点に割出された面アレイと、サブディビジョンデータとを含む。サブディビジョンデータは、他の情報のなかでも、1組の頂点から定義される稜線と、頂点の数と、面の数と、一意の稜線の数とを含む。これらのプリミティブがどのように導出されて、これらをどのように用いてサブディビジョンサーフェスを生成するか、以下にさらに詳細に説明する。
全てのサブディビジョンサーフェスは、オリジナルの多角形の表面から開始される。1つ以上のオリジナルの多角形の表面が、生成されるグラフィカルモデルに対するオブジェクトを構成する。グラフィカルモデルは、オブジェクトのグラフィカル表現である。各オリジナルの多角形の表面を、さらに多角形に、あるいはサブディビジョンサーフェスに細分割する。次に、各サブディビジョンサーフェスをオリジナルの多角形の表面のように扱って、所望ならば、サブディビジョンサーフェスをさらに細分割する。形成する細分割の数は、例えば、設計上の選択といった要因の数による。
例示の一実施の形態によれば、本発明の方法は、サブディビジョンサーフェスを生成する3つのステップを実行する。図1を参照すると、例示の方法の3つのステップは、(1)繰り返し用いられる面情報の生成と、(2)新しい頂点の生成と、(3)既存の頂点をずらすこととを含む。これらの3つのステップについてそれぞれ、以下にさらに詳細に説明する。
繰り返し用いられる面情報を生成する際には、再分割される各表面または面のそれぞれについて面情報を生成する。例示の一実施の形態によれば、各オリジナルの多角形の表面は三角形と見なされている。すなわち、再分割される各面は三角形であると見なされている。その結果、以下に示すように、各細分割ステップを実行してから生成される全てのサブディビジョンサーフェスは、三角形であると見なされている。図2は、再分割される三角形を有するオリジナルの多角形の表面(すなわちサブディビジョンサーフェス)20を示す。表面すなわち面20は、3つの頂点(0、1、2)から定義される。つまり、面20は、3つの頂点(0、1、2)につながる3つの一意の稜線から形成される。すなわち、1組の頂点(0、1)で区切られる稜線と、1組の頂点(1、2)で区切られる稜線と、1組の頂点(2、0)で区切られる稜線とである。一意の稜線は、頂点を2つだけつなぐことにより形成される稜線と定義される。すなわち、1組の頂点で区切られる稜線のことである。
各細分割ステップでは、面20を形成する3つの稜線に、さらに頂点を加える。すなわち、各既存の稜線の中央に、さらに頂点を加える。図2に示すように、1組の頂点(0、1)から定義される稜線と、1組の頂点(1、2)から定義される稜線と、1組の頂点(2、0)から定義される稜線とに、それぞれ新しい頂点(3、4、5)を加える。符号(3、4、5)はまた、それぞれ新しい頂点を含む稜線を参照するのに用いることができる。例えば、参照番号(3)は、頂点(0、1)の間の稜線を参照するのに用いることができる。参照番号(4)は、頂点(1、2)の間の稜線を参照するのに用いることができる。そして、参照番号(5)は、頂点(2、0)の間の稜線を参照することに用いることができる。
各細分割ステップを行う間に、面20の各既存の稜線を、2つの細分割した稜線に分割する。例えば、図2に示すように、稜線(3)を2つの同じ細分割した稜線に分ける。すなわち、頂点(0、3)の間の細分割した稜線と、頂点(3、1)の間の細分割した稜線とである。同様に、稜線(4)と(5)とについても、それぞれ2つの同じ細分割した稜線に分割する。
また、各細分割ステップ行う間に、新規に生成した頂点(3、4、5)を用いて、さらに3つの新しい稜線を面20の中央に生成する。図2に示すように、新しく加えた稜線は、頂点(3、5)の間にさらに加えた稜線と、頂点(3、4)の間にさらに加えた稜線と、頂点(4、5)の間にさらに加えた稜線である。次に、順にこれらの追加した稜線を用いて面20を細分割することにより、さらに細分割表面を生成する。図2を参照すると、面20に対して、それぞれ頂点(3、1、4)と、(4、2、5)と、(5、0、3)と、(3、4、5)とから定義される4つのサブディビジョンサーフェスを生成する。
上述のように、各細分割ステップにより、面の数と、頂点と、稜線とが増加する。例えば面20といった三角形の表面を用いることにより、各細分割ステップから各既存の面に対して4つの新しい面が形成されるので、面の数が四倍に増加する。面の数は、次の計算式により表される。Fasesn+1=Faces*4、”n”はn番目の細分割ステップを示し、”n+1”はn番目の細分割ステップのすぐ次の細分割ステップを示す。
頂点の数は、一意の稜線の数だけ増加する。これは、各一意の稜線の中央に、さらに頂点を生成するからである。次の計算式は、n+1番目の細分割ステップの後の頂点の数を示す。
Verticesn+1=Vertices+Edges
新しい頂点を一意の稜線の中央に追加すると、この新しい頂点が他の新しい頂点につながって、さらに一意の稜線を形成する。次の計算式は、n+1番目の細分割ステップの後の一意の稜線の数を示す。
Edgesn+1=Edges*2+Face*3
さらに、方法の一例によれば、2つ以下の面を同じ一意の稜線につなぐことができる。すなわち、1つの一意の稜線を2つの面で共有する、もしくは使用することができる。2つの面が同じ稜線を使用するには、ある順序に従うことになるが、これについてさらに以下に述べる。各稜線の状態を常に把握するために、各面20を形成する稜線に2つの面ビットフラグを対応付ける。第一の面ビットフラグを用いて、対応付けられた稜線が”稜線の再使用”なのかどうか示す。すなわち、この対応付けられた稜線の使用が二度目なのかどうかである。第二の面ビットフラグを用いて、対応付けられた稜線が”二面を持つ”のかどうか示す。すなわち、対応付けられた稜線が、複数の面に含まれる、もしくは共有されるかどうかである。また、さらに以下に述べるように、再分割される各稜線に対応付けられた内部頂点ビットフラグが存在する。稜線を細分割すると、稜線の中央に位置する新しい頂点も形成される。内部頂点ビットフラグを用いて、新規に生成した頂点が”内部”頂点かどうか示す。これらのビットフラグの使い方についてはさらに以下に述べる。これらのビットフラグを実施するには、通常ソフトウェアを用いて実施して、これらを重み付け表のルックアップポインタとして用いる。
簡単に述べると、図2に戻って、面20を細分割するとすれば、以下の面情報とサブディビジョンデータとを生成して面20を細分割する。
Face[0]:頂点(0、1、2)および
Sub[0]:(3、4、5)
Face[0]:頂点(0、1、2)は、頂点(0、1、2)から定義される面20を示し、sub0:(3、4、5)は、面20を定義する3つの稜線を示す。稜線(3)は頂点(0、1)の間に、稜線(4)は、頂点(1、2)の間に、稜線(5)は頂点(2、0)の間にある。
面20を細分割することにより、頂点(0、1)の間に頂点(3)を、頂点(1、2)の間に頂点(4)を、頂点(2、0)の間に頂点(5)を生成する。頂点の生成について、さらに以下に述べる。また、面20を4つのサブディビジョンサーフェスに細分割しているので、さらに面情報が生成される。例えば、図2に続いて面20を細分割することにより、次の面情報を生成する。
Face[0]:頂点(3、1、4)−サブエレメント0、面エレメント1、サブエレメント1
Face[1]:頂点(4、2、5)−サブエレメント1、面エレメント2、サブエレメント2
Face[2]:頂点(5、0、3)−サブエレメント2、面エレメント0、サブエレメント0
Face[3]:頂点(3、4、5)−サブエレメント0、サブエレメント1、サブエレメント2
Face[0]:頂点(3、1、4)は、サブディビジョンサーフェスから定義される頂点(3、1、4)を示し、Face[1]:頂点(4、2、5)は、第二のサブディビジョンサーフェスから定義される頂点(4、2、5)を示し、Face[2]:頂点(5、0、3)は、第三のサブディビジョンサーフェスから定義される頂点(5、0、3)を示し、Face[3]:頂点(3、4、5)は、第四のサブディビジョンサーフェスから定義される頂点(3、4、5)を示す。
細分割後に生成された面情報の右側についての情報は、後細分割面情報を生成するのに用いられる前細分割面情報と、細分割データとからのエレメントを示す。例えば、Face[0]を生成するには、サブディビジョンデータSub[0]の第一のエレメントである稜線(3)と、面情報Face[0]の第二のエレメントである(1)と、サブディビジョンデータSub[0]の第二のエレメントである稜線(4)とを用いると、(3、1、4)になる。Face1を生成するには、サブディビジョンデータSub[0]の第二のエレメントである稜線(4)と、面情報Face[0]の第三のエレメントである(2)と、サブディビジョンデータSub[0]の第三のエレメントである稜線(5)とを用いると、(4、2、5)になる。サブエレメント0は第一のサブエレメントを示し、エレメントの始めは”0”から開始することに留意されたい。同様に、Face[2]およびFace[3]を同じように生成する。
各細分割ステップで、上述のように各面20についての面情報を生成する。細分割ステップをさらに行う場合は、すなわち、オリジナルの細分割表面から生成されたサブディビジョンサーフェスをさらに細分割し、細分割される各サブディビジョンサーフェスについての面情報とサブディビジョンデータとを、上述のように生成しなければならない。
第一の面ビットフラグの使い方について説明する。上述のように、第一の面ビットフラグを用いて、稜線の使用が二度目であるかどうか示す(”稜線の再使用”)。稜線の使用が二度目であれば、次にこの稜線を二回目の逆の順序で用いる。図3は、2つの面で稜線を用いることを示す図である。図3を参照すると、頂点(0、1、2、3)から定義される2つの面がある。第一の面であるFace[0]は、頂点(0、1、2)から定義され、第二の面であるFace[1]は、頂点(0、2、3)から定義される。稜線(6)は、頂点(0、2)の間の稜線である。図3に示すように、稜線(6)は、Face[0]とFace[1]との両方が共有する、あるいは使用する。方法の一例によれば、時計回りの方向を考えると、稜線(6)は、頂点(2)から頂点(0)への順序でFace[0]が使用する。Face[1]では、この順序を逆にする。すなわち、稜線(6)は、頂点(0)から頂点(2)の順序でFace[1]が使用する。同様に、頂点(6)は、Face[0]とFace[1]との両方からの細分割した面の出力が共有する。頂点(6)が頂点(0、2)の間の稜線に位置するので、頂点(0、2)は、頂点(6)の近傍の頂点であると見なされ、頂点(1、3)は、対向する頂点と見なされる。
稜線の再使用は、細分割データエレメントに文字”r”を加えて示している。二面を持つ稜線は、細分割データエレメントに文字”d”を加えて示している。二面を持つ稜線についてさらに以下に述べる。
図3に基づいて、Face[0]とFace[1]とについて以下の面情報を得る。
Face[0]:頂点(0、1、2)−sub[0]:(4、5、6)および
Face[1]:頂点(0、2、3)−sub[1]:(6r、d、7、8)
Face[0]:頂点(0、1、2)は、Face[0]を構成する3つの頂点(0、1、2)を示す。Sub[0]:(4、5、6d)は、Face[0]を定義する3つの稜線(4、5、6)を示す。”6d”は、稜線(6)を二回用いていることを示す。
Face[1]:頂点(0、2、3)は、Face[1]を構成する3つの頂点(0、2、3)を示し、sub[1]:(6r、d、7、8)は、Face[1]を定義する3つの稜線(6、7、8)を示す。”6r、d”は、稜線(6)が二回用いられて(すなわち、2つの面に共有されて)、この稜線の使用が二度目であることを示している。
上述のように、次の細分割により生成される稜線の数は、次の計算式に従う。Edgesn+1=EdgeS*2+Fases*3。1つの稜線を細分割することにより、これらの稜線をつなぐ頂点を中央に有する2つの細分割した稜線を生成する。次に第二の細分割は、全部で4つの細分割した稜線と3つの頂点とになる。図4を参照すると、頂点(0、1)の間に形成された稜線が示されている。この稜線を細分割した後、頂点(0、2)と(2、1)との間に、1つの新しい頂点(2)と、2つの細分割した稜線とがそれぞれ生成される。頂点(0、2)と(2、1)との間に形成された2つの細分割した稜線を細分割することにより、頂点(0、3)、(3、2)、(2、4)、(4、1)の間に、2つの新しい頂点(3、4)と、4つの新しい細分割した稜線とがそれぞれさらに生成される。稜線を細分割した後、2つの細分割した稜線を記述するのに用いる頂点の組を、以下の順序で保つことに留意されたい。すなわち、第一の細分割した稜線については新しい頂点が頂点の組の第二の頂点になり、第二の細分割した稜線については新しい頂点が頂点の組の第一の頂点になる。例えば、図3では、頂点(0、1)の間の稜線から形成した2つの細分割した稜線は、次の頂点の組を有する。それぞれ(0、2)および(2、1)で、新規に生成した頂点である頂点(2)を有する。
次に細分割した稜線を、同じ順序で既存の稜線に加える。図5は、図3に示すFace[0]とFace[1]とを細分割した結果を示している。図5に示すように、細分割の後で稜線(4)は、2つの細分割した稜線(9)と(10)になる。稜線(5)は、細分割した稜線(11)と(12)になる。稜線(6)は、細分割した稜線(13)と(14)とになり、以下同様である。上述のように稜線を細分割することにより、2つの細分割した稜線をつなぐ稜線の中央に加えられる、新しい頂点が生成されることにもなる。例えば、稜線(4)を細分割すると、新しい頂点(4)が生成されて、頂点(0、1)の間の稜線の中央に加えられる。これにより、細分割した稜線(9)と(10)とをつなぐ。このように稜線を割り出すことにより、既存の稜線を2倍しオフセットを加えることによりある稜線の所定の細分割した稜線についての既存の頂点と2つの細分割した稜線のインデックスとを計算してから、新規に生成した頂点が加えられる。
図5を参照すると、細分割した稜線(s.e.)で記述される2つの面であるFace[0]およびFace[1]は、次の通りである。
Face[0]:頂点(0、1、2)−sub(4、5、6)−s.e.(9、10)、(11、12)、(13、14
Face[1]:頂点(0、2、3)−sub(6r、d、7、8)−s.e.(14r、d、13r、d)、(15、16)、(17、18)
Face[0]は、頂点(0、1、2)とsub(4、5、6)について上述した。s.e.(9、10)、(11、12)、(13、14)は、Face[0]の細分割から得られた全ての細分割した稜線を特定する。細分割した稜線に時計回りの方向で順次番号を付ける。Face[0]についてのサブディビジョンデータに特定された各稜線は、1組の細分割した稜線から定義される。例えば、稜線(4)はs.e.(9、10)から定義される。同様に、(13d、14d)は、細分割した稜線(13)と(14)とを二回用いる(すなわち、2つの面が共有する)ことを示している。これは、細分割した稜線(13)と(14)とが稜線(6)を構成し、前述のように稜線(6)を二回用いるという事実から続くものである。同様、Face[1]は、頂点(0、2、3)とsub(6r、d、7、8)について上述した。s.e.(14r、d、13r、d)、(15、16)、(17、18)は、Face[1]の細分割から得られる全ての細分割した稜線を特定する。(14r、d、13r、d)は、細分割した稜線(13)と(14)とを二回用いて(すなわち、2つの面が共有する)、かつ、使用が二回目であることを示している。また、細分割した稜線に時計回りの方向で順次番号を付ける。さらに、共有の稜線を構成する細分割した稜線の順序を逆にする。これは、二回目に用いた稜線の結果である。例えば、Face[1]について、細分割した稜線(13)と(14)とを、s.e.(13、14)と対照的にs.e.(14r、d、13r、d)として記憶する。
さらに、細分割した稜線を生成した後、各細分割した面にさらに稜線を追加する。各細分割した面に対しては、その細分割した面に対応付けられた追加の稜線を、その細分割した面から生成された細分割面の外側に存在する面が用いることはない。すなわち、細分割した面に対応付けられた追加の稜線を、その細分割した面から生成された細分割面だけが用いる。図6を参照すると、追加された稜線は(19、20、21、22、23、24)である。2つの面であるFace[0]とFace[1]とはそれぞれ、4つの細分割面に細分割されている。Face[0]とFace[1]とに対する第四の細分割面はそれぞれ、追加の稜線(19、20、21)と(22、23、24)とから定義される。図6に示すように、追加の稜線(19、20、21)は、Face[0]を再分割して形成された細分割面だけが用いる。同様に、追加の稜線(22、23、24)は、Face[1]を再分割して形成された細分割面だけが用いる。
上に示したように、Face[0]とFace[1]とに対する第一の細分割を行う前に、以下の面情報とサブディビジョンデータとが利用できる。
Face[0]:頂点(0、1、2)−sub(4、5、6
Face[1]:頂点(0、2、3)−sub(6r、d、7、8)
Face[0]とFace[1]とに対する第一の細分割の後、次の面情報とサブディビジョンデータとが生成される。
Face[0]:頂点(4、1、5)−sub(10、ll、19
Face[1]:頂点(5、2、6)−sub(12、13、20
Face[2]:頂点(6、0、4)−sub(14、9、21d)
Face[3]:頂点(4、5、6)−sub(19r、d、20r、d、21r、d
Face[4]:頂点(6、2、7)−sub(13r、d、15、22
Face[5]:頂点(7、3、8)−sub(16、17、23
Face[6]:頂点(8、0、6)−sub(18、14r、d、24
Face[7]:頂点(6、7、8)−sub(22r、d、23r、d、24r、d
”稜線の再使用”および”二面を持つ稜線”に用いられる表示について説明する。図6を参照すると、Face[0]に関する面情報に対し、細分割した稜線(13)および(14)と、追加の稜線(19)、(20)および(21)とが全て二回用いられていることがわかる。すなわち、細分割した稜線(13)と(14)とをFace[0]とFace[1]との両方に用い、追加の稜線(19)、(20)および(21)を、Face[0]の再分割から生成された4つの細分割面の間で二回用いる。また、Face[0]に関する面情報は、表示”r、d”で示されているように、追加の稜線(19)、(20)および(21)が、二回目の使用であることも示している。
同様に、Face[1]に関する面情報に対し、細分割した稜線(13)および(14)と、追加の稜線(22)、(23)および(24)とが二回用いられていることがわかり、かつ、二回目の使用であることも示している。
Face[0]〜Face[3]についての面情報とサブディビジョンデータとを次のように生成する。上述のように、Face[0]〜Face[3]についての面情報に対し、この情報を、Face0[0]についての面情報とサブディビジョンデータとから導出できる。すなわち、頂点(0、1、2)−sub(4、5、6d)である。上述の方法を用いることにより、Face1[0]をサブエレメント0(4)と、面エレメント1(1)と、サブエレメント1(5)とから導出する。これにより、Face[0]:頂点(4、1、5)になる。同様に、Face1[1]〜Face1[3]についての面情報は、上述のように導出でき、Face[1]:頂点(5、2、6)と、Face[2]:頂点(6、0、4)と、Face[3]:頂点(4、5、6)とになる。
第一の細分割の後で生成されるサブディビジョンデータは、細分割した稜線(s.e.)と追加の稜線(a.e.)とに基づいて次のように生成できる。例として、Face0[0]からの面情報とサブディビジョンデータとを用いてFace[0]、Face[1]、Face[2]およびFace[3]についての面情報とサブディビジョンデータとを生成する。上に示したように、第一の細分割の前に次のデータが利用できる。
Face[0]:頂点(0、1、2)−sub(4、5、6)−s.e.(9、10)、(11、12)、(13、14)−a.e.(19、20、21)
Face[0]についてのサブディビジョンデータを、第一の組の細分割した稜線の第二の部分である(10)と、第二の組の細分割した稜線の第一の部分である(11)と、第一の追加の稜線である(19)とから導出する。これにより、sub(10、11、19)を得る。
Face[1]についてのサブディビジョンデータを、第二の組の細分割した稜線の第二の部分である(12)と、第三の組の細分割した稜線の第一の部分である(13)と、第二の追加の稜線である(20)とから導出する。これにより、sub(12、13、20)を得る。
Face[2]についてのサブディビジョンデータを、第三の組の細分割した稜線の第二の部分である(14)と、第一の組の細分割した稜線の第一の部分である(9)と、第三の追加の稜線である(21)とから導出する。これにより、sub(14、9、21)を得る。
最後に、Face1[3]についてのサブディビジョンデータを、3つの追加の稜線である(19、20、21)全てから導出する。これにより、sub(19、20、21)を得る。
次に、各細分割した稜線に対する2つの面ビットフラグを決定する。稜線から2つの面ビットフラグを、その2つの細分割した稜線に持ち越す。これは、稜線を細分割することが、その2つの細分割した稜線が二面を持つのか、あるいは再使用なのかということで影響されないからである。すなわち、稜線が二面を持つならば、その2つの細分割した稜線もまた、細分割の後で二面を持つからである。従って、細分割した稜線(13)と(14)とに対する第二の面ビットフラグを”d”に設定する。Face[0]とFace[1]とが一括して二回用いている稜線(6)から、細分割した稜線(13)と(14)とを細分割しているからである。3つの追加の稜線については、これらを二回用いて第四の細分割面に再使用する。従って、各追加の稜線に対する2つの面ビットフラグは一定である。3つの追加の稜線がFace[0]〜Face[2]に現れる場合は、3つの追加の稜線(19、20、21)に対する第二の面ビットフラグを、”d”に設定する。すなわち二面を持っている。3つの追加の稜線がFace[3]に現れる場合は、”r、d”と設定する。すなわち二面を持ち、かつ再使用である。
Face[0]〜Face[3]に対する第一の細分割後の面情報と、サブディビジョンデータと、対応する面ビットフラグとを、上述のように導出する。同様に、同じ情報Face[4]〜Face[7]について導出できる。
各細分割ステップでは、面情報とサブディビジョンデータ(対応する面ビットフラグを含む)とを得た後、新しい頂点を生成する必要がある。一般に、細分割に用いられる2つのタイプの頂点がある。すなわち、内部頂点と、境界/折り目、つまり外部頂点とである。これら2つの頂点に対する細分割化規則は、若干異なっている。上述のように細分割する際に、サブディビジョンデータ内の各稜線に対して、稜線の中央に頂点を生成する。どのように頂点を生成するかは、頂点の位置による。別々の混合重みを異なるタイプの頂点に用いる。例えば、生成される頂点が内部頂点ならば、(3/8、3/8、1/8、1/8)の頂点重み付けシステムを用いる。生成される頂点が外部頂点ならば、(1/2、1/2)頂点重み付けシステムを用いる。内部頂点および外部頂点の生成に用いられる方法について、さらに以下に述べる。
図7を参照すると、内部頂点は頂点グリッドの中央に位置し、通常6つの他の頂点と稜線を共有する。内部頂点70を生成する場合は、異なる頂点を別々に用いる。すなわち、稜線上の各頂点につき3/8と、頂点1つにつき1/8とで形成された稜線で1つの三角形を形成する。
図8は、内部頂点の生成に用いられる混合重みを示す。図8に示すように、生成される頂点(6)は、内部頂点である。頂点(6)を、次に基づいて生成する。
頂点(6)=1つの近傍の頂点につき3/8+1つの対向する頂点につき1/8
近傍の頂点は、稜線を共有する頂点、すなわち頂点(0、2)である。対向する頂点は、残余の三角形を共有する頂点、すなわち頂点(1、3)である。
図9に示すように、頂点(0、2)から定義される稜線(6)は、2つの面が共有する。すなわち、頂点(0、1、2)と(0、2、3)とからそれぞれ定義される面である。従って、これら頂点を二回加えるようにして、生成される頂点に対する頂点(0、2)の影響を二等分する。
数学的に頂点(6)を次のように計算する。
=(v+v)/8+(v+v)*3/8
しかし、2つの面があるために頂点(0、2)を二回加えているので、頂点(0、2)の影響を次のよう二等分する。
=(v+v)/8+(v+v)*(3/8)/2
=(v+v)/8+(v+v)*3/16
同じ頂点を二回加えることにより、前述の計算で効果的に問題を処理する。Face[0]を処理した後、頂点(6)に対し、次の式を得る。
=v/8+(v+v)*3/16
そして、Face[1]を処理する。Face[1]が稜線(6)をFace[0]と共有するので、Face[1]も頂点(6)を形成することに留意されたい。そして、次のようにして頂点(6)を得る。
=(v/8+(v+v)*3/16)+(v/8+(v+v)*3/16)
=(v+v3)/8+(v+v)*3/8
図8を参照すると、境界/折り目、つまり外部頂点90を形成する際に、他の境界/折り目の稜線の頂点(実線で示す)それぞれの半分(1/2)を用いる。外部頂点の生成は、内部頂点の生成よりも単純である。外部頂点については定義上、外部頂点が存在する稜線を1つの面にだけ用いる。この面を使って2つの稜線の頂点を合計し、その結果を2で割ることにより外部頂点を計算する。
図10に示すように、1つの面だけを稜線(4)に用いるので、頂点(4)を生成するための混合重みは、1つの近傍につき1/2である。つまり、頂点(0、1)の1/2を加えて、稜線の中央(4)に位置する頂点(4)を生成する。稜線(4)は二面を持たない稜線である。すなわち、Face[0]だけがこれを用いる。
各稜線に対し頂点を生成する際には、生成される頂点は、内部頂点または外部頂点のいずれかである。つまり、頂点が存在する稜線は、二面を持つか一面を持つかのいずれかである。生成される頂点の性質により、異なる混合重みを用いる。上述のように、各稜線に対応付けられた2つの面ビットフラグがある。第二の面ビットフラグは、稜線が二面を持っているかいないかを示す。従って、各稜線に対する第二の面ビットフラグに含まれる情報を用いることにより、頂点を生成するために用いる適切な混合重みを選択できる。
さらに上述のように、各頂点に対応付けられた内部頂点ビットフラグがある。内部頂点ビットフラグを用いて、頂点が内部頂点かどうか示す。この内部頂点ビットフラグを生成するには、稜線を細分割する際に第二の面ビットフラグの内容をコピーする。細分割した稜線が二面を持たなければ、かかる稜線は、境界または折り目に存在する。その結果、細分割する際に、細分割した稜線の中央に生成した頂点もまた、境界または折り目に存在する。
図6を例にとると、内部頂点ビットフラグを含む面情報は次の通りである。
Face[0]:頂点(4、1、5)−sub(10、11、19
Face[1]:頂点(5、2、6)−sub(12、13、20
Face[2]:頂点(6、0、4)−sub(14、9、21d)
Face[3]:頂点(4、5、6)−sub(19r、d、20r、d、21r、d
Face[4]:頂点(6、2、7)−sub(13r、d、15、22
Face[5]:頂点(7、3、8)−sub(16、17、23
Face[6]:頂点(8、0、6)−sub(18、14r、d、24d)
Face[7]:頂点(6、7、8)−sub(22r、d、23r、d、24r、d
”i”は、頂点が内部頂点であることを示す。上記は、頂点(6)は内部頂点だけであることを示す図6の構成要素である。通常、より大きなメッシュでは、大抵の頂点は内部頂点であり、閉じたメッシュでは、全ての頂点は内部頂点である。
稜線に対して新しい頂点を生成した後、既存の頂点をずらす。ループサーフェス細分割方法により、既存の頂点と稜線を共有する周囲の頂点に基づいて、各既存の頂点をずらす(移動する)。対応する既存の頂点が内部頂点ならば、(ずらした既存の頂点に対応する)各出力頂点は、1/16の重みで対応する既存の頂点と各周囲の頂点とから影響を受ける。
図11は、既存の内部頂点のずれを示す。図11に示すように、通常のメッシュ内の大抵の頂点は、6の価を持つ内部頂点である。(ずらした既存の頂点(0)110に対応する)出力頂点は、既存の頂点(0)110の10/16と、稜線を既存の頂点(0)110と共有する各周囲の頂点の1/16の重みで影響を受ける。すなわち、ずらした既存の頂点(0)110に対応する出力頂点は、ずらした既存の頂点(0)110の10/16と、稜線を共有する頂点(1、2、3、4、5、6)毎の1/16とを含む。
ずらされる既存の頂点が境界/折り目、つまり外部頂点ならば、既存の頂点に対応する出力頂点は、境界または折り目上の他の頂点だけから影響を受ける。この状態で、既存の頂点を次のようにずらす。図12は、外部頂点のずれを示す。図12は3つの面、すなわち、Face0:頂点(0、1、2)、FAce1:頂点(0、2、3)、Face2:頂点(0、3、4)を示す。頂点(0)120は、境界/折り目の頂点である。従って、ずらした頂点(Q)120に対応する出力頂点に対する混合重みは、1つの近傍頂点につき1/8と、頂点(0)120の3/4とである。
図12を参照すると、5つの頂点(0、1、2、3、4)を有するメッシュが示されている。ずらした頂点(0)120に対応する出力頂点は、頂点(1、4)と頂点(0)120とから影響を受ける。頂点(0)120は境界上にあるので、頂点(0)120は頂点(1、4)と境界を共有する。上に示したように、出力頂点対する混合重みは、1つの近傍頂点(または境界を共有する頂点につき)につき1/8と、ずらした頂点(0)120の6/8である。実施の一例では、図13に示すように、内部頂点ビットフラグと第二の面ビットフラグ(”二面を持つ”ビットフラグ)とを用いて、混合重みを持つアレイを割り出す。
既存の頂点が外部頂点である既存の頂点のずれを完成するために、既存の頂点をまず、出力頂点アレイにコピーする。次に、各混合ステップでは、次のように適当な混合重みに頂点を掛け、既存の頂点を引いて各出力頂点を計算する。
out=Vout+weight*(V−Vsrc
outは、出力(つまりずらした)頂点で、vsrcは、既存の(つまりずらしていない)頂点で、vは、稜線を共有する頂点である。前述が意味することは、既存の頂点の小数部を除去するが、稜線を共有する頂点の同じ小数部を混合することである。
ここに説明したことに基づいて、本発明の例示の方法を実施して、より効率的にリアルタイムのやり方でサブディビジョンサーフェスを生成できることが、当業者にとって明らかであろう。上述のような面情報とサブディビジョンデータとは、比較的少ない量のデータを表しており、従って、かかる情報とデータとを最小限の記憶領域に格納して、より効率的にリアルタイムのやり方で処理することができる。
実施の一例では、例えばMicrosoft社のDirect3Dといったグラフィクス拡張ソフトウェア、および/または例えばCやC++といったコンピュータプログラミング言語を用いて本発明の方法の一例を実施する。例示の実施は、一体型の方式、あるいは各種のモジュールを有するモジュールの方式で設計できる。例示の実施は、例えば、CDやDVD等のコンピュータ読み取り可能媒体に常駐させることができる。各種のビットフラグを含む面情報とサブディビジョンデータとに対するデータ構造を示す、ソフトウェアの実施の形態の一例を以下の表1に示す。
Figure 2005521168
本発明は、ハードウェアを用いて実施できることも理解されたい。かかるハードウェアは、ビデオゲーム機内の集積回路またはチップ、あるいはコンピュータで用いられるグラフィックカードとすることができる。制御論理を、例えば、マイクロコードプログラミング命令の形式で用いて、かかるハードウェアを制御できる。ソフトウェアとハードウェアとを組み合わせて本発明を実施することもできる。ここでの説明に基づいて、当業者は、本発明を実現し、実施する他のやり方および/または方法を理解するであろう。
ここに説明した例と実施の形態とは、説明のためのものであり、これに照らし合わせた各種の変形や変更についても当業者に示唆し、また、この応用の精神と範囲と、添付の請求の範囲の範囲との中に包含されるものであることを理解されたい。ここに引用される全ての刊行物、特許、特許出願は、全て参照としてここに包含されている。
図1は、本発明の方法の一例による、サブディビジョンサーフェスを生成するステップを示すフロー図である。 図2は、本発明の方法の一例による、細分割される三角形を有するオリジナルの多角形の表面(またはサブディビジョンサーフェス)を示す図である。 図3は、本発明の方法の一例による、2つの面により稜線を用いることを示す図である。 図4は、本発明の方法の一例による、稜線の細分割を示す図である。 図5は、図3に示す2つの面の細分割の結果を示す図である。 図6は、図3に示す2つの面の細分割の結果と、細分割した面にさらに稜線を追加したことを示す図である。 図7は、内部頂点の構成を示す図である。 図8は、内部頂点の構成に用いられる混合重みを示す図である。 図9は、境界/折り目または外部頂点の構成を示す図である。 図10は、外部頂点の構成に用いられる混合重みを示す図である。 図11は、内部頂点のずれを示す図である。 図12は、外部頂点のずれを示す図である。 図13は、本発明による、2つのビットフラグを用いる混合重み付けインデックスを示す表である。

Claims (40)

  1. 細分割した面から複数のサブディビジョンサーフェスを生成する方法であって、該方法は、以下:
    細分割した面についての第一のセットの面情報と第一のセットのサブディビジョンデータとを生成する工程であって、ここで、第一のセットの面情報と第一のセットのサブディビジョンデータとがそれぞれ複数の頂点と複数の稜線とを含む、工程;
    第一のセットのサブディビジョンデータを用いて複数の細分割した稜線と複数の追加の稜線とを生成する工程;
    第一の順序で1組の細分割した稜線を用いることにより、複数の稜線から各稜線を定義する工程であって、ここで、稜線を二回用いていて、かつ、使用が二度目であるならば、稜線を定義する1組の細分割した稜線を、第一の順序と逆の第二の順序で並べ替える、工程;
    第一のセットの面情報とサブディビジョンデータとを用いて各複数のサブディビジョンサーフェスについての第二のセットの面情報を生成する工程;
    複数の細分割した稜線と複数の追加の稜線とを用いて、各複数のサブディビジョンサーフェスそれぞれについての第二のセットのサブディビジョンデータを生成する工程;
    複数の稜線それぞれに対し頂点を生成する工程;および
    複数の頂点と複数の稜線に対して生成された頂点とをずらす工程、
    を包含する、方法。
  2. 複数の稜線それぞれに対し頂点を生成するステップはさらに、
    頂点が内部頂点で、かつ、(3/8、3/8、1/8、1/8)頂点重み付けシステムを用いる場合には、稜線を共有する頂点に対する混合重みを半分にすることを含む請求項1に記載の方法。
  3. 稜線が二回用いられ、かつ、使用が二回目かどうかに関する情報を、稜線に対応付けられた第一および第二のビットフラグそれぞれに格納する請求項1に記載の方法。
  4. 複数の稜線それぞれに対し頂点を生成するステップはさらに、
    第一のビットフラグに格納された情報を用いることにより、生成される頂点が内部頂点または外部頂点かどうか決定することを含む請求項3に記載の方法。
  5. 複数の頂点は、第一の頂点と、第二の頂点と、第三の頂点とを含み、
    複数の稜線は、第一の稜線と、第二の稜線と、第三の稜線とを含み、
    第二のセットの面情報を生成するステップはさらに、
    第一の稜線と、第二の頂点と、第二の稜線とを用いることにより、第一のサブディビジョンサーフェスについての面情報を導出し、
    第二の稜線と、第三の頂点と、第三の稜線とを用いることにより、第二のサブディビジョンサーフェスについての面情報を導出し、
    第三の稜線と、第一の頂点と、第一の稜線とを用いることにより、第三のサブディビジョンサーフェスについての面情報を導出し、
    第一の稜線と、第二の稜線と、第三の稜線とを用いることにより、第四のサブディビジョンサーフェスについての面情報を導出する、
    ことを含む請求項1に記載の方法。
  6. 複数の細分割した稜線は、第一の稜線を構成する第一の組の細分割した稜線と、第二の稜線を構成する第二の組の細分割した稜線と、第三の稜線を構成する第三の組の細分割した稜線とを含み、
    複数の追加の稜線は、第一の追加の稜線と、第二の追加の稜線と、第三の追加の稜線とを含み、
    第二のセットのサブディビジョンデータを生成するステップはさらに、
    二番目の第一の組の細分割した稜線と、一番目の第二の組の細分割した稜線と、第一の追加の稜線とを用いることにより、第一のサブディビジョンサーフェスについてのサブディビジョンデータを導出し、
    二番目の第二の組の細分割した稜線と、一番目の第三の組の細分割した稜線と、第二の追加の稜線とを用いることにより、第二のサブディビジョンサーフェスについてのサブディビジョンデータを導出し、
    二番目の第三の組の細分割した稜線と、一番目の第一の組の細分割した稜線と、第三の追加の稜線とを用いることにより、第三のサブディビジョンサーフェスについてのサブディビジョンデータを導出し、
    第一と、第二と、第三の追加の稜線とを用いることにより、第四のサブディビジョンサーフェスについてのサブディビジョンデータを導出する、
    ことを含む請求項5に記載の方法。
  7. 第二のセットの面情報と第二のセットのサブディビジョンデータとがそれぞれ、対応付けられたサブディビジョンサーフェスを定義する複数の頂点と稜線とを含む請求項1に記載の方法。
  8. コンピュータソフトウェアを用いて方法を実施する請求項1に記載の方法。
  9. 方法をリアルタイムで実行して、リアルタイムで複数のサブディビジョンサーフェスを生成できる請求項8に記載の方法。
  10. コンピュータソフトウェアを用いて実施する方法を、コンピュータが読取可能な媒体に格納する請求項8に記載の方法。
  11. 細分割した面から複数のサブディビジョンサーフェスを生成するシステムであって、該システムは、以下:
    細分割した面についての第一のセットの面情報と第一のセットのサブディビジョンデータを生成するように構成されたモジュールであって、第一のセットの面情報と第一のセットのサブディビジョンデータとがそれぞれ複数の頂点と複数の稜線とを含むモジュールと、
    第一のセットのサブディビジョンデータを用いて複数の細分割した稜線と複数の追加の稜線とを生成するよう構成されたモジュールと、
    第一の順序で1組の細分割した稜線を用いることにより、複数の稜線から各稜線を定義するよう構成されたモジュールであって、稜線が二回用いられ、かつ、使用が二度目であるならば、稜線を定義する1組の細分割した稜線を第一の順序と逆の第二の順序で並べ替えるモジュールと、
    第一のセットの面情報と第一のセットの細分割データとを用いて、各複数のサブディビジョンサーフェスについての第二のセットの面情報を生成するよう構成されたモジュールと、
    複数の細分割した稜線と複数の追加の稜線とを用いて各複数のサブディビジョンサーフェスについての第二のセットのサブディビジョンデータを生成するよう構成されたモジュールと、
    複数の稜線それぞれに対し頂点を生成するよう構成されたモジュールと、
    複数の頂点と複数の稜線に対して生成された頂点とをずらすよう構成されたモジュール
    を備える、システム。
  12. 複数の稜線それぞれに対し頂点を生成するよう構成されたモジュールはさらに、
    頂点が内部頂点で、かつ、(3/8、3/8、1/8、1/8)頂点重み付けシステムを用いる場合は、稜線を共有する頂点に対する混合重みを半分にするよう構成されたモジュールを備える請求項11に記載のシステム。
  13. 稜線が二回用いられ、かつ、使用が二回目かどうかに関する情報それぞれを、稜線に対応付けられた第一および第二のビットフラグに格納する請求項11に記載のシステム。
  14. 複数の稜線それぞれに対し頂点を生成するよう構成されたモジュールはさらに、
    第一のビットフラグに格納された情報を用いることにより、生成される頂点が内部頂点または外部頂点かどうか決定するよう構成されたモジュールを備える請求項13に記載のシステム。
  15. 複数の頂点は、第一の頂点と、第二の頂点と、第三の頂点とを含み、
    複数の稜線は、第一の稜線と、第二の稜線と、第三の稜線とを含み、
    第二のセットの面情報を生成するよう構成されたモジュールはさらに、
    第一の稜線と、第二の頂点と、第二の稜線とを用いることにより、第一の細分割表面についての面情報を導出するよう構成されたモジュールと、
    第二の稜線と、第三の頂点と、第三の稜線とを用いることにより、第二のサブディビジョンサーフェスについての面情報を導出するよう構成されたモジュールと、
    第三の稜線と、第一の頂点と、第一の稜線とを用いることにより、第三の細分割表面についての面情報を導出するよう構成されたモジュールと、
    第一の稜線と、第二の稜線と、第三の稜線とを用いることにより、第四の細分割表面についての面情報を導出するよう構成されたモジュールと、
    を備える請求項11に記載のシステム。
  16. 複数の細分割した稜線は、第一の稜線を構成する第一の組の細分割した稜線と、第二の稜線を構成する第二の組の細分割した稜線と、第三の稜線を構成する第三の組の細分割した稜線とを含み、
    複数の追加の稜線は、第一の追加の稜線、第二の追加の稜線と、第三の追加の稜線とを含み、
    第二のセットのサブディビジョンデータを生成するよう構成されたモジュールはさらに、
    二番目の第一の組の細分割した稜線と、一番目の第二の組の細分割した稜線と、第一の追加の稜線とを用いることにより、第一の細分割表面についてのサブディビジョンデータを導出するよう構成されたモジュールと、
    二番目の第二の組の細分割した稜線と、一番目の第三の組の細分割した稜線と第二の追加の稜線とを用いることにより、第二のサブディビジョンサーフェスについてのサブディビジョンデータを導出するよう構成されたモジュールと、
    二番目の第三の組の細分割した稜線と、一番目の第一の組の細分割した稜線と、第三の追加の稜線とを用いることにより、第三のサブディビジョンサーフェスについてのサブディビジョンデータを導出するよう構成されたモジュールと、
    第一と、第二と、第三の追加の稜線とを用いることにより、第四のサブディビジョンサーフェスについてのサブディビジョンデータを導出するよう構成されたモジュールと、
    を備える請求項15に記載のシステム。
  17. 第二のセットの面情報とサブディビジョンデータとがそれぞれ、対応付けられたサブディビジョンサーフェスを定義する複数の頂点と稜線とを含む請求項11に記載のシステム。
  18. コンピュータソフトウェアを用いて、リアルタイムでシステムを実施する請求項11に記載のシステム。
  19. リアルタイムでシステムを実行して、複数のサブディビジョンサーフェスを生成することができる請求項18に記載のシステム。
  20. コンピュータソフトウェアを用いて実施するシステムが、コンピュータが読取可能な媒体に格納されている請求項18に記載のシステム。
  21. 細分割した面から複数のサブディビジョンサーフェスを生成させるよう構成された命令を格納するコンピュータが読取可能な媒体であって、該媒体は、以下:
    細分割した面についての第一のセットの面情報と第一のセットのサブディビジョンデータを生成するよう構成されたセットの命令であって、ここで、第一のセットの面情報と第一のセットのサブディビジョンデータとがそれぞれ複数の頂点と複数の稜線とを含む、命令;
    第一のセットのサブディビジョンデータを用いて複数の細分割した稜線と複数の追加の稜線とを生成するよう構成されたセットの命令;
    第一の順序で1組の細分割した稜線を用いることにより、複数の稜線から各稜線を定義するよう構成されたセットの命令であって、稜線が二回用いられ、かつ、使用が二度目ならば、稜線を定義する1組の細分割した稜線を、第一の順序と逆の第二の順序で並べ替える、命令;
    第一のセットの面情報と第一のセットのサブディビジョンデータとを用いて各複数のサブディビジョンサーフェスについての第二のセットの面情報を生成するよう構成されたセットの命令;
    複数の細分割した稜線と複数の追加の稜線とを用いて各複数のサブディビジョンサーフェスについての第二のセットのサブディビジョンデータを生成するよう構成されたセットの命令;
    複数の稜線それぞれに対し頂点を生成するよう構成されたセットの命令;および
    複数の頂点と複数の稜線に対して生成された頂点とをずらすよう構成されたセットの命令;
    を含む、媒体。
  22. 複数の稜線それぞれに対し頂点を生成するよう構成されたセットの命令はさらに、
    頂点が内部頂点で、かつ、(3/8、3/8、1/8、1/8)頂点重み付けシステムを用いる場合は、稜線を共有する頂点に対する混合重みを半分にするよう構成されたセットの命令を含む請求項21に記載のコンピュータが読取可能な媒体。
  23. 稜線が二回用いられ、かつ、使用が二回目かどうかに関する情報はそれぞれ、稜線に対応付けられた第一および第二のビットフラグに格納される請求項21に記載のコンピュータが読取可能な媒体。
  24. 複数の稜線それぞれに対し頂点を生成するよう構成されたセットの命令はさらに、
    第一のビットフラグに格納された情報を用いることにより、生成される頂点が内部頂点または外部頂点かどうか決定するよう構成されたセットの命令を含む請求項23に記載のコンピュータが読取可能な媒体。
  25. 複数の頂点は、第一の頂点と、第二の頂点と、第三の頂点とを含み、
    複数の稜線は、第一の稜線と、第二の稜線と、第三の稜線とを含み、
    第二のセットの面情報を生成するよう構成されたセットの命令はさらに、
    第一の稜線と、第二の頂点と、第二の稜線とを用いることにより、第一のサブディビジョンサーフェスについての面情報導出するよう構成されたセットの命令と、
    第二の稜線と、第三の頂点と、第三の稜線とを用いることにより、第二のサブディビジョンサーフェスについての面情報を導出するよう構成されたセットの命令と、
    第三の稜線と、第一の頂点と、第一の稜線とを用いることにより、第三のサブディビジョンサーフェスについての面情報を導出するよう構成されたセットの命令と、
    第一の稜線と、第二の稜線と、第三の稜線とを用いることにより、第四のサブディビジョンサーフェスについての面情報を導出するよう構成されたセットの命令と、
    を含む請求項21に記載のコンピュータが読取可能な媒体。
  26. 複数の細分割した稜線は、第一の稜線を構成する第一の組の細分割した稜線と、第二の稜線を構成する第二の組の細分割した稜線と、第三の稜線を構成する第三の組の細分割した稜線とを含み、
    複数の追加の稜線は、第一の追加の稜線、第二の追加の稜線と、第三の追加の稜線とを含み、
    第二のセットのサブディビジョンデータを生成するよう構成されたセットの命令はさらに、
    二番目の第一の組の細分割した稜線と、一番目の第二の組の細分割した稜線と第一の追加の稜線とを用いることにより、第一のサブディビジョンサーフェスについてのサブディビジョンデータを導出するよう構成されたセットの命令と、
    二番目の第二の組の細分割した稜線と、一番目の第三の組の細分割した稜線と第二の追加の稜線とを用いることにより、第二のサブディビジョンサーフェスについてのサブディビジョンデータを導出するよう構成されたセットの命令と、
    二番目の第三の組の細分割した稜線と、一番目の第一の組の細分割した稜線と、第三の追加の稜線とを用いることにより第三のサブディビジョンサーフェスについてのサブディビジョンデータを導出するよう構成されたセットの命令と、
    第一と、第二と、第三の追加の稜線とを用いることにより、第四のサブディビジョンサーフェスについてのサブディビジョンデータを導出するよう構成されたセットの命令と、
    を含む請求項25に記載のコンピュータが読取可能な媒体。
  27. 第二のセットの面情報とサブディビジョンデータとがそれぞれ、対応付けられたサブディビジョンサーフェスを定義する複数の頂点と稜線とを含む請求項21に記載のコンピュータが読取可能な媒体。
  28. コンピュータが読取可能な媒体に常駐する命令をリアルタイムで実行して、リアルタイムで複数のサブディビジョンサーフェスを生成できる請求項21に記載のコンピュータが読取可能な媒体。
  29. コンピュータが読取可能な媒体が、コンパクトディスクまたはデジタルビデオディスクである請求項21に記載のコンピュータが読取可能な媒体。
  30. 細分割した面から複数のサブディビジョンサーフェスを生成するよう構成された複数の構成要素を備える集積回路であって、
    細分割した面についての第一のセットの面情報と第一のセットサブディビジョンデータとを生成するよう構成された構成要素であって、ここで、第一のセットの面情報と第一のセットのサブディビジョンデータとはそれぞれ複数の頂点と複数の稜線とを含む、構成要素;
    第一のセットのサブディビジョンデータを用いて複数の細分割した稜線と複数の追加の稜線とを生成するよう構成された構成要素;
    第一の順序で1組の細分割した稜線を用いることにより、複数の稜線から各稜線を定義するよう構成された構成要素であって、ここで、稜線が二回用いられ、かつ、使用が二度目ならば、稜線を定義する1組の細分割した稜線を第一の順序と逆の第二の順序で並べ替える、構成要素;
    第一のセットの面情報と第一のセットの細分割データとを用いて各複数のサブディビジョンサーフェスについての第二のセットの面情報を生成するよう構成された構成要素;
    複数の細分割した稜線と複数の追加の稜線とを用いて各複数のサブディビジョンサーフェスについての第二のセットのサブディビジョンデータを生成するよう構成された構成要素;
    複数の稜線それぞれに対し頂点を生成するよう構成された構成要素;および
    複数の頂点と複数の稜線に対して生成された頂点とをずらすよう構成された構成要素
    を備える、集積回路。
  31. 複数の稜線それぞれに対し頂点を生成するよう構成された構成要素はさらに、
    頂点が内部頂点で、かつ、(3/8、3/8、1/8、1/8)頂点重み付けシステムを用いる場合は、稜線を共有する頂点に対する混合重みを半分にするよう構成された構成要素を備える請求項30に記載の集積回路。
  32. 稜線が二回用いられ、かつ、使用が二回目かどうかに関する情報をそれぞれ、稜線に対応付けられた第一および第二のビットフラグに格納する請求項30に記載の集積回路。
  33. 複数の稜線それぞれに対し頂点生成するよう構成された構成要素はさらに、
    第一のビットフラグに格納された情報を用いることにより、生成される頂点が内部頂点または外部頂点かどうか決定するよう構成された構成要素を備える請求項32に記載の集積回路。
  34. 複数の頂点は、第一の頂点と、第二の頂点と、第三の頂点とを含み、
    複数の稜線は、第一の稜線と、第二の稜線と、第三の稜線とを含み、
    第二のセットの面情報を生成するよう構成された構成要素はさらに、
    第一の稜線と、第二の頂点と、第二の稜線とを用いることにより、第一のサブディビジョンサーフェスについての面情報を導出するよう構成された構成要素と、
    第二の稜線と、第三の頂点と、第三の稜線とを用いることにより、第二のサブディビジョンサーフェスについての面情報を導出するよう構成された構成要素と、
    第三の稜線と、第一の頂点と、第一の稜線とを用いることにより、第三のサブディビジョンサーフェスについての面情報を導出するよう構成された構成要素と、
    第一の稜線と、第二の稜線と、第三の稜線とを用いることにより、第四のサブディビジョンサーフェスについての面情報を導出するよう構成された構成要素と、
    を備える請求項30に記載の集積回路。
  35. 複数の細分割した稜線は、第一の稜線を構成する第一の組の細分割した稜線と、第二の稜線を構成する第二の組の細分割した稜線と、第三の稜線を構成する第三の組の細分割した稜線とを含み、
    複数の追加の稜線は、第一の追加の稜線と、第二の追加の稜線と、第三の追加の稜線とを含み、
    第二のセットのサブディビジョンデータを生成するよう構成された構成要素はさらに、
    二番目の第一の組の細分割した稜線と、一番目の第二の組の細分割した稜線と、第一の追加の稜線とを用いることにより、第一のサブディビジョンサーフェスについてのサブディビジョンデータを導出するよう構成された構成要素と、
    二番目の第二の組の細分割した稜線と、一番目の第三の組の細分割した稜線と第二の追加の稜線とを用いることにより、第二のサブディビジョンサーフェスについてのサブディビジョンデータを導出するよう構成された構成要素と、
    二番目の第三の組の細分割した稜線と、一番目の第一の組の細分割した稜線と、第三の追加の稜線とを用いることにより、第三のサブディビジョを導出するンサーフェスについてのサブディビジョンデータよう構成された構成要素と、
    第一と、第二と、第三の追加の稜線とを用いることにより、第四のサブディビジョンサーフェスについてのサブディビジョンデータを導出するよう構成された構成要素と、
    を備える 請求項34に記載の集積回路。
  36. 第二のセットの面情報と第二のセットのサブディビジョンデータとがそれぞれ対応付けられたサブディビジョンサーフェスを定義する複数の頂点と稜線とを含む請求項30に記載の集積回路。
  37. 集積回路に常駐する複数の構成要素をリアルタイムで実行して、リアルタイムで複数のサブディビジョンサーフェスを生成できる請求項30に記載の集積回路。
  38. 制御論理またはハードウェアまたは両方を組み合わせて用いて複数の構成要素を実施する請求項30に記載の集積回路。
  39. 請求項30に記載の集積回路を有するビデオゲーム機。
  40. 請求項30に記載の集積回路を有するグラフィックカード。
JP2003579172A 2002-03-20 2003-03-19 リアルタイムでサブディディビジョンサーフェスを生成するための方法およびシステム Pending JP2005521168A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/104,623 US6741249B1 (en) 2002-03-20 2002-03-20 Method and system for generating subdivision surfaces in real-time
PCT/US2003/008964 WO2003081528A2 (en) 2002-03-20 2003-03-19 Method and system for generating subdivision surfaces in real-time

Publications (1)

Publication Number Publication Date
JP2005521168A true JP2005521168A (ja) 2005-07-14

Family

ID=28452382

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003579172A Pending JP2005521168A (ja) 2002-03-20 2003-03-19 リアルタイムでサブディディビジョンサーフェスを生成するための方法およびシステム

Country Status (7)

Country Link
US (1) US6741249B1 (ja)
EP (1) EP1488379A2 (ja)
JP (1) JP2005521168A (ja)
KR (1) KR100578684B1 (ja)
CN (1) CN1647116A (ja)
AU (1) AU2003220490B2 (ja)
WO (1) WO2003081528A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012014744A (ja) * 2006-11-01 2012-01-19 Digital Media Professional:Kk 拡張されたプリミティブの頂点キャッシュの処理を加速する装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6606584B1 (en) * 1999-10-29 2003-08-12 Intel Corporation Defining a neighborhood of vertices in a 3D surface mesh
US6525727B1 (en) * 1999-10-29 2003-02-25 Intel Corporation Rendering 3D surfaces through limit surface projections
US6476813B1 (en) * 1999-11-30 2002-11-05 Silicon Graphics, Inc. Method and apparatus for preparing a perspective view of an approximately spherical surface portion
US6603473B1 (en) * 2000-04-12 2003-08-05 California Institute Of Technology Detail data pertaining to the shape of an object surface and related methods and systems
US6563501B2 (en) * 2000-07-28 2003-05-13 Adrian Sfarti Bicubic surface rendering

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012014744A (ja) * 2006-11-01 2012-01-19 Digital Media Professional:Kk 拡張されたプリミティブの頂点キャッシュの処理を加速する装置

Also Published As

Publication number Publication date
WO2003081528A2 (en) 2003-10-02
US6741249B1 (en) 2004-05-25
KR20040101324A (ko) 2004-12-02
CN1647116A (zh) 2005-07-27
AU2003220490B2 (en) 2007-11-29
AU2003220490A1 (en) 2003-10-08
WO2003081528A3 (en) 2004-03-04
EP1488379A2 (en) 2004-12-22
KR100578684B1 (ko) 2006-05-12

Similar Documents

Publication Publication Date Title
US11263811B2 (en) Tessellation method using vertex tessellation factors
US11830143B2 (en) Tessellation method using recursive sub-division of triangles
US7425955B2 (en) Method for tracking depths in a scanline based raster image processor
US11501494B2 (en) Tessellation method using displacement factors
US7148897B2 (en) Rendering successive frames in a graphic object system
US20050035976A1 (en) Antialiasing compositing in graphic object rendering
JPH03176784A (ja) コンピュータ・グラフィックスにおけるポリゴン分解方法及びシステム
Biedl et al. $1 $-string $ B_2 $-VPG representation of planar graphs
JP2005521168A (ja) リアルタイムでサブディディビジョンサーフェスを生成するための方法およびシステム
US20050012750A1 (en) Curved surface subdivision apparatus
JP2008117406A (ja) 3次元表示プログラム、3次元表示装置、および3次元表示方法
JP4479957B2 (ja) 曲面細分割装置
JPH07105390A (ja) 外周線描画データ制御方式
JP2004086479A (ja) 図形を表示させるための情報処理装置、情報処理方法、その情報処理方法を実現するためのプログラム、およびそのプログラムを記録した記録媒体
JPH05233769A (ja) 図形データ管理方式
JPH01255005A (ja) 曲面創成装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071115

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080407