(57)【特許請求の範囲】
【請求項１】
変形対象立体の形成および自由形状変形を行って、３次元形状を形成するモデリング方法において、前記３次元形状を表す制御格子データを入力し、前記入力した制御格子データのすべての稜線について、該稜線の両側の面のそれぞれの中心点を計算し、この２つの中心点と該稜線の中点を制御点とする１本の境界曲線を生成し、前記制御格子の各頂点に対して、該頂点につながる稜線に対応した前記境界曲線からなる閉じた曲線列を生成し、前記生成された閉じた曲線列から形成される曲面について、隣接する曲面間の境界曲線上のすべての点で接平面が一致するように、自由曲面を内挿して変形対象立体を生成することを特徴とするモデリング方法。
【請求項２】
請求項１記載のモデリング方法において、前記入力した制御格子データの稜線に重み情報が付加されていた場合、該重み情報を、該稜線に対して生成した境界曲線の重み情報とすることを特徴とするモデリング方法。
【請求項３】
請求項１記載のモデリング方法において、前記入力した制御格子データの頂点に重み情報が付加されていた場合、該頂点に対応する自由曲面を分割し、分割の際に生成された頂点を該重み情報に応じて移動させることを特徴とするモデリング方法。
【請求項４】
請求項１記載のモデリング方法において、前記入力した制御格子データの稜線に参照属性が付加されている参照稜線の場合、該参照稜線のみが接続する制御格子の頂点を頂点Ｖとしたときに、前記頂点Ｖと該参照稜線とを除いたときにできる稜線で形成されるループに、該参照稜線の頂点Ｖとは反対側の頂点で構成する稜線をつなげてループを構成してから変形対象立体を生成するようにしたことを特徴とするモデリング方法。
【請求項５】
請求項１乃至４のいずれかに記載のモデリング方法において、前記入力した制御格子データの頂点に、面上の穴を表す属性が付加されていた場合、変形対象立体を生成した後に、穴を表すＣループを生成することを特徴とするモデリング方法。
【請求項６】
変形対象立体の形成および自由形状変形を行って、３次元形状を形成するモデリング方法において、前記３次元形状を表す変形対象立体データを入力し、前記入力した変形対象立体データのループごとに、該ループの頂点につながる２本の稜線について、端点の一階微分ベクトルを計算して頂点位置での接平面を計算し、計算された接平面同士の干渉点を計算して、この干渉点を制御格子の頂点とし、必要な属性を制御格子に付加して、すべての制御格子の頂点を求めた後に、隣同士のループの頂点を結んだ直線稜線を生成し、これらの直線稜線により形成される立体の制御格子データを出力することを特徴とするモデリング方法。
【請求項７】
請求項６に記載のモデリング方法において、前記入力した変形対象立体データの分割すべきループについては、該ループにつながる稜線を削除してから制御格子を生成し、該生成された制御格子の頂点には重み情報の属性を付加することを特徴とするモデリング方法。
【請求項８】
請求項６に記載のモデリング方法において、前記入力した変形対象立体データの鋭い頂点については、該頂点を制御格子中に残し、前記頂点に接続する稜線に参照属性を付加することを特徴とするモデリング方法。
【請求項９】
請求項６に記載のモデリング方法において、前記入力した変形対象立体データが穴を表すループ（Ｃループ）を含む場合には、該Ｃループを通常の面を表すループ（Ｐループ）に変換して制御格子を生成し、次に、前記Ｃループ及び該Ｃループが属するＰループに対応して生成された制御格子の頂点に、前記両ループの関係を属性として付加することを特徴とするモデリング方法。
【請求項１０】
変形対象立体の形成および自由形状変形を行って、３次元形状を形成するモデリング方法を実行するためのモデリングプログラムを記録した記録媒体であって、前記３次元形状を表す制御格子データを入力し、前記入力した制御格子データのすべての稜線について、該稜線の両側の面のそれぞれの中心点を計算し、この２つの中心点と該稜線の中点を制御点とする１本の境界曲線を生成し、前記制御格子の各頂点に対して、該頂点につながる稜線に対応した前記境界曲線からなる閉じた曲線列を生成し、前記生成された閉じた曲線列から形成される曲面について、隣接する曲面間の境界曲線上のすべての点で接平面が一致するように、自由曲面を内挿して変形対象立体を生成するモデリング方法をコンピュータに実行させるためのモデリングプログラムを記録したコンピュータ読取り可能な記録媒体。
【請求項１１】
変形対象立体の形成および自由形状変形を行って、３次元形状を形成するモデリング方法を実行するためのモデリングプログラムを記録した記録媒体であって、前記３次元形状を表す変形対象立体データを入力し、前記入力した変形対象立体データのループごとに、該ループの頂点につながる２本の稜線について、端点の一階微分ベクトルを計算して頂点位置での接平面を計算し、計算された接平面同士の干渉点を計算して、この干渉点を制御格子の頂点とし、必要な属性を制御格子に付加して、すべての制御格子の頂点を求めた後に、隣同士のループの頂点を結んだ直線稜線を生成し、これらの直線稜線により形成される立体の制御格子データを出力するモデリング方法をコンピュータに実行させるためのモデリングプログラムを記録したコンピュータ読取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、モデリング方法および記録媒体に関し、特に、変形対象立体の丸め操作方法および逆丸め操作方法を用いたモデリング方法に関するものである。
【０００２】
【従来の技術】
近年、コンピュータによる情報操作の速度向上はめざましく、様々な応用が試みられている。その中でも、３次元ＣＧ（Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ）は映画やテレビ、あるいはゲームなどで日常的に目にする技術となった。最近では、滑らかな曲面を多用したＣＧが多く見られ、人体や動物など複雑な曲面によって構成される形状が表現されている。こうした映像では、その変形対象立体の形成にとどまらず、自由な変形によって様々な動きが表現されている。このような、滑らかな曲面を用いたモデリングには、柔軟な変形操作が可能なモデリングシステムが必要不可欠である。
【０００３】
柔軟な変形操作を行うための手法としては、自由形状変形（Ｆｒｅｅ  Ｆｏｒｍ  Ｄｅｆｏｒｍａｔｉｏｎ，ＦＦＤ）が一般的である。ＦＦＤとは、３次元ＣＧにおいて伸ばす、曲げる捻るといった形状の大域的な変形を表現するための概念である。その手法は、まず変形対象立体に対して、それを囲むように制御点群を格子状にならべ制御格子を生成し、さらに、制御格子を変形させて内部のパラメータ空間を変形させ、これを変形対象立体に写像するものである。この手法は、その後の研究者たちによって改良が加えられ、多くのＣＧアニメーション作成システムに採り入れられてきた。
【０００４】
【発明が解決しようとする課題】
しかし、この手法は変形対象立体の形状によっては制御の柔軟性に限界がある。そこで、従来から立体の形状を反映した制御格子を生成することで変形制御の柔軟性を向上させる手法を提案されているが、制御の柔軟性以外にも制御格子の定義が難しい、計算コストが高いなどの問題点が残る。
【０００５】
そこで、本出願人は、制御格子の形状から直接形状を定義し、これに対して変形を行うという、従来のＦＦＤとは逆のプロセスを用いたモデリング手法を提案する。また、制御格子から形状を定義するために丸め変形による多面体からの自由曲面生成の手法を応用した。この手法によれば、変形対象立体は制御格子の情報から簡単なアルゴリズムによって定義されるので、計算負荷の高いパラメータ空間変形の演算を行うことなく、変形を実現することができる。
【０００６】
本発明において、実現したモデリング手法は以下のような特徴を持つ。
１．局所変形が容易である
２．変形後の形状が直観的に予測しやすい
３．制御格子形状の自由度が高い
４．計算コストが低い
【０００７】
丸め変形による多面体からの自由曲面形状生成の手法を形状変形に応用する試みが行われ、一定の有用性が示されたが、いずれもあらかじめ制御格子形状を生成してからでないと一切の変形操作ができないため、適用範囲が限られていた。その他にも、変形対象立体を直接変形できない、周りの面が不連続な頂点を表現できないなどの問題点があった。本発明では、任意の立体に制御格子を自動的に生成することを可能とし、この手法の一般的なモデルへの適用を実現した。また、重み付け、位相細分、参照稜線の利用などにより従来表現できなかった幾何形状を扱えるようになった。
【０００８】
本明細書では、まず、システムの概要について説明、次に丸め操作、逆丸め操作、変形操作について説明する。さらに、本発明による手法を用いた応用例を示す。
【０００９】
【課題を解決するための手段】
請求項１の発明は、変形対象立体の形成および自由形状変形を行って、３次元形状を形成するモデリング方法において、前記３次元形状を表す変形対象立体データを入力し、前記入力した変形対象立体データのループごとに、該ループの頂点につながる２本の稜線について、端点の一階微分ベクトルを計算して頂点位置での接平面を計算し、計算された接平面同士の干渉点を計算して、この干渉点を制御格子の頂点とし、必要な属性を制御格子に付加して、すべての制御格子の頂点を求めた後に、隣同士のループの頂点を結んだ直線稜線を生成し、これらの直線稜線により形成される立体の制御格子データを出力することを特徴とするモデリング方法である。
【００１０】
請求項２の発明は、請求項１記載のモデリング方法において、前記入力した制御格子データの稜線に重み情報が付加されていた場合、該重み情報を、該稜線に対して生成した境界曲線の重み情報とすることを特徴とするモデリング方法である。
【００１１】
請求項３の発明は、請求項１記載のモデリング方法において、前記入力した制御格子データの頂点に重み情報が付加されていた場合、該頂点に対応する自由曲面を分割し、分割の際に生成された頂点を該重み情報に応じて移動させることを特徴とするモデリング方法である。
請求項４の発明は、請求項１記載のモデリング方法において、前記入力した制御格子データの稜線に参照属性が付加されている参照稜線の場合、該参照稜線のみが接続する制御格子の頂点を頂点Ｖとしたときに、前記頂点Ｖと該参照稜線とを除いたときにできる稜線で形成されるループに、該参照稜線の頂点Ｖとは反対側の頂点で構成する稜線をつなげてループを構成してから変形対象立体を生成するようにしたことを特徴とするモデリング方法である。
請求項５の発明は、請求項１乃至４のいずれかに記載のモデリング方法において、前記入力した制御格子データの頂点に、面上の穴を表す属性が付加されていた場合、変形対象立体を生成した後に、穴を表すＣループを生成することを特徴とするモデリング方法である。
【００１２】
請求項６の発明は、変形対象立体の形成および自由形状変形を行って、３次元形状を形成するモデリング方法において、前記変形対象立体のループごとに、該ループの頂点につながる２本の稜線について、端点の一階微分ベクトルを求め、これにより頂点位置での接平面を求め、求められた接平面同士の干渉点を計算して、この干渉点を制御格子の頂点とし、必要な属性を制御格子に付加し、すべての制御格子の頂点を求めた後に、隣同士のループの頂点を結んだ直線稜線を生成し、これらの稜線により形成される立体の制御格子データを作成することを特徴とするモデリング方法である。
【００１３】
請求項７の発明は、請求項６に記載のモデリング方法において、前記入力した変形対象立体データの分割すべきループについては、該ループにつながる稜線を削除してから制御格子を生成し、該生成された制御格子の頂点には重み情報の属性を付加することを特徴とするモデリング方法である。
【００１４】
請求項８の発明は、請求項６に記載のモデリング方法において、前記入力した変形対象立体データの鋭い頂点については、該頂点を制御格子中に残し、前記頂点に接続する稜線に参照属性を付加することを特徴とするモデリング方法である。
【００１５】
請求項９の発明は、請求項６に記載のモデリング方法において、前記入力した変形対象立体データが穴を表すループ（Ｃループ）を含む場合には、該Ｃループを通常の面を表すループ（Ｐループ）に変換して制御格子を生成し、次に、前記Ｃループ及び該Ｃループが属するＰループに対応して生成された制御格子の頂点に、前記両ループの関係を属性として付加することを特徴とするモデリング方法である。
【００１６】
請求項１０の発明は、変形対象立体の形成および自由形状変形を行って、３次元形状を形成するモデリング方法を実行するためのモデリングプログラムを記録した記録媒体であって、前記３次元形状を表す制御格子データを入力し、前記入力した制御格子データのすべての稜線について、該稜線の両側の面のそれぞれの中心点を計算し、この２つの中心点と該稜線の中点を制御点とする１本の境界曲線を生成し、前記制御格子の各頂点に対して、該頂点につながる稜線に対応した前記境界曲線からなる閉じた曲線列を生成し、前記生成された閉じた曲線列から形成される曲面について、隣接する曲面間の境界曲線上のすべての点で接平面が一致するように、自由曲面を内挿して変形対象立体を生成するモデリング方法をコンピュータに実行させるためのモデリングプログラムを記録したコンピュータ読取り可能な記録媒体である。
【００１７】
請求項１１の発明は、変形対象立体の形成および自由形状変形を行って、３次元形状を形成するモデリング方法を実行するためのモデリングプログラムを記録した記録媒体であって、前記３次元形状を表す変形対象立体データを入力し、前記入力した変形対象立体データのループごとに、該ループの頂点につながる２本の稜線について、端点の一階微分ベクトルを計算して頂点位置での接平面を計算し、計算された接平面同士の干渉点を計算して、この干渉点を制御格子の頂点とし、必要な属性を制御格子に付加して、すべての制御格子の頂点を求めた後に、隣同士のループの頂点を結んだ直線稜線を生成し、これらの直線稜線により形成される立体の制御格子データを出力するモデリング方法をコンピュータに実行させるためのモデリングプログラムを記録したコンピュータ読取り可能な記録媒体である。
【００１８】
【発明の実施の形態】
３次元形状を大域的に変形する手法として自由形状変形が一般的である。この手法は、まず変形対象立体を内包する制御格子を定義し、これを変形することによりその変位を変形対象立体に反映することで変形を行うものであるが、制御格子の定義法、制御の柔軟性、計算コストなどの面で問題点があった。そこで本研究では、丸め操作による自由曲面生成の手法を応用し、曲面生成のもととなる多面体を制御格子として形状変形を制御するという新しい手法を発明した。これにより、計算コストを上げることなしに柔軟な変形を行うことを可能にした。丸め操作については従来の手法を拡張し、位相細分や重み指定による変形操作の充実を計った。また、丸めの逆操作を行うことにより、任意の立体に対し自動的に制御格子を生成することを可能とし、本手法の一般的なモデルへの適用を実現した。
本発明では、大きく分けて丸め操作と逆丸め操作、そして変形操作の３つの操作によりモデリングを行う。丸め操作は、直線稜線のみからなる立体から、変形の対象となる自由曲面を持った変形対象立体を生成する。逆丸め操作は、連続に接続された曲面からなる立体から、それを内包するよう直線稜線により構成される制御格子を生成する。
丸め操作あるいは逆丸め操作を実行することにより、システム中で制御格子と変形対象立体の関連付けが行われ、変形操作を行うことが可能となる。変形操作は原則的に制御格子に対して行われ、それに対応して変形対象立体が変形する。
【００１９】
以下、丸め操作、逆丸め操作、変形操作について詳しく述べる。
（丸め操作）
丸め操作は変形対象立体の生成を行うものである。丸め操作を実行すると、入力された変形対象立体は制御格子として定義され、生成された変形対象立体との関連付けが行われる。丸め操作への入力として、以下の種類が挙げられる。
・ユーザがモデリングした制御格子
・逆丸め操作により生成された制御格子
・変形操作により形状が変化した制御格子
なお、ユーザが制御格子形状をモデリングし、丸め操作の入力とする場合以外は、丸め操作はシステム内で自動的に実行されるため、ユーザがこれを意識する必要はない。
【００２０】
（逆丸め操作）
逆丸め操作は制御格子の生成を行うものである。逆丸め操作を実行すると、入力された変形対象立体は変形対象立体として定義され、生成された制御格子との関連付けが行われる。逆丸め操作への入力として、以下の種類が挙げられる。
・ユーザがモデリングした変形対象立体
・測定機から得られるデータを再構成したものなど、任意のソリッドモデル
・変形操作の過程で制御格子との関連性が失われた変形対象立体
変形操作の過程で変形対象立体をユーザが直接変形した場合は、制御格子と変形対象立体の関連性が失われる。この際はシステムが自動的に逆丸め操作を実行する。
【００２１】
（変形操作）
変形操作は、制御格子と変形対象立体がシステム内で関連付けられている状態で実行することができる。実際の操作は、制御格子の頂点を移動することにより行う。制御格子に対して変形操作が行われた際は、システムが自動的に丸め操作を実行し、新しい変形対象立体を生成する。なお、丸め操作と逆丸め操作は互いに可逆性を持つため、変形後のデータを保存する際には、制御格子の情報を書き出すだけで良い。このことは、複雑な曲面からなる立体データを、直線稜線のみから立体へデータ圧縮する機能としても用いることができる。
【００２２】
本発明において、以上の操作を使用してモデリングする際の流れは、次の通りである。ユーザが作成したモデル、あるいは測定機データから再構成されたソリッドモデルなどを入力とし、丸め操作または逆丸め操作により制御格子と変形対象立体の関連付けを行う。この後、変形操作によりモデルの変形を行い、完成したモデルの制御格子データを保存する。
【００２３】
図１は、本発明の概要を説明するための図である。
丸め操作とは、制御格子を入力として滑らかな曲面で囲まれた変形対象立体を生成する機能である。本発明では、重み付けと位相の細分化を行うことで従来の丸め操作の表現力を向上させることができる、また、逆丸め操作との対応を綿密にとることで、より一般的にモデルを扱うことが可能になった。
以下では、まず制御格子からの変形対象立体生成のアルゴリズムを示す。次に、制御格子の頂点に重みを付けることによって変形対象立体を変化させる方法を示す。続いて、逆丸め操作の過程で特殊な幾何形状を表現するための属性が付加された制御格子を扱う方法について述べる。
【００２４】
（制御格子からの変形対象立体生成）
丸め操作は制御格子を入力データとして、基本的に次のようなプロセスをとる。
図２は、境界曲線の生成方法を説明するための図で、まず、制御格子のすべての稜線について、それぞれに対応する１本の境界曲線を生成する。図２は制御格子の稜線Ｅ０の両側の面がＦ１，Ｆ２であることを示している。点Ｐ０は稜線Ｅ０の中点、点Ｇ１，Ｇ２はそれぞれ面Ｆ１，Ｆ２の中心である。ここで面の中心とは、それに含まれる頂点の座標の平均であると定義する。境界曲線は、これらＧ１，Ｐ０，Ｇ２の３点を制御点とする２次有理Ｂｅｚｉｅｒ曲線Ｃ０により定義される有理Ｂｅｚｉｅｒ曲線を用いることで、重み付けを用いた柔軟なモデリングを可能にする。この曲線の端点はＧ１，Ｇ２であり、点Ｇ１，Ｇ２における接線はＧ１Ｐ０，Ｇ２Ｐ０である。一般に、制御格子の任意の稜線Ｅｉに対してそれぞれ１本の曲線Ｃｉが生成される。
【００２５】
図３は、境界曲線列の生成方法を説明するための図で、図３において、Ｖ０は制御格子の頂点、Ｅ０，Ｅ１，Ｅ２はＶ０につながる稜線をあらわしている。すると、Ｅ０，Ｅ１，Ｅ２それぞれについて上記の規則から曲線Ｃ０，Ｃ１，Ｃ２が生成され、これらは閉じた曲線列Ｂ０を成す。一般に、制御格子の任意の一つの頂点をＶｉ，Ｖｉの次数をｎとするとｎ本の２次有理Ｂｅｚｉｅｒ曲線Ｃ０…Ｃｎ−１からなる閉じた曲線列Ｂｉが定義される。ここで、Ｖｉの次数とはＶｉにつながる稜線の本数を表す。この過程を、制御格子のすべての頂点に対して繰り返すことにより、自由曲面を持った変形対象立体を生成するためのモデルが定義される。このとき、一つの頂点Ｖｉに関して必ず対応する一つの曲面の境界曲線列Ｂｉが定義されていることになる。
【００２６】
次に、上記のように定義された境界曲線列から、自由曲面による変形対象立体を生成する。変形対象立体は、滑らかに接続された自由曲面から構成される。このため、任意の隣接する曲面間でＧ１連続曲面を生成する必要がある。ここで、Ｇ１連続な曲面とは、隣接する曲面間の境界曲線上の全ての点で接平面が一致している曲面のことである。この条件を満たすためには、まず３つ以上の境界曲線が集まる点で接平面が一致していなければならばい。ここで、境界曲線における接点の接平面が一致している状態とは、境界曲線の端点におけるすべての接線ベクトルが同一平面上にある状態のことである。制御格子の面が平面である場合、境界曲線の端点につながる曲線の接線ベクトルは制御格子の面上にのっている。したがって、境界曲線の端点における接平面は一致する。しかし、制御格子の面が平面でない場合、境界曲線の端点における接平面は一致しない。そこでまず、その面の平均法線ベクトルｎを求め、面の中心を通りｎに垂直な平面Ｆを設定する。そして、Ｆの中心を端点とする境界線の制御点をＦに射影し、接平面をＦに一致させる。
【００２７】
最後に、境界曲線列から自由曲面を生成し内挿する。一般に、自由曲面としては、Ｂｅｚｉｅｒ曲面やＣｏｏｎｓ曲面、もしくはＮＵＲＢＳ曲面がよく用いられる。しかし、これらの曲面はすべての曲面間でＧ１連続性を保つことが困難なことから、ここではＧｒｅｇｏｒｙパッチを採用した〔鳥谷浩志，千代倉弘明，３次元ＣＡＤの基礎と応用、共立出版，１９９１．〕。この曲面は両立性補正の性質を持つため、パラメータの局所的な調整によって曲面間の連続性を容易に保つことが可能である。
【００２８】
（頂点への重み付けによる変形）
丸め操作では、頂点に重みを付けることにより、変形対象立体の境界曲線と曲面を変形することが可能である。重みを付けることのできる頂点は、制御格子本来の頂点と丸め操作実行時に制御格子の稜線の中点に生成される頂点の２種類がある。制御格子の稜線の中点に生成された頂点へ付けられる重みは、そのままその稜線に対応する変形対象立体の境界曲線の重みとする。その際、逆丸め操作との対応を実現するため、重み付けにより変形された稜線に属性を付加する。
【００２９】
図４は、境界曲線に重み付加した例を示す。なお、重みを無限大にすることで、その部分において制御格子と変形対象立体とを一致させることが可能である。さらに、制御格子本来の頂点に重みを付けた場合、これに対応する自由曲面が分割され、分割の際に生成された頂点がその重みに対応して移動する。重みと分割の情報は、生成された頂点に属性として付加される。そして、逆丸め操作の際にこれらの情報が参照される。図５にすべての頂点に重み付けを施した例を示す。
【００３０】
（逆丸め操作との対応）
逆丸め操作においては、次のような変形対象立体の入力が可能になっている。
・Ｇ１連続でない曲面の接続を持った変形対象立体
・細分化されたループを持った変形対象立体
・Ｃループを持った変形対象立体
しかし、丸め操作の基本アルゴリズムだけでは上記のような変形対象立体を表現することはできない。そこで我々は、逆丸め操作との対応をとることでそれらの表現を可能にした。
【００３１】
（Ｇ１連続でない曲面の接続）
逆丸め操作により生成された制御格子には、Ｇ１連続でない曲面の接続を表現する属性が付加されていることがある。この場合、基本アルゴリズムのみで変形対象立体を生成してしまうと、全ての面がＧ１連続で接続されてしまう。そこで、基本アルゴリズムにより変形対象立体を生成する前に、もとの制御格子の稜線に付加されている属性を読みとる。この属性は参照属性と呼ばれ、その稜線を参照稜線として扱うことを意味する。参照稜線は、丸め操作を行う際に制御格子の稜線として扱われない。参照稜線が存在した場合は、システム内で次のようにループの中心と稜線の中点を定義する。
【００３２】
図６は、参照稜線を持った制御格子の例を説明するための図で、参照稜線をＥ０，Ｅ１，Ｅ２，…、それらのみが接続する頂点Ｖ、Ｅ０，Ｅ１，Ｅ２，…を除いたときにできる稜線で形成されるループをＬとしたとき、Ｖの位置をループＬの中心として定義する。さらに、Ｅ０，Ｅ１，Ｅ２，…の両端点のうちＶでない方の頂点をＶ０，Ｖ１，Ｖ２，…としたとき、Ｖ０，Ｖ１，Ｖ２，…につながるＬを構成する稜線をそれぞれ一本の稜線とみなす。そしてそれらＶ０，Ｖ１，Ｖ２を稜線の中点として定義する。その後、基本アルゴリズムにより丸め操作を行う。こうすることで、逆丸めとの正確な対応が実現する。
【００３３】
（細分化されたループ）
制御格子の頂点に重み付けをし、丸め操作により生成された変形対象立体に再び逆丸め操作を行った場合、その制御格子をさらに丸めてもそのままでは重みやループの細分が反映されない。そこで、基本アルゴリズムにより変形対象立体を生成した後、もとの制御格子の頂点に付加されている重みと分割の情報を参照し、ループを分割、重みにしたがって分割により生成された頂点を移動する。
【００３４】
（Ｃループ）
Ｃループとは、面上の穴を表す位相要素である。これに対し通常の面をＰループと呼ぶ。また、Ｃループは必ずひとつのＰループに属し、互いは親子関係にある。丸め操作によって変形対象立体にＣループを生成する必要がある場合は、頂点に属性が付加されている。基本アルゴリズムにより変形対象立体を生成した後、その属性を参照してＣループを生成する。
【００３５】
逆丸め操作とは、丸めの逆操作を行うことにより、連続に接続された曲面からのみからなる立体から、直線稜線のみで構成される制御格子を生成する機能である。これを用いれば、任意の立体に対し制御格子を用いた柔軟な変形を行うことが可能となる。
扱うことのできるモデルの一般性を向上させるために、逆丸め操作と丸め操作は綿密な対応付けがなされている。丸め操作での重み付けや位相細分の情報は制御格子の位相要素に属性情報として保存され、丸め操作の際にこれを参照する。Ｃループや、周りのループの接続が不連続な頂点を持つ立体については、制御格子の位相構造への反映と属性情報の付加により、丸め操作との可逆性を保っている。
【００３６】
（曲面形状からの制御格子生成）
制御格子の生成は、変形対象立体のループごとに頂点を定義し、必要な属性を付加した上でこれを結んだ稜線を生成する、といったプロセスで行われる。以下に曲面形状からの制御格子を生成する基本的な手順について示す。
【００３７】
（頂点の定義）
図７は、頂点定義の概念を示す図で、制御格子の頂点は、変形対象立体のループごとに定義される。ループの頂点につながる２本の稜線について、端点の一階微分ベクトルを求め、これにより頂点位置での接平面を求める。こうして求められた平面から干渉点を計算し、これを頂点として定義する。複数の干渉点が定義された場合は、この平均を計算する。接平面が一致したり、干渉線しか定義できないケースなど、干渉点が求まらない場合は、ループの頂点との境界曲線の制御点の平均から定義される一点を干渉要素に射影し、制御格子の頂点とする。
【００３８】
（属性付加）
ループに付加された色やテクスチャなどの属性は制御格子に付加され、丸め操作を用いた変形を行った後でもそれらは保存される。また、丸め操作による重みや位相細分の情報も同様に属性として保存される。
【００３９】
（稜線の生成）
全ての頂点を定義した後に、となり同士のループで定義された頂点を結んだ直線稜線を生成する。すなわち、制御格子の稜線は変形対象立体の稜線と交差して生成される。これらの稜線により形成される立体が制御格子となる。図８に変形対象立体から制御格子を生成した様子を示す。
【００４０】
（特殊形状の表現）
これまで述べてきた逆丸めの操作のアルゴリズムは、基本的にすべての面がＧ１連続で接続されており、ＣループやＴノード（３本の稜線がつながっており、うち２本が連続に接続されている頂点）を持たない立体に対する適用を想定している。したがって、これらの条件を満たさない立体についても丸め操作との可逆性を保ちつつ逆丸め操作を行うためのアルゴリズムが必要である。以下では、これらのケースの操作について述べる。
【００４１】
（位相細分されたループ）
丸め操作の重み付けにより生成される、位相細分されたループについては、あらかじめ属性が付加されている頂点を参照し、それにつながる稜線を削除してから制御格子を生成する。位相細分されていたループに対応する制御格子の頂点には属性情報が付加され、再び丸め操作を行ったときに可逆性が保証される。図９に位相細分された変形対象立体から制御格子を生成した例を示す。
【００４２】
（曲面接続の不連続な部分）
円柱や円錐形状など、すべての頂点が接平面連続ではない立体について通常の逆丸め操作を行うと、制御格子は幾何的に変形対象立体の特徴を充分に反映することができない。また、生成された制御格子形状から丸め操作により生成される変形対象立体は全ての面がＧ１連続で接続され、もとの幾何形状との可逆性は保証されない。これを解決するために、変形対象立体の鋭い頂点についてはこれを制御格子中に残し、その頂点に接続する稜線に参照属性を付加する。丸め操作時にこの属性を考慮することにより、可逆性を持たせることを可能とした。
【００４３】
図１０に通常のルールで円柱から制御格子を生成した例を、図１１に参照要素を利用して制御格子を生成した例を示す。図中、太い線で表される稜線に参照属性が付加されている。
【００４４】
（Ｃループ）
ＣループはまずＰループに変換してから基本的なアルゴリズムで制御格子を生成する。制御格子生成後、変形対象立体のＣループおよびその親のＰループであった面にそれぞれ対応して生成された制御格子の頂点に、お互いの関係を属性として付加する。このことにより、Ｃループを持つ立体を逆丸め操作の対象とすることを可能にした。
【００４５】
変形操作とは、制御格子の任意の頂点を移動することにより、変形対象立体の形状を変形させる機能である。変形操作は、制御格子と変形対象立体が対になっている状態で行うことができる。制御格子の頂点を移動した場合、変形後の制御格子の形状に対して自動的に丸め操作が実行される。この際、変形対象立体のループのうち、変形前と境界曲線形状が変化するもののみについて曲面を再生成する。したがって、変形操作の影響が変形対象立体全体におよぶことはない。
図１２（Ａ），図１２（Ｂ）に制御格子の頂点移動により変形対象立体を変形した例を示す。
図中で制御格子は太い線で表されている。
【００４６】
図１３は、本発明の丸め操作及び逆丸め操作方法をコンピュータで実施するための装置の一例を示すものである。
ユーザはキーボード１０等の入力手段の操作により、変形対象立体の制御格子を定義するデータ又は変形制御対象立体を表す図形データ、例えば、ユーザが作成した立体、あるいは測定機データから再構成されたソリッドモデルなどを直接又は、適宜ＲＡＭ５０、外部の記憶装置６０から中央処理装置（ＣＰＵ）２０に入力するとともに、ＣＰＵに処理操作を指示する。ＣＰＵはＲＯＭ４０に記録されたプログラムによって入力されたデータに基づき丸め又は逆丸め操作に必要な演算処理を行う。その結果は表示装置３０に表示される。
【００４７】
図１４は、本発明の丸め及び逆丸め操作により行うモデリングのための動作フローを示している。
前記のようにユーザが作成した立体、あるいは測定機データから再構成されたソリッドモデルなどを入力し、丸め操作１０１又は逆丸め操作１０２により制御格子と変形対象立体との関連付けを行う１０３。その後変形操作により変形対象立体の変形を行い１０４、そのデータを保存する１０５。
【００４８】
【発明の効果】
本発明によれば、丸め操作方法において、制御格子に対し参照属性を付与したため、丸め操作の表現力を向上させ、また、逆丸め操作との対応を綿密にとることができるため、一般的にモデルを扱うことが可能となった。
【００４９】
また、逆丸め操作により、任意の立体の制御格子を自動的に生成することができる。また、複雑な曲面からなる立体データを直線稜線からなる立体データへ圧縮することができ、データ処理の負担を軽減できる。
【００５０】
また、変形対象立体の位相細分されたループについて該ループの頂点につながる稜線を削除してから制御格子を生成するため、再び丸め操作を行ったときに可逆性が保証される。
【００５１】
また、変形対象立体の鋭い頂点、つまり不連続な曲面接続を含む変形対象立体の頂点について、制御格子中に残し、その頂点に接続する稜線に参照属性を付加したため、丸め操作時にこの属性を考慮することにより、丸め操作との可逆性をもたせることができる。
【００５２】
また、面上に穴がある変形対象立体の場合であっても、逆丸め操作を行うことができる。
【図面の簡単な説明】
【図１】本発明のシステムの概要を示す図である。
【図２】丸め操作における境界曲線生成を説明する図である。
【図３】丸め操作における境界曲線列の生成を説明する図である。
【図４】境界曲線に重みを付した状態を示す図である。
【図５】すべての頂点に重みを付した状態を示す図である。
【図６】参照稜線を持った制御格子を示す図である。
【図７】制御格子の頂点定義の概念を説明するための図である。
【図８】変形対象立体から生成した制御格子を示す図である。
【図９】位相細分された変形対象立体から生成した制御格子を示す図である。
【図１０】変形対象立体から基本アルゴリズムで生成した制御格子を示す図である。
【図１１】変形対象立体から参照要素を利用して制御格子を生成した例を示す図である。
【図１２】制御格子を利用した変形対象立体の変形を実行した例を示す図であって、図１２（Ａ）は変形前、図１２（Ｂ）は変形後を示す。
【図１３】本発明を実施するシステムを説明する図である。
【図１４】本発明の丸め及び逆丸め操作方法を用いたモデリングのための動作フローを示す図である。
【符号の説明】
１０…キーボード、２０…中央処理装置（ＣＰＵ）、３０…表示装置、４０…ＲＯＭ、５０…ＲＡＭ、６０…外部記憶装置。
【図１】
0003597360.tif 000002
【図２】
0003597360.tif 000003
【図３】
0003597360.tif 000004
【図４】
0003597360.tif 000005
【図５】
0003597360.tif 000006
【図６】
0003597360.tif 000007
【図７】
0003597360.tif 000008
【図８】
0003597360.tif 000009
【図９】
0003597360.tif 000010
【図１０】
0003597360.tif 000011
【図１１】
0003597360.tif 000012
【図１２】
0003597360.tif 000013
【図１３】
0003597360.tif 000014
【図１４】
0003597360.tif 000015