(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2023-05-23
(45)【発行日】2023-05-31
(54)【発明の名称】3次元CAD/CAMシステム
(51)【国際特許分類】
G05B 19/4097 20060101AFI20230524BHJP
G05B 19/4093 20060101ALI20230524BHJP
G06F 30/10 20200101ALI20230524BHJP
【FI】
G05B19/4097 C
G05B19/4093 F
G06F30/10 100
(21)【出願番号】P 2022548714
(86)(22)【出願日】2022-06-06
(86)【国際出願番号】 JP2022022730
【審査請求日】2022-08-26
【早期審査対象出願】
(73)【特許権者】
【識別番号】516176361
【氏名又は名称】株式会社コアコンセプト・テクノロジー
(73)【特許権者】
【識別番号】504203572
【氏名又は名称】国立大学法人茨城大学
(74)【代理人】
【識別番号】100113424
【氏名又は名称】野口 信博
(72)【発明者】
【氏名】田口 紀成
(72)【発明者】
【氏名】乾 正知
(72)【発明者】
【氏名】小森 聡一郎
(72)【発明者】
【氏名】田中 昭雄
(72)【発明者】
【氏名】下村 克則
【審査官】増山 慎也
(56)【参考文献】
【文献】特開2022-072158(JP,A)
【文献】特開2016-126776(JP,A)
【文献】特開2000-235407(JP,A)
【文献】特開平05-084638(JP,A)
【文献】特開昭60-191305(JP,A)
【文献】米国特許第05710709(US,A)
【文献】米国特許出願公開第2004/0170302(US,A1)
【文献】FOLEY D. James et al. 著, 佐藤義雄 訳,コンピュータグラフィックス 理論と実践,第1版,日本,株式会社オーム社,2001年03月23日,ISBN 4-274-06405-0, pages 471-527,531-559,709-711
【文献】AKENINE-MOELLER Tomas et al. 著, 中本浩 ほか 訳,リアルタイムレンダリング,第4版,日本,株式会社ボーンデジタル,ISBN 978-4-86246-458-3, pages 619-673
【文献】ROMEIRO Fabiano et al.,Hardware-assisted Rendering of CSG Models,2006 19th Brazilian Symposium on Computer Graphics and Image Processing [online],米国,IEEE,2006年10月08日,pages 139-146,<DOI: https://doi.org/10.1109/SIBGRAPI.2006.24>
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/4097
G05B 19/4093
G06F 30/10
(57)【特許請求の範囲】
【請求項1】
三角形頂点の座標値と、三角形頂点の法線ベクトルと、三角形頂点からなる始点及び終点と始点及び終点の接線ベクトルで構成される曲線素とを含む微分多面体の集合である微分多面体モデルを用い、前記微分多面体の辺を接続して曲面を構成し、前記曲面間を曲面境界線で接続した閉曲面を構成し、前記閉曲面の内部に属する点集合である
工作物のプリミティブを生成するプリミティブ生成部と、
前記プリミティブの集合演算のツリー構造により、ソリッドモデルをCSG表現したCSGデータを格納する格納部と、
前記CSGデータに基づく集合演算により、前記プリミティブの閉曲面と直線との交点から前記ソリッドモデルと直線との交点を求め、前記ソリッドモデルに含まれる線分群である
前記工作物のデクセルを生成するデクセル生成部と、
前記工作物のデクセルに基づいて工具の位置を与えるNCデータを生成するNCデータ生成部と
を備える3次元CAD/CAMシステム。
【請求項2】
前記デクセル生成部が、リアルタイムレイトレーシングを用いて、前記ソリッドモデルと直線との交点を求める請求項1記載の3次元CAD/CAMシステム。
【請求項3】
前記NCデータ生成部が、前記デクセルに含まれない線分群である補デクセルを逆向き工具でカットすることにより、前記工具の位置を与えるNCデータを生成する請求項1記載の3次元CAD/CAMシステム。
【請求項4】
前記逆向き工具の外径が、前記工具の外径以上である請求項3記載の3次元CAD/CAMシステム。
【請求項5】
前記NCデータ生成部が、前記CSGデータに基づいて、前記ソリッドモデルと前記工具との最小距離を算出し、当該最小距離に基づいて工具の位置を移動させる処理を、前記最小距離がゼロとなるように繰り返し、前記補デクセルに基づく工具の位置を補正する請求項3記載の3次元CAD/CAMシステム。
【請求項6】
前記NCデータ生成部が、前記工具の中心から外側に半直線群を発生させ、前記プリミティブの閉曲面と半直線との交点から前記ソリッドモデルと半直線との交点を求め、前記ソリッドモデルと前記工具との最小距離を算出する請求項5記載の3次元CAD/CAMシステム。
【請求項7】
前記NCデータ生成部が、リアルタイムレイトレーシングを用いて、前記ソリッドモデルと半直線との交点を求める請求項6記載の3次元CAD/CAMシステム。
【請求項8】
前記プリミティブ生成部が、三角形頂点の座標値と、三角形頂点の法線ベクトルとに基づいて、三角形頂点からなる始点及び終点と始点及び終点の接線ベクトルで構成される曲線素を追加し、前記微分多面体を生成する請求項1記載の3次元CAD/CAMシステム。
【請求項9】
前記プリミティブ生成部が、隣接する第1の微分多面体及び第2の微分多面体で共有する三角形頂点の座標値と三角形頂点の法線ベクトルとを用いて空間測地線を生成し、前記空間測地線を共有して接続関係を構築し、曲面を構成する請求項1記載の3次元CAD/CAMシステム。
【請求項10】
前記プリミティブ生成部が、曲面間で共有する曲線素を用いて前記曲面間の接続関係を構築し、前記曲面間を接続した閉曲面を構築する請求項1記載の3次元CAD/CAMシステム。
【請求項11】
前記始点及び終点の接線ベクトルで構成される曲線素が、下記式(1)に示す3次の多項式曲線で表される請求項1記載の3次元CAD/CAMシステム。
【数1】
【請求項12】
三角形頂点の座標値と、三角形頂点の法線ベクトルと、三角形頂点からなる始点及び終点と始点及び終点の接線ベクトルで構成される曲線素とを含む微分多面体の集合である微分多面体モデルを用い、前記微分多面体の辺を接続して曲面を構成し、前記曲面間を曲面境界線で接続した閉曲面を構成し、前記閉曲面の内部に属する点集合である
工作物のプリミティブを生成するプリミティブ生成工程と、
前記プリミティブの集合演算のツリー構造により、ソリッドモデルをCSG表現したCSGデータを格納部に格納する格納工程と、
前記CSGデータに基づく集合演算により、前記プリミティブの閉曲面と直線との交点から前記ソリッドモデルと直線との交点を求め、前記ソリッドモデルに含まれる線分群である
前記工作物のデクセルを生成するデクセル生成工程と、
前記工作物のデクセルに基づいて工具の位置を与えるNCデータを生成するNCデータ生成工程と
を有する3次元CAD/CAM方法。
【請求項13】
三角形頂点の座標値と、三角形頂点の法線ベクトルと、三角形頂点からなる始点及び終点と始点及び終点の接線ベクトルで構成される曲線素とを含む微分多面体の集合である微分多面体モデルを用い、前記微分多面体の辺を接続して曲面を構成し、前記曲面間を曲面境界線で接続した閉曲面を構成し、前記閉曲面の内部に属する点集合である
工作物のプリミティブを生成するプリミティブ生成工程と、
前記プリミティブの集合演算のツリー構造により、ソリッドモデルをCSG表現したCSGデータを格納部に格納する格納工程と、
前記CSGデータに基づく集合演算により、前記プリミティブの閉曲面と直線との交点から前記ソリッドモデルと直線との交点を求め、前記ソリッドモデルに含まれる線分群である
前記工作物のデクセルを生成するデクセル生成工程と、
前記工作物のデクセルに基づいて工具の位置を与えるNCデータを生成するNCデータ生成工程と
をコンピュータに実行させる3次元CAD/CAMプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本技術は、ソリッドモデルを用いる3次元CAD/CAMシステムに関する。
【背景技術】
【0002】
デジタルトランスフォーメーション(DX:Digital Transformation)の基本的な考え方は、既存の仕事をバーチャルで行い、アルゴリズムによる確実で高速な処理に移行する部分を増やすことで著しい生産性の向上をはかろうという考え方である。数値、文章などは、バーチャル化しやすいが、製造業の世界では“もの”を扱うため、“もの”をバーチャルで表現するには、3次元モデル化してバーチャルの世界で表現しなければならない。
【0003】
従来、3次元CAD(3D Computer Aided Design)システムを使って“もの”を3次元モデルにしているが、3次元CADシステム間のデータ変換でトラブルが発生することが多い。このため、システム間でのスムースな連携に支障がでており、製造業のDX化が進んでいない原因になっている。
【0004】
3次元CADシステム間の3次元モデル変換の規格や仕組みとして、例えば、ANSI(American National Standard Institute:米国国家規格協会)規格のIGES(Initial Graphics Exchange Specification)、ISO(International Organization for Standardization:国際標準化機構)規格としてSTEP(Standard for the Exchange of Product model data)などが制定されているが、規格だけではデータ変換がうまくいっていない。その最大の理由は、モデリング精度という計算誤差を処理する仕組みが3次元CADシステムによって異なっているためである。モデリング精度を必要とする理由は、3次元モデルを表現する方法に原因がある。
【0005】
3次元モデルで表現する形状としては、ワイヤーフレームモデル、サーフェイスモデル、ソリッドモデルなどがあるが、3次元CADシステムの多くは、ソリッドモデルである。ソリッドモデルを表現する方法は、B-Rep(Boundary Representation)とCSG(Constructive Solid Geometry)の2つの方法が従来から考察されてきた。
【0006】
B-Repは、3次元モデルの表面を複数の曲面で覆い、境界で張り合わせて閉曲面とし、その内側を目的の3次元モデルであるとする表現方法である。一方、CSGは、プリミティブといわれる基本的な形状の集合演算によって3次元モデルを構成していく方法である(例えば、非特許文献1参照。)。
【0007】
自由曲面を扱う利便性や3次元モデルを応用した3DCAM(3D Computer Aided Manufacturing)などのインターフェースとしては、B-Repによる表現方法の方が都合よい。そのため、現在の3次元CADシステムのほとんどはB-Repを採用しており、CSGは補助的な役割で使用されているに過ぎない。3次元データの変換規定であるSTEPでもB-Repが採用されている。
【0008】
しかしながら、B-Repでは、3次元モデルで曲面を導入する必要があるため、モデリング誤差を導入しなければならない。現在の3次元CADシステムでは、Bスプライン曲面などのパラメトリック曲面を用いるのが主流である。パラメトリック曲面は、二変数関数F(u,v)によって(u,v)空間の矩形をxyz空間に投影してできる曲面である。このため、4変形が基本的な形である。
【0009】
図59は、B-Repにおける境界線でトリムされた曲面の一例を示す図である。
図59に示すように、B-Repにおいては、境界線でトリミングし、トリム曲面を使用する。曲面境界線を表す方法もパラメータで表現するパラメトリック曲線であるため、曲面境界線が曲面上に正確に乗っていることはなく、曲面境界線と曲面との隙間がモデリング精度以下であれば、曲面境界線が曲面に乗っていると判定しているにすぎない。
【0010】
図60は、B-Repにおける曲面間を接続する曲面境界線の一例を示す図である。
図60に示すように、B-Repでは、境界線に対して第1面及び第2面の情報で曲面間を接続し、全体として、曲面の内側をソリッドモデルとして認識する。そのため、曲面間にどうしても隙間が空いてしまう。このモデリング精度が3次元CADシステムにより異なるため、3次元モデルの変換において不具合が発生する主な要因となっている。
【0011】
一方、CSGによる表現方法は、現在、B-Rep表現を補助するために使用されている。CSGによるソリッドモデルの表現は、データ変換トラブルの主原因であるモデリング誤差を考慮する必要がないなどの利点がある。CSG表現の3次元CADシステムが主流にならなかった理由として、表示速度が遅いこと、3次元モデルの基本的な要素であるプリミティブの種類が少ないので曲面を含む形状の表現が困難であることなどが挙げられる。
【先行技術文献】
【特許文献】
【0012】
【文献】Introduction to Solid Modeling, Martti Mantyla, 1988
【発明の概要】
【発明が解決しようとする課題】
【0013】
本技術は、このような従来の実情に鑑みて提案されたものであり、曲面を含む形状に対し、工具の位置を与えるNCデータを高速に生成することができる3次元CAD/CAMシステムを提供する。
【課題を解決するための手段】
【0014】
本技術に係る3次元CAD/CAMシステムは、三角形頂点の座標値と、三角形頂点の法線ベクトルと、三角形頂点からなる始点及び終点と始点及び終点の接線ベクトルで構成される曲線素とを含む微分多面体の集合である微分多面体モデルを用い、前記微分多面体の辺を接続して曲面を構成し、前記曲面間を曲面境界線で接続した閉曲面を構成し、前記閉曲面の内部に属する点集合である工作物のプリミティブを生成するプリミティブ生成部と、前記プリミティブの集合演算のツリー構造により、ソリッドモデルをCSG表現したCSGデータを格納する格納部と、前記CSGデータに基づく集合演算により、前記プリミティブの閉曲面と直線との交点から前記ソリッドモデルと直線との交点を求め、前記ソリッドモデルに含まれる線分群である前記工作物のデクセルを生成するデクセル生成部と、前記工作物のデクセルに基づいて工具の位置を与えるNCデータを生成するNCデータ生成部とを備える。
【0015】
また、本技術に係る3次元CAD/CAM方法は、三角形頂点の座標値と、三角形頂点の法線ベクトルと、三角形頂点からなる始点及び終点と始点及び終点の接線ベクトルで構成される曲線素とを含む微分多面体の集合である微分多面体モデルを用い、前記微分多面体の辺を接続して曲面を構成し、前記曲面間を曲面境界線で接続した閉曲面を構成し、前記閉曲面の内部に属する点集合である工作物のプリミティブを生成するプリミティブ生成工程と、前記プリミティブの集合演算のツリー構造により、ソリッドモデルをCSG表現したCSGデータを格納部に格納する格納工程と、前記CSGデータに基づく集合演算により、前記プリミティブの閉曲面と直線との交点から前記ソリッドモデルと直線との交点を求め、前記ソリッドモデルに含まれる線分群である前記工作物のデクセルを生成するデクセル生成工程と、前記工作物のデクセルに基づいて工具の位置を与えるNCデータを生成するNCデータ生成工程とを有する。
【0016】
また、本技術に係る3次元CAD/CAMプログラムは、三角形頂点の座標値と、三角形頂点の法線ベクトルと、三角形頂点からなる始点及び終点と始点及び終点の接線ベクトルで構成される曲線素とを含む微分多面体の集合である微分多面体モデルを用い、前記微分多面体の辺を接続して曲面を構成し、前記曲面間を曲面境界線で接続した閉曲面を構成し、前記閉曲面の内部に属する点集合である工作物のプリミティブを生成するプリミティブ生成工程と、前記プリミティブの集合演算のツリー構造により、ソリッドモデルをCSG表現したCSGデータを格納部に格納する格納工程と、前記CSGデータに基づく集合演算により、前記プリミティブの閉曲面と直線との交点から前記ソリッドモデルと直線との交点を求め、前記ソリッドモデルに含まれる線分群である前記工作物のデクセルを生成するデクセル生成工程と、前記工作物のデクセルに基づいて工具の位置を与えるNCデータを生成するNCデータ生成工程とをコンピュータに実行させる。
【発明の効果】
【0017】
本技術によれば、モデリング誤差を考慮せずに、曲面を含む形状に対し、工具の位置を与えるNCデータを高速に生成することができる。
【図面の簡単な説明】
【0018】
【
図1】
図1は、本実施の形態に係る3次元CADシステムの構成例を示すブロック図である。
【
図2】
図2は、本実施の形態に係る3次元CADシステムを実現するコンピュータ装置の構成例を示すブロック図である。
【
図3】
図3は、微分多面体の細分割処理を説明するための図であり、
図3(A)は、三角形モデルを示し、
図3(B)は、空間測地線による境界線を示し、
図3(C)は、1微分多面体を示し、
図3(D)は、2微分多面体を示す。
【
図4】
図4は、曲線素を含む微分多面体の細分割処理を説明するための図であり、
図4(A)は、曲線素を含む三角形モデルを示し、
図4(B)は、曲線素による境界線を示し、
図4(C)は、1微分多面体を示す。
【
図5】
図5(A)は、微分多面体を説明するための図であり、
図5(B)は、曲線素情報を説明するための図である。
【
図6】
図6は、プリミティブのデータ構造およびCSG表現内でのプリミティブのデータ構造を説明するための図である。
【
図7】
図7は、曲面及び曲面境界線の一例を示す図である。
【
図8】
図8は、境界線がない曲面の一例を示す図である。
【
図9】
図9は、閉曲面の一例として立方体を示す図である。
【
図11】
図11は、閉曲面の一例として自由曲面を示す図である。
【
図12】
図12は、プリミティブの和集合及び積集合を有するツリー構造の一例を示す図である。
【
図13】
図13は、プリミティブの集合演算結果の一例を模式的に示す図である。
図13(A)は、立方体プリミティブA及び円柱プリミティブBの一例を模式的に示す図であり、
図13(B)は、立方体プリミティブAと円柱プリミティブBとの和A∪Bの一例を模式的に示す図であり、
図13(C)は、立方体プリミティブAと円柱プリミティブBとの積A∩B
~の一例を模式的に示す図であり、
図13(D)は、立方体プリミティブAと円柱プリミティブBとの積A∩Bの一例を模式的に示す図である。
【
図14】
図14は、
図12に示すツリー構造において、演算記号を省略した場合のツリー構造の一例を示す図である。
【
図15】
図15は、フィーチャのツリー構造の一例を示す図である。
【
図16】
図16は、パーツのツリー構造の一例を示す図である。
【
図17】
図17は、シェーディングを説明するための図であり、
図15(A)は、フラットシェーディングを説明するための図であり、
図15(B)は、フォンシェーディングを説明するための図である。
【
図18】
図18は、リアルタイムレイトレーシング処理を説明するためのフローチャートである。
【
図19】
図19は、暫定ビット列の計算方法を説明するための図であり、
図19(A)は、和集合の暫定ビット計算を示し、19(B)は、積集合の暫定ビット計算を示す。
【
図20】
図20は、光線1~光線3がCSG表現のソリッドモデルを通過する状況を模式的に示す図である。
【
図21】
図21は、
図20に示すCSG表現のソリッドモデルのツリー構造の一例を示す図である。
【
図22】
図22は、光線1がCSG表現のソリッドモデルを通過する状況を模式的に示す図である。
【
図23】
図23は、光線1がフィーチャを通過する交点情報を説明するための図である。
【
図24】
図24は、光線2がCSG表現のソリッドモデルを通過する状況を模式的に示す図である。
【
図25】
図24は、光線2がフィーチャを通過する交点情報を説明するための図である。
【
図26】
図26は、光線3がCSG表現のソリッドモデルを通過する状況を模式的に示す図である。
【
図27】
図27は、光線3がフィーチャを通過する交点情報を説明するための図である。
【
図30】
図30は、フィーチャ1と円筒の和集合演算したパーツの表示例である。
【
図32】
図32は、デクセルを生成するためのリアルタイムレイトレーシング処理を説明するためのフローチャートである。
【
図33】
図33は、直線がCSG表現のソリッドモデルを通過する状況を模式的に示す図である。
【
図34】
図34は、
図33に示すCSG表現のソリッドモデルのツリー構造の一例を示す図である。
【
図35】
図35は、金型形状の補デクセルの一例を示す図である。
【
図37】
図37は、逆向き工具による補デクセル(XZデクセル)のカットを説明するための図である。
【
図38】
図38(A)~38(C)は、それぞれボール工具、フラット工具、及びラジアス工具の一例を示す図であり、
図38(A’)~(C’)は、それぞれボール工具、フラット工具、及びラジアス工具に対応する逆向き工具の一例を示す図である。
【
図39】
図39は、形状から逆向きの工具を工具半径分Z方向に移動させた状態を模式的に示す図である。
【
図40】
図40は、形状に逆向き工具の表面を配置させた状態を模式的に示す図である。
【
図41】
図41は、形状に逆向きフラット工具の中心を配置させた状態を模式的に示す図である。
【
図42】
図42(A)は、形状に逆向きフラット工具の中心を配置させたときを説明する図であり、
図42(B)は、
図42(A)示すA-A’断面を示す図である。
【
図43】
図43(A)は、ラジアス工具の一例を示す図であり、
図43(B)は、ボール工具の一例を示す図である。
【
図44】
図44は、形状に逆向きボール工具の表面を配置させた状態を模式的に示す図である。
【
図45】
図45は、形状及び包絡面をXY平面に平行な平面で切断させた状態を模式的に示す図である。
【
図46】
図46は、工具位置を補正する補正処理を説明するための図である。
【
図47】
図47(A)は、倣い加工の場合における補正処理を説明する図であり、
図47(B)は、補正処理部分の拡大図である。
【
図48】
図48は、等高線加工の場合における補正処理を説明する図であり、
図48(B)は、補正処理部分の拡大図である。
【
図52】
図52は、補デクセルの逆向き工具によるカットを模式的に示す図である。
【
図54】
図54は、
図53に示す金型キャビティの溝部やコーナー部をフィレットで保護した例を示す図である。
【
図55】
図55は、キャビティの補デクセルの一例を示す図である。
【
図56】
図56は、
図55に示す補デクセルを逆向き工具としてφ5のボール工具でカットした状態を模式的に示す図である。
【
図57】
図57は、
図55に示す補デクセルを逆向き工具としてφ10のボール工具でカットした状態を模式的に示す図である。
【
図58】
図58は、補デクセルをφ10の逆向き工具でカットして加工した形状を示す図である。
【
図59】
図59は、B-Repにおける曲面境界線でトリムされた曲面の一例を示す図である。
【
図60】
図60は、B-Repにおける曲面間を接続する境界線の一例を示す図である。
【発明を実施するための形態】
【0019】
以下、本技術の実施の形態について、図面を参照しながら下記順序にて詳細に説明する。
1.3次元CADシステム
2.微分多面体による曲面
3.プリミティブの集合演算
4.3次元モデルの表示
5.デクセルの生成
【0020】
<1.3次元CADシステム>
図1は、本実施の形態に係る3次元CADシステムの構成例を示すブロック図である。
図1に示すように、3次元CADシステムは、プリミティブの形状処理を行う形状処理部1と、CSG(Constructive Solid Geometry)データを格納する格納部2と、CSG表現のソリッドモデルを表示する表示処理部3と、他の形式のデータをCSG表現のデータに変換し、CSG表現のデータを他の形式のデータに変換するデータ変換部4とを有する。また、形状処理部1は、プリミティブ生成部11と、集合演算処理部12と、作図線生成部13と、デクセル生成部14と、NCデータ生成部15とを有する。
【0021】
プリミティブ生成部11は、三角形頂点の座標値と、三角形頂点の法線ベクトルと、三角形頂点からなる始点及び終点と、始点及び終点の接線ベクトルで構成される曲線素とを含む微分多面体の集合である微分多面体モデルを用いる。そして、プリミティブ生成部11は、微分多面体の辺を接続して曲面を構成するとともに、曲面間を曲面境界線で接続した閉曲面を構成し、閉曲面の内部に属する点集合であるプリミティブを生成する。これにより、曲面を含む形状の表現を容易に行うことができる。ここで、閉曲面は、3次元空間を2つの領域に分離する面を意味する。
【0022】
また、プリミティブ生成部11は、三角形頂点の座標値と、三角形頂点の法線ベクトルとに基づいて、三角形頂点からなる始点及び終点と始点及び終点の接線ベクトルで構成される曲線素を追加し、微分多面体を生成する。これにより、例えば、頂点に法線ベクトル情報を持つ三角形を用いて微分多面体を生成することができる。
【0023】
また、プリミティブ生成部11は、隣接する第1の微分多面体及び第2の微分多面体で共有する三角形頂点の座標値と三角形頂点の法線ベクトルとを用いて空間測地線を生成し、空間測地線を共有して接続関係を構築し、曲面を構成する。すなわち、プリミティブ生成部11は、隣接する第1の微分多面体及び第2の微分多面体で空間測地線を共有することにより接続関係を構築し、この接続関係によって曲面を構成する。
【0024】
また、プリミティブ生成部11は、曲面間で共有する曲線素を用いて曲面間の接続関係を構築し、曲面間を接続した閉曲面を構築する。曲面間で共有する曲線素で曲面間の接続関係を構築し、曲面間を接続した場合、曲面間の曲線素の接続関係は曲面間の境界線となり、これが曲面境界線となる。これにより、モデリング誤差を考慮せずに曲面間を、曲線素の接続で構成される曲面境界線で接続することができる。
【0025】
曲線素は、下記式(1)に示す3次の多項式曲線で表されることが好ましい。
【0026】
【0027】
ここで、曲線素は、三角形頂点からなる始点及び終点と、始点及び終点の接線ベクトルとを含むものであり、曲線素の長さは、下記式(2)で表すことができる。
【0028】
【0029】
式(2)において、積分の上限値に曲線の長さが出てくるため、曲線の長さ=式(2)となるように繰り返し計算することにより、係数A→、B→、C→、D→を定める。
【0030】
集合演算処理部12は、プリミティブ間の集合演算を行い、記号操作のみを行うことで集合演算を実現する。記号操作のみで集合演算を実行することにより、簡素なデータ構造と集合演算の安定性を実現することができる。集合演算処理部12は、プリミティブの集合演算のツリー構造において、階層の上下に同じ集合演算記号がある場合、集合演算記号を省略する。これにより、演算量を削減することができる。
【0031】
作図生成部13は、2つのプリミティブの交線を作図線として生成する。これにより、プリミティブ生成部11において、作図線に基づいて新たなプリミティブを生成することができる。
【0032】
デクセル生成部14は、CSGデータに基づく集合演算により、プリミティブの閉曲面と直線との交点からソリッドモデルと直線との交点を求め、ソリッドモデルに含まれる線分群であるデクセルを生成する。デクセル生成部14は、後述するリアルタイムレイトレーシングを用いて、ソリッドモデルと直線との交点を求めることが好ましい。これにより、高速にデクセルを生成することができる。
【0033】
NCデータ生成部15は、デクセルに基づいて工具の位置を与えるNCデータを生成する。NCデータ生成部15は、デクセルに含まれない線分群である補デクセルを逆向き工具でカットすることにより、工具の位置を与えるNCデータを生成することが好ましい。これにより、例えば、逆向き工具の外径が、工具の外径以上であるものを使用することができ、工具のビビリが発生する溝部やコーナー部を保護することができる。
【0034】
また、NCデータ生成部15は、CSGデータに基づいて、ソリッドモデルと工具との最小距離を算出し、最小距離に基づいて工具の位置を移動させる処理を、最小距離がゼロとなるように繰り返し、補デクセルに基づく工具の位置を補正することが好ましい。これにより、ソリッドモデルの表面に接触させる工具の位置をnmレベルにすることができる。
【0035】
また、NCデータ生成部15は、工具の中心から外側に半直線群を発生させ、プリミティブの閉曲面と半直線との交点からソリッドモデルと半直線との交点を求め、ソリッドモデルと工具との最小距離を算出する。NCデータ生成部15は、リアルタイムレイトレーシングを用いて、ソリッドモデルと半直線との交点を求めることが好ましい。これにより、高速に工具の位置を補正することができる。
【0036】
格納部2は、プリミティブの集合演算のツリー構造により、ソリッドモデルをCSG表現したCSGデータを格納する。格納部2は、形状処理部1が形状処理するCSGデータを記憶する、例えば、RAM(Random Access Memory)や、ハードディスクなどのストレージである。CSGデータは、後述するように、三角形の集合モデルでプリミティブを構成可能であり、プリミティブ間の集合演算が可能であるツリー構造を有する。このCSGデータにより、プリミティブ間の集合演算によるツリー構造を用いて、ソリッドモデルを表現することができる。
【0037】
表示処理部3は、CSGデータに基づく集合演算により、プリミティブの閉曲面と光線との交点からソリッドモデルと光線との交点を求め、ソリッドモデルにおける光線の反射位置及び反射方向を計算する。
【0038】
表示処理部3は、プリミティブの集合演算のツリー構造において、階層の上下に同じ集合演算記号がある場合、集合演算記号を省略して、ソリッドモデルと光線との交点を求める。これにより、演算量を削減し、より高速にCSG表現のソリッドモデルを表示させることができる。
【0039】
表示処理部3は、例えば、GPU(Graphics Processing Unit)であり、CUDA(Compute Unified Device Architecture)をベースに記述されるレイトレーシングAPI(Application Programming Interface)を有し、リアルタイムレイトレーシングを用いて、ソリッドモデルと光線との交点を求める。これにより、ハードウェアで、光線とプリミティブの閉曲面との交点及び交点における閉曲面の法線ベクトルを高速に計算することができ、リアルタイムに表示することができる。
【0040】
データ変換部4は、例えば、STEP(Standard for the Exchange of Product model data)、IGES(Initial Graphics Exchange Specification)などのファイルをCSG表現のデータに変換し、CSG表現のデータをSTEP、IGESなどのファイルに変換する。
【0041】
このような3次元CADシステムによれば、微分多面体を基本要素とし、微分多面体の辺を接続して曲面を構成し、さらに曲面間を曲面境界線で接続して構成された閉曲面を使用することにより、モデリング誤差を考慮せずに、曲面を含む形状をCSG表現することができ、曲面を含む形状に対し、工具の位置を与えるNCデータを高速に生成することができる。また、ソリッドモデルを高速に表示することができる。
【0042】
図2は、本実施の形態に係る3次元CADシステムを実現するコンピュータ装置の構成例を示すブロック図である。
図2に示すように、コンピュータ装置は、プログラムの実行処理を行うCPU(Central Processing Unit)21と、演算処理を行うGPU(Graphics Processing Unit)22と、CPU21により実行されるプログラムを格納するROM(Read Only Memory)23と、プログラムやデータを展開するRAM(Random Access Memory)24と、ユーザにより各種の入力操作を受ける操作入力部25と、プログラムやデータを固定的に保存するストレージ26と、データを入出力する入出力インターフェース27とを備える。
【0043】
CPU21は、例えば、前述のプリミティブ生成部11、集合演算処理部12、作図線生成部13などの処理が可能である。また、CPU21は、例えばストレージ26に記録されている3次元CADプログラムを読み出し、RAM24に展開して実行することにより、各ブロックの動作を制御する。
【0044】
GPU22は、ビデオメモリ(VRAM)を有し、CPU21から要求に応じて描画処理及び計算処理が可能である。また、GPU22は、例えば、CUDA(Compute Unified Device Architecture)をベースに記述されるレイトレーシングAPI(Application Programming Interface)を有する。
【0045】
ROM23は、例えば読み込みのみ可能な不揮発性メモリであり、コンピュータ装置が有する各ブロックの動作に必要な定数等の情報を記憶する。RAM24は、揮発性メモリであり、動作プログラムの展開領域としてだけでなく、コンピュータ装置が有する各ブロックの動作において出力された中間データ等を一時的に記憶する格納領域としても用いられる。
【0046】
操作入力部25は、コンピュータ装置1に対して入力操作を行う際に用いられるユーザインタフェースである。操作入力部25は、ユーザの入力操作に応じて前述の情報処理の実行または停止等の命令をCPU21に対して出力する。
【0047】
ストレージ26は、RAM24に展開される前述の情報処理プログラムなどを記録する。なお、ストレージ26としては、HDD(Hard disk drive)、SSD(Solid State Drive)、光学ドライブなどを用いることができる。入出力インターフェース27は、GPU22によって生成した画像を表示装置に出力することが可能である。
【0048】
このようなハードウェア構成において、前述の3次元CADシステムは、CPU21、GPU22、ROM23、RAM24、CPU21などにより実行されたソフトウェアの連携によって実現することができる。また、ソフトウェアプログラムは、光ディスクや半導体メモリなどの記録媒体に記憶させて配布する他に、インターネットなどを経由してダウンロードさせる構成としてもよい。
<2.微分多面体による曲面>
【0049】
[微分多面体モデル]
微分多面体モデルは、基本要素である微分多面体の集合であり、微分多面体の細分割を繰り返すことによって生成される点の集合でもある。微分多面体の細分割は、三角形の2点を結ぶ境界線の中間点を用いることができる。境界線は、空間測地線であっても、曲線素であってもよく、いずれの場合も微分多面体と呼ぶ。ここで、微分多面体の頂点を点と定義し、辺をエッジ(edge)と定義する。
【0050】
図3は、微分多面体の細分割処理を説明するための図であり、
図3(A)は、三角形モデルを示し、
図3(B)は、空間測地線による境界線を示し、
図3(C)は、1微分多面体を示し、
図3(D)は、2微分多面体を示す。微分多面体モデルにおいて、エッジ同士が一致していたときは同一の線であるとして、それを稜線(ridge)と定義し、稜線の両端点は頂点(vertex)と定義する。微分多面体の細分割は、微分多面体モデルの稜線両端の頂点の法線ベクトルを用いて空間測地線を生成し、空間測地線の中間点に頂点及び法線ベクトルを追加して2本の稜線を生成する。コンピュータでの処理は有限回で終了する必要があるため、有限回細分割した後に3点で構成される微小な三角形で近似する。細分割回数がn回のものをn微分多面体と呼ぶ。
【0051】
図4は、曲線素を含む微分多面体の細分割処理を説明するための図であり、
図4(A)は、曲線素を含む三角形モデルを示し、
図4(B)は、曲線素による境界線を示し、
図4(C)は、1微分多面体を示す。曲線素は、三角形の2つの頂点と頂点における接線ベクトルで構成される。
図4(C)に示すように、境界線が曲線素である場合の細分割は、曲線素の中間点を使用し、曲線素の両端における法線ベクトルの平均を中間ベクトルとすることができる。
【0052】
図5(A)は、微分多面体を説明するための図であり、
図5(B)は、曲線素情報を説明するための図である。微分多面体モデルは、基本要素である微分多面体の集合であり、三角形の頂点(α,β,γ)の点情報と、三角形の辺(αβ,βγ,γα)の曲線素情報と、点情報の点IDと曲線素情報の曲線素IDとを含む三角形情報とを有する。点情報は、点ID毎に点の3次元の座標値と点の法線ベクトル(u
α,u
β,u
γ)とを含む点テーブルを有する。曲線素情報は、曲線素ID毎に、エッジ始点の点IDと、エッジ終点の点IDと、エッジ始点の接線ベクトルと、エッジ終点の接線ベクトルとを含む曲線素テーブルを有する。三角形情報は、三角形ID毎に、点IDと、曲線素IDと、曲線素の向き(正方向又は逆方向)と、三角形の法線ベクトルとを含む三角形テーブルを有する。ここで、法線ベクトル及び接線ベクトルは、正規化ベクトルである。
【0053】
すなわち、微分多面体モデルは、三角形頂点(α,β,γ)の座標値と、三角形頂点(α,β,γ)の法線ベクトル(uα,uβ,uγ)と、三角形頂点(α,β,γ)からなる始点及び終点と、始点及び終点の接線ベクトル(v1αβ,v2αβ,v1βγ,v2βγ,v1γα,v2γα)とを含む三角形の集合モデルである。
【0054】
始点の接線ベクトル及び終点の接線ベクトルは、正規化ベクトルであり、例えば、式(1)に示すような3次の多項式曲線で表すことができる。
【0055】
【0056】
ここで、曲線素は、三角形頂点からなる始点及び終点と、始点及び終点の接線ベクトルとを含むものであり、曲線素の長さは、下記式(2)で表すことができる。
【0057】
【0058】
式(2)において、積分の上限値に曲線の長さが出てくるため、曲線の長さ=式(2)となるように繰り返し計算することにより、係数A→、B→、C→、D→を定める。
【0059】
図5(B)に示すように、微分多面体の辺が曲線素である場合、始点と終点との2点間を、始点及び終点と始点及び終点の接線ベクトルとを含む曲線素で補間することにより、後述のように、曲面を扱うことが可能となる。また、微分多面体は、三角形メッシュモデルのポリゴンモデルであり、CG(Computer Graphics)用のデータ形式であるobj形式に変換することができる。よって、微分多面体の集合である微分多面体モデルを用いることにより、3Dシステム間のデータ連携を円滑化することができる。また、CGソフトウェアとの高い親和性を得ることができ、曲面の滑らかさを容易に表現することができる。
【0060】
[CSG表現のデータ構造]
図6は、プリミティブのデータ構造及びCSG表現内でのプリミティブのデータ構造を説明するための図である。CSGツリーノードは、根ノードであり、CSGノード及びプリミティブノードは、CSGツリーノードの子ノードである。
【0061】
CSGノードは、子ノードとして集合演算タイプノードを有し、CSGノードID毎に、プリミティブIDと、親ノードIDと、左子ノードIDと、右子ノードIDとを含むテーブルを有する。プリミティブノードは、子ノードとして、3次元座標ノードと、3次元ベクトルノードと、曲面素ノードと、曲線素ノードと、曲面ノードと、曲面境界線ノードとを有する。
【0062】
3次元座標ノードは、3次元座標ID毎に、三角形頂点の座標値(x,y,z)を含むテーブルを有する。3次元座標ベクトルは、3次元ベクトルID毎に、法線ベクトル及び接線ベクトルの成分(x,y,z)を含むテーブルを有する。曲面素ノードは、曲面素ID毎に、頂点座標IDと、頂点法線IDと、曲線素IDとを含むテーブルを有する。曲面素は、微分多面体と同じものである。曲線素ノードは、曲線素ID毎に、始点座標IDと、終点座標IDと、始点における接線ベクトルIDと、終点における接線ベクトルIDと、左隣接曲面素IDと、右隣接曲面素IDとを含むテーブルを有する。曲面ノードは、曲面ID毎に、曲面素ID群を含むテーブルを有する。曲面境界線ノードは、曲面境界線ID毎に、曲線素ID群と、曲線素群の向きとを含むテーブルを有する。
【0063】
ここで、曲面は、曲面境界線で囲まれた微分多面体群であり、曲面境界線は、連なった曲線素列で構成される。換言すれば、曲面は、微分多面体情報を有するものであり、曲面境界線は曲線素情報を有するものである。このようなデータ構造により、曲面を含むプリミティブを微分多面体モデルで表現することができ、また、プリミティブに対する集合演算を行うことができる。
【0064】
[微分多面体モデルの生成]
微分多面体モデルは、例えば、STEP(Standard for the Exchange of Product model data)、IGES(Initial Graphics Exchange Specification、STL(Standard Triangulated Language))などのファイルから変換することができる。なお、STLは、「StereoLithography」と呼ばれることもある。
【0065】
先ず、3DCADモデルから、三角形頂点の座標値と、三角形頂点の法線ベクトルとを含む三角形の集合体モデルに変換し、三角形頂点の座標値と、三角形頂点の法線ベクトルとを含む点テーブルと、点IDを含む三角形テーブルとを作成する。
【0066】
この集合体モデルは、曲面を指定の近似誤差で三角形のポリゴンで近似して出力する際に頂点の法線ベクトルをCADデータから計算して付加した法線ベクトルをポリゴンの頂点に付加したモデルである。法線ベクトル付き三角形ポリゴンモデルは、プログラムにより、例えば3次多項式で表される曲面から指定の精度で出力される。法線ベクトル付き三角形ポリゴンモデルは、倍精度浮動小数点数の精度で出力されることが好ましい。
【0067】
次に、三角形の集合体モデルを用いて、三角形のエッジを抽出し、曲線素ID毎に、エッジ始点の点IDと、エッジ終点の点IDと、エッジ始点の接線ベクトルと、エッジ終点の接線ベクトルとを含む曲線素テーブルを作成し、三角形テーブルに、曲線素IDと、曲線素の向き(正方向又は逆方向)とを追加する。
【0068】
これにより、三角形頂点(α,β,γ)の座標値と、三角形頂点(α,β,γ)の法線ベクトル(uα,uβ,uγ)と、三角形頂点(α,β,γ)からなる始点及び終点と、始点及び終点の接線ベクトル(v1αβ,v2αβ,v1βγ,v2βγ,v1γα,v2γα)とを含む三角形の集合モデルである微分多面体モデルを生成することができる。
【0069】
[曲面及び曲面境界線]
図7は、曲面及び曲面境界線の一例を示す図であり、
図8は、曲面境界線がない曲面の一例を示す図である。
図7及び
図8に示すように、曲面は、微分多面体を頂点で繋ぎ合わせて構成され、曲面の端は、曲線素である。頂点には、法線ベクトルがあるため、細分割をしていくと、その中間点には法線ベクトルが与えられる。この処理を繰り返すと、微分多面体上にはいたるところで法線ベクトルが生成され、法線ベクトルの向きによって微分多面体の向きが決まる。そのため、曲面においても自然に曲面の向きが存在する。
【0070】
境界線は、
図7に示す両矢印の点線範囲のように、滑らかに接続される曲線素のグループであり、曲面は、連続した境界線で囲まれる。境界線は、一方の曲面を構成する曲面素の順序リストと、他方の曲面を構成する曲面素の順序リストとを有し、曲面の接続関係を表すことができる。また、
図8に示すように、境界線がない曲面も存在する。なお、ここおける曲面及び境界線の定義は、一般の曲面及び境界線の定義とは異なり、ローカルな定義である。
【0071】
[閉曲面]
図9は、閉曲面の一例として立方体を示す図であり、
図10は、閉曲面の一例として円柱を示す図であり、
図11は、閉曲面の一例として自由曲面を示す図である。閉曲面は、複数の曲面を境界線で接続して閉じた曲面を構成するものである。ただし、閉曲面は、自己交差していないものとする。閉曲面は、法線ベクトルを反転して曲面の向きを反転させることも可能であり、閉曲面の向きを与えることも可能である。
【0072】
<3.プリミティブの集合演算>
閉曲面は、3次元空間を2つの領域に分離する。閉曲面の裏面側にある点集合をプリミティブと呼ぶ。また、プリミティブは、ローカルな座標系を有する。
【0073】
プリミティブは、点の集合であるので、プリミティブに対する集合演算を行うことができる。本来の集合演算の定義と異なる部分があるので、ここで明確に定義する。
【0074】
[補集合]
プリミティブの補集合は、3次元空間のプリミティブ以外の点の集合の閉包として扱う。このため、プリミティブの補集合は、閉曲面上の点を含むものである。プリミティブの補集合は、一般的な集合の補集合の閉包を意味していてA~という記号で表し、補集合(A)と表す場合もある。また、プリミティブの補集合を略称として補集合と呼ぶ。
【0075】
[和集合]
プリミティブの和集合は、通常の意味での和集合である。プリミティブA、プリミティブBの和集合演算を行って和集合を求める場合、属性としてプリミティブの補集合演算と座標変換を付与することができる。
【0076】
座標変換したプリミティブをTAAで表すと、TAA∪TBBはそれぞれの座標変換で位置を変換したのちに、和集合演算を行うことを示している。和集合の記号は∪を使用する。プリミティブの代わりに、和集合同士の和集合、和集合とプリミティブの和集合演算を行うことができる。
【0077】
図12は、プリミティブの和集合及び積集合を有するツリー構造の一例を示す図である。
図12において、属性は、座標変換、補集合演算を含んでいる。また、ツリー構造における和集合及び積集合の記号の部分をノードという。
【0078】
[積集合]
プリミティブの積集合も、通常の意味での積集合である。和集合と同様に、プリミティブA、プリミティブBの積集合演算を行って積集合を求める場合、プリミティブの補集合演算と座標変換を属性として付与することができる。また、和集合と同様に、座標変換したプリミティブをTAAで表すと、TAA∩TBBはそれぞれの座標変換で位置を変換したのちに、積集合をとることを示している。積集合の記号は∩を使用する。プリミティブの代わりに、和集合及び積集合同士の積集合、和集合及び積集合とプリミティブの積集合演算を行うことができる。
【0079】
図13は、プリミティブの集合演算結果の一例を模式的に示す図である。
図13(A)は、立方体プリミティブA及び円柱プリミティブBの一例を模式的に示す図である。
図13(B)は、立方体プリミティブAと円柱プリミティブBとの和A∪Bの一例を模式的に示す図である。
図13(C)は、立方体プリミティブAと円柱プリミティブBとの積A∩B
~の一例を模式的に示す図である。A∩B
~は、プリミティブAの集合からプリミティブBの集合を取り除いた差になり、この演算によって、プリミティブ間の差分を求めることができる。B
~はBの補集合の閉包を表し、B
~を補集合(B)と表す場合もある。
図13(D)は、立方体プリミティブAと円柱プリミティブBとの積A∩Bの一例を模式的に示す図である。
【0080】
[階層の圧縮]
図14は、
図12に示すツリー構造において、演算記号を省略した場合のツリー構造の一例を示す図である。プリミティブの集合演算のツリー構造において、階層の上下で同じ演算記号がある場合、演算記号を省略することができる。この処理を階層の圧縮と呼ぶこととする。例えば、
図12に示すツリー構造は、
図14に示すようなツリー構造に変更することができる。
図14に示すツリー構造において、属性A’は、属性Aと属性ABを合成した属性であり、同様にして、属性B’は属性Bと属性ABを合成した属性である。階層の圧縮は、後述するリアルタイムレイトレーシングの処理で光線とCSG表現によるソリッドモデルとの積集合を求めるときに重要になる。
【0081】
[集合演算操作]
図15は、フィーチャのツリー構造の一例を示す図であり、
図16は、パーツのツリー構造の一例を示す図である。
図15に示すように、ノードに相当する和集合及び積集合の操作で生成される集合をフィーチャと呼ぶ。また、
図16に示すように、最上位のノードで生成される集合をパーツと呼ぶ。CSG表現によるソリッドモデルは、コンピュータ内で、プリミティブの定義とツリー構造で表現することができる。
【0082】
フィーチャ1は、立方体プリミティブをスケールして移動する変換を別に実行し、これらのプリミティブの和集合演算を行ったものである。パーツは、フィーチャ1の集合に円柱を使って穴をあけて作成したものであり、円柱プリミティブをスケーリング及び配置した後、補集合演算とフィーチャ1との積集合を求めることで作成することができる。このようなコンピュータ内の演算は、座標変換と記号操作のみで行うことができる。
【0083】
<4.3次元モデルの表示>
図17は、シェーディングを説明するための図であり、
図17(A)は、フラットシェーディングを説明するための図であり、
図17(B)は、フォンシェーディングを説明するための図である。フラットシェーディングは、微分多面体モデルの三角形の法線ベクトルの方向に反射する光を用いて3次元モデルを表示するものである。また、フォンシェーディングは、微分多面体モデルの三角形の頂点法線ベクトルで三角形内の法線ベクトルを補間し、その法線ベクトルに反射する光を用いて3次元モデルを表示するものである。
【0084】
このように3次元モデルを三角形の集合体モデルである微分多面体モデルを用いて、三角形に光を当てた時の反射光を高速に計算することにより、高速に3次元モデルをシェーディング表示することができる。
【0085】
また、CSG表現による3次元モデルは、リアルタイムレイトレーシングを用いることができる。レイトレーシングとは、人が物体を見るときの物理的な現象をシミュレーションする方法で、光線の一本一本について物体や物体のおかれている環境で反射・散乱・減衰を追跡する方法で、最終的に視覚に入ってくる光線を求める方法である。近年、NVIDIA社からGeForce RTX(商標)が発売されて、リアルタイムレイトレーシングが実現されている。このハードウェアをカスタマイズすることでCSG表現によるソリッドモデルを直接的にリアルタイムに表示することが可能になる。
【0086】
リアルタイムレイトレーシング処理は、例えば、Nvidia OptiX(商標)を用いることができる。Nvidia OptiX(商標)は、CUDA(Compute Unified Device Architecture)をベースに記述されるレイトレーシングAPI(Application Programming Interface)である。Nvidia OptiX(商標)の特徴は、光線の衝突判定・衝突時の挙動・非衝突時の挙動等、レイトレーシングの様々な処理をプログラムできることである。既存のシェーダーが適用できないモデルに対しても、ユーザがプログラムを記述することで効率的にレイトレーシングを行うことができる。
【0087】
図18は、リアルタイムレイトレーシング処理を説明するためのフローチャートである。先ず、ステップS11において、レイ(光線)を生成し、ステップS12において、レイを各オブジェクトに進行させる。ここで、オブジェクトは、フィーチャの最上位にあるパーツである。
【0088】
ステップS13では、レイを各オブジェクトに衝突させ、交点を求める。レイとパーツとの最短の交点は、次のように求めることができる。
【0089】
先ず、最下位の各フィーチャに、始点ビット列、終点ビット列、暫定ビット列、最終ビット列を含む交点情報を準備する。各ビット列の長さは、光線と全ての閉曲面との交点数とする。そして、光線と閉曲面との交点を光線の進行方向の順番に並べ、進行方向の順番に交点番号を1から付ける。
【0090】
光線が、フィーチャに直接所属するプリミティブの閉曲面に侵入する点があると、始点ビット列の交点番号の位置にビットを立てる。閉曲面から離脱する点である場合は、終点ビット列の交点番号の位置にビットを立てる。
【0091】
次に、始点ビット列及び終点ビット列を用い、集合演算記号により暫定ビット列を処理する。
【0092】
図19は、暫定ビット列の計算方法を説明するための図であり、
図19(A)は、和集合の暫定ビット計算を示し、19(B)は、積集合の暫定ビット計算を示す。和集合演算の場合は、
図19(A)に示す累積計算の配列を使い、列の先頭から始点ビット列と終点ビット列をチェックし、始点ビット列の位置にビットが立っていると1をプラスする。終点ビット列の位置にビットが立っていると次の位置に1をマイナスする。0でない列の位置にビットを立てることで暫定ビット列の処理が終了する。また、積集合演算の場合は、
図19(B)に示すように、始点ビット列のビットが立っている交点番号が最大の位置から終点ビット列のビットが立っている交点番号の最小の位置まで、暫定ビット列にビットを立てる。
【0093】
最終ビット列の処理は、最下位にあるフィーチャから順番に処理を行う。最下位にあるフィーチャでは、暫定ビット列をそのまま最終ビット列にコピーする。1つ上位のフィーチャは、自分の暫定ビット列と配下にあるフィーチャの最終ビット列との集合演算を行い、最終ビット列に書き込む。
【0094】
このようにして順次上位のフィーチャの最終ビット列を確定し、フィーチャの最上位にあるパーツの最終ビット列を確定する。そして、パーツの最終ビット列の最小の交点番号の位置が、光線とパーツとの交点となり、この交点及び法線ベクトルにより、光線の反射位置と反射方向を得ることができる。
【0095】
ステップS14では、シーン全体のレイが進行完了したか否かを判断する。シーン全体のレイ進行が完了したと判断した場合はステップS15に進み、シーン全体のレイ進行が完了していないと判断した場合はステップS12に戻り、レイを各オブジェクトに進行させる。
【0096】
ステップS15では、レイの最も近い交点が確定したか否かを判断する。交点が確定したと判断した場合はステップS16に進み、交点が確定していないと判断した場合はステップS17に進む。
【0097】
ステップS16では、最短衝突オブジェクト用シェーディングを用いて、3次元モデルを表示し、ステップS17では、未衝突用シェーディングを用いて、3次元モデルを表示する。
【0098】
このようなリアルタイムレイトレーシング処理をハードウェアで行うことにより、3次元モデルにおける光線の反射位置及び反射方向をリアルタイムに計算し、表示することができる。
【0099】
[具体例]
次に、前述したステップS13における光線とCSG表現のソリッドモデルとの最短の交点を求める方法について、具体例を挙げて説明する。
【0100】
図20は、光線1~光線3がCSG表現のソリッドモデルを通過する状況を模式的に示す図であり、
図21は、
図20に示すCSG表現のソリッドモデルのツリー構造の一例を示す図である。具体例では、
図20に示すように、光線1~光線3が3次元モデルを通過する範囲を、
図21に示すツリー構造の最下層から集合演算記号によって求め、最初に光線が当たる位置を求める。より具体的には、補集合((A∩B)∪(C∩D))∩Eの範囲で、最初に光線1~光線3が通過する位置を求める。
【0101】
ここで、前述した階層の圧縮を行うことにより、フィーチャ数を減らすことができ、フィーチャ毎に必要な交点情報を減らすことができる。また、光線とソリッドモデルを構成するプリミティブの閉曲面の交点間には変化がないため、その間は圧縮したとして考えてよい。
【0102】
図22は、光線1がCSG表現のソリッドモデルを通過する状況を模式的に示す図であり、
図23は、光線1がフィーチャを通過する交点情報を説明するための図である。
図22に示すように、光線1は、B
in、C
in、B
out、D
in、E
in、C
out、D
out、E
outの順番でプリミティブA~Eの閉曲面を通過する。
【0103】
図23に示すように、交点情報を用いて、(A∩B)及び(C∩D)の最終ビット列から(A∩B)∪(C∩D)の最終ビット列を求め、補集合((A∩B)∪(C∩D))の最終ビット列を求める。ここで、補集合((A∩B)∪(C∩D))の最終ビット列は、閉曲面上の点を含むため、(A∩B)∪(C∩D)の最終ビット列において、ビットが立っている交点番号が最小の位置の+1の位置から交点番号が最大の位置の-1の位置までビットが立ったビット列を反転したものである。すなわち、補集合((A∩B)∪(C∩D))の最終ビット列は、交点番号2~5に立っているビット列を反転させたものである。そして、補集合((A∩B)∪(C∩D))∩Eの暫定ビット列と補集合((A∩B)∪(C∩D))の最終ビット列とを集合演算し、補集合((A∩B)∪(C∩D))∩Eの最終ビット列を得る。最終ビット列により、光線1がCSG表現のソリッドモデルを通過する最初の位置は、交点番号6のC
outの位置であること分かる。
【0104】
図24は、光線2がCSG表現のソリッドモデルを通過する状況を模式的に示す図であり、
図25は、光線2がフィーチャを通過する交点情報を説明するための図である。
図24に示すように、光線2は、A
in、B
in、E
in、A
out、C
in、B
out、D
in、C
out、D
out、E
outの順番でプリミティブA~Eの閉曲面を通過する。
【0105】
図25に示すように、交点情報を用いて、前述と同様に、(A∩B)及び(C∩D)の最終ビット列から(A∩B)∪(C∩D)の最終ビット列を求め、補集合((A∩B)∪(C∩D))の最終ビット列を求める。補集合((A∩B)∪(C∩D))の最終ビット列は、交点番号3に立っているビット列を反転させたものである。そして、補集合((A∩B)∪(C∩D))∩Eの暫定ビット列と補集合((A∩B)∪(C∩D))の最終ビット列とを集合演算し、補集合((A∩B)∪(C∩D))∩Eの最終ビット列を得る。最終ビット列により、光線2がCSG表現のソリッドモデルを通過する最初の位置は、交点番号4のA
outの位置であること分かる。
【0106】
図26は、光線3がCSG表現のソリッドモデルを通過する状況を模式的に示す図であり、
図27は、光線3がフィーチャを通過する交点情報を説明するための図である。
図26に示すように、光線3は、E
in、A
in、B
in、A
out、C
in、B
out、D
in、C
out、D
out、E
outの順番でプリミティブA~Eの閉曲面を通過する。
【0107】
図27に示すように、交点情報を用いて、前述と同様に、(A∩B)及び(C∩D)の最終ビット列から(A∩B)∪(C∩D)の最終ビット列を求め、補集合((A∩B)∪(C∩D))の最終ビット列を求める。補集合((A∩B)∪(C∩D))の最終ビット列は、ビットが立っていないビット列を反転させたものである。そして、補集合((A∩B)∪(C∩D))∩Eの暫定ビット列と補集合((A∩B)∪(C∩D))の最終ビット列とを集合演算し、補集合((A∩B)∪(C∩D))∩Eの最終ビット列を得る。最終ビット列により、光線3がCSG表現のソリッドモデルを通過する最初の位置は、交点番号1のE
inの位置であること分かる。
【0108】
[表示例]
図28は、
図15に示すフィーチャ1の表示例を示す図である。
図29は、
図16に示すパーツの表示例を示す図である。また、
図30は、フィーチャ1と円筒の和集合演算したパーツの表示例である。
【0109】
3次元CADシステムは、2次元スクリーンの中で3次元モデルを表示するため、モデル認識のために頻繁に視点を変更するが、3次元モデルを三角形の集合体モデルである微分多面体モデルを用いて、三角形に光を当てた時の反射光を高速に計算することにより、視点変更したときの表示を高速に処理することができる。特に、リアルタイムレイトレーシングが可能なハードウェアを用いることにより、CSG表現によるソリッドモデルをリアルタイムに表示することができる。
【0110】
<5.デクセルの生成>
また、3次元CAD/CAMシステムは、CSGデータに基づく集合演算から、ソリッドモデルにおけるデクセルの線分群を計算することにより、デクセルを表示することができる。デクセルにより、工作物形状の加工シミュレーションや3Dプリンタ用の造形情報を生成することができる。
【0111】
図31は、2次元デクセルの一例を示す図である。
図31に示すように、デクセルは、X軸に平行かつ微小な等間隔の直線群と形状との積集合、及びY軸に平行かつ微小な等間隔の直線群と形状との積集合によって形状を近似する表現方法である。3次元デクセルの場合は、これらにZ軸方向の線分群を加えることで得られる。
【0112】
ソリッドモデルにおけるデクセルの線分群は、3次元モデルと同様、リアルタイムレイトレーシングを用いて計算することができる。3次元モデルでは、CSGデータに対して光線の集合演算を行う方法を示したが、3次元デクセルでは、CSGデータに対して光線の代わりにデクセルの直線の集合演算を行う。そして、X軸に平行な直線群、Y軸に平行な直線群、及びZ軸に平行な直線群において、CSG表現のソリッドモデル内に存在する線分群により3次元デクセルを構成する。
【0113】
図32は、デクセルを生成するためのリアルタイムレイトレーシング処理を説明するためのフローチャートである。先ず、ステップS21において、X軸、Y軸、又はZ軸のいずれかに平行な直線を生成し、ステップS22において、直線を各オブジェクトに進行させる。ここで、オブジェクトは、フィーチャの最上位にあるパーツである。
【0114】
ステップS23では、直線を各オブジェクトに衝突させ、交点を求める。直線とパーツとの最短の交点は、前述した光線とパーツとの最短の交点の求め方と同様であり、パーツの最終ビット列の最小の交点番号の位置が、直線とパーツとの交点となる。
【0115】
ステップS24では、シーン全体のX軸に平行な直線群、Y軸に平行な直線群、及びZ軸に平行な直線群について進行完了したか否かを判断する。シーン全体の直線進行が完了したと判断した場合はステップS25に進み、シーン全体の直線進行が完了していないと判断した場合はステップS22に戻り、直線を各オブジェクトに進行させる。
【0116】
このようなリアルタイムレイトレーシング処理をハードウェアで行うことにより、3次元デクセルの線分群をリアルタイムに計算することができる。
【0117】
図33は、直線がCSG表現のソリッドモデルを通過する状況を模式的に示す図であり、
図34は、
図33に示すCSG表現のソリッドモデルのツリー構造の一例を示す図である。先ず、直線がソリッドモデルを通過する範囲を、
図34に示すツリー構造の最下層から集合演算記号によって求める。そして、例えば
図33に示すように、直線を、E
in、A
in、B
in、A
out、C
in、B
out、D
in、C
out、D
out、E
outの順番でプリミティブA~Eの閉曲面に通過させ、補集合((A∩B)∪(C∩D))∩Eの3つの線分E
inB
in、線分A
outD
in、及び線分C
outE
outのデクセルを生成する。このようにX軸に平行な直線群、Y軸に平行な直線群、及びZ軸に平行な直線群がソリッドモデルを通過する範囲について、CSG表現のツリー構造の最下層から集合演算記号によって求めることにより、CSGを線分群で近似するデクセルを求めることができる。
【0118】
<6.NCデータの生成>
次に、デクセルを用いたNCデータの生成方法について説明する。NCデータは、形状を加工するための工具の動作を求めるものである。NCデータは、コンピュータで処理する情報であるため、デジタルの情報になっている。形状を加工するためには、形状に接触する工具の位置をNCデータとして与えることになる。換言すれば、NCデータとは、形状に所定距離以下の緻密な点で接触する工具位置を指定するものである。本実施の形態では、NCデータの生成に際し、補デクセルという概念を導入する。これは補集合の概念とほとんど同じである。
【0119】
図35は、金型形状の補デクセルの一例を示す図であり、
図36は、補集合を説明するための図である。
図35に示す例では、金型のコア型形状を近似する補デクセルをX軸に平行な線分群及びZ軸に平行な線分群で示している。デクセルは、CSG表現のソリッドモデルを近似するものであるが、CSGを近似するデクセルに含まれない線分の集合を補デクセルと定義する。すなわち、
図36に示すように、補デクセルは、全体集合UをX軸に平行な直線群及びZ軸に平行な直線群(XZデクセル)とし、集合Aを所定形状のXZデクセルとしたときの補集合A
~である。
【0120】
また、本実施の形態では、補デクセルを構成する線分の端点に逆向き工具の先端を配置してカットすることにより、通常の工具位置の経路を含むNCデータを得る。NCデータは、後述する逆オフセット法を用いて得ることができる。
【0121】
図37は、逆向き工具による補デクセル(XZデクセル)のカットを説明するための図である。
図37に示すように、補デクセルを構成するZ軸に平行な線分の端点を逆向き工具31でカットする。また、補デクセルの間隔を小さくして0に近づかせることにより、カット位置を緻密にすることができる。
【0122】
図38(A)~38(C)は、それぞれボール工具、フラット工具、及びラジアス工具の一例を示す図であり、
図38(A’)~(C’)は、それぞれボール工具、フラット工具、及びラジアス工具に対応する逆向き工具の一例を示す図である。
図38に示すように、逆向き工具は、通常の工具をZ軸方向に反転したものである。逆向き工具による補デクセルのカットは、後述するように、ボール工具だけではなく、ラジアス工具やフラット工具でも使用することができる。
【0123】
[逆オフセット法によるNCデータの作成]
図39は、形状から逆向きの工具を工具半径分Z方向に移動させた状態を模式的に示す図であり、
図40は、形状に逆向き工具の表面を配置させた状態を模式的に示す図である。逆オフセット法は、形状表面上の点に逆向き工具の先端の中心を配置したときに逆向き工具表面が生成する包絡面を想定すると、この包絡面は形状を工具半径分オフセットしたものとみなせるという原理に基づいている。
【0124】
図39に示すように、逆向きの工具31全体を工具半径分Z方向に移動して、逆向きの工具31の表面が生成する包絡面は、形状を工具半径分オフセットした逆オフセット法と同じ結果となる。したがって、
図40に示すように、逆向き工具31の表面を形状上の点に配置してその包絡面を求め、包絡面上の点を工具32の表面の位置としても、形状に接触する工具32の位置を得ることができる。この原理は、工具32の先端が球面であれば明確であり、Z方向にスケーリングしても成り立つため、工具32の先端が楕円面でも成立する。
【0125】
図41は、形状に逆向きフラット工具の中心を配置させた状態を模式的に示す図である。また、
図42(A)は、形状に逆向きフラット工具の中心を配置させたときを説明する図であり、
図42(B)は、
図42(A)示すA-A’断面を示す図である。
図41及び
図42に示すように、形状と逆向き工具41をXY平面に平行な平面で切断すると、形状断面を2次元的に工具半径分オフセットしたものは包絡面断面と一致する。また、包絡面断面上の点を工具42の中心としたときには、工具42は形状に接する。したがって、工具の先端が平面であっても、逆オフセット法の原理は成立する。
【0126】
図43(A)は、ラジアス工具の一例を示す図であり、
図43(B)は、ボール工具の一例を示す図である。また、
図44は、形状に逆向きボール工具の表面を配置させた状態を模式的に示す図であり、
図45は、形状及び包絡面をXY平面に平行な平面で切断させた状態を模式的に示す図である。
【0127】
図43(A)及び
図43(B)に示すように、ラジアス工具の平坦部分rを取り除くとボール工具になる。ボール工具では、前述したように逆オフセット法の原理が成り立つ。
図44に示す形状及び包絡面の断面を取ると、
図45に示すように形状断面と包絡面断面を得ることができる。逆向き工具51の先端表面は、形状断面に点で接触していて、工具52の先端表面は包絡面断面に点で接触している。
【0128】
包絡面断面をラジアス工具の平坦部分のrだけオフセットし、そのオフセット線上にラジアス工具の中心に置くと、ラジアス工具は形状に接触する。包絡面断面のrのオフセット線は、逆向きラジアス工具の包絡面を平面で切断した線になるため、ラジアス工具でも逆オフセット法の原理が成立する。また、ラジアス工具の側面が楕円面であっても同様に逆オフセット法の原理が成り立つ。
【0129】
[補正処理]
本実施の形態におけるデクセルは、CSG表現のソリッドモデルを近似するものであるため、例えば高精度を必要とする仕上げ加工を行う場合、工具位置を補正する補正処理を行うことが好ましい。
【0130】
図46は、工具位置を補正する補正処理を説明するための図である。
図46に示すように、工具61の位置の補正の方法は、工具61位置において工具中心から外側に半直線群を発生させ、CSG表現のソリッドモデルの形状62との距離を求める。この方法はレイトレーシングの方法と同様の処理を行うことができる。半直線群の中からソリッドモデルの形状62との交点の距離が最も近いもの(負の場合を含む)を選んで工具61の位置を補正する。この補正の方法は、例えば、倣い加工、等高線加工などで仕上げ加工を行う際の工具の動かし方によって処理が異なる。
【0131】
倣い加工は、2次元に投影した線に沿ってZ方向に移動して形状に沿って加工する方法である。等高線加工は、XY平面に平行に工具を動かして形状に沿って加工する方法である。
【0132】
図47(A)は、倣い加工の場合における補正処理を説明する図であり、
図47(B)は、補正処理部分の拡大図である。
図47(A)及び
図47(B)に示すように、倣い加工の場合、工具61の中心から延ばした半直線群のうち形状62との距離が最小である半直線の距離をd、工具61の中心軸との角度をθとするとき、工具61の高さをdcosθ下げる。そして、再度、工具61の中心から半直線群を発生させ、最も近い距離を求めて工具61の高さをdcosθ下げ、この処理を半直線群の最小の距離dがゼロになるように繰り返す。これにより、工具をワークにnmレベルで接触させるNCデータを得ることができる。
【0133】
図48は、等高線加工の場合における補正処理を説明する図であり、
図48(B)は、補正処理部分の拡大図である。
図48(A)及び
図48(B)に示すように、等高線加工の場合、倣い加工の場合と同様、工具61の中心から延ばした半直線群のうち形状62との距離が最小である半直線を求め、そのベクトルをXY平面に投影した方向に工具61をdsinθ移動させる。そして、再度、工具61の中心から半直線群を発生させ、半直線群のうち形状62との距離が最小である半直線を求め、そのベクトルをXY平面に投影した方向に形状62をdsinθ移動させる処理を半直線群の最小の距離dがゼロになるように繰り返す。これにより、工具をワークにnmレベルで接触させるNCデータを得ることができる。なお、その他の仕上げ加工の方法についても、基本的にレイトレーシングによる補正処理を使うことができる。
【0134】
[具体例]
次に、前述したCSG表現のソリッドモデルを近似したデクセル、CSGを近似するデクセルに含まれない線分群である補デクセル、補デクセルの逆向き工具によるカット、及び、CSG表現のソリッドモデルに基づいて工具位置を補正する補正処理の4つの処理を使って、ボール工具による加工パスの計算例について説明する。
【0135】
[鏡面加工の例]
図49は、鏡面加工を説明するための図であり、
図50は、鏡面加工を実施したワークの写真である。
図49に示すように、ボール工具71を使用し、X軸方向に26mm、Y軸方向に26mm、Z軸方向に30mmのワーク72において、上面の曲面を倣い加工で鏡面加工を実施した。半径2mmのボール工具71を使用して、X軸方向に平行な0.005mm間隔のNCデータで加工した。
【0136】
図51は、補デクセルを示す図であり、
図52は、補デクセルの逆向き工具によるカットを模式的に示す図である。先ず、CSG表現のソリッドモデルを近似したデクセルを求め、
図51に示すように、その補デクセルを求めた。そして、
図52に示すように、半径2mmの逆向きボール工具73で補デクセルをカットすることによってボール工具74の先端位置を求めた。ボール工具74は、ほぼワークに接触しているが、鏡面加工の場合は、測定点の近辺で面粗度が30nm程度でなければならない。そのため、前述した倣い加工における補正処理を使って、補デクセルをカットする位置からCSG表現のソリッドモデルの表面に接触する位置の精度をnmレベルまで上げた。
【0137】
[金型キャビティの例]
図53は、金型キャビティの一例を示す図であり、
図54は、
図53に示す金型キャビティの溝部やコーナー部をフィレットで保護した例を示す図である。
図53に示す金型キャビティにおいて、φ5のボール工具で加工しようとした場合に、細い溝はコーナー部の加工において工具のビビリが発生することでキャビティを傷付けてしまうことがある。そのため、
図54に示すように溝部やコーナー部を埋めるフィレットを付けて保護するなどの作業が必要である。この保護処理は、CADを使ってモデリングする作業が発生するため作業効率が悪い。そのため、補デクセルをカットする逆向き工具に、φ5のボール工具よりも大きいφ10のボール工具を使うことにより、溝部やコーナー部を保護する。
【0138】
図55は、キャビティの補デクセルの一例を示す図であり、
図56は、
図55に示す補デクセルを逆向き工具としてφ5のボール工具でカットした状態を模式的に示す図であり、
図57は、
図55に示す補デクセルを逆向き工具としてφ10のボール工具でカットした状態を模式的に示す図である。
【0139】
図56に示すように、補デクセルをφ5の逆向きボール工具81でカットした場合、φ5のボール工具82がキャビティの溝に入り込んでしまう。一方、
図57に示すように、φ10の逆向きボール工具83を使うことにより、φ5のボール工具82がキャビティの溝に入り込むのを防ぎ、溝部やコーナー部を保護することができ、
図54に示したフィレットで保護したときと同じような効果を得ることができる。
【0140】
図58は、補デクセルをφ10の逆向き工具でカットして加工した形状を示す図である。
図58に示す金型キャビティの形状は、デクセルの端点をマーチンキューブ法で面を張って表示した。
【符号の説明】
【0141】
1 形状処理部、2 格納部、3 表示処理部、4 データ変換部、11 プリミティブ生成部、12 集合演算処理部、13 作図線生成部、14 デクセル生成部、15 NCデータ生成部、21 CPU、22 GPU、23 ROM、24 RAM、25 操作入力部、26 ストレージ、27 入出力インターフェース、31 逆向き工具、32 工具、41 逆向き工具、42 工具、51 逆向き工具、52 工具、61 工具、62 形状、71 ボール工具、72 ワーク、73 逆向きボール工具、74 ボール工具、81 φ5逆向きボール工具、82 φ5ボール工具、83 φ10逆向きボール工具
【要約】
曲面を含む形状に対し、工具の位置を与えるNCデータを高速に生成することができる3次元CAD/CAMシステムを提供する。三角形頂点の座標値と、三角形頂点の法線ベクトルと、三角形頂点からなる始点及び終点と始点及び終点の接線ベクトルで構成される曲線素とを含む微分多面体の集合である微分多面体モデルを用い、微分多面体の辺を接続して曲面を構成し、曲面間を曲面境界線で接続した閉曲面を構成し、閉曲面の内部に属する点集合であるプリミティブを生成するプリミティブ生成部と、プリミティブの集合演算のツリー構造により、ソリッドモデルをCSG表現したCSGデータを格納する格納部と、CSGデータに基づく集合演算により、プリミティブの閉曲面と直線との交点からソリッドモデルと直線との交点を求め、ソリッドモデルに含まれる線分群であるデクセルを生成するデクセル生成部と、デクセルに基づいて工具の位置を与えるNCデータを生成するNCデータ生成部とを備える。