説明

ソリッド/サーフェースモデルから外形線を抽出する方法及びコンピュータソフトウエアプログラム

【解決課題】 3次元オブジェクトの外形線を、より少ないコンピュータ資源で高品質に抽出できる方法を提供する。
【解決手段】 ソリッド/サーフェースモデル3次元オブジェクトの3次元形状データを2次元に投影処理し、当該ソリッド/サーフェースモデルの2次元シルエット線を求める工程と、前記3次元形状データを2次元に投影して画像処理し、2次元描画領域の外形を求める工程と、前記で求めた2次元描画領域の外形に基づいて前記2次元シルエット線から当該ソリッド/サーフェースモデルの2次元外形線候補となるシルエット線を絞りこむ工程と、前記各外形線候補のシルエット線に基づき、前記描画領域を囲むポリラインによる閉ループを生成し、当該閉ループを構成するポリラインを前記ソリッド/サーフェースモデルの外形線として特定する工程と、を有する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、ソリッド/サーフェースモデルから外形線を抽出する方法及び、その方法を実施するためのコンピュータソフトウエアプログラムに関する。
【背景技術】
【0002】
近年、製造業などで3次元CAD/CAMシステム等の普及が進み、3次元データを設計プロセスだけではなく、下流工程の業務プロセスで利用するシーンが増えてきている。
【0003】
設計プロセス以外で3次元モデルを活用する方法の一つとして、3次モデルから2次元ベクトルデータを生成し、イラスト化するものがある。これによれば、人手によりマニュアル等の挿絵を作成する用途に3次元モデルから自動的に生成した2次元ベクトルデータを利用することが可能となる。また、生成されたベクトルデータを編集ソフトで2次加工し、容易に付加価値を付けることも可能である。
【0004】
3次元モデルから2次元イラスト図を生成する手法としては、一般的に、スキャンラインアルゴリズム及びZバッファ法(非特許文献1)を併用して線データを取り出す手法が知られている。しかし、この手法で出力した2次元データにおいては、線群を任意に出力しているだけのものが多く、編集ソフト等でペイントする際に、閉領域が閉領域として認識されずに意図どおりにペイントできないといった問題がある。特に操作説明書や組み立てマニュアル等のマニュアル類で利用されるイラスト図の生成では2次元データ全体の領域にわたって色を塗る用途が最低限必要である。しかし、一般には閉領域を意識してベクトルデータが生成されるわけではないため、ベクトルデータにペイントを施す場合、編集ソフト側で閉領域を構成すると思われる線群を順番に選択し、これを閉領域化するというかなり細かい作業工程が必要となっている。
【0005】
一方、閉領域を生成するための他の手法として、Freemanのチェインコード(非特許文献2)等を用い、画像データから外形画素を取り出し、それを snakes(非特許文献3)などにより曲線化する方法がある。しかしながら、線を抽出するための元となるデータに画像を用いているため、テクニカルイラストといった精度の求められる用途には利用することはできない。
【0006】
また、一般的に、3次元モデルから2次元ベクトルデータを正確に生成する場合には、まず、曲面をポリゴン分割し、稜線を示すポリゴンの境界線に対し、面の位置関係を考慮した陰線処理手法を施すことが必要になる。2次元ベクトルデータを生成する技術としては、Linlinら(非特許文献4)の手法は色情報を利用して特徴線を求めているが、この手法も元となるデータは画像データであり、精度を求められる用途には適さない。また、渡辺ら(非特許文献5)の手法は2次元ベクトルデータを取りだす手法ではないが、ポリゴンメッシュから稜線の接続情報を利用して、特徴線を特定する手法である。渡辺らの手法は、3次元データ上で面稜線や、面の端点を特定することは可能であるが、2次元化した図形にはそのままでの利用は不可能である。
【0007】
他に有効な手段の1つとして、Zバッファ法(非特許文献1)の利用例が挙げられる。Zバッファ内の2次元空間は一般に、離散的距離でのみ定義可能な距離空間を用いる。複数の要素が、1つの画素内に現れる場合、離散的距離を用いて外形線を特定することは、困難な問題である。例えば図18では、2本の稜線が近接しており、1つの画素内に含まれている様子である。
【0008】
このような問題を解決する方法として、画素の解像度を上げることが考えられるが、メモリの消費量・処理速度とトレードオフになる。また、ポリゴンから抽出したポリラインに基づいて、高品質な外形線を抽出する場合には、ポリゴン分割の精度を上げることも必要になるが、こちらメモリの消費量・処理速度とトレードオフになる。
【0009】
この発明は、このような事情に鑑みてなされたものであり、少ないコンピュータ資源で3次元グラフィックデータから高精度な外形線を抽出するための方法を提供することを目的とするものである。
【0010】
なお、本願発明と関連する先行特許出願としては下記のものがある。
【0011】
まず、特許文献1(特開2007-128173号公報 「CADを用いた面積算出方法」)には、外形線を抽出してからその外形線に囲まれる面積を求める方法が開示されている。しかしながら、この発明は、複数の外形線候補からオペレータが手動で正しい線を1以上入力する必要があるアルゴリズムが必須の構成要素であり、その分オペレータに熟練が要求されるという欠点がある。
【0012】
特許文献2(特開平7-249053号公報 「CAD を用いた投影面積算出方法」)に開示された発明は、上記非特許文献1と同様に外形線を抽出してからその面積を求めるものである。この手法の場合、3次元データを適当な間隔の平面で切断し、その複数の断面上の点をひとつの平面に投影後、頂点を接続することで外形線を求めている。しかしながら、この手法の場合は、3次元データ上にサンプル点を求めてそのサンプル点を補間した外形線を求めていることとなる為、データ精度が離散的になり、外形線の精度が劣る欠点がある。
【0013】
【特許文献1】特開2007-128173号公報 「CADを用いた面積算出方法」
【特許文献2】特開平7-249053号公報 「CAD を用いた投影面積算出方
【非特許文献1】D.シェレイナー他(D. Shreiner, M. Woo, J. Neider, and T. Davis)著, "Opengl Programming Guide: The Official Guide to Learning Opengl, Guide 5 edition." Addison-Wesley Professional, 2005.
【非特許文献2】H.フリーマン(H. Freeman)著: "Computer Processing of Line-Drawring Images", Computing Surveys, Vol.6, No.3, pp313-321, 1991.
【非特許文献3】M.カス他(M. Kass, A. Witkin, D. Terzopoulos)著, "Snakes: Active Conour models, " Int. J. Comput. Vision., Vol.1, No.3, pp.321-331, 1988.
【非特許文献4】リンリン他(Linlin Jing, Kohe Inoue, Kiichi Urahama)著,"Generationg, Illustration Images with Isoluminant Colors, IWAIT 2006 pp575-596, 2006.
【非特許文献5】渡辺大地、千代倉弘明著:任意三角形メッシュからの特徴稜線抽出, 電子情報通信学会論文誌D-II Vol.J83-D-II No.5, pp. 1344-1352, 2000 年5 月.
【発明の開示】
【課題を解決するための手段】
【0014】
上記課題を解決するため、本発明の第1の主要な観点によれば、ソリッド/サーフェースモデル3次元オブジェクトの3次元形状データを2次元に投影処理し、当該ソリッド/サーフェースモデルの2次元シルエット線を求める工程と(シルエット線生成部)、前記3次元形状データを2次元に投影して画像処理し、2次元描画領域の外形を求める工程と(画像処理部)、前記で求めた2次元描画領域の外形に基づいて前記2次元シルエット線から当該ソリッド/サーフェースモデルの2次元外形線候補となるシルエット線を絞りこむ工程と(外形線候補絞り込み部)、前記各外形線候補のシルエット線に基づき、前記描画領域を囲むポリラインによる閉ループを生成し、当該閉ループを構成するポリラインを前記ソリッド/サーフェースモデルの外形線として特定する工程と(外形線出力部)を有することを特徴とする方法が提供される。
【0015】
このような構成によれば、3次元オブジェクトの2次元シルエット線を画像処理を利用して絞り込むようにしたから、前記3次元オブジェクトの外形線を少ないコンピュータ資源で効率良くかつ高品質で抽出することができる。
【0016】
ここで、この発明の1の実施形態によれば、前記2次元描画領域の外形を求める工程は、形状が描画されている画素と、非描画の画素とを区別可能にメモリ上にプロットし、注目する画素とその8近傍の画素とを反時計/時計回りで比較し、形状が描画されている画素を発見した場合は、その画素を次の注目する画素として逐次追跡を行い、最初に注目した画素を検出するまで検出を続けることで、閉じた描画領域を特定し、それにより描画領域の外形を特定するものである。
【0017】
また、他の1の実施形態によれば、前記2次元外形線候補となるシルエット線を絞り込む工程は、描画領域の外形を構成する画素の近傍にあるシルエット線を外形線候補として絞り込むものである。
【0018】
また、さらなる他の1の実施形態によれば、前記外形線を特定する行程は、そのシルエット線を挟む領域のどちら側に描画領域があるかを特定する情報を求める工程をさらに有し、そのシルエット線のどちら側に描画領域があるかの情報に基づき、前記多数のシルエット線から2次元外形線候補となるシルエット線を絞りこむ工程を有するものである。この場合、前記シルエット線を挟む領域のどちら側に描画領域があるかを特定する情報を求める工程は、前記外形線候補のシルエット線に関する交線計算を行い、すべての線分を交点で切断し、その線分およびその線分の頂点にそれらの位置を特定する情報とそのどちら側に描画領域を示すベクトル情報を付加するものであることが望ましい。
【0019】
さらなる他の1の実施形態によれば、前記外形線を特定する行程は、前記各外形線候補が複数競合する場合、各外形線候補の位置関係に基づいて外形線候補から外形線を特定する工程を有するものである。この場合、頂点から伸びる外形線候補が3以上あるときには、同じ側に描画領域を有する1組の外形線候補を外形線として特定するものである。また、同じ側に描画領域を有する外形線候補が複数組あるときには、描画領域が最大となる組をその頂点に対する1組の外形線候補として出力するものであることが好ましい。また、上記行程は、外形線候補のうち、閉ループを構成する外形線候補を外形線として特定する工程であることがさらに望ましい。
【0020】
この発明のさらなる他の1の実施形態によれば、この方法はさらに、前記外形線を特定する工程により生成されたポリラインの外形線を曲線に近似する工程を有するものである。この場合、前記曲線に近似する工程は、外形線候補を求める際に、3次元ソリッド/サーフェースモデル中の、前記外形線候補に対応するポリゴンの法線ベクトルを取得し、各外形線候補に対応付けて記憶する工程と、この法線ベクトルから、外形線の接線ベクトルを求める工程と、前記で求めた接戦ベクトル同士を比較することで、接続する複数の外形線が同一の曲線であるかを判断しグループ化し、グループ化したポリラインの頂点と、頂点における接戦ベクトルを求める工程と、上記グループ化したポリラインの頂点と頂点における接線ベクトルに基づいて3次ベジェの複合曲線を生成する工程とを有するものであることが好ましい。
【0021】
また、この発明の第2の主要な観点によれば、コンピュータハードウエアに読み込まれ実行されることでソリッド/サーフェースモデル3次元オブジェクトの2次元外形線を抽出するコンピュータソフトウエアプログラムであって、前記コンピュタハードウエアに、前記ソリッド/サーフェースモデル3次元オブジェクトの3次元形状データを2次元に投影処理し、当該ソリッド/サーフェースモデルの2次元シルエット線を求めさせる指令を発するシルエット線生成部と、前記3次元形状データを2次元に投影して画像処理し、2次元描画領域の外形を求させる指令を発する画像処理部と、前記で求めた2次元描画領域の外形に基づいて前記2次元シルエット線から当該ソリッド/サーフェースモデルの2次元外形線候補となるシルエット線を絞りこませる指令を発する外形線候補絞り込み部と、前記各外形線候補のシルエット線に基づき、前記描画領域を囲むポリラインによる閉ループを生成し、当該閉ループを構成するポリラインを前記ソリッド/サーフェースモデルの外形線として特定させる指令を発する外形線出力部とを有するコンピュータソフトウエアプログラムが提供される。
【0022】
この第2の観点による発明によれば、前記第1の観点に係る方法を実施することができる。
【0023】
この発明の上記した以外の特徴及び顕著な効果は、以下の発明の詳細な説明の項及び図面を参照することにより、当業者にとって容易に理解することができる。
【発明を実施するための最良の形態】
【0024】
以下、この発明の最良の実施形態をこの明細書に添付した図面を参照して説明する。
【0025】
図1は、この発明の実施形態を示す外形線抽出システム1を示す概略構成図である。
【0026】
このシステム1は、CPU2、RAM3、モデム等の通信デバイス4、入出力装置5(ディスプレイ6、キーボード7、マウス等)が接続されてなるバス9に、データ格納部10およびプログラム格納部11が接続されてなる。
【0027】
前記データ格納部10およびプログラム格納部11は、この実施形態では、ハードディスクなどの固定式記憶媒体で構成されており、これらに格納された各データおよびプログラムは、前記RAM3上に呼び出されて前記CPU2によって実行されることで、この実施形態の機能を発揮する。
【0028】
前記プログラム格納部11には、3次元オブジェクト空間制御部13と、3次元オブジェクト操作部14と、描画処理部15と、オブジェクト操作情報入力部16と、シルエット線生成部17と、シルエット線情報付加部18と、外形線候補絞り込み部19と、外形線特定部20と、ポリライン曲線化部21とが格納されている。
【0029】
またデータ格納部10には、3次元グラッフィクデータ23と、外形線候補抽出用画像処理メモリバッファ24と、処理後の2次元外形線データ25とが格納される。
【0030】
以下、この装置の構成及び機能を、その処理動作と共に、図2に示すフローチャートを参照しつつ説明する。図2中の符合S1〜S14は、以下の説明中における各ステップS1〜ステップS14に対応する。
【0031】
3次元グラフィックデータの前処理
まず、ステップS1で外形線生成制御情報の取得が行われる。
【0032】
このステップS1においては、まず、3次元オブジェクト空間制御部13が、3次元オブジェクト操作部14の指令に基づき、3次元形状データ23をCADカーネルに読み込む。そして、前記描画処理部15が前記ディスプレイ7上に上記3次元グラフィックスデータ23をレンダリングし、前記3次元グラフィックデータに係る3次元オブジェクトをディスプレイ7上に表示する。図3は、その表示例である。
【0033】
ここで、ユーザは、例えばマウスポインタ等からなるオブジェクト操作情報入力部16を操作することで、前記3次元オブジェクト操作部14を介し、ディスプレイ7上に表示される3次元オブジェクトの姿勢を操作することができる。たとえば、3次元オブジェクトの回転、倍率表示、視点変更等の操作を行うことができる。
【0034】
このようにして、外形線を取り出すための3次元オブジェクトの姿勢や視点が決まると、描画対象となっている面や稜線の情報が前記空間制御部13により取得され外形線生成制御情報として出力されることになる。図4は、この状態を示す概念図である。
【0035】
ついで、ステップS2〜S6で、前記シルエット線生成部17が、前記外形線生成制御情報に基づいて、3次元グラフィックモデルのシルエット線を取得する。
【0036】
これらのステップS2〜S6を説明する前に、まず、「外形線」及び「シルエット線」の概念について説明する。
【0037】
この明細書で「外形線」とは、図5に26で示すように、2次元空間においての描画領域と非描領域の境界線であると定義される。一方、「シルエット線」とは3次元モデルの可視な部分と不可視な部分の境界線と定義される。例えば、図4に示すような複雑な形状の3次元オブジェクトの場合、突起部分の裏側は不可視な部分となるから、シルエット線は、図5で示す外形線の描画領域27内に本来多数存在していることになる。したがって、外形線26は必ず物体のシルエット線から生成され、その部分集合であるということができる。
【0038】
図6A〜6Dは、その概念を分かりやすく示す模式図である。ここで、図6Aは処理対象の3次元オブジェクト28、図6Bはポリゴン分割を経て特定された線分群、図6Cはその線分群から特定されたシルエット線、図6Dはシルエット線から絞り込みを経て特定された外形線をそれぞれ表すものである。
【0039】
この処理で最終的に得たい図形は、図6Dに示すような閉ループ・ポリラインからなる外形線で囲まれた図であり、この発明の最も重要な特徴は、図6Cに示したシルエット線から図6Dの外形線を自動的に求めることにある。
【0040】
上記シルエット線を得るため、まず、3次元オブジェクト空間制御部13が前記外形線生成制御情報に基づいて3次元オブジェクト情報(ソリッド及び/又はサーフェースモデル)を取得し(ステップS2)、ついで、ポリゴン分割を行う(ステップS3)。また、同時に、前記ポリゴンを構成する境界線を分離する。このことで、ポリゴンを構成する各境界線が、始点と終点を持つ線分に分離される。
【0041】
次に、ステップS4で、Zバッファ法を用いた陰線処理を行い、見えない位置に隠れた線分(不可視線分)を処理対象から除去する。これにより図6Bに示すような結果が得られる。
【0042】
シルエット線は、このように見える位置にある線分(可視線分)のうち、3次元モデルの可視な部分と不可視な部分を分ける境界線ということであるから、ステップS5で、シルエット線生成部17が隣り合うポリゴン同士の関係から上記の条件を満たす線分をシルエット線として特定する。
【0043】
以下、このように特定されたシルエット線から、実際の外形線を求めることになるが、前述したように、図4のような実際の3次元グラッフィクモデルの場合、シルエット線は多数であり、すべてを外形線の候補として処理し、最終的に図5に示すような外形線26を得ようとすると、膨大なコンピュータ資源が必要となり、処理に時間もかかる。
【0044】
そこで、この発明の方法では、以下のステップを実行する。
【0045】
(1)シルエット線から画像処理によって外形線候補を絞り込む(ステップS6〜S11)。
【0046】
(2)絞り込まれたシルエット線(外形線候補)を閉ループ処理することで、外形線となるポリラインを特定する(ステップS11〜S13)。
【0047】
(3)外形線を構成するポリラインを曲線化する(ステップS14)。
【0048】
このことで、少ないコンピュータ資源でかつ、3次元グラフィックデータから、自動的に閉ループを構成する外形線を抽出することができることになる。
【0049】
以下、まず、外形線となるポリラインの取り出しを説明する。ついで、形線となるポリラインを曲線化する手法について述べていく。
【0050】
シルエット線からの外形線の絞り込み
まず、本手法を利用する前処理として、ポリゴンデータからのZバッファの構築と、Zバッファの画素に描画をした要素IDを格納するメモリバッファ24の生成はすでに済んでいるものとする。
【0051】
以下、本手法の手順を説明する。
【0052】
シルエット線の取り出し
前述したように、図6Cは、3次元オブジェクト27から取り出されたシルエット線を示すものである。
【0053】
繰り返しになるが、一般に、シルエット線は、3次元モデルの可視な領域と不可視な領域の境界を示す線分なので、多数のシルエット線が外形線で囲まれる描画領域内に存在することがある。特に、図4に示すように、実際の3次元グラフィックの場合、このようにして特定されるシルエット線は膨大な数になるため、まず外形線の対象となるシルエット線を絞り込む必要がある。
【0054】
シルエット線の向きを特定
したがって、ステップS5で特定されたシルエット線から、ステップS6〜S10で外形線候補を絞り込む。
【0055】
まず、シルエット線情報付加部18が、線分を挟むどちら側の領域が可視であるかの情報を、ステップS6で設定する。この場合、まず、隣り合う2つのポリゴンが同じ辺を共有している場合、「共有エッジ」と表すことにすると、図7で可視ポリゴンαの外形線となる線分が、この線の裏側にある不可視ポリゴンβとの共有エッジとなっている。このように共有エッジの両側の面の可視・不可視性を利用して、外形線で囲まれた領域の内側方向を示す情報を外形線(共有エッジ)に設定する。
【0056】
具体的には、外形線を表すポリゴンエッジが共有エッジの場合、共有エッジを境界とする可視となるポリゴンαにおいて、共有エッジの頂点となっていない頂点Aのある向きを、外形線に対して描画が行われている向きとして、共有エッジに設定する。図7において、太い線の部分を外形線とする、前述した、頂点Aのある向きを描画領域として外形線に設定するとは、線分P1−P2に対して、これと垂直なベクトルであり、P3(A)側に向かうベクトル(V)を保存するということである。
【0057】
ここで、
EV3=(P3−P2)/|P3−P2|
EV1=(P2−P1)/|P2−P1|
と表す。
【0058】
Ev1をP1を中心に時計回りにΠ/2回転したベクトルをEv2とすると、P3の方向を示すベクトルVは式(1)、(2)のようになる。
【0059】
V=Ev2 if(Ev2*Ev3>=0) (1)
V=−Ev2 if(Ev2*Ev3<0) (2)
ソリッドモデルでは必ず共有エッジを有するが、サーフェスモデルの場合、共有エッジが存在しないものもある。その場合、シルエット線を示すエッジをもつポリゴンのエッジを共有エッジ考えることにより同一の処理を行うことができる。
【0060】
上記の操作を行うことで、すべてのシルエット線に対し、共有エッジのどちら側に形状が存在するかを得ることができる。
【0061】
したがって、ステップS6で、前記シルエット線情報付加部18が、すべてのシルエット線に対してこのベクトルの情報を計算して付加する。
【0062】
シルエット線から外形線候補を選定
次に、ステップS7で、前記外形線候補絞り込み部19がシルエット線の線分IDを格納するメモリバッファと、同一のサイズの2値(0/1値)のメモリバッファ24をハードディスクに生成する。(形状が描画されている画素を1、非描画の画素を0とする。)
【0063】
ついで、ステップS8で、2値で表わされたZバッファから画素に基づいて外形線を生成する。この方法を示したのが、図8A〜8Fである。
【0064】
すなわち、図8Aに示すようなシルエット線を処理対象とする場合、図8Bが線分IDを格納するメモリバッファ、図8Cが2値のメモリバッファである。ついで、この2値のメモリバッファ(図8C)を処理対象として、注目する画素とその8近傍の画素とを半時計回りで比較し、値が1の画素を発見した場合は、その画素を次の注目する画素として逐次追跡を行い、最初に着目した画素を検出するまで検索を続けることで閉じた領域を生成する。図8Dは閉じた領域を構成する画素のマーキングを示す図である。ついで、画素に基づいた外形線の8近傍に相当するメモリバッファを逐次追跡することにより、外形線となる線分を含む画素を特定する(図8E、ステップS8)。
【0065】
そしてこのような画像処理の結果と、シルエット線とを比較し、画像処理で示される外形に最も近いシルエット線を、外形線候補として特定する。具体的には、ステップS5で特定されたシルエット線を上記画像処理された外形線上に2次元投影し(ステップS9)、画像処理による外形線とこの2次元投影されたシルエット線から、外形線に最も近い位置に存在するシルエット線を特定する(ステップS10)。このことによって特定されたシルエット線が外形線の候補として出力される。
【0066】
ここで、本発明が従来の技術と異なるのは、このような画像処理を外形線そのものを特定するために行うのではなく、シルエット線から外形線候補を絞り込む目的で使用する点である。実際の外形線の特定は、後に説明するステップS11〜S13で行われる。
【0067】
外形線候補からの選択
次に、ステップS11〜S13にて、外形線同士を連結する頂点の接続位置関係を表す構造を構築する。
【0068】
このために、ステップS11で、外形線候補となったポリラインを2次元化したものに対して交線計算を行い、すべての線分を交点で切断する。その後以下の属性情報をそれぞれの頂点、線分に対し付加する。
【0069】
以下は、この実施形態にてポリラインに付加する外形線抽出用のデータ構造である。
頂点情報:
・頂点座標
・頂点に接続する線分のインデックス
・[頂点位置での可視側の曲面の法線ベクトル]
・[頂点位置での非可視側の曲面の法線ベクトル]
線分情報:
・線分の視点側の頂点インデックス
・線分の終点側の頂点インデックス
・線分に対して領域の内側を表す方向
【0070】
次に、外形線特定部20は、ステップS12で、外形線の候補となるポリラインがある頂点から複数本伸びている場合に、描画領域と非描画領域の境界線となる線を特定し、正しい外形線を特定する。すなわち、前記で着目した線分の片側が描画領域、もう片側が非描画領域という特徴を利用して意図する線分を特定する。この実施形態ではまず、ある頂点から伸びている複数本の線分のうち、隣接する線分の描画領域の方向が逆の場合に、そのペアが外形線を示す2本の線分であると判断する。すなわち、ステップS6で求めた描画領域を示す方向ベクトルが逆を向いているペアを特定すればよい。
【0071】
もしこのようなペアが複数存在する場合は、次に示す方法で描画領域が最大となるペアを特定する。図9A,Bは、頂点Aにおいて、隣接する線分の描画領域の方向が逆のペアが複数存在する場合を示している。Ed0、Ed1、Ed2、Ed3の4本の線分が1つの頂点に接続されている。これらの線分のうちで、描画領域を示す方向ベクトルが逆を向いているペアは、Ed0・Ed3と、Ed1・Ed2の2つである。この場合、描画領域が最大となるEd0・Ed3のペアが求めるペアとなり、Ed1・Ed2は不要な外形線ということになる。
【0072】
また、このステップS12では、線分の端点に接続する線分のインデックス数が2つにならないもの(すなわち、どの線分にも接続されていないもの)を線分情報から削除する処理も行う。図10A,Bは、この例を示したものである。図10Aでは、線分Ed3の端点Vx2及び線分Ed4の端点Vx5がそれに相当するから、各線分Ed3,Ed4は、不要な枝葉の外形線であるとして除去される。
【0073】
この後、ステップS14で、再構成したポリラインの頂点・線分情報からポリラインの逐次追跡を行い、最初に選んだ頂点に戻るグラフが存在するものを、閉曲線をなすポリラインとして特定する(図10B)。この追跡をすべてポリラインについて行うことで、複数の閉曲線が存在する場合でも発見は可能となる。
【0074】
ポリラインの曲線化
上記したステップで求めた外形線は折線状のポリラインであるので、この実施形態においては、以下のステップで曲線化する。
【0075】
具体的には、ステップS13までで生成したポリラインに接線ベクトル等を追加することで3次ベジェの複合曲線を生成する。このために、同一の曲線となる区間を定義し、その区間の点列、接線ベクトルを利用して曲線補間を行う。
【0076】
以下では特に断りがない限り、法線ベクトルとはポリゴン平面の法線ではなく、元曲面の法線ベクトルを表すことにする。
【0077】
ステップ14−A
シルエット線に接線ベクトルを付加するために、3次元オブジェクトの各ポリゴンの法線ベクトルを利用する。具体的には、前記ステップS6(図7)において共有エッジを処理する際に、可視ポリゴン及び非可視ポリゴンの元曲面の法線ベクトルも合わせて保存しておく。
【0078】
ステップ14−B
このステップでは、ステップS13にて求めた外形線となるポリラインに対し、ステップ14−Aで保持している3次元の法線ベクトルを対応付ける。つまり各ポリラインの両端点での曲面の法線ベクトルが外形線情報に追加されることになる。この状態を示したのが、図11A、Bである。すなわち、外形線のもとになるシルエット線は、可視面と非可視面の境界であるため、線分の視点及び終点において、図14Bに示すように、それぞれ少なくとも2つの面の法線ベクトルが存在するはずである。この情報を外形線(シルエット線)の始点・終点情報に付加する。
【0079】
ステップ14−C
このステップでは、シルエット線の端点が先に行われた陰線処理等によって現れていない場合の補完処理を行う。
【0080】
すなわち、前記ステップ14−Bの処理は、外形線が生成元となるポリゴンエッジに一致した場合にのみ可能となる。しかし、陰線処理ではポリゴンのエッジが他のポリゴンのエッジに隠されることもあり、外形線の頂点はポリゴンエッジの端点以外の場所であることが多い。また、前記ステップS11にて外形線候補のポリラインは交点で頂点挿入を行うため、途中で切断されているポリラインが存在する。この場合、分断点における、法線ベクトルを算出する必要がある。
【0081】
図12A,Bは、その例を示したものである。この図12A,Bの拡大した部分(丸で囲んだ部分)では、裏側のシルエット線が手前のポリゴンに隠されて途中で見えなくなっている。このような場合、裏側のシルエット線は上記ポリゴンとの交点で切断され、シルエット線は途中で分断されている。
【0082】
ここで、図13のように頂点v1、v2間をt:1−tに内分する点vxの法線ベクトルnxは、v1の法線ベクトルをn1、v2の法線ベクトルをn2とした場合に、線形補間を利用して 式(3)のように定義できる。
nx=(1−t)n1+t n2 (3)
各ポリラインの端点では表面、裏面の法線ベクトルを保持しているため、このステップS14−Cでは、法線ベクトルを利用して表面、裏面とも(3)式で補間しておく。
【0083】
ステップ14−D
次に、法線ベクトルから、2次元における外形線の接線ベクトルを求める。外形線を構成する各ポリラインの両端点は表面、裏面の両方の法線ベクトルを持っている。図14に示すように、ポリラインの両端点が持つ2つの法線ベクトルの外積ベクトルを、描画平面に射影したベクトルが、各ポリラインの両端点における接線ベクトルとなる。
【0084】
ベクトルA=n1×n2
ベクトルB=n3×n4
ただし、元の曲面の法線ベクトルは単位ベクトルのため、すべて単位法線ベクトルで計算を行うこととする。また、外形線を境に曲面が折れていない場合、可視面と非可視面の曲面法線ベクトルが一致している。この場合、可視面の法線ベクトルと視線ベクトルとの外積ベクトルで代用する。
【0085】
ステップ14−E
次に、ステップ14−Dにて求めた各ポリラインの接線ベクトルと、ポリラインの接続情報を利用して、ポリラインの端点における接線ベクトルの角度により、ポリラインをグループ化する。本手法では、グループ化されたポリラインごとに曲線列を生成する。これを図15を参照して説明する。
【0086】
この図に示すように、各ポリラインは最大2本のポリラインと接続している。ここで、、ポリラインa、aの始点側に接続するポリラインb、終点側に接続するポリラインcを例にとって、ステップ14−Dの処理を説明する。
1)ポリラインaの始点側頂点v0と接続しているポリラインbの接続点v0での接線ベクトルを比較し、トレランス(所定の許容値)以下の差であれば、ポリラインaはポリラインbと同一の曲線の構成要素であると判断する。トレランス以上の差であれば、ここで曲線の区切りがあると判断する。
2)ポリラインaの終点側頂点v1と接続をしているポリラインcの接続点v1での接線ベクトルを比較し、トレランス以下の差であれば、ポリラインaはポリラインcと同一の曲線の構成要素であると判断する。逆にトレランス以上の差であれば、ここで曲線の区切りがあると判断する。
3)ポリラインaの始点v0をポリラインbのv2、ポリラインaの終点v0をポリラインcのv3とし、1)、2)の処理をすべてのポリラインについて行う。
【0087】
以上の処理により、一本の曲線に統合するべきポリラインがグループ化される。
【0088】
ステップ14−F
次に、前記ステップ14−Eでグループ化したポリラインの頂点と、頂点における単位接線ベクトルを利用して、3次ベジェの複合曲線を生成する。
【0089】
具体的には、n+1個の頂点からn個の複合曲線を生成する場合に、各頂点での単位接続ベクトルti(i=0・・・・n)、それぞれの単位ベクトルの大きさをxi(i=0・・・・n)、単位法線ベクトルをni(i=0・・・・n)、接続点での2曲線の接線ベクトルの比をki:1、頂点間ベクトルをAi(i=0・・・・n)とする。このとき、接続点で接続点で接線と曲率ベクトルが連続となる条件を示す下記の関係式(4)を利用する。また、接続点で区間曲線Riと、こ区間曲線の終点に接続をする曲線Ri+1に式(5)の条件を付け加えると条件式(6)が求められる。ただし、|Ai|/|Ai−1|若しくは1.0とする。
【式1】
【0090】

そして、すべての接続点に式(3)、両端点に式(6)を利用することで未知数xを求めることができる。すなわち、3次ベジエ曲線を求めることができる。
【0091】
図16〜17は、これにしたがって、外形線を曲線化した結果を示すものである。すなわち、図16に示す3次元モデルを、本実施形態の手法に沿って外形線を抽出した状態を示すものが図17A、それを曲線化した状態を示すものが17Bである。この図からも、ポリラインの品質が向上しているのがわかる。
【0092】
以上説明した、本発明の一実施形態によれば、本稿では曲面形状を含むソリッドモデル、サーフェースモデルに対し、それを近似するポリゴンデータを利用し、ポリゴンデータのシルエット線群と画像情報を抽出して、外形線を表す曲線を生成する方法を得ることができる。
【0093】
なお、この発明は上記一実施形態に限定されるものではなく、この発明の要旨を変更しない範囲で種々変形可能である。
【0094】
例えば、前記一実施形態は、ソリッドモデルを対象にして説明したが、サーフェースモデルに対しても当然適用可能である。
【図面の簡単な説明】
【0095】
【図1】図1は、この発明の一実施形態を示す概略構成図である。
【図2】図1は、この発明の一実施形態を示すフローチャートである。
【図3】図3は、処理対象となる3次元オブジェクトの例を示すものである。
【図4】図4は、処理対象となる3次元モデルを2次元に投影した状態を示す説明図である。
【図5】図5は、外形線を示す説明図である。
【図6】図6A〜Dは、外形線とシルエット線の関係を説明するための説明図である。
【図7】図7は、シルエット線の処理を説明するための説明図である。
【図8】図8A〜Eは、シルエット線を絞り込むための画像処理を示すための説明図である。
【図9】図9A、Bは、外形線候補の選択を説明するための説明図である。
【図10】図10A,Bは、外形線候補の枝葉処理を説明するための説明図である。
【図11】図11A,Bは、外形線を曲線化するための処理を説明する説明図である。
【図12】図12A,Bは、外形線を曲線化するための処理を説明する説明図である。
【図13】図13は、外形線を曲線化するための処理を説明する説明図である。
【図14】図14は、外形線を曲線化するための処理を説明する説明図である。
【図15】図15は、外形線を曲線化するための処理を説明する説明図である。
【図16】図16は、外形線を曲線化する例を説明するための説明図である。
【図17】図17A、17Bは、外形線を曲線化する例を説明するための説明図である。
【図18】図18は、従来の外形線抽出方法の欠点を説明するための説明図である。

【特許請求の範囲】
【請求項1】
ソリッド/サーフェースモデル3次元オブジェクトの3次元形状データを2次元に投影処理し、当該ソリッド/サーフェースモデルの2次元シルエット線を求める工程と、
前記3次元形状データを2次元に投影して画像処理し、2次元描画領域の外形を求める工程と、
前記で求めた2次元描画領域の外形に基づいて前記2次元シルエット線から当該ソリッド/サーフェースモデルの2次元外形線候補となるシルエット線を絞りこむ工程と、
前記各外形線候補のシルエット線に基づき、前記描画領域を囲むポリラインによる閉ループを生成し、当該閉ループを構成するポリラインを前記ソリッド/サーフェースモデルの外形線として特定する工程と、
を有することを特徴とする方法。
【請求項2】
請求項1記載の方法において、
前記2次元描画領域の外形を求める工程は、
形状が描画されている画素と、非描画の画素とを区別可能にメモリ上にプロットし、
注目する画素とその8近傍の画素とを反時計/時計回りで比較し、形状が描画されている画素を発見した場合は、その画素を次の注目する画素として逐次追跡を行い、最初に注目した画素を検出するまで検出を続けることで、閉じた描画領域を特定し、それにより描画領域の外形を特定するものである。
【請求項3】
請求項1記載の方法において、
前記2次元外形線候補となるシルエット線を絞り込む工程は、
描画領域の外形を構成する画素の近傍にあるシルエット線を外形線候補として絞り込むものである
を有する。
【請求項4】
請求項1記載の方法において、
前記外形線を特定する工程は、
前記シルエット線を挟む領域のどちら側に描画領域があるかを特定する情報を求める工程をさらに有し、
そのシルエット線のどちら側に描画領域があるかの情報に基づき、前記多数のシルエット線から2次元外形線候補となるシルエット線を絞りこむ工程を有する
ことを特徴とする方法。
【請求項5】
請求項4記載の方法において、
前記シルエット線を挟む領域のどちら側に描画領域があるかを特定する情報を求める工程は、
前記外形線候補のシルエット線に関する交線計算を行い、すべての線分を交点で切断し、その線分およびその線分の頂点にそれらの位置を特定する情報とそのどちら側に描画領域を示すベクトル情報を付加するものである
ことを特徴とする方法。
【請求項6】
請求項1記載の方法において、
前記外形線を特定する工程は、
前記各外形線候補が複数競合する場合、各外形線候補の位置関係に基づいて外形線候補から外形線を特定する工程を有する
ことを特徴とする方法。
【請求項7】
請求項6記載の方法において、
頂点から伸びる外形線候補が3以上あるときには、同じ側に描画領域を有する1組の外形線候補を外形線として特定するものである
ことを特徴とする方法。
【請求項8】
請求項7記載の方法において
さらに、同じ側に描画領域を有する外形線候補が複数組あるときには、描画領域が最大となる組をその頂点に対する1組の外形線候補として出力するものである
ことを特徴とする方法。
【請求項9】
請求項6記載の方法において、
外形線候補のうち、閉ループを構成する外形線候補を外形線として特定する工程を有することを特徴とする方法。
【請求項10】
請求項1記載の方法において、
さらに、
前記外形線を特定する工程により生成されたポリラインの外形線を曲線に近似する工程を有するものであることを特徴とする方法。
【請求項11】
請求項10記載の方法において、
前記曲線に近似する工程は、
外形線候補を求める際に、3次元ソリッド/サーフェースモデル中の、前記外形線候補に対応するポリゴンの法線ベクトルを取得し、各外形線候補に対応付けて記憶する工程と、
この法線ベクトルから、外形線の接線ベクトルを求める工程と、
前記で求めた接戦ベクトル同士を比較することで、接続する複数の外形線が同一の曲線であるかを判断しグループ化し、グループ化したポリラインの頂点と、頂点における接戦ベクトルを求める工程と、
上記グループ化したポリラインの頂点と頂点における接線ベクトルに基づいて3次ベジェの複合曲線を生成する工程と
を有するものである
ことを特徴とする方法。
【請求項12】
コンピュータハードウエアに読み込まれ実行されることでソリッド/サーフェースモデル3次元オブジェクトの2次元外形線を抽出するコンピュータソフトウエアプログラムであって、前記コンピュタハードウエアに、前記ソリッド/サーフェースモデル3次元オブジェクトの3次元形状データを2次元に投影処理し、当該ソリッド/サーフェースモデルの2次元シルエット線を求めさせる指令を発するシルエット線生成部と、前記3次元形状データを2次元に投影して画像処理し、2次元描画領域の外形を求させる指令を発する画像処理部と、前記で求めた2次元描画領域の外形に基づいて前記2次元シルエット線から当該ソリッド/サーフェースモデルの2次元外形線候補となるシルエット線を絞りこませる指令を発する外形線候補絞り込み部と、前記各外形線候補のシルエット線に基づき、前記描画領域を囲むポリラインによる閉ループを生成し、当該閉ループを構成するポリラインを前記ソリッド/サーフェースモデルの外形線として特定させる指令を発する外形線出力部とを有するコンピュータソフトウエアプログラム。
【請求項13】
請求項12記載のコンピュータソフトウエアプログラムにおいて、
前記画像処理部は、
形状が描画されている画素と、非描画の画素とを区別可能にメモリ上にプロットし、
注目する画素とその8近傍の画素とを反時計/時計回りで比較し、形状が描画されている画素を発見した場合は、その画素を次の注目する画素として逐次追跡を行い、最初に注目した画素を検出するまで検出を続けることで、閉じた描画領域を特定し、それにより描画領域の外形を特定するものである。
【請求項14】
請求項12記載のコンピュータソフトウエアプログラムにおいて、
外形線候補絞り込み部は、
描画領域の外形を構成する画素の近傍にあるシルエット線を外形線候補として絞り込むものである
を有する。
【請求項15】
請求項12記載のコンピュータソフトウエアプログラムにおいて、
前記外形線特定部は、
前記シルエット線を挟む領域のどちら側に描画領域があるかを特定する情報を求め、
前記シルエット線のどちら側に描画領域があるかの情報に基づき、前記多数のシルエット線から2次元外形線候補となるシルエット線を絞りこむものである。
【請求項16】
請求項15記載のコンピュータソフトウエアプログラムにおいて、
前記外形線特定部は、
さらに、
前記外形線候補のシルエット線に関する交線計算を行い、すべての線分を交点で切断し、その線分およびその線分の頂点にそれらの位置を特定する情報とそのどちら側に描画領域を示すベクトル情報を付加するものである。
【請求項17】
請求項12記載のコンピュータソフトウエアプログラムにおいて、
前記外形線特定部は、
前記各外形線候補が複数競合する場合、各外形線候補の位置関係に基づいて外形線候補から外形線を特定するものである。
【請求項18】
請求項17記載のコンピュータソフトウエアプログラムにおいて、
頂点から伸びる外形線候補が3以上あるときには、同じ側に描画領域を有する1組の外形線候補を外形線として特定するものである。
【請求項19】
請求項18記載のコンピュータソフトウエアプログラムにおいて
さらに、同じ側に描画領域を有する外形線候補が複数組あるときには、描画領域が最大となる組をその頂点に対する1組の外形線候補として出力するものである。
【請求項20】
請求項17記載のコンピュータソフトウエアプログラムにおいて、
外形線候補のうち、閉ループを構成する外形線候補を外形線として特定するものである。
【請求項21】
請求項12記載のコンピュータソフトウエアプログラムにおいて、
さらに、
前記外形線を特定する工程により生成されたポリラインの外形線を曲線に近似するものである。
【請求項22】
請求項21記載のコンピュータソフトウエアプログラムにおいて、
前記曲線近似部は、
外形線候補を求める際に、3次元ソリッド/サーフェースモデル中の、前記外形線候補に対応するポリゴンの法線ベクトルを取得し、各外形線候補に対応付けて記憶させ、
この法線ベクトルから、外形線の接線ベクトルを求めさせ、
前記で求めた接戦ベクトル同士を比較することで、接続する複数の外形線が同一の曲線であるかを判断しグループ化し、グループ化したポリラインの頂点と、頂点における接戦ベクトルを求めさせ、
上記グループ化したポリラインの頂点と頂点における接線ベクトルに基づいて3次ベジェの複合曲線を生成させるものである。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate