(58)【調査した分野】(Int.Cl.,DB名)
上記法線ベクトル設定部は、上記折れ線判定部により上記折れ線であると判定された線分の始終点のそれぞれにおいて、当該始終点を頂点として共有する複数の多角形メッシュのうち、上記折れ線に対して上記一方側に存在する多角形メッシュの法線ベクトルの平均値を上記第1の法線ベクトルとして設定するとともに、上記折れ線に対して上記他方側に存在する多角形メッシュの法線ベクトルの平均値を上記第2の法線ベクトルとして設定することを特徴とする請求項1に記載の曲面描画装置。
【背景技術】
【0002】
従来、有限要素法(FEM)による数値シミュレーションで使われる多面体モデル、CAD(Computer Aided Design:コンピュータ支援設計)で使われる曲面モデル、あるいは多面体モデルと曲面モデルとを混在させたハイブリッドモデルにおける形状処理の分野において、物体表面を構成する三角形や四角形のメッシュに丸みを持たせるための技術として、「長田パッチ」と呼ばれるものが知られている。
【0003】
長田パッチは、多角形(三角形または四角形)の各頂点と、その各頂点に与えられた単位法線ベクトルをもとに計算した中間制御点とから、2次多項式を用いて多角形の各辺(線分)を2次ベジエ曲線によって補間するものであり、多角形領域内に曲面の丸みを簡便に補間するのに有効な技術である。
【0004】
しかしながら、線分の始点および終点に与えられる2つの単位法線ベクトルの方向が平行に近いとき、補間される曲線(長田セグメントという)が大きく湾曲する現象が発生する場合がある。単位法線ベクトルが平行に近い場合、始点側接平面と終点側接平面とが、始終点を結ぶ弦から大きく隔たった位置に交線を持つため、弦の中点から両接平面の交線に下した垂線の足に当たる中間制御点が弦に対して大きくずれ、結果として2次ベジエ曲線が湾曲するに至るからである。
【0005】
一般的に、長田パッチでは、このような問題を解消するために、多角形メッシュの分割を細かくすることを推奨しているが、現実の応用では多角形メッシュを随意に細かくすることができない場合も多い。そこで、本出願人は、多角形メッシュの分割を細かくすることなく、当該多角形メッシュの2端点を結ぶ線分を曲線補間することによって得られる曲線(長田セグメント)が大きく湾曲するといった湾曲現象の発生を防止できるようにした技術を考案し、特許出願をした(特許文献1参照)。
【0006】
特許文献1に記載の発明は、長田パッチを拡張した3次多項式によって線分を曲線補間するようにしたものである。特許文献1に記載の発明によれば、ベジエ曲線の次数を3次に拡張した3次多項式により線分が曲線補間されるので、中間制御点が2つとなり、当該中間制御点が線分に対して大きく横にずれてしまうことがなくなる。これにより、多角形メッシュの分割を細かくすることなく、長田セグメントが大きく湾曲するといった湾曲現象の発生を防止することができる。
【発明を実施するための形態】
【0013】
以下、本発明の一実施形態を図面に基づいて説明する。
図1は、本実施形態による曲面描画装置の機能構成例を示すブロック図である。本実施形態の曲面描画装置は、有限要素法による数値シミュレーションで使われる多面体モデル、CADで使われる曲面モデル、あるいは多面体モデルと曲面モデルとを混在させたハイブリッドモデルで表された物体形状に関して、物体表面を構成する多角形メッシュの線分を曲線補間して描画するものである。曲線補間は、多角形メッシュの頂点と、当該頂点における法線ベクトルを用いて計算される位置に設定した中間制御点とを利用して、長田パッチの拡張した3次多項式に基づいて行う。
【0014】
図1に示すように、本実施形態による曲面描画装置100は、その機能構成として、折れ線判定部10、非折れ線処理部20、折れ線処理部30、曲線描画部40および表示制御部50を備えて構成されている。非折れ線処理部20は、その具体的な機能構成として、法線ベクトル設定部21、2等分平面算出部22および曲線演算部23を備えている。また、折れ線処理部30は、その具体的な機能構成として、法線ベクトル設定部31、交線算出部32および曲線演算部33を備えている。
【0015】
上記各機能ブロック10〜50は、ハードウェア、DSP(Digital Signal Processor)、ソフトウェアの何れによっても構成することが可能である。例えばソフトウェアによって構成する場合、上記各機能ブロック10〜50は、実際にはコンピュータのCPU、RAM、ROMなどを備えて構成され、RAMやROM、ハードディスクまたは半導体メモリ等の記録媒体に記憶された曲面描画用プログラムが動作することによって実現される。
【0016】
折れ線判定部10は、2つの多角形メッシュが隣接する部分の線分が、折れ線に相当するか否かを判定する。折れ線に相当するか否かは、隣接する多角形メッシュ間の折れ角が所定角度以上となるピン角条件を満たすか否かによって判定する。
【0017】
図2は、この折れ線判定部10の処理内容を説明するための図である。なお、本実施形態では多角形メッシュの一例として、三角形メッシュを用いるものとする。
図2(a)のように、2つの三角形メッシュ201,202が一辺203を共有して隣接している場合、折れ線判定部10は、2つの三角形メッシュ201,202が隣接する部分の線分203が折れ線に相当するか否かを判定する。具体的には、
図2(b)に示すように、隣接する三角形メッシュ201,202間の折れ角θが、所定角度以上のピン角であるか否かを判定する。
【0018】
折れ線判定部10は、折れ角θが所定角度以上であれば、その折れ角θはピン角とみなし、線分203は折れ線であると判定する。なお、所定角度の値は、ユーザがキーボードやマウス等の入力デバイスを操作することにより、所定の入力画面を通じて曲面描画装置100にあらかじめ設定しておく。ユーザは、描画対象とする物体形状が持つ面と面の境界における折れ部分の状態に応じて、任意の値を所定角度として設定することが可能である。
【0019】
非折れ線処理部20は、折れ線判定部10により折れ線ではないと判定された線分(非折れ線)に対して、長田パッチの拡張した3次多項式を適用して曲線補間を行う。この非折れ線処理部20が行う処理は、特許文献1に記載された処理と同じである。
【0020】
折れ線処理部30は、折れ線判定部10により折れ線であると判定された線分(折れ線)に対して、長田パッチの拡張した3次多項式を適用して曲線補間を行う。この折れ線処理部30の行う処理が、本出願において新規性を有する部分である。つまり、折れ線処理部30が本実施形態の要部である。
【0021】
曲線描画部40は、非折れ線処理部20および折れ線処理部30がそれぞれ備える曲線演算部23,33により求められた曲線を描画する。表示制御部50は、曲線描画部40により描画された曲線をディスプレイ(図示せず)に表示させる。多角形メッシュの各線分に対して非折れ線処理部20または折れ線処理部30の処理を行うことにより、各多角形メッシュの辺を補間した曲線をディスプレイに表示させることが可能である。
【0022】
以下に、非折れ線処理部20および折れ線処理部30の具体的な処理内容を説明する。まず、非折れ線処理部20の処理内容を説明する。上述したように、非折れ線処理部20が行う処理は、特許文献1に記載された処理と同じであるから、ここではその内容を簡単に説明することとする。なお、ここでは、多角形メッシュの1つの線分に対する処理について説明する。
【0023】
図3は、曲線演算部23の処理内容を説明するための図である。
図3に示すように、線分の始終点をP
30,P
03、中間制御点をP
21,P
12、始終点P
30,P
03の位置ベクトルをx
0,x
1、求める曲線の曲率パラメータをc、0≦ζ≦1をパラメータとして、曲線演算部23は、次の3次多項式によって線分を曲線補間する。
x(ζ)=P
30(1−ζ)
3+P
21・3(1−ζ)
2ζ+P
12・3(1−ζ)ζ
2+P
03ζ
3
ここで、
P
30=x
0 ,P
03=x
1
P
21=(x
0+2P
11)/3,P
21=(2P
11+x
1)/3
P
11=(x
0+x
1)/2−c/2:2次多項式で曲線補間する場合の中間制御点
【0024】
2等分平面算出部22は、中間制御点P
21,P
12を配置するための2等分平面Πを算出する。法線ベクトル設定部21は、2等分平面Πを算出する際に必要となる始終点P
30,P
03における単位法線ベクトルをn
0,n
1を設定する。ここで、法線ベクトル設定部21は、多角形メッシュの線分の始終点P
30,P
03において、形状表面に直交する方向に対して法線ベクトルn
0,n
1を設定する。
【0025】
図4は、2等分平面算出部22の処理内容を説明するための図である。ここでは、位置x
j(j=0,1)を通り法線ベクトルn
jに直交する接平面を{x
j,n
j}で表すものとする。
図4に示すように、2等分平面算出部22は、始終点x
0,x
1を結ぶ線分を含み、かつ、当該線分の始点x
0を通り始点側接平面{x
0,n
0}に直交する平面を第1平面Π
0とする。また、上記線分を含み、かつ、当該線分の終点x
1を通り終点側接平面{x
1,n
1}に直交する平面を第2平面Π
1とする。そして、第1平面Π
0と第2平面Π
1とを等角で2等分する平面のうち、第1平面Π
0と第2平面Π
1となす角が小さい方を2等分平面Πとして設定する。
【0026】
曲線演算部23は、
図3に示すように、2等分平面算出部22により設定された2等分平面Πの上に、線分の始終点x
0=P
30,x
1=P
03および2つの中間制御点P
21,P
12を配置する。上述のように、中間制御点P
21,P
12を配置する位置は、P
21=(x
0+2P
11)/3,P
21=(2P
11+x
1)/3である。そして、当該配置した始終点P
30,P
03および2つの中間制御点P
21,P
12を用いて、上述した3次多項式によって線分を曲線補間する。
【0027】
なお、始終点P
30,P
03における2つの接平面{x
0,n
0},{x
1,n
1}の交線が、当該始終点P
30,P
03を結ぶ弦(線分)から大きく隔たっていると、接線の方向と弦の方向とが逆行する現象が生じる。すなわち、始点P
30での接線方向が弦の方向(始点P
30から終点P
03に向かう方向)と逆行し、終点P
03での接線方向が弦の方向と逆行する。
【0028】
このように、相手端点の接平面との交点位置が弦の方向と逆行する場合を考慮して、次式のように補正制御点P
11(0),P
11(1)を定める。
P
21=(P
30+2P
11(0))/3
P
12=(2P
11(1)+P
03)/3
この補正制御点P
11(0),P
11(1)は、逆行が起きていない場合には2次ベジエ曲線の制御点P
11に一致する。
【0029】
一方、逆行が起きている場合には、
図5に示すように、2次ベジエ曲線の各端点の接線上で相手側(始点側接線では終点側、終点側接線では始点側)の接線を2等分平面上で弦について線対称に配置して得られる交点とする。
図5に示すように、相手=終点側接線を弦について線対称(上向きの白抜き矢印)に配置して始点側接線と交点P
11(0)を求める。逆に、始点側接線を弦について線対称(下向きの白抜き矢印)に配置して終点側接線と交点P
11(1)を求めてから、上記の式で3次ベジエ曲線の制御点P
21,P
12を決めると、逆行が回避される。
【0030】
以上のような演算を行うことにより、多角形メッシュの分割を細かくすることなく、当該多角形メッシュの2端点を結ぶ線分を曲線補間することによって得られる曲線が大きく湾曲するといった湾曲現象の発生を防止することができる。
【0031】
次に、折れ線処理部30の処理内容について説明する。法線ベクトル設定部31は、折れ線判定部10により折れ線であると判定された線分の始終点P
30,P
03のそれぞれにおいて、2つの法線ベクトルを設定する。2つの法線ベクトルは、線分の始終点P
30,P
03を頂点として共有する複数の多角形メッシュのうち、折れ線に対して一方側に存在する多角形メッシュから導き出される第1の法線ベクトルと、折れ線に対して他方側に存在する多角形メッシュから導き出される第2の法線ベクトルである。
【0032】
具体的には、法線ベクトル設定部31は、折れ線判定部10により折れ線であると判定された線分の始終点P
30,P
03のそれぞれにおいて、当該始終点P
30,P
03を頂点として共有する複数の多角形メッシュのうち、折れ線に対して一方側に存在する多角形メッシュの法線ベクトルの平均値を第1の法線ベクトルとして設定する。また、折れ線に対して他方側に存在する多角形メッシュの法線ベクトルの平均値を第2の法線ベクトルとして設定する。
【0033】
図6は、法線ベクトル設定部31の処理内容を説明するための図である。
図6では、折れ線判定部10により折れ線であると判定された線分600の始点P
30において、第1の法線ベクトルn
0(1)および第2の法線ベクトルn
0(2)を求める処理について示している。なお、太線で示した部分が折れ線に相当する。
【0034】
法線ベクトル設定部31は、始点P
30を頂点として共有する6つの多角形メッシュ601〜606のうち、折れ線に対して一方側に存在する3つの多角形メッシュ601〜603の法線ベクトルの平均値を第1の法線ベクトルn
0(1)として設定する。また、折れ線に対して他方側に存在する3つの多角形メッシュ604〜606の法線ベクトルの平均値を第2の法線ベクトルn
0(2)として設定する。
【0035】
なお、線分600の始点P
30における2つの法線ベクトルn
0(1),n
0(2)を求める際に、当該線分600を共有して隣接する2つの多角形メッシュ603,606のうち、折れ線600に対して一方側に存在する多角形メッシュ603の法線ベクトルのみから第1の法線ベクトルn
0(1)を設定するとともに、折れ線600に対して他方側に存在する多角形メッシュ606の法線ベクトルのみから第2の法線ベクトルn
0(2)を設定することも可能である。
【0036】
ただし、線分600の始点P
30は、多角形メッシュ603の頂点であるばかりでなく、多角形メッシュ601,602の頂点でもある。よって、この頂点における第1の法線ベクトルn
0(1)を求める際には、3つの多角形メッシュ601〜603の法線ベクトルを全て考慮するのが好ましい。同様に、線分600の始点P
30は、多角形メッシュ606の頂点であるばかりでなく、多角形メッシュ604,605の頂点でもある。よって、この頂点における第2の法線ベクトルn
0(2)を求める際には、3つの多角形メッシュ604〜606の法線ベクトルを全て考慮するのが好ましい。
【0037】
線分600の終点P
03においても同様にして、終点P
03を頂点として共有する複数の多角形メッシュ(多角形メッシュ603,606および図示しない他の多角形メッシュ)の法線ベクトルに基づいて、第1の法線ベクトルn
1(1)および第2の法線ベクトルn
1(2)を求める。
【0038】
交線算出部32は、線分の始点P
30を通り、かつ、始点P
30に設定された第1の法線ベクトルn
0(1)に直交する第1の接平面と、第2の法線ベクトルn
0(2)に直交する第2の接平面との交線(以下、始点側交線という)を求める。また、交線算出部32は、線分の終点P
03を通り、かつ、終点P
03に設定された第1の法線ベクトルn
1(1)に直交する第1の接平面と、第2の法線ベクトルn
1(2)に直交する第2の接平面との交線(以下、終点側交線という)を求める。
【0039】
図7は、交線算出部32の処理内容を説明するための図である。
図7に示すように、交線算出部32は、線分の始点P
30を通り、かつ、始点P
30に設定された第1の法線ベクトルn
0(1)に直交する第1の接平面{x
0,n
0(1)}と、第2の法線ベクトルn
0(2)に直交する第2の接平面{x
0,n
0(2)}との交線である始点側交線701を求める。
【0040】
また、交線算出部32は、線分の終点P
03を通り、かつ、終点P
03に設定された第1の法線ベクトルn
1(1)に直交する第1の接平面{x
1,n
1(1)}と、第2の法線ベクトルn
1(2)に直交する第2の接平面{x
1,n
1(2)}との交線である終点側交線702を求める。
【0041】
曲線演算部33は、交線算出部32により求められた始点側交線701および終点側交線702の上にそれぞれ中間制御点P
21,P
12を配置し、当該配置した中間制御点P
21,P
12および線分の始終点P
30,P
03を用いて線分を曲線補間する。本実施形態では、
図7に示すように、始点側交線701の上に1つの中間制御点P
21を配置するとともに、終点側交線702の上に1つの中間制御点P
12を配置している。
【0042】
また、本実施形態では、曲線演算部33は、非折れ線処理部20の曲線演算部23と同様に、線分の始終点をP
30,P
03、中間制御点をP
21,P
12、始終点の位置ベクトルをx
0,x
1、曲線の曲率パラメータをc、0≦ζ≦1をパラメータとして、次の3次多項式によって線分を曲線補間する。
x(ζ)=P
30(1−ζ)
3+P
21・3(1−ζ)
2ζ+P
12・3(1−ζ)ζ
2+P
03ζ
3
ここで、
P
30=x
0 ,P
03=x
1
P
21=(x
0+2P
11)/3,P
21=(2P
11+x
1)/3
P
11=(x
0+x
1)/2−c/2
【0043】
以上詳しく説明したように、本実施形態によれば、折れ線に相当しない線分については、非折れ線処理部20において特許文献1に記載の処理と同様の処理が行われる。これにより、長田パッチの拡張した3次多項式を用いた曲線補間により、折れ線部分以外の面に対して丸み付けを行うことができる。その際、2つの中間制御点P
21,P
12が線分に対して大きく横にずれてしまうことを防ぎ、長田セグメントが大きく湾曲するといった湾曲現象の発生を防ぐことができる。
【0044】
また、折れ線に相当する線分については、折れ線処理部30によって本実施形態特有の処理が行われる。折れ線処理部30により設定される2つの中間制御点P
21,P
12は、折れ線の一方側に位置する多角形メッシュから導き出される第1の法線ベクトルn
j(1)と、他方側に位置する多角形メッシュから導き出される第2の法線ベクトルn
j(2)とに基づいて算出されるものであるため、折れ線部分で隣接する多角形メッシュ間の折れ角を反映したものとすることができる。これにより、長田パッチの拡張した3次多項式を用いた曲線補間を行っても、折れ線部分に対して折れの特徴を維持することができる。
【0045】
以上のように、本実施形態によれば、長田パッチを用いた曲線補間により、折れ線部分以外の面に対しては丸み付けを行いつつ、面と面との境界に存在する折れの特徴も保存することができる。
【0046】
なお、上記実施形態では、多角形メッシュの一例として三角形メッシュをとりあげて説明をしたが、本発明はこれに限定されない。例えば、四角形メッシュに本発明を適用することも可能である。
【0047】
その他、上記実施形態は、何れも本発明を実施するにあたっての具体化の一例を示したものに過ぎず、これによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその要旨、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。