(57)【要約】【課題】六面体格子による格子生成において、シミュレーションにおける精度を向上させることを可能にする格子生成装置及び格子生成プログラムを提供する。【解決手段】シミュレーション対象の物体形状の表面を含み、かつ、表面を包囲するように配置された複数の六面体格子から前記物体形状の表面に移動させる格子点を抽出する境界格子点抽出手段と、物体形状の表面をあらわす位置に、六面体格子の格子点間隔よりも狭い間隔で複数の表面点を設定する表面点設定手段と、境界格子点抽出手段で抽出された格子点を物体形状の表面上に移動させるときに、格子点の移動距離が少なく、かつ当該格子点を囲む格子点との凹凸関係を移動前後で維持するとともに、格子点における法線ベクトルに近い向きの法線ベクトルを有する表面点を複数の表面点から探索し、探索された表面点上に格子点を移動させる格子点移動手段を備えた。【選択図】図１
2014109939.tif 000002
【特許請求の範囲】
【請求項１】
シミュレーション対象の物体形状の表面を含み、かつ、前記表面を包囲するように配置された複数の六面体格子から前記物体形状の表面に移動させる格子点を抽出する境界格子点抽出手段と、
前記物体形状の表面上に、前記六面体格子の格子点間隔よりも狭い間隔で複数の表面点を設定する表面点設定手段と、
前記境界格子点抽出手段で抽出された格子点を物体形状の表面上に移動させるときに、前記格子点の移動距離が少なく、かつ当該格子点を囲む格子点との凹凸関係を移動前後で維持するとともに、前記格子点における法線ベクトルの向きに近い法線ベクトルを有する前記表面点を前記複数の表面点から探索し、探索された表面点上に前記格子点を移動させる格子点移動手段とを備えた格子生成装置。
【請求項２】
前記格子点移動手段は、表面上に移動した格子点と隣接する格子点との格子点間の距離が滑らかに変化するように格子点間の距離を調整する格子点間距離調整手段と、
前記格子点間距離調整手段が前記格子点間の距離を調整するときに、
格子点の移動前の位置から移動後の位置に向かうベクトルを求め、このベクトルを前記格子点の移動前の位置を含む格子線に射影して、当該格子点を移動させる格子点位置補正手段を備える請求項１記載の格子生成装置。
【請求項３】
前記格子点移動手段は、前記境界格子点抽出手段で抽出された格子点を物体形状の表面上に移動させるときに、さらに、移動後の格子点の法線ベクトルが前記表面点の法線ベクトルと近い向きを向くように、前記格子点の移動先の位置を前記表面点から探索する請求項１又は請求項２記載の格子生成装置。
【請求項４】
前記格子点移動手段は、前記境界格子点抽出手段により抽出された境界格子点全てに対して同一の時系列で処理を実行する請求項１乃至請求項３いずれか記載の格子生成装置。
【請求項５】
シミュレーション対象の物体形状の表面を含み、かつ、前記表面を包囲するように配置された複数の六面体格子から前記物体形状の表面に移動させる格子点を抽出するステップと、
前記物体形状の表面上に、前記六面体格子の格子点間隔よりも狭い間隔で複数の表面点を設定するステップと、
抽出された格子点を、
前記格子点を移動させたときの前記格子点の移動距離が少なく、かつ当該格子点を囲む格子点との凹凸関係を移動前後で維持するとともに、前記格子点における法線ベクトルの向きに近い法線ベクトルを有する前記表面点を前記複数の表面点から探索し、探索された表面点上に前記格子点を移動させるステップと、を
コンピュータに実行させる格子生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、格子生成装置、及び格子生成プログラムに関し、特にシミュレーション対象を六面体格子によってメッシュ状に分割する格子生成装置、及び格子生成プログラムに関する。
【背景技術】
【０００２】
従来、シミュレーションを行うときの計算格子は、例えば、非特許文献１に示すような六面体格子で生成する方法が知られている。このような、六面体格子は、シミュレーション対象の物体表面に格子面が物体表面の形状に沿わず、物体表面を階段状に再現することになるため、物体表面の形状をできるだけ正確に再現できるように、物体表面近傍の六面体格子を人手により変形させて物体表面上に格子点を配置させたり、物体表面近傍の格子のみを特別なプログラムによって物体表面上に配置させたりすることで、シミュレーションにおける精度を向上させている。
しかしながら、上記のように格子生成するためには、格子を生成する人に知識が要求される。知識のない人が格子生成する場合、知識を取得して格子を生成するまでに多くの時間が費やされてしまうことになる。例えば、知識を不要とするために、人手によらず自動的に六面体の格子を生成する方法の一つに、六面体格子によりあらかじめ生成しておいた基礎格子に対してラプラシアン演算子を用いて格子生成する方法がある。ところが、ラプラシアン演算子を用いて格子生成すると、ラプラシアン演算子の特性により、対象となる物体表面の形状のエッジが丸められてしまい、物体表面のエッジに格子を沿わせることができず、正確なシミュレーションを実行するための格子生成できないという問題が生じてしまう。これを防ぐために、エッジに対してラプラシアン演算子を適用しないようにすることも考えられるが、この場合、基礎格子に対してラプラシアン演算子を実行する前に、あらかじめエッジを検出し、エッジに対してはラプラシアン演算子を実行せずに処理を実行し、その後人手によりエッジに沿うように六面体格子を配置する必要が生じてしまう。結局のところ格子生成において人手を介することとなり、経験や知識が必要となっていた。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Robust Repair of Polygonal Models: Tao Ju : Rice University, ACM Transactions onGraphics (TOG) - ACM SIGGRAPH 2004, Volume 23 Issue 3, August 2004, Pages888-895
【発明の概要】
【発明が解決しようとする課題】
【０００４】
そこで、本発明では、六面体格子による格子生成において、人手により特別な処理を行うことなくエッジを含む物体形状の表面に沿って六面体格子を配置可能な格子生成装置、及び格子生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するための格子生成装置の構成として、シミュレーション対象の物体形状の表面を含み、かつ、前記表面を包囲するように配置された複数の六面体格子から前記物体形状の表面に移動させる格子点を抽出する境界格子点抽出手段と、前記物体形状の表面上に、前記六面体格子の格子点間隔よりも狭い間隔で複数の表面点を設定する表面点設定手段と、前記境界格子点抽出手段で抽出された格子点を物体形状の表面上に移動させるときに、前記格子点の移動距離が少なく、かつ当該格子点を囲む格子点との凹凸関係を移動前後で維持するとともに、前記格子点における法線ベクトルの向きに近い法線ベクトルを有する前記表面点を前記複数の表面点から探索し、探索された表面点上に前記格子点を移動させる格子点移動手段を備える構成とした。
本構成によれば、物体表面にあらかじめ設定された表面点の法線ベクトルを基準として格子点の移動先が探索されるので、格子点をより正確に物体形状上に配置することができるとともに、物体におけるエッジを含む表面の形状をより精度良く再現することができるので、六面体格子により生成された格子を物体表面上に精度良く、自動的に移動させることができるので、人手を介することなく格子生成ができる。
また、上記課題を解決するための格子生成装置の他の構成として、前記格子点移動手段は、表面上に移動した格子点と隣接する格子点との格子点間の距離が滑らかに変化するように格子点間の距離を調整する格子点間距離調整手段と、前記格子点間距離調整手段が前記格子点間の距離を調整するときに、格子点の移動前の位置から移動後の位置に向かうベクトルを求め、このベクトルを前記格子点の移動前の位置を含む格子線に射影して、当該格子点を移動させる格子点位置補正手段とを備える構成とした。
本構成によれば、上記効果に加え、物体表面の形状の再現性を失わずに格子点を移動させることができるので、物体表面の形状を精度良く再現することができるとともに、格子点間の距離が滑らかに変化する格子が生成されるので、シミュレーションを行なうときに精度の良い結果を得ることができる。
また、上記課題を解決するための格子生成装置の他の構成として、前記格子点移動手段は、前記境界格子点抽出手段で抽出された格子点を物体形状の表面上に移動させるときに、さらに、移動後の格子点の法線ベクトルが前記表面点の法線ベクトルと近い向きを向くように、前記格子点の移動先の位置を前記表面点から探索する構成とした。
本構成によれば、上記効果に加え、実際の表面形状に大きな変化を及ぼさないように物体の表面上に格子点を設定することができるので、より精度良く物体形状を再現できる。
また、上記課題を解決するための格子生成装置の他の構成として、格子点移動手段は、境界格子点抽出手段により抽出された境界格子点全てに対して同一の時系列で処理を実行する構成とした。
本構成によれば、上記効果に加え、格子点の移動先を効率的かつ精度良く得ることができるので、格子生成に要する時間を短縮することができる。
上記課題を解決するための格子生成プログラムの構成として、シミュレーション対象の物体形状の表面を含み、かつ、前記表面を包囲するように配置された複数の六面体格子から前記物体形状の表面に移動させる格子点を抽出するステップと、前記物体形状の表面上に、前記六面体格子の格子点間隔よりも狭い間隔で複数の表面点を設定するステップと、抽出された格子点を、前記格子点を移動させたときの前記格子点の移動距離が少なく、かつ当該格子点を囲む格子点との凹凸関係を移動前後で維持するとともに、前記格子点における法線ベクトルの向きに近い法線ベクトルを有する前記表面点を前記複数の表面点から探索し、探索された表面点上に前記格子点を移動させるステップと、をコンピュータに実行させる構成とした。
本構成によれば、物体表面にあらかじめ設定された表面点の法線ベクトルを基準として格子点の移動先が探索されるので、格子点をより正確に物体形状上に配置することができるとともに、物体におけるエッジを含む表面の形状をより精度良く再現することができるので、六面体格子により生成された格子を物体表面上に精度良く、自動的に移動させることができるので、人手を介することなく格子生成ができる。
【図面の簡単な説明】
【０００６】
【図１】格子生成装置のブロック図である。
【図２】歯車体に六面体格子を配置した平面図及び側面図である。
【図３】境界格子点移動手段による境界格子点の移動処理を示す図である。
【図４】境界格子点移動手段による境界格子点の移動処理を示す図である。
【図５】格子点位置補正手段による補正処理を示す図である。
【０００７】
以下、発明の実施形態を通じて本発明を詳説するが、以下の実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明される特徴の組み合わせのすべてが発明の解決手段に必須であるとは限らず、選択的に採用される構成を含むものである。
【発明を実施するための最良の形態】
【０００８】
図１は、本発明に係る格子生成プログラムを実行する格子生成装置１のブロック図である。同図において、格子生成装置１は、いわゆるコンピュータであって、ハードウェア資源として設けられた演算手段としてのＣＰＵ、記憶手段としてのＲＯＭ，ＲＡＭ、通信手段としての入出力インターフェイス等を備え、格子生成装置１のＣＰＵは、記憶手段に格納された格子生成プログラムに従って後述の処理を実行する。また、格子生成装置１には、図外のキーボードやマウス、或いは、磁気，光学ドライブ等の入力手段や、モニタ等の出力手段が接続されている。
また、格子生成プログラムは、コンピュータとして構成された格子生成装置１を物体形状読込手段２と、物体表面点設定手段３と、基本格子生成手段４と、境界格子点抽出手段５と、境界格子点移動手段６として動作させる。以下、格子生成装置１の各手段について説明する。
【０００９】
物体形状読込手段２は、シミュレーション対象となる物体の形状データの読み込みを実行する。形状データは、例えばＣＡＤデータなどにより与えられるが、形状データは、ＣＡＤデータに限定されず、他のデータ形式で保存されたものであっても良い。本実施形態では、図１，図２に示すような歯車体Ｔの形状データが読み込まれたものとして説明する。また、座標系には、例えば歯車体Ｔの中心Ｏを原点として、互いに直交する座標系のＸ，Ｙ，Ｚ軸が設定される。
【００１０】
物体表面点設定手段３は、形状データによって表される歯車体Ｔの表面Ｈ上に複数の表面点Ｓを設定する。表面点Ｓは、物体形状読込手段２で読み込んだ形状データに含まれる表面Ｈの形状を示す点群や後述の基本格子生成手段４で配置される六面体格子の格子点間距離よりも細かい間隔で設定される（図３の×印を参照）。
【００１１】
基本格子生成手段４は、図２（ａ），（ｂ）に示すように、形状データの読み込み時に生成された直交座標系の原点を基準として、正六面体からなる複数の六面体格子で歯車体Ｔを包囲するように、座標軸に沿って六面体格子を配置することで実空間における計算格子Ｇを生成する。つまり、基本格子生成手段４は、シミュレーション対象である歯車体Ｔを同一寸法の六面体格子で分割した、いわゆる構造格子を生成する。この計算格子Ｇは、必ず歯車体Ｔの表面Ｈを含むように生成される。なお、六面体格子を配置するときの座標系は上記座標系に限定されず、極座標系や球座標系を基準として配置しても良い。
【００１２】
境界格子点抽出手段５は、上記基本格子生成手段４で生成された計算格子Ｇから歯車体Ｔの表面Ｈを含む六面体格子を抽出するとともに、抽出された六面体格子を形成する格子点のうち、計算格子Ｇにおける境界に位置する格子点を抽出する。以下、この抽出された格子点を特に境界格子点Vikという。この境界格子点Vikの抽出は、例えば、歯車体Ｔの表面Ｈが六面体格子に含まれているかどうかを調べることで特定することが可能である。なお、図２では全ての境界格子点Vikを図示していない。
【００１３】
境界格子点移動手段６は、格子点間距離調整手段７と、格子点位置補正手段８とを備え、境界格子点抽出手段５で抽出された境界格子点Vikを移動前の位置から移動後の位置までの移動距離が少なく、かつ、移動前の境界格子点Vikとこれに隣接する境界格子点Vjkとの間の位置関係を移動前後で維持するとともに、移動前の境界格子点Vikの法線ベクトルに近い方向を向く法線ベクトルを有する表面点Ｓを探索し、探索された表面点Ｓ上に境界格子点Vikを移動させる。
【００１４】
具体的には、境界格子点移動手段６は、下記数式（１）を用いることで、境界格子点Vikを表面Ｈ上に移動させることができる。なお、下記数式（１）の表現は、本発明を実施する上での一例である。
【数１】
2014109939.tif 000003
【数２】
2014109939.tif 000004
【数３】
2014109939.tif 000005
添字ｉは計算格子においてVikに付された格子点番号である。k（０，１，・・）は数式（１）を繰り返し実行したときに更新されるViの更新回数である。なお、数式（１）のΣ内第１項，第２項，第３項の各項において二乗が付されているがこれは計算量を下げるための計算処理上の理由で付されたものである。各項は、それぞれノルム、簡単には距離を示すため、平方根が付されるものであるが、各項を二乗してルートを外したため上記表記となっている。つまり、数式（１）の各項の意味は、距離である。
【００１５】
上記数式（１）は、Σを最小にする境界格子点Vik+1の位置を求めて表面Ｈ上に移動させるための式である。以下、数式（１）のΣ内について第１項目から順を追って説明する。
上記数式（１）のΣ内の第１項目は、数式（２）により求められるため、まず数式（２）について説明する。
【００１６】
数式（２）は、表面Ｈに移動すべき境界格子点Vikに隣接する複数の格子点Vjkの重心位置Ｃを求め、この重心位置Ｃから境界格子点Vikの位置に向かうベクトルを求める式である（図４（ａ）参照）。つまり、数式（１）の第１項目におけるlkは、移動前の境界格子点Vikの法線ベクトルであり、lk+1は移動後の境界格子点Vik+1の法線ベクトルである。
【００１７】
したがって、数式（１）における第１項目は、境界格子点Vikを歯車体Ｔの表面Ｈ上に移動させるときに、移動後の境界格子点Vik+1の移動量ができるだけ小さくなる位置に移動せよという条件とともに、移動前の境界格子点Vikとこの境界格子点Vikに隣接する境界格子点Vjkとの位置関係と、移動後の境界格子点Vik+1とこの境界格子点Vik+1に隣接する境界格子点Vjk+1との位置関係とが、同様な位置関係となるように移動せよという２つの条件を表わしている。この場合の位置関係とは、移動前の境界格子点Vikとこの境界格子点Vikに隣接する境界格子点Vjkで形成される基本格子において、凸状や凹状等の形状を示している。つまり、境界格子点Vikを囲む境界格子点Vjkとの凹凸関係が、移動前後で維持されるようにすべての境界格子点Vikを移動させる。
【００１８】
Σ内の第２項目は、移動前の境界格子点Vikから移動後の境界格子点Vik+1に向かうベクトルのノルムの２乗、つまり、移動前の位置から移動後の位置までの移動距離を計算する。したがって、数式（１）における第２項目は、境界格子点Vikを歯車体Ｔの表面Ｈに移動させるときに、移動距離が最小となるように境界格子点Vikを移動せよという条件を意味する。
【００１９】
Σ内の第３項目は、境界格子点Vikから表面点Ｓまでの距離が最小となる表面点候補Wik+1から境界格子点Vikの移動後の境界格子点Vik+1に向かうベクトルのノルムの２乗、つまり、境界格子点Vikが移動したときに、移動後の境界格子点Vik+1の位置と表面Ｈを表す表面点候補Wik+1の位置との差を意味する。
【００２０】
ここで、表面点候補Wik+1について説明する。表面点候補Wik+1は、数式（３）によって決定される。表面点候補Wik+1は、数式（３）で示すように、複数の表面点Ｓのうち境界格子点Vikとの距離が最小となる表面点Ｓであり、境界格子点の法線ベクトルに近い方向の法線ベクトルを有する表面点Ｓによって設定される。なお、境界格子点Vikが更新される毎に表面点Ｓの位置も変化する。
【００２１】
数式（３）の右辺arg min sは、||vi-S||(1+a・nVik・nS)が最小となる表面点Ｓを探索することを意味し、数式（３）の探索により得られた表面点Ｓが表面点候補Wik+1として設定される。また、ａは、１よりも小さい負の値が設定される係数であって、例えば−０．８等の数値が設定される。||vi-S||は、上記表面点Ｓから移動前の境界格子点Viに向かうベクトルのノルムであって、表面点Ｓから移動前の境界格子点Viとの距離を示している。なお、この式におけるViは、数式（１）の繰り返し計算によって変化しない。また、(1+a・nVik・nS)内のnVikは、境界格子点Vikにおける単位法線ベクトル、nSは、表面点Ｓにおける単位法線ベクトルである。この場合、nVik・nSの取りうる値は、−１≦nVik・nS≦１である。
【００２２】
境界格子点Vikにおける法線ベクトルは、例えば、境界格子点Vikに隣接する格子点同士により形成される平面の法線ベクトルを適用することで得られ、表面点Ｓにおける法線ベクトルは、表面点Ｓに隣接する表面点同士により形成される平面の法線ベクトルを適用することで得られる。この表面点Ｓの法線ベクトルは、表面Ｈの形状状態が、平坦、凸状、凹状等であるかを示している。
【００２３】
上記(1+a・nVik・nS)が最小となるのは、係数ａが−０．８であることを考慮すれば、nVik・nSで表わされる境界格子点Vikの法線ベクトルと表面点Ｓの法線ベクトルとの内積が最大の１となるときである。したがって、数式（３）は、各表面点Ｓの位置から基本格子の設定時の境界格子点Viの位置までの距離が短い表面点Ｓのうちで、境界格子点Vikの法線ベクトルと最も近い方向の法線ベクトルを有する表面点Ｓを探索する。
数式（３）で示すように、表面Ｈを表わす表面点Ｓとこの表面点Ｓの法線ベクトルを用いて、数式（３）を満たす表面点Ｓを探索し、この表面点Ｓを表面点候補Wik+1に設定する。
【００２４】
したがって、数式（１）における第３項目は、境界格子点Vikが歯車体Ｔの表面Ｈ上に移動するときに、表面Ｈと境界格子点Vikとの距離が最も近く、かつ移動前の境界格子点の法線ベクトルに近い方向の法線ベクトルを有する表面点Ｓで決定される表面点候補Wik+1に近い位置に移動せよという条件を表わしている。この第３項目は、移動後の境界格子点Vik+1が表面点候補Wik+1上に移動したとき、すなわち、表面点候補Wik+1を満たす表面点Ｓ上に移動したときに最小となる。
このように、上記数式（３）を満たす表面点Ｓを探索し、この表面点Ｓを第３項目における表面点候補Wik+1として設定することで、エッジ上の配置されるべきでない境界格子点Vikをエッジ以外の位置に配置することができ、エッジ上に配置されるべき境界格子点Vikをエッジ上に配置させることができるので、表面Ｈの形状及びエッジの形状をより精度良く再現することが可能となる。
【００２５】
以下、境界格子点移動手段６による処理について説明する。
図３（ａ）は、歯車体Ｔの一部を格子面に沿って切断した断面を拡大した拡大図を示し、図３（ｂ）は、この図３（ａ）の破線丸印で囲む部分をさらに拡大した拡大図である。
【００２６】
図３（ｂ）に示すような場合、第２項目の条件のみに従って境界格子点V4k，V5k，V6k，V7kを表面Ｈ上に移動させると、境界格子点が、同図の二点鎖線矢印及び破線ｘで示すように移動し、表面Ｈの形状から離れてしまう。つまり、角が再現されなくなってしまう。
【００２７】
そこで、第１項目の条件により、これから移動させようとする例えば、境界格子点V5kに隣接する複数の境界格子点V4k，V6kで囲まれる領域の重心位置Ｃを計算し、重心位置Ｃから移動前の境界格子点V5kに向けたベクトル、すなわち、移動前の境界格子点V5kにおける法線ベクトルnV5を計算する。さらに、図示しない、移動後の境界格子点V5k+1に隣接する複数の境界格子点V4k+1，V6k+1で囲まれる領域の重心位置を計算して、この重心位置から移動後の境界格子点V5k+1に向けたベクトル、すなわち、移動後の境界格子点V5k+1における法線ベクトルを計算する。
そして、移動後の境界格子点V5k+1における法線ベクトルと、移動前の境界格子点V5kの法線ベクトルnV5とのなす角が小さくなるように、境界格子点V5k+1の移動先を探索させる。つまり、境界格子点V5k+1を囲む境界格子点V4k+1，V6k+1との凹凸関係が移動前後で維持されるように、境界格子点V5k+1の移動先を探索する。
【００２８】
さらに、第３項目の条件により、複数の表面点Ｓのうち境界格子点V5kとの距離が近く、この境界格子点V5kの法線ベクトルnV5に近い方向の法線ベクトルを有する表面点Ｓが探索されて、この探索によって設定された表面点候補Wik+1と境界格子点V5k+1の移動先を探索する。例えば、表面点Ｓの法線ベクトルは、図中のnS8，nS9，nS10の矢印で示すような向きである。
以上説明したように、数式（１）の上記第１項目，第２項目，第３項目の条件を満たす表面点Ｓ上に境界格子点V5kを境界格子点V5k+1として移動させることで表面Ｈに沿う格子を生成することができる。
【００２９】
第１項目及び第３項目の条件がない場合、図３（ｂ）の斜線で示す格子のように、六面体以外の格子が生成されてしまう場合があるが、数式（１）の第１項目により移動前の境界格子点V5kと、これに隣接する境界格子点V4k，V6kとの凹凸関係が変更しないようにする条件と、境界格子点V5kが歯車体Ｔの表面Ｈ上に移動するときに、表面Ｈと境界格子点V5kとの距離が最も近く、かつ移動前の境界格子点V5kの法線ベクトルnV5に近い方向の法線ベクトルnSを有する表面点Ｓで決定される表面点候補Wik+1に移動せよという条件とにより境界格子点V5kを表面Ｈの凹部の頂点Ｅに移動させることができる。
【００３０】
これにより、図４（ａ），（ｂ）に示すように、表面Ｈを形成する六面体格子の頂点が全て外向き、つまり、表面Ｈに面する六面体格子は、各六面体格子の頂点が凸状となる。このような形状の六面体格子は、格子が生成された実空間からシミュレーションが実行されるときの計算空間へ座標変換式に表れるヤコビアンによって評価されるが、本実施形態のようにすべての頂点が外方に向けて凸状となる六面体格子ではヤコビアンが正値となる。したがって、表面Ｈでの六面体格子のヤコビアンが正値に設定される計算格子Ｇは、全ての六面体格子においてヤコビアンＪが正値となるので、精度の良い良好なシミュレーション結果を得ることができる。
【００３１】
格子点間距離調整手段７は、上記表面Ｈ上に境界格子点Vik+1が移動した計算格子全体に対する格子点間の距離の調整を行う。スムージング処理前の表面Ｈに面する六面体格子は、図４（ｂ）に示すように、境界格子点移動手段６により表面Ｈ上に移動した境界格子点Vikは、隣接する境界格子点Vjk以外の格子点V（白丸で示す）との間で極端に幅が狭くなり、境界格子点Vikを含まない六面体格子に対していびつな形状である。このように局所的に形状が変化する計算格子は、精度の良いシミュレーションを実行する上で好ましくない。そこで、格子点間距離調整手段７によって、境界格子点Vikを含む六面体格子と、境界格子点Vikを含まない六面体格子との形状が滑らかに変化するようにスムージング処理（平滑化処理）を実行する。
【００３２】
スムージング処理には、例えば、ラプラシアンスムージングを実行することで実現される。これにより、境界格子点Vikとこれに隣接する格子点Vjkまで格子点間の距離が、計算格子Ｇ全体において滑らかになる。このラプラシアンスムージングの物理的な意味は、上記境界格子点Vikが表面Ｈ上に配置された計算格子Ｇの各格子点を、この格子点Vikに隣接する格子点Vjkによって決定される重心位置Ｃに移動させる処理を行うことである。
スムージング処理された計算格子Ｇは、歯車体Ｔの表面Ｈを形成する六面体格子の大きさを基準として歯車体Ｔの内部に向かうにしたがって徐々に六面体格子の大きさが、大きく或いは小さくなるように表面Ｈ上における格子点の位置が調整される。
【００３３】
格子点位置補正手段８は、上記格子点間距離調整手段７により格子点間の距離を調整するときに、境界格子点Vikに対して、境界格子点Vikが当該表面Ｈ上に位置するように補正処理を実行する。つまり、境界格子点Vik以外の格子点では、格子点位置補正手段８は動作しない。
【００３４】
図５（ａ），（ｂ）は、表面ＨのエッジＫ上に境界格子点Vikが配置されたスムージング処理前の図を示し、図５（ａ）はエッジＫを表面Ｈ側から見た図、図５（ｂ）はエッジＫを背面側から見た図である。
計算格子Ｇ全体に対してスムージング処理を実行した場合、図５（ａ），（ｂ）に示すように、境界格子点移動手段６により歯車体Ｔの表面上に移動させた境界格子点Vikが、歯車体Ｔの内部側に引き寄せられてしまうことになる。すなわち、上記境界格子点移動手段６によってエッジＫ上に配置された境界格子点Vikがエッジ上から移動してしまい、本来の表面Ｈの形状が正確に表現されなくなってしまう。
そこで、境界格子位置補正手段８により、境界格子点Vikが再び表面ＨのエッジＫ上に配置されるように補正を行なうことで、表面Ｈの形状を正確に表現する。
【００３５】
以下、境界格子位置補正手段８による境界格子点Vikの位置の補正動作について説明する。
例えば、図５（ａ）に示すように、エッジＫ上に位置する境界格子点Ｖ５（Vik）は、スムージング処理前にエッジ上に位置するため、この境界格子点Ｖ５（Vik）から隣接する格子点Ｖ６（Vjk），Ｖ７（Vjk），Ｖ８（Vjk），Ｖ９（Vjk）と接続する腕が４本ある。各腕の長さは、Ｌ１＞Ｌ２，Ｌ３＞Ｌ４の関係があるものとした場合、スムージング処理によってＬ１とＬ２、Ｌ３とＬ４がほぼ等しい長さのＬ１′≒Ｌ２′，Ｌ３′≒Ｌ４′になるように調整される。これにより、境界格子点Ｖ５（Vik）は、丸破線で示すように格子内部方向、つまり物体内部にめり込むように移動することになり、エッジＫの形状が丸められた状態にある。
そこで、境界格子位置補正手段８では、図５（ｂ）に示すように、スムージング処理を実行する前の境界格子点Ｖ５（Vik）の位置から、スムージング処理後の内部に移動した位置へのベクトルを求め、このベクトルをスムージング処理前の表面Ｈの格子線上、エッジＫ上に射影することで、境界格子点Ｖ５（Vik）の位置をエッジＫ上に境界格子点Ｖ５（Vik+1）として補正処理する。
【００３６】
以下、本発に係る格子生成プログラムによる格子生成装置１の処理の流れについて説明する。
ステップ１：物体形状読込手段２によりシミュレーション対象となる物体の形状データ（例えばＣＡＤデータにより作成された）の読み込みを実行する。
ステップ２：物体表面点設定手段３により、上記形状データにより表現される物体の表面Ｈ上に、ＣＡＤデータによる形状点よりも細かい間隔で複数の表面点Ｓを設定する。
ステップ３：基本格子生成手段４により上記物体の表面Ｈを含むとともに、形状データを包囲するように正六面体からなる六面体格子を配置して、基本格子となる計算格子Ｇを生成する。
ステップ４：境界格子点抽出手段５により、上記計算格子Ｇのうち表面Ｈを含む六面体格子から、計算格子Ｇにおける境界面を構成する格子点を境界格子点Vikとして抽出する。
【００３７】
ステップ５：境界格子点移動手段６により、上記境界格子点抽出手段５で抽出された境界格子点Vik+1が、上記数式（１）を用いることで、移動前の位置から移動後の位置までの移動量が最も少なく、かつ、移動後の位置が表面Ｈ上に設定された表面点Ｓのいずれかに最も近く、さらに、当該境界格子点Vik+1と隣接してこれを囲む格子点Vjkとの凹凸関係に変化がないように、境界格子点Vikを表面Ｈ上に移動させる。
【００３８】
ステップ６：格子点間距離調整手段７により、計算格子Ｇに対してラプラシアンスムージングによる各格子点間の距離の調整を行い、計算格子Ｇにおける内部境界から外部境界に向かう格子点間の距離や、内部境界や外部境界の延長方向に沿って配置された格子点間の距離を滑らかに変化するようにスムージング処理を実行する。
【００３９】
ステップ７：上記格子点間距離調整手段７により調整された境界格子点Vikが、表面Ｈ上に位置するように補正処理を実行する。境界格子位置補正手段８では、図５（ａ）に示すように、スムージング処理によって、エッジＫ上の位置から、内部に移動させられてしまった境界格子点Vikのスムージング処理前の位置から処理後の位置へのベクトルを求め、このベクトルをエッジＫに沿って射影し、射影された位置に境界格子点Vik+1を配置する補正処理をする。なお、ステップ７の処理は、ステップ６の処理中に実行するようにしても良い。
【００４０】
このように、スムージング処理によって移動した境界格子点Ｖ５（Vik+1）をエッジＫ上に射影移動させることで、一端丸められた格子の形状を実際のエッジＫを再現することができる。この補正処理を実行することにより、従来表現することができなかったシャープなエッジを再現することができるので、シミュレーションを実行する上で精度の良い計算格子Ｇを提供することができる。
【００４１】
また、本発明に係る他の実施形態として、上記数式（１）に下記に示す数式（４）を新たに加えることで、より精度良く格子生成するようにしても良い。
【数４】
2014109939.tif 000006
すなわち、上記数式（１）は、下記の数式（１）の２となる（数式（５）として下記に示す）。
【数５】
2014109939.tif 000007
以下、数式（１）に新たに加えられた数式（４）について説明する。なお、数式（４）において、Ｃ４は、例えば、０．０１等の定数が与えられる。
(nVik+1・nWik+1)は、移動後の境界格子点Vik+1における法線ベクトルと、表面点候補Wii+1における法線ベクトルとの内積の２乗、すなわち、境界格子点における法線ベクトルと表面点ｗにおける法線ベクトルとの向きの一致度が高くなるように、境界格子点Vik+1の移動先である表面点Ｓを探索する式である。
【００４２】
したがって、数式（１）における数式（４）を最小にする表面点候補Wik+1を満たす表面点Ｓを例えば、数式（３）から探索して、表面点候補Wik+1とし、この表面点候補Wik+1の法線ベクトルの向きに近い、法線ベクトルを有する境界格子点Vik+1の位置を表面点Ｓから探索して表面点候補Wik+1に設定することを繰り返して、境界格子点Vikの移動先を実際の表面形状の表面Ｈ上に、より近づけるように配置することができる。
【００４３】
また、本発明に係る他の実施形態として、上記数式（１）及び数式（５）を下記式のようにしても良い。
【数６】
2014109939.tif 000008
上記数式（１）の３（以下数式６と称する）は、数式（１）のΣを計算させるものである。すなわち、数式（１）及び数式（５）では、境界格子点Vik毎に最適となるVik+1計算していたが、境界格子点Vikの移動先である境界格子点Vik+1を個別に計算させるのでなく、計算格子Ｇの境界格子点Vik全体に対して一度に実行させるものである。このように、数式（６）を最小とする境界格子点Vik+1の位置を決定させることで、移動後の境界格子点Vik+1を効率的かつ精度良く得ることができるとともに、格子生成に要する時間を短縮することができる。特に、数式（６）は、数式（１）及び数式（５）の計算時に数式（２）に含まれるVjk+1とVik+1とが同時に変化するために、なかなか境界格子点Vik+1が得られない場合に有効である。
【００４４】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能である。
【符号の説明】
【００４５】
１  格子生成装置、２  物体形状読込手段、３  物体表面点設定手段、
４  基本格子生成手段、５  境界格子点抽出手段、６  境界格子点移動手段、
７  格子点間距離調整手段、８  格子点位置補正手段。
【図１】
2014109939.tif 000009
【図２】
2014109939.tif 000010
【図３】
2014109939.tif 000011
【図４】
2014109939.tif 000012
【図５】
2014109939.tif 000013