JPH0927046A - 干渉チェック方法 - Google Patents

干渉チェック方法

Info

Publication number
JPH0927046A
JPH0927046A JP7174627A JP17462795A JPH0927046A JP H0927046 A JPH0927046 A JP H0927046A JP 7174627 A JP7174627 A JP 7174627A JP 17462795 A JP17462795 A JP 17462795A JP H0927046 A JPH0927046 A JP H0927046A
Authority
JP
Japan
Prior art keywords
interference check
convex
spheres
interference
pair
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP7174627A
Other languages
English (en)
Other versions
JP2915826B2 (ja
Inventor
Yuichi Sato
裕一 佐藤
Mitsunori Hirata
光徳 平田
Tsugihito Maruyama
次人 丸山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP7174627A priority Critical patent/JP2915826B2/ja
Priority to US08/668,145 priority patent/US5943056A/en
Priority to DE69636693T priority patent/DE69636693T2/de
Priority to EP96110300A priority patent/EP0753837B1/en
Priority to DE69626154T priority patent/DE69626154T2/de
Priority to EP02010238A priority patent/EP1241628B1/en
Publication of JPH0927046A publication Critical patent/JPH0927046A/ja
Application granted granted Critical
Publication of JP2915826B2 publication Critical patent/JP2915826B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Numerical Control (AREA)
  • Processing Or Creating Images (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Length Measuring Devices With Unspecified Measuring Means (AREA)
  • Testing Of Devices, Machine Parts, Or Other Structures Thereof (AREA)
  • Length Measuring Devices By Optical Means (AREA)

Abstract

(57)【要約】 【目的】 高速に干渉チェック前処理及び干渉チェック
を行う。 【構成】 非凸多面体の干渉チェックを高速に実行する
には、凸包や近接点線形リストの生成、階層球による物
体包絡のための前処理を実行する必要がある。凸包構成
部1、近接点線形リスト作成部2、階層球2分木ツリー
生成部3は干渉チェック高速前処理を実行して、それぞ
れ凸包、近接点線型リスト、階層球2分木ツリーを生成
する。しかる後、凸包間干渉チェック部5は凸包間の干
渉チェックを行い、凸包同士が干渉し始めたら、バブル
コライジョン実行部6はBubble collision法を実行して
近接ポリゴンペアを求め、近接ポリゴン間干渉チェック
部7は該近接ポリゴン間の干渉チェックを行うことで非
凸多面体間の干渉チェックを行う。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は非凸多面体である2つの
物体間の干渉チェック方法に係わり、特に、コンピュー
タ上に構築されたCGモデルに対してそれらが互いに離
れているか、干渉しているかを計算機上にて判定し、物
体間の最近点、干渉点、最近点距離をリアルタイムに算
出する干渉チェック方法に関する。本発明は、機構設計
用CADシステム、マニピュレータや自走車等の移動ロ
ボットのパス生成、マルチメディアにおけるアニメーシ
ョン作成、ゲームソフト等、コンピュータグラフィック
スを応用した様々な分野に適用できるものである。
【0002】
【従来の技術】グラフィックコンピュータ上に物体のC
Gモデル(物体形状を定めるポリゴン集合)が複数個、
構築されている場合、任意の凹凸を持ったCGモデルが
互いに離れているか干渉しているかを判定し、離れてい
る場合には物体間の最近点を、干渉している場合には干
渉点を、リアルタイムに算出することが望まれている。
尚、一般に、グラフィックコンピュータ上のCGモデル
に限らず、物体の数学モデル(物体を定義する3次元頂
点座標、稜線集合、面集合)が与えられた時、数学モデ
ル間の最近点/干渉点を求める問題を「最近点探索問
題」という。かかる最近点探索問題に対する基本的なア
プローチは、対象となる物体の形状、位置、姿勢データ
を計算機上に取り込み、初等幾何学的計算により解決す
る方法である。通常、CAD分野で使われているグラフ
ィックシュミレータでは、平面的な凸多角形(凸ポリゴ
ン)を複数枚張りつけて一つの物体を表現している。従
って、二つの物体間の干渉状態をチェックする最も素朴
な方法は、各々の物体を構成しているポリゴン間の干渉
チェックを全てのポリゴンの組合せについて行うもので
ある。具体的には、空間上に任意に配置された二つのポ
リゴンに対し、最も近接しているポイントを各格子点、
辺、面について探索し、最接近距離を算出することであ
る。勿論、最接近距離がゼロならば、二つのポリゴン間
は干渉状態にあるということである。この方法では、二
つの物体を表現している格子点数をM1,M2としたとき
にO(M1・M2)の計算負荷を伴い、リアルタイム性が
失われていた。
【0003】一方、歴史的には、各格子点間の垂直二等
分線を結んで各格子点の近接関係を図示するVoronoi図
を使った方法や、三次元空間を象限ごとに次々に八等分
して対象の専有領域をデータベース化するオクトツリー
の方法による最近点の探索法も知られているが、これら
の方法は何れも対象が静的に一定である場合に有効であ
り、分解や組み立てなどにより対象が動的に次々と変化
していく場合には不向きであった。ロボテックスの分野
では、Boblow法、Lin/Canny法、Gilbert法が高速な干渉
チェックアルゴリズムとして知られており、何れもO
(N)(N:対象の総格子点数)以下の計算時間で最近
点を算出することができる。しかしながら、これらの方
法を適用できる対象は何れも凸多面体(Gilbert法では
楕円体などの二次凸曲面を持った物体にも適用可能)に
限られている。
【0004】Pro/Engineer等の市販の三次元CADシス
テムを使って設計される形状データは、殆どの場合にお
いて非凸物体であり、そのため、部品間の干渉チェック
を行うのに、Boblow法、Lin/Canny法、Gilbert法等のリ
アルタイム性を有する方法は適用されず、もっぱら、部
品を構成するポリゴンに関して総当たり的に干渉チェッ
クを行う方法(総当たり法)や形状を定義する方程式を解
析的に時間を掛けて解く方法が取られていた。非凸多面
体間の干渉チェックとしては、多面体を階層的に並べた
球の集合で覆い、球間の干渉チェックを行うことにより
最も接近しているポリゴン間の組合わせを求め、Gilber
t法を適用するQuinlan法が知られている。この方法は、
任意の非凸多面体に適用できる極めて一般的方法である
が、厳密に2物体間の距離を求めようとすると探索空間
が増え、計算時間が極端に長くなる欠点を有している。
【0005】
【発明が解決しようとする課題】従来の干渉チェック方
法では、リアルタイムに非凸多面体が互いに干渉してい
るかを判定し、離れている場合には物体間の最近点を、
干渉している場合には干渉点を算出できない問題があっ
た。以上から本発明の目的は、高速に非凸多面体間の干
渉チェックを行うことである。本発明の別の目的は、干
渉チェックの前処理である凸包の生成、近接点線形リス
ト、階層球の生成を効率良く、高速に行うことである。
本発明の更に別の目的は、非凸多面体同士がかなり接近
している場合の干渉チェックをBubble Collision法を用
いて高速に行い、しかも、物体静止時の干渉チェックを
効率的に行うことである。
【0006】
【課題を解決するための手段】図1は本発明の原理説明
図である。1は非凸多面体の形状データより非凸多面体
を包絡する最小の凸多面体(凸包:convex hull)を生成
する凸包構成部、2は凸包の近接点線形リストを作成す
る近接点線形リスト作成部、3は非凸多面体を構成する
ポリゴン上に所定半径の複数の球(リーフ球)を配列し
て各ポリゴンを覆い、該球を階層球で順次包絡し、階層
包絡球の2分木ツリーを生成する階層包絡球2分木ツリ
ー生成部、4は生成された凸包、近接点線形リスト、2
分木ツリーのデータを記憶する記憶部、5はGilbert法
等に基づいて凸包間の干渉チェックを行う凸包間干渉チ
ェック部、6は2分岐ツリー構造に基づいて、上位階層
の包絡球同士の干渉チェックを行い、干渉する上位階層
の包絡球を、該包絡球を構成する下位階層の包絡球に分
解し、下位階層の包絡球について干渉チェックを行い、
以後干渉しなくなるまで前記包絡球の分解及び干渉チェ
ック処理を行って、近接球のペアを求め、該近接球のペ
アに応じたポリゴンのペアを近接ポリゴンのペアとして
求めるバブルコライジョン法実行部、7は近接ポリゴン
ペア間の干渉チェックを行うポリゴンペア間干渉チェッ
ク部である。
【0007】
【作用】
(a) 干渉チェック高速前処理 非凸多面体の干渉チェックを高速に実行するには、凸包
や近接点線形リストの生成、階層球による物体の包絡の
ための前処理を実行する必要がある。本発明において
は、凸包構成部1、近接点線形リスト作成部2、階層球
2分木ツリー生成部3が干渉チェック高速前処理によ
り、それぞれ凸包、近接点線型リスト、階層球2分木ツ
リーを生成する。これにより、頂点数N個の任意の非凸
多面体CGモデルに対して、Nlog Nの時間で凸包、凸
包間連続探索のための近接点線形リストを生成でき、更
に、バブルコライジョン法(Bubble Collision法)のため
の「階層球による物体の包絡」を行うことができる。
【0008】1) 干渉チェック高速前処理(凸包構
成):非凸多面体の凸包を生成し、該凸包と他の物体間
の干渉チェックを行い、干渉し始めた時、凸包を解除し
て前記非凸多面体と他の物体間の干渉チェックを行う干
渉チェック方法において、凸包構成部1は、非凸多面体
を構成する頂点を、第1軸(例えばX軸)の座標値の差
が零あるいは微小量ε以内の複数の頂点群に分割し、各
頂点群について第2−第3軸平面(例えばYZ平面)上
で2次元凸包を生成し、隣接する2次元凸包を併合して
3次元凸包を生成し、以後、隣接する3次元凸包を順次
併合して目的とする非凸多面体の凸包を生成する。
【0009】2) 干渉チェック前処理(近接点線形リス
ト):この前処理は、凸多面体同士の干渉チェックにお
いて、最近点を連続的に探索していくための前処理であ
り、この処理を施しておくことにより最近点の連続探索
が極めて高速化される。近接点線形リストとは、CGモ
デルを構成する各頂点に対し、その頂点と稜線を介して
繋がっている他の頂点とを線形リストで繋ぐデータ構造
のことである。リストの先頭から順次辿ることにより、
その頂点に繋がる全ての近接点を拾いだすことができ
る。すなわち、近接点線形リスト作成部2は、凸包を構
成する全三角ポリゴンの頂点を第1方向(next方向)に
リンクし、各頂点にポリゴン辺を介して繋がる頂点群を
第2の方向(branch方向)に該頂点にリンクしてなるデ
ータ構造を備えた近接点線形リストを作成して出力す
る。本前処理は、凸包構成の処理に引き続いて行われる
ところに特徴がある。
【0010】3) 干渉チェック高速前処理(近接点線形リ
スト結果のダンプ、およびそれらの高速ローディン
グ):近接点線形リストの結果をダンプし、それらのダ
ンプファイルをメモリ上に高速ローディングする。前処
理を施していないCGモデルに対しては、凸分解、近接
点形リスト生成処理を施すが、一旦、近接点線形リスト
を表現するファイルを作成した後は、このファイルから
高速ローディングを行ってメモリ上に展開する。これに
より、NポリゴンからなるCGモデルに対して、O
(N)の時間で近接点線形リストをメモリ上にの展開す
ることが可能となる。本処理は、凸包構成および近接線
形リスト構成の処理に引き続いて行われるところに特徴
がある。
【0011】4) 干渉チェック前処理(階層球による物
体の包絡):非凸多面体を構成する各ポリゴンを、該ポ
リゴン上に中心を持つ複数の球の組み合わせで覆い、そ
れらの球を包含する球を階層的に構成する。これによ
り、球間のチェックを階層的に行い最も接近した近接球
に応じたポリゴンの組み合せを高速に探索することが可
能となる。階層球の構成は、分割統治法で行われ、Nポ
リゴンからなるCGモデルに対して、O(NLog N)の
時間で処理が終わる。すなわち、階層球2分木ツリー生
成部3は、非凸多面体を構成するポリゴン上に所定半径
の複数の球(リーフ球)を配列して各ポリゴンを覆い、
分割統治アルゴリズムに従って該球を階層球で順次包絡
し、階層包絡球の2分木ツリー構造を生成する。この場
合、リーフ球の半径値を、非凸多面体を包含する球の半
径に応じた値にすると共に、非凸多面体のポリゴン数が
少ない場合には小さくし、ポリゴン数が多い場合には大
きくする。本処理とQuinlan法における階層球の構成法
の違いは、Quinlan法の階層球構成法がscan conversion
に類似した方法であるのに対し、本手法は、対象を覆う
ポリゴン数を考慮し、スケールSの値をパラメータとし
た効率的な球構成を行う。
【0012】5) 非凸多面体干渉チェックにおけるBubbl
e Collision法:非凸多面体間の干渉チェックを高速に
行うために、階層球2分木ツリー生成部3は各々の非凸
多面体を階層球で包絡し、包絡球からなるツリーを構成
する。バブルコライジョン実行部6は、球間の干渉チェ
ックをツリーに基づいてDepth-firstの探索法でチェッ
クしていき、最も接近する球のペアを検索する。近接ポ
リゴン間干渉チェック部7は、検索した球の中心が載っ
ているポリゴンの組み合わせに対してGilbert法を適用
することにより、二つの非凸多面体間の最近点を算出す
る。この場合、バブルコライジョン実行部6は、球間の
距離を以下により計算する。すなわち、バブルコライジ
ョン実行部6は、リーフ球とリーフ球間の距離をこれら
リーフ球の中心間距離とし、リーフ球と非リーフ球間の
距離をこれら球の中心間距離から非リーフ球の半径を差
し引いた距離とし、非リーフ球と非リーフ球間の距離を
これら球の中心間距離から両非リーフ球の半径を差し引
いた距離として計算する。本手法Quinlan法との違い
は、球間の距離の計算法にある。本手法では、球間の距
離を求めるに際し、その球が包絡球ツリーのどの深さに
あるかによって、球間の距離の定義を変更する。これに
より、Bubble Collision法で問題となっている、最終的
にチェックしなければならないポリゴンペアの数を抑え
ることができる。
【0013】(b) Bubble collision法との融合 1) 凸多面体干渉チェックにおける凸包間連続型Gilbert
法と非凸多面体用Bubble Collision法の融合:非凸多面
体間の干渉チェックを出来るだけ無駄なく行うために、
非凸多面体間が充分離れている場合には、非凸多面体を
包含する凸包を構成し、凸包間に連続型Gilbert法を適
用する。凸包同士が干渉を始めたならば、Bubble Colli
sion法に自動的にスイッチする。スイッチングの指標
は、凸包間の距離とする。すなわち、凸包構成部1によ
り非凸多面体の凸包を生成し、非凸多面体間の距離が十
分離れている場合には凸包間干渉チェック部5により凸
包間の干渉チェックを行い、凸包同士が干渉し始めた
ら、バブルコライジョン実行部6によりBubble collisi
on法を適用して非凸多面体間の干渉チェックを行う。か
かる凸包間連続探索法と非凸多面体間の干渉チェックの
ためのBubble Collision法の融合(連続型 Bubble Colli
sion法)により、最近点を求めるに当たり、無駄な計算
が極力省かれる。
【0014】2) 4次元Gilbert法:凸包間連続探索法か
ら非凸多面体用Bubble Collision法へスイッチングする
場合、またはその逆において、スイッチングの指標を凸
包間連続型Gilbert法により算出した距離である。凸包
間が干渉しだしたならば、距離を算出するアルゴリズム
を3次元連続型Gilbert法から4次元連続型Gilbert法に
スイッチングし、一方の凸包が他方の凸包に吸収された
場合においても矛盾無くスムースにスイッチングが行わ
れる。 3) メタツリーによる高速化:非凸多面体の集合におい
て、最も近接する非凸多面体のペアを高速に算出するた
めに、非凸多面体を包絡する球を構成し、この球を包含
する包絡球を階層的に構成することによるメタツリーを
構成する。非凸多面体間を総当たり的にチェックする代
わりに、メタツリーに基づいて包絡球間をdepth-first
の探索法でチェックしていき、最も接近する球のペアを
検索する。検索した球の中心が載る凸包間に連続型Gilb
ert法を適用することにより、最近点を効率よく算出す
る。本手法は、メタツリーの構成法、メタツリー間の干
渉チェックから連続型Gilbert法およびBubble Collisio
n法に移行する手法に特徴がある。
【0015】4) メタツリー構成を含めた連続干渉チェ
ック法:任意の非凸多面体間の最近点を連続的に追跡し
ていく場合において、メタツリー構成、Gilbert法、Bub
ble Collision法の全てを数サイクルに一回のみ行い、
他のサイクルでは、前回のサイクルで使用したポリゴン
ペアに再度Gilbert法を適用することにより最短距離を
求め、計算負荷を大幅に軽減する。 5) サイクルタイム自動調整型連続干渉チェック法:連
続干渉チェック法において、Bubble Collision法に掛か
る計算時間を自動測定することにより、メタツリー構
成、Gilbert法、Bubble Collision法を行うサイクルを
自動的に決定する。
【0016】(c) 連続型Bubble Collision法による干渉
チェック: 1) 連続型Bubble Collision法 干渉チェックにおいては、凸包同士の干渉チェックにお
いて凸包同士が干渉すると、凸包内部での干渉チェック
をBubble Collision法により行う。Bubble Collision法
による干渉チェックは時間を要するため、バブルコライ
ジョン実行部6は、毎サイクルBubble Collision法を実
行せず数サイクルに一度行い、Bubble Collision法の実
行結果である近接ポリゴンの幾つかのペアを保存する。
移動距離/姿勢変化が小さいとすると、次の瞬間もその
ペアは同じであるので、その数組の近接ポリゴン間に対
してのみ、近接ポリゴン間干渉チェック部7は干渉チェ
ックを行い、最近点、干渉点を求めて出力する。保存し
た数ペアのみに関して干渉チェックを行うことにより、
時間を要するBubble Collision法の処理回数を減少で
き、計算時間の短縮が図られる。
【0017】2) Bubble Collision法 の計算時間による
連続型Bubble Collision法の更新サイクル自動決定法:
連続型Bubble Collision法においては、物体形状と移動
速度に基づいて、近接ポリゴンペアの更新サイクル(次
のBubble Collision法実行までのサイクル)の調整が必
要である。このサイクルが長すぎると、修正が遅くな
り、間違った結果を出力するのが目立つ。一方、上記更
新サイクルが短いと、リアルタイム性が薄れる。このた
め、試行錯誤的なサイクルの調整は、難しい。そこで、
Bubble Collision法を行う毎にその計算時間を測定し、
その計算時間から次の更新サイクルを自動的に決定す
る。
【0018】3) 連続型Bubble Collision法の修正方法
(物体移動量による判定):連続型Bubble Collision法
は移動距離/姿勢変化が小さいと仮定するので、大移動
が発生すると、頻繁に間違った結果を出力するのが目立
つ。移動距離/姿勢変化があるしきい値より大きい場合
には、バブルコライジョン実行部6は、近接ポリゴンペ
アの更新サイクルに達しなくてもBubble Collision法を
行い、近接ポリゴンペアを更新する。これにより、正し
い干渉チェック結果が得られる。 4) 連続型Bubble Collision法の修正方法(物体移動速
度による判定):連続型Bubble Collision法は移動距離
/姿勢変化が小さいと仮定するので、大移動が発生する
と、頻繁に間違った結果を出力するのが目立つ。移動速
度があるしきい値より大きい場合には、近接ポリゴンペ
アの更新サイクルに達しなくてもバブルコライジョン実
行部6はBubble Collision法を行い、近接ポリゴンペア
を更新する。これにより、正しい干渉チェック結果が得
られる。
【0019】5) 連続型Bubble Collision法の修正方法
(最近点距離比による判定):連続型Bubble Collision
法は移動距離/姿勢変化が小さいと仮定するので、大移
動が発生すると、頻繁に間違った結果を出力するのが目
立つ。最近点距離比があるしきい値より大きい場合に
は、近接ポリゴンペアの更新サイクルに達しなくてもバ
ブルコライジョン実行部6はBubble Collision法を行
い、近接ポリゴンペアを更新する。これにより、正しい
干渉チェック結果が得られる。 6) 凸包外における物体静止時の干渉チェックの効率
化:干渉チェックを一度行った後に、チェック対象物体
がすべて静止していれば、前サイクルの結果を更新する
必要はない。速度指令、位置変位が零ならば、前サイク
ルの干渉チェック結果をそのまま使って干渉チェックの
計算を省く。この方法によれば、干渉チェック対象物体
グループが二つ以上存在する場合、移動物体を含むグル
ープのみの干渉チェック計算をするだけで良いので効果
が大きい。
【0020】7) 凸包内における物体静止時の干渉チェ
ックの効率化:凸包内では連続型Bubble Collision法を
行っているが、干渉チェックを一度行った後に、チェッ
ク対象物体がすべて静止していれば、前サイクルの結果
を更新する必要はない。速度指令、位置変位が零なら
ば、前サイクルの干渉チェック結果をそのまま使って干
渉チェックの計算を省く。但し、静止後の近接ポリゴン
ペアの更新サイクルにおいて一度だけBubble Collision
法を行なって、正しい近接ポリゴンペアを求める必要が
ある。この方法によれば、干渉チェック対象物体グルー
プが二つ以上存在する場合、移動物体を含むグループの
みの干渉チェック計算をするだけで良いので効果が大き
い。
【0021】
【実施例】
(A)凸包の生成 (a) 非凸多面体の干渉チェックの概略 非凸多面体間の干渉チェックを行う方法として、非凸多
面体(図2)を包絡する最小の凸多面体(凸包:convex
hull)を生成し(図3)、非凸多面体間の距離が十分離
れている場合には凸包間の干渉チェックを行い、凸包同
士が干渉し始めたら、Bubble collision法を適用して非
凸多面体間の干渉チェックを行う。かかる非凸多面体間
の干渉チェックを行うためには、前処理により非凸多面
体より凸包を生成する必要がある。
【0022】(b) システム構成 図4は凸包生成の前処理や干渉チェック処理を実行する
システム構成図であり、11はグラフィックワークステ
ーションGWS、12は三次元CADシステムである。
ワークステーション11において、11aは干渉チェッ
クの前処理や干渉チェック処理、その他の処理を実行す
るプロセッサ、11bはROMであり、凸包生成の前処
理プログラムCHP、干渉チェックプログラムICP等
を記憶するもの、11cはRAMであり、三次元CAD
システム12で設計された形状データ、その他の設定デ
ータ、演算処理結果を記憶するもの、11dはCADシ
ステムとの通信インタフェース、11eは表示部、11
fはキーボード、11gはマウス等の操作部、11hは
フロッピーディスク用のディスクドライブ、11iはハ
ードディスクである。
【0023】(c) 概略フロー 図5は凸包生成の概略処理(干渉チェック前処理)フロ
ーである。三次元CADシステム12は形状モデル(非
凸多面体)を作成してグラフィックワークステーション
11に入力し、RAM11cに記憶する(ステップ10
01、1002)。CADシステム12は、形状モデル
データとして非凸多面体をポリゴンで覆った場合におけ
る全ポリゴンデータを入力する。ポリゴンデータは、ポ
リゴンの各頂点の座標値とその点における光の反射方向
を示す情報を有している。最も一般的なポリゴンデータ
は三角形ポリゴンの張り合わせで表現されるものであ
る。三角形ポリゴンデータにおいて、normal に続く3
つの実数が光の反射方向を示し、vertex に続く3つの
実数が頂点座標値を表している。
【0024】ついで、前処理(凸包生成)の実行を指令
すると、プロセッサ11aはROM11bに記憶されて
いる凸包生成用のプログラムCHPに基づいて非凸多面
体の形状データを用いて凸包を生成する(ステップ10
03)。凸包生成後、近接点線形リスト構成アルゴリズ
ムを用いて後述する近接点線形リストを作成してRAM
11cに展開する(ステップ1004,1005)。し
かる後、該近接点線形リストデータに基づき専用ダンプ
ファイル〜.HLを作成し、ハードディスク11i等に
記憶する(ステップ1006)。以後、該近接点線形リ
ストが必要な場合には、新たに作成せず近接点線形リス
ト展開アルゴリズムを通じて専用ダンプファイル内の情
報をデータ形式に再現する(ステップ1007)。
【0025】(d) 多面体表現のためのデータ構造 多面体は三角形パッチで張られているとする。多面体の
各三角形パッチ(図6(a)参照)をC言語で表現すると
図7に示す形式のデータ構造を取る。図7において、最
も基本的は表現クラスは、頂点VertexではなくエッジEd
geである。各エッジは方向を持っており、頂点uからv
に向かうエッジを指すポインタ変数をe、原点uを指す
ポインタをorig、対称エッジを指すポインタをsym、頂
点vから頂点wに向かうエッジを指すポインタをlnex
t、頂点uから頂点wに向かうエッジを指すポインタをo
nextとする。整数変数colorは、凸包構成の過程で必要
となり、blue(青)、purple(紫)、red(赤)のどれ
かの値を取る。blue、purple、redの意味は後述する。
また、三角形u−v−wを表現するクラスとしてFacet
を用意し、各エッジは左手方向のFacetを指すポインタ
変数leftを持つ。
【0026】頂点を表すクラスVertexは、頂点座標を表
す3次元ベクトルv及びベクトルvにランダムな偏差を
のせたdvを持ち(Vector3は3次元実ベクトルを表す
型名)、更に輪環構造を表現するためのポインタ変数ne
xt,preを持つ。Convexは、凸包を表現するためのクラス
であり、凸包を構成するエッジの先頭要素を指すポイン
タ変数としてedgeを持つ。図6(b)で示すとおり、edge-
>orig,edgemin->origはそれぞれ凸包HのX軸方向に対
する最大頂点、最小頂点を指すポインタ変数である。頂
点を指すポインタ変数 maxX, minX, maxY, minY は、凸
包構成の前半の過程でのみ使用する。また、sideには分
割統治法における左右の区別、vcntには凸包を張る全頂
点数が入る。ポインタ変数 vertexesはedgemin->origと
同じ頂点を指し、vertexesから出発してnext方向に辿る
ことにより凸包を構成する全ての頂点を小さい順に探索
できる。但し、この頂点探索は、図6(b)のVi,Vj
kのような凸包内部の頂点にもわたるものとする。ver
texesは、分割統治法の前半およびバックアップ処理に
て使用する。Listは、凸包構成の最後の過程で必要とな
るクラスであり、詳細は後述する。
【0027】図7のデータ構造により、ある一つの頂点
に対して、その頂点と稜線を介して繋がる頂点を時計回
り、反時計回りに取り出す操作は、以下の手続で与えら
れる。尚、以後のプログラムはすべてC言語で表現した
ものである。 Edge *edumy0 = sym; Edge *edumy1 = sym; ・ ・ edumy0 = edumy0->lnext->sym; // clockwise order ・ ・ edumy1 = edumy1->sym->onext->sym; // counterclockwise order
【0028】(e)3次元凸包構成アルゴリズム 図8は、図5のステップ1003における3次元凸包構
成アルゴリズムであり、凸包構成の基本関数を示してい
る。本アルゴリズムを一言で言えば、X軸方向に対して
各頂点をソーティングしながら分割統治法を行うもので
ある。詳細は、以下の手続からなる。三角形ポインタの
頂点データを入力する(ステップ1101)。入力形式
は、ステップ1101のブロック内に示すようにクラス
Convexのポインタ変数conのメンバ変数con->vertexesを
先頭要素としてnext,pre方向にvertexを繋げ、輪環形式
を取る。vertexesに繋がるvertexは、図7の入力ファイ
ルの頂点データを入力順に繋げたものであり、X軸方向
のソーティングは行っていない。ついで、モデルデータ
conに対し、X軸方向のmax, minであるmaxX, minXを算
出する(ステップ1102)。すなわち、頂点集合vert
exesに対してX軸方向の最大値、最小値を取る頂点を検
索し、各々のアドレスを maxX, minXに入れる。
【0029】しかる後、X座標値の最大値、最小値の差
が微少量εよりも小さいか調べ、小さい時は2次元凸包
を構成する(ステップ1103)。すなわち、頂点集合
vertexesがX軸に垂直な平面上に載っており、X座標値
の最大値maxX->v(0)、最小値minX->v(0)の差が微少量ε
よりも小さい時は、2次元凸包構成関数 MakeConvex2Di
m(con)を作用させて2次元凸包を生成する。X座標値の
最大値、最小値の差が微少量εよりも小さくなければ、
頂点集合vertexesをX軸方向に2分割する(ステップ1
104)。すなわち、最大値maxX->v(0)と、最小値minX
->v(0)の中心値を境にして、頂点集合vertexesをconLef
t,conRightに2分割する。例えば、s=(maxX->v(0)+min
X->v(0))/2とする時(sは中心値)、vertex->v(0)<s
ならばconLeft->vertexesに繋げ、vertex->v(0)≧sな
らば conRight->vertexesに繋げる。
【0030】ついで、左右二つに分割したConvexクラ
ス、conLeft, conRightに対して再帰的に凸包構成関数
MakeConvex( )を作用させて凸包を生成する(ステップ
1105)。以後、2分割ができなくなるまで凸包 con
Left, conRightのマージング(併合)を行う(ステップ 1
106)。すなわち、再帰的に構成された凸包conLeft,
conRightを併合して一つの凸包を構成する。一般に、分
割統治法は、上記手続きに示す通り一つの集合を再帰的
に次々に二分割していき併合の過程を繰り返すことによ
り最終的な出力を得る。分割統治法では、そのアルゴリ
ズム依存性は主にマージプロセス内で表現される。図8
の手続きでは関数 Merge3Dim(conLeft,conRight)がマー
ジプロセスを表現している。Merge3Dim(conLeft,conRig
ht)の詳細は、後述する。
【0031】(f) 2次元凸包構成アルゴリズム 2次元凸包構成の関数は、図9に示す通り、3次元の場
合と殆ど同じ構成をしている。違いは、ステップ120
1の1次元凸包構成のプロセスとステップ1202の2
次元におけるマージプロセスである。ステップ1201
の1次元凸包構成のプロセスは図10に示す通り、Z軸
に平行に並んだ頂点のトップとボトムを互いにnext,pre
で結ぶことで終了する。トップとボトムが同一点の場合
には、next,preは同じ頂点を差し示す。図11は、ステ
ップ1202における2次元におけるマージプロセスMe
rge2Dim(conLeft,conRight)の詳細を示したものであ
る。図に示す通りMerge2Dim(,)は、凸包conLeft、conRi
ghtを上方から覆う稜線 Upper Bridgeと下方から覆う稜
線Lower Bridgeを見つけるプロセスである。Upper Brid
geをみつけるために、econLeft->maxY、econRight->min
Yを結ぶ稜線を初期値として、conLeft、conRightに対し
て各々next,preの方向に順次移行して行き、最も上方に
達したところの頂点を結んでUpper Bridgeとする。同様
に、econLeft,econRightに対して各々pre,next方向に移
行していくことによりLower Bridgeを見つけることがで
きる。
【0032】図12は、マージ関数 Merge2Dim(conLef
t,conRight)の詳細構成を示したものである。ステップ
1301で初期値を設定し、ステップ1302のループ
(do〜while文)でUpper Bridgeを、ステップ1303の
ループ(do〜while文)でLower Bridgeを見つけ出す。W->
ConvexJudgeUp2Dim(u,v)はu,vを結ぶ直線に対し、頂
点wの上下関係を判定する関数である。
【0033】図13A〜図16は凸包構成の説明図であ
る。図13において、21は頂点a〜kを有する非凸多
面体であり、頂点a〜eのX座標値は等しくX=x1
頂点fのX座標値はX=x2、頂点g〜kのX座標値は
X=0である。図13の非凸多面体に対して、図8の三
次元凸包構成アルゴリズムを適用すると、各頂点a〜k
はX座標値の差が微小量εの範囲内の第1頂点群g〜k
(図14(a)参照)、第2頂点群a〜e(図14(b)参
照)、第3頂点群f(図14(c)参照)に分けられる。こ
れら各頂点群に対して二次元凸包構成アルゴリズムを施
す。例えば、第2頂点群a〜eに2次元凸包構成アルゴ
リズムを施すと、Y座標値の差がεの範囲内の第1頂点
群a,b、第2頂点群d、第3頂点群c,eの3つに分
けられ、これら各群に1次元凸包構成アルゴリズムを施
す。しかる後、1次元凸包に対して2次元凸包構成のた
めのマージ関数 Merge2Dim(,)を適用して2次元凸包を
構成する。例えば、第2、第3頂点群より生成した1次
元凸包にマージ関数を適用すると、図15(a)に示すよ
うに稜線deがupper bridge、稜線dcがlower bridge
になり、2次元凸包cdeが生成される(図15(b))。
ついで、第1頂点群a,bにより生成した1次元凸包と
2次元凸包cdeにマージ関数を適用すると、図15
(c)に示すように、稜線aeがupper bridge、稜線bc
がlower bridgeになり、2次元凸包abceが生成され
る(図15(d)参照)。
【0034】同様に、第1頂点群g〜kに対して2次元
凸包構成アルゴリズムを施して2次元凸包を生成する。
以上の2次元凸包の生成が終了して、3次元凸包構成用
のMerge3Dim(,)を適用すると、3次元凸包が生成でき
る。例えば、2次元凸包abceと2次元凸包fにMerg
e3Dim(,)を適用すると、3次元凸包abcefが生成
され(図16(a))、この3次元凸包abcefと2次元
凸包ghikにMerge3Dim(,)を適用すると三次元凸包
abcefghikが生成される(図16(b))。3次元
凸包構成アルゴリズムの本質は、図17に示すマージ関
数に集約され、以下の四つのフェーズからなる。
【0035】Phase 0:頂点数が少ない場合における凸
包の直接構成 凸包の直接構成における注意点は、頂点数が3以下の場
合の取り扱いである。この場合には、最小凸包である四
面体を張ることができないため、マージ過程を通じて頂
点数を増やし、四面体を直接構成することが必要とな
る。本フェーズは、conLeft,conRightの頂点数が少な
い場合におけるダイレクトな凸包構成プロセスであり、
MakeConvexLowNumber(,), MakeConvexBackL(,),MakeCon
vexBackR(,)の各関数で表される。 MakeConvexLowNumbe
r(,) は、内部においてconLeft->vcnt, conRight->vcnt
の値に応じて更に場合分けされる。conLeft、conRight
の頂点数の合計が4未満の場合は、conLeft, conRight
の頂点をnext,preのポインタで張り直し、vertexes上に
蓄える。頂点数の合計が4になったところでMakeTetra2
2(,), MakeTetra13(,)の諸関数で四面体を直接構成す
る。conLeft->vcnt=2, conRight->vcnt=3の場合、conLe
ft->vcnt=3, conRight->vcnt=2の場合およびconLeft->v
cnt=3, conRight->vcnt=3の場合には、まず、四面体を
直接構成し、後ほど説明するバックアッププロセス(図
28)を援用して凸包を構成する。
【0036】MakeConvexBackL(,)は、conLeft->vcntの
値が3以下の、conRight->vcntが4以上の場合のマージ
法である。conRightが既に四面体以上の凸包を構成して
いるため、本関数は、凸包conRightにconLeftの頂点を
一つ一つマージしていく過程を表す。本関数は、バック
アッププロセスを使って構成される。同様に、MakeConv
exBackR(,) はconRight->vcntが3以下、conLeft->vcnt
の値が4以上の場合のマージ関数である。以上、MakeCo
nvexLowNumber(,), MakeConvexBackL(,), MakeConvexBa
ckR(,)の処理により、phase1以降は、conLeft, conRig
htとも四面体以上の凸包を構成している場合の処理であ
る。
【0037】Phase 1:Upper Bridgeの構成 図18に示すようなUpper Bridgeを構成する。この処理
をできるだけ少ない計算回数で実行するために、conLef
tのX軸方向最大エッジconLeft->edgeおよびconRightの
X軸方向最小エッジconRight->edgeminを初期値にして
近傍頂点を駈け上がっていくようにする。そのために、
各頂点において、その近傍頂点をX−Z平面に射影して
2次元の凸包構成を行い、X−Z平面上で近傍頂点と現
在のBridgeの上下判定を繰り返していく。
【0038】Phase 2:Wrapping process 3次元マージプロセスにおいて基幹となるものであり、
その概要は、図19に示すように凸包conLeft, conRigh
tを包込むプロセスである。包み込む過程で、各凸包con
Left, conRightのエッジのcolorはBLUE(青)からPURPLE
(紫)、またはRED(赤)に変化させていく。全てのエッジ
の初期colorはBLUEであるとし、図19で示すようにWra
ppingの境界となるエッジのcolorはPURPLE, PURPLE edg
eの近傍エッジで、併合した凸包の内部に入るエッジのc
olorはREDに変化させる。他のエッジのcolorは全てBLUE
のままである。最終的にマージングが完了した時点で併
合凸包のエッジのcolorをBLUEにリセットする。
【0039】Wrapping processの概要は以下の通りであ
る。Upper Bridgeの頂点 utop, vtopの近傍頂点を検索
し、Wrappingを構成する三角形パッチのもう一方の頂点
となる候補を捜し出す。今、utopに対する候補頂点をFi
rstWinLとする時、utopの他の近傍頂点は三角形utop-vt
op-FirstWinLが張る平面の下に位置する。一般に、Firs
tWinLは、Upper Bridgeから見て時計回り方向と反時計
回り方向に2頂点存在するが、三角形をutop-FirstWinL
-vtopの順に見た時に法線方向が上向きになる条件を課
すことにより一意的に時計回りの頂点を取り出すことが
できる。同様に、vtopの近傍頂点を調べFirstWinRを取
り出す。最後に三角形utop-FirstWinL-vtopの張る平面
とFirstWinRとの上下関係を調べることにより、最初の
三角形パッチの頂点を選択する。図19は、FirstWinL
が最初に選択された例を示している。 FirstWinLが選択
された後は、FirstWinL-vtopをUpper Bridgeと見做して
同様の操作を繰り返す。図19の例ではFirstWinLの近
傍頂点を検索した結果、三角形 FirstWinL-u-vtopが選
び出され、三角形 FirstWinL-u-vtopとFirstWinRの上
下関係を調べ、FirstWinRが選択された例である。この
場合は、三角形FirstWinL-FirstWinR-vtopが2番目の三
角形パッチである。以後u,vがutop, vtopと一致す
るまでu,vを更新していく。FirstWinL,uを一般的
にwinning vertexと呼ぶ。
【0040】2番目以降のwinning vertexの検索では、
近傍頂点の全てに渡る検索は必要ない。直前の境界エッ
ジを初期値として、conLeftの場合には時計回り、conRi
ghtの場合には反時計回りに検索することにより、候補
頂点の一意的な選出が可能となる。winning vertexを選
出していく過程で、境界エッジ、およびその近傍エッジ
のcolorを変化させていく。第1三角形パッチの場合に
は、境界エッジ、(図19の例ではエッジutop-FirstWin
L)のみのcolorをPURPLEに変化させる。第2三角形パッ
チ以降は、境界エッジをPURPLEに変えると共に、winnin
g vertexの近傍エッジの内、併合凸包の内部に隠れるエ
ッジのcolorを全てREDに変える。以後、この処理を最終
三角形パッチまで繰返し、最後にutop, vtopの近傍エッ
ジを調べ、内包するエッジのcolorをREDに変える。以
上、本プロセスでは、併合凸包を構成する三角形パッチ
の頂点集合が全て、選別され、それらが、三角形パッチ
毎に図7のクラスListに格納され、next方向に線形リス
トを作成する。
【0041】Phase 3:三角形ポリゴンのPatching proce
ss Phase2で構成した三角形パッチの頂点集合からなる線形
リストListに基づき、実際に三角形ポリゴンを張つけて
いくプロセスである。本プロセスは、図20、図21に
示す通り、大きく分けて初期パッチ、中間パッチ、最終
パッチの三つの過程からなる。三つの過程における三角
形パッチの構成法は微妙に違い、初期パッチでは、一本
のエッジと一個の頂点からなる三角形パッチの構成法、
中間パッチでは、2本のエッジからなる三角形パッチの
構成法、最終パッチでは3本のエッジからなる三角形パ
ッチの構成法が使用される。各々の構成法を表現する関
数PatchTriangle(,)では、図6(a) に示すonext, lnex
t, sym, orig, leftの各ポインタ変数が、となり合う三
角形パッチ間において矛盾がないように設定される。
【0042】Phase 4:後処理 マージプロセス1サイクル毎の後処理を表し、以下の三
つのプロセスからなっている。 マージング後におけるconLeft,conRightの境界エッジ
のcolorをPURPLEからBLUEに変更する。 併合凸包のX軸方向の最大エッジedge、最小エッジed
geminを選出する。 併合凸包のX軸方向の最大頂点maxX,最小頂点minXを
選出する。 の過程で注意しなければならないのは、選び出したエ
ッジのcolorがREDの可能性があることである。この場合
には、このエッジを初期値として時計回りまたは反時計
回りのエッジ検索を行いcolorがBLUEのエッジを探し出
し、edge,edgeminとして設定する。の過程が必要な理
由は、後ほど説明する。バックアッププロセスのためで
ある。
【0043】(h) O(Nlog N)の根拠 conLeftの頂点数をn1、conRightの頂点数をn2とする
時、(g)のマージプロセスにかかる計算負荷はO(n1
2)である。従って、総数Nの頂点集合に対する凸包
構成の計算時間をT(n)とすると、 T(N)=2T(N/2)+O(N) という漸化式が得られる。これを解くと、T(N)=O
(NlogN)となる。
【0044】(i) ランダム偏差法 上に述べてきた凸包構成アルゴリズムでは、同一平面に
4点以上がのる場合や同一直線上に3点以上がのる場合
には、分岐の判定が微妙になる場合が多数発生する。例
えば、上記凸包構成アルゴリズムでは、2頂点を結ぶ直
線に対して、ある頂点が上下どちらに存在するかを判定
する関数 ConvexJudge2Dim( )、また、3頂点を結ぶ平
面に対して、ある頂点が上下どちらに存在するかを判定
する関数ConvexJudge3Dim( )を至るところで使用してい
るが、同一平面に4点以上がのる場合や同一直線上に3
点以上がのる場合には判定が微妙になってアルゴリズム
が無限ループに陥る場合がある。
【0045】この状況を避けるため、各頂点の座標値v
(0),v(1),v(2)にランダムな微小偏差random()をのせ
る。具体的には、図7で定義したクラスVertexの3次元
ベクトル要素dvを以下のように設定する。各頂点に対
して、 dv(0)=v(0); dv(1)=v(1) +random( ); dv(2)=v(2) +random( ); 即ち、X軸成分はそのままにし、Y,Z座標の値に偏差
をのせる。X軸成分を不変にする理由は、X軸に対する
頂点のソーティングがv(0)に基づいて行われるため
である。各頂点に対してランダム偏差をのせるプロセス
は、具体的には、図9の1次元凸包構成 MakeConvex1Di
m(com)の過程で行われる。
【0046】(j) バックアッププロセス 上記凸包構成アルゴリズムのWrapping processでは、Up
per Bridgeの頂点utop,vtopから出発してこれらの頂点
に戻って来ずに、無限ループに陥る場合がある。この原
因は、(i)で述べたものと同じであるが各頂点にのせた
ランダム偏差が万能である保証はない。Wrapping proce
ssにおける無限ループは、Wrappingの途中段階で小ルー
プを構成し、utop,vtop以外のある頂点を繰り返すパタ
ーンを取る。utop,vtop以外の頂点を2度以上選択した
か否かはハッシングで判定することができる。従って、
小ループが発生した時点でWrapping processのメインル
ープを抜け出し、図22で示すバックアッププロセスに
以降する。
【0047】本プロセスでは、図22で示すように、co
nLeft->vcnt, conRight->vcntを比較し、頂点数の少な
い方の凸包を解除して、もう一方の凸包に対して解除し
た凸包の頂点を一点、一点付け加えていくことを行う。
頂点を付け加える過程は、頂点を一点からなる凸包と見
做して、マージプロセスを繰り返す。頂点を併合してい
く順序は、conRightの凸包を解除した場合にはconRight
の頂点を小さい順に併合していき、conLeftの凸包を解
除した場合には大きい順に併合していく。本プロセスで
は、一方の頂点が不動であるため無限ループに陥ること
は殆どなく、確実な凸包併合が可能となる。一度、併合
凸包を構成した後は、以前のマージプロセスに復帰し、
以後、Wrapping processで無限ループが再び発生しない
限り、通常のマージプロセスが続けられる。従って、バ
ックアッププロセスに伴う計算負荷の増大は、最小限に
抑えられる。
【0048】(B)干渉チェック前処理(近接点線形リ
スト) 凸多面体同士の干渉チェックにおいて、最近点を連続的
に探索していくための前処理である。この前処理を施す
ことにより、連続探索が極めて高速化される。通常、こ
の前処理は、図15に示す通り、凸包構成をした後に実
行される。近接点線形リストとは、CGモデルを構成す
る各頂点に対し、その頂点とエッジを介して繋がってい
る他の頂点とを線形リストで繋ぐデータ構造のことであ
り、branch方向にその頂点の近傍頂点、next方向に凸包
を構成する頂点が線形にリンクされる。
【0049】(a) 近接点線形リストの例 図23は、直方体の近接点線形リストの例を示してい
る。図示の通り、近接点線形リストは、頂点を順次繋い
だnext方向と、各頂点にポリゴン辺を介して連結する近
接点を配列するbranch方向の2方向を持つ。branch方向
の先頭には、その頂点自身が入る。
【0050】(b) 近接点線形リスト構成アルゴリズム 図24は対象物体の凸要素毎のポリゴンデータ説明図、
図25は近接点線形リスト構成アルゴリズムの説明図で
ある。対象物体が三角形ポリゴンの集合で構成されてい
るものとすると、近接点線形リストは以下のフローに従
って構成される。 1) 凸多面体のポリゴンデータを用意する(図24参
照)。 2) 各々のポリゴンデータ(pi,qi,ri)に対し、各
頂点をリストLに繋げていく。next方向を頂点に対する
線形リスト方向、branch方向を各頂点の近接点方向とす
る。リストLの先頭要素は第1番目のポリゴンの第1頂
点であり、作成途中では図25(a)に示すデータ構造と
なっている。具体的には以下のようにリストを作成す
る。 2-1) リストLの先頭要素topを割り付ける。すなわち、
topとして最初のポリゴンの最初の頂点を割り付ける。 2-2) ポリゴン(pi,qi,ri)に対し、以下の割付け
を繰り返す。 1) if(piが全てのnext方向頂点Ljに対し、pi≠Lj)
ならば、新しい要素piをnext方向の端にLj+1として割
り付ける(図25(b)参照)。ついで、頂点Lj+1のbranch
方向に対し、自分自身pi及びqi,riを割り付ける(図
25(c)参照)。
【0051】2) if(piがあるnext方向頂点Ljに対
し、Pi=Lj)ならば、頂点Ljのbranch方向に対し、q
i,riを割り付ける。もし、branch方向に既にqi,ri
と同一頂点があれば割り付けることはしない(図25(d)
参照)。 3) 頂点qiに対して上記1)、2)の処理を実行する。ただ
し、頂点qiに対するqi以外のbranch候補はpi,riで
ある。 4) 頂点riに対して上記1)、2)の処理を実行する。ただ
し、頂点riに対するri以外のbranch候補はpi,qiで
ある。 2-3) 全てのポリゴン集合∪i(pi,qi,ri)に対し、
2-2)の処理を繰り返す。
【0052】尚、近傍点線形リストを構成するためのク
ラス構成は、図7とは別の形式を取るとする。図7のク
ラス構成は、凸包構成以外に使うことはない。凸包構成
の過程において対象を覆う各ポリゴンは自動的に三角形
分割されるため、頂点同士を結ぶエッジは既に構成さ
れ、図7で示したデータ構造を有しているとする。近接
点線形リストを作成するアルゴリズムは、再帰的な手法
である。凸包 conの最大エッジcon->edgeから出発し、
con->edge->orig, con->edge->sym->orig, con->edge->
onext->sym->origの近接点線形リストを構成し、続い
て、エッジcon->edge->sym, con->edge->lnex->sym, co
n->edge->onextから出発して再帰的に各頂点をサーチし
ていく。同一頂点に対する2度以上の検索を避けるた
め、各頂点を検索する毎にハッシングを行う。
【0053】(c) ダンプファイルのフォーマット ダンプファイルのフォーマットは、図26に示すような
形式とする。このファイルフォーマットにおいて、高速
ローデングの必須項目は以下の通りである。 1) 凸包を構成する総頂点数(count)の項目があること。 2) 各々の頂点に番号付けがされること。 3) 各々の頂点に対し、その頂点の近接点個数(bcount)
を格納する項目があること。 4) 各々の頂点座標を格納する項目があること。
【0054】(d) ダンプファイルからのローディング法 1) 凸包の総頂点数countを読み、各頂点を収めるcount
次元の配列を作る。 2) 配列に凸包の各頂点を収めていくと共に、各頂点間
をnext方向に結び線形リストを構成する。例えば、頂点
を収める配列をV〔N1〕とする時、V
〔0〕,V
〔1〕,...,を順にnext方向に結び、線形リストを
構成する。 3) 凸包の各頂点に対し、Branch方向の近接点番号(配列
内の位置を指定)を頼りに、Branch方向に近接点のリス
トを張る。例えば、凸包の全頂点を収める配列をV〔N
i〕とする時、頂点V
〔0〕のBranchの番号が(0,9,1,7,
8)ならば、V
〔0〕のBranch方向にV
〔0〕,V
〔9〕,V〔1〕,V〔7〕,V〔8〕を線形リストに
繋ぐ。 上記のローディング法では、同じファイルに対して計二
回( 1),2)が1回目、3)が二回目)の読み込みを行う。
各頂点のBranch数は殆どの場合において数10個以下で
抑えられるため、合計のローディング時間はO(N)
(凸包の総頂点数)である。凸包に対する図26の形式
のファイルをHLファイルと呼ぶ。
【0055】(C) 非凸多面体の第1の干渉チェック 以上の前処理により非凸多面体の凸包及び該凸包の近接
点線形リストが作成されれば、特願平6-209008号で提案
しているGilbert法による干渉チェックを適用して凸包
同士の干渉チェックを行い、凸包同士が干渉する場合に
は凸包を解除して非凸多面体を構成する凸多面体間の干
渉チェックを後述するBubble collision法に従って行
う。尚、凸包同士の干渉チェックに際しては、それ迄に
求まっている最接近点に近接する頂点を近接点線形リス
トより抽出し、これら頂点にGilbert法による干渉チェ
ック法を適用して所定時間後の最接近点を探索する。こ
のようにすることにより、干渉チェックに要する時間は
凸多面体を表現するポリゴン数にほとんど依存しない一
定数以下に抑えることができる。
【0056】(D)Bubble Collision 法による干渉チ
ェックの前処理 凸包同士が干渉し始めたら、バブルコライジョン法(Bub
ble Collision 法)を適用して非凸多面体間の干渉チェ
ックを行う。Bubble Collision 法では、非凸多面体を
構成する各ポリゴンをポリゴン上に中心を持つ複数の球
の組み合わせで覆い、それらの球を包含する球を階層的
に構成する。かかる球間の干渉チェックを階層的に行
い、最も接近したポリゴンの組み合わせを高速に探索
し、該ポリゴン同士の干渉チェックを行うことで非凸多
面体間の干渉チェックを行う。
【0057】かかるBubble Collision 法を適用するに
は、非凸多面体を構成する各ポリゴンをポリゴン上に中
心を持つ複数の球の組み合わせで覆い、それらの球を包
含する球を階層的に構成する前処理が必要になる。階層
的に配置された球集合のツリーをSphere Treeと呼ぶ。S
phere Treeの構成は、分割統治法で行われ、Nポリゴン
からなるCGモデルに対して、O(N・log N)の時間
で処理が終わる。本処理とQuinlan法におけるSphere Tr
eeの構成法の違いは、Quinlan法ではスキャン変換(scan
conversion)に類似した方法であるのに対し、本手法で
は、対象を覆うポリゴン数を考慮し、スケールSの値を
パラメータとした効率的な構成を行う。
【0058】(a) Leaf Spheresの構成法 干渉チェックの対象となる非凸多面体は三角形ポリゴン
の集合で覆われているとする。この時、三角形ポリゴン
上に中心を持ち、対象を覆う球集合の最も底辺に位置す
る基本球をLeaf Sphereと呼ぶ。図27はLeaf Spheres
の例を示している。Leaf Spheresの構成法は以下の通り
である。 1) 初期設定 入力データは各三角形ポリゴンの頂点座標、スケールパ
ラメータSとする。スケールパラメータSの値の設定法
は後述する。図28に示すように、三角形ポリゴンの頂
点座標を基に辺の長さd0=|p1−p0|, d1=|p2−p1|, d2
=|p0−p2|を計算した時に、d0≧d1≧d2になっていると
する。もし、これを満たさなければ、頂点番号を入れ換
える。辺p0p1上における単位ベクトル e0=(p1−p0)/d
0を設定する。三角形ポリゴンの高さをhをh=√{d2 2
−((p1−p0)・(p0−p2)/do)2}で計算する。
【0059】2) メイン処理 2-1) 辺p0p1に沿ってLeaf Spheresを作成する。N0=[d0
/S]を計算し、もしN0=0ならば、半径 r0=d0/2とす
る。N0≠0ならば r0=d0/(2・N0)とする。従って、この
時には辺P0P1に沿って半径r0の球がN0個並ぶ。 2-2) もし、(r0>h)ならば、辺p0p1上のLeaf Spheresで
三角形ポリゴン全体が覆われているとし(図29参照)、
処理を終了する。 2-3) もし、(r0≦h)ならば、単位ベクトルe1=(p2−p1)
/d1, e2=(p0−p2)/d2および N1=[d1/S], N2=[d2
/S]を計算し、辺p1p2、辺p2p0に沿って、辺p0p 1と同様
にLeaf Spheresを作成する。
【0060】2-4) ついで、三角形ポリゴンの内部をLea
f Spheresで覆う。図30に示すように三角形ポリゴン
の底辺を直径 diam0=2・r0だけ底上げし、p0p1に沿って
作成したのと同様にして底上げした底辺上に Leaf Sphe
resの球中心を配置する。球の半径rは、今回計算した
半径riと一つ前の半径ri-1と大小比較し、大きい方を
選択する。即ち、r=max(ri-1,ri)により更新してい
く。これにより、Leaf Spheresを積み上げていった時の
上下間の Leaf Spheres同士の隙間を小さくすることが
できる。 2-5) 上記2-3)、 2-4)の処理を底上げした三角形の高さ
hi=hi-1−diami-1がhi<diami-1/2を満たすまで繰り
返す。
【0061】(b) 分割統治法によるSphere Treeの構成
法 Sphere Treeとは、Leaf Spheresを要素として、それら
を包含する球を階層的に配置したツリー状データ構造の
ことである。ツリーの分岐の度数としては、二分木をと
る。この理由は、任意の非凸多面体に対しては、二分木
による構成が最もバランスする(各階層の枝下に含まれ
るLeaf Sphereの個数がバランスする)可能性が高いた
めである。二分木以外に例えば八分木を採用したとする
と、元々、対象の形状が8象限に対してバランスしてい
ない限り各階層における八分木の各枝下にLeaf Sphere
がほぼ等しくちりばめられる可能性は低い。
【0062】図31はSphere Tree構成のためのデータ
構造、図32はそのフローを示している。Sphere Tree
の基となる三角形ポリゴン上に中心を持つ球をLeafで表
し、Leafの集合をLeavesで表す。Sphere Treeの各枝に
配置される球要素はSphereで表す。Leaf、Sphereとも球
の中心をcenter,半径をrに格納する。LeafのメンバPlan
e* planeは、そのLeaf Sphereの中心がのる三角形ポリ
ゴンをポイントする。Leavesのメンバmax,minにはLeaf*
leavesに連なるLeaf要素 iのcenterを(xi,y i,zi)とす
る時、以下の値が入る。 max=( MAXi {xi} , MAXi {yi} , MAXi {zi} ) min=( MINi {xi} , MINi {yi} , MINi {zi} ) また、leafcntには、Leaf* leavesに連なるLeaf要素数
が入り、avcenterにはLeaf要素の中心座標の和を要素数
で割った重心が入る。Sphereのメンバleft, rightは二
分木を表し、Leavesはその階層以下に含まれるLeaf要素
の集合をポイントする。
【0063】Sphere Tree構成アルゴリズムの概要は以
下の通りである。 1) Planesのnext方向にリニアにつながれたポリゴン情
報を入力として、各ポリゴン毎にLeaf要素の集合を作
り、それら全体をポリゴン集合全体にわたりリニアにリ
ンクする(図32、ステップ2001)。 2) Leafのリニア集合leaves->leavesを入力として、分
割統治法により、Sphere Treeを構成する。 2-1) Leaf要素数が0または1の場合は、ステップ20
02、2003の処理を実行する。 2-2) Leaf要素数が2以上の場合は、二分木のメモリを
確保する(ステップ2004)。
【0064】2-3) Leaf要素集合leaves->leavesを分割
するために、leaves->leavesに対するmax,minを計算し
(ステップ2005)、Leaf要素集合がX軸、Y軸、Z軸
のどの軸方向に最も伸展しているかを判定し(Leaf要素
数が最大の軸方向を求める)、伸展方向の中心値を算出
する(ステップ2006)。 2-4) Leaf要素集合を、2-3) で求めた軸方向に対して中
心値を境に分割する。(ステップ2007)。 2-5) 分割した各々の Leaf要素集合に対して、再帰的
に分割統治法を行う(ステップ2008)。 2-6) 再帰的に求めた left,rightの重心avcenterと要
素数leafcntを基に、親のSphereのavcenterとleafcntを
求める(ステップ2009)。 2-7) left, rightをマージ(併合)し、親のSphereを構成
する(ステップ2010)。
【0065】親のSphereを構成するに当たり、その半径
と中心の求め方として二通り用意する。第一の方法は、
子Sphereのleft,rightを包含する最小の球を構成する方
法、第二の方法は、2-6)で求めたavcenterを中心とし
て、その階層以下に含まれるLeaf要素集合を包含する最
小の球を構成する方法である。親Sphereとしては、上記
二つの球を求め、半径の小さい方を採用する。図33は
上記アルゴリズムに基づき、直方体に対して求めたSphe
re Treeの例を示している。
【0066】(c) スケールパラメータS 対象をいくつのLeaf Spheresで覆うかは、対象を覆うポ
リゴン数Nに大きく依存する。Nが充分大きい場合に
は、一つのポリゴンを細かい球で覆う必要はなくなる。
一方、Nが小さい場合には、適度にLeaf Spheresの数を
増やし、球による被覆の近似を上げる必要がある。境と
なるポリゴン数は丁度100前後である。スケールパラ
メータSは以下のアルゴリズムに従って計算する。 1) 凸包を構成する頂点集合に対して、 max=( MAXi {xi} , MAXi {yi} , MAXi {zi} ) min=( MINi {xi} , MINi {yi} , MINi {zi} ) を計算し、凸包を包絡する球の半径R=|max−min|/
2を求める。
【0067】2) 対象のポリゴン数があるしきい値 PLAN
ELIMITより小さい時には、あるスケール定数 SPHERESCA
LEを使って、 S=R/SPHERESCALE とする。他の場合には、 S=R とする。 PLANELIMIT, SPHERESCALEの典型的な値は、PL
ANELIMIT=100,SPHERESCALE=8である。
【0068】(D)非凸多面体干渉チェックにおけるBu
bble Collision法 非凸多面体の干渉チェックを高速に行うために、各々の
非凸多面体をSphere Treeで包絡し、そのツリーをDepth
-firstの探索法でチェックしていき、最も接近するSphe
reのペアを検索する。検索したSphereの中心が載ってい
るポリゴンの組み合わせに対してGilbert法を適用をす
ることにより、二つの非凸多面体の最近点を算出する。
本手法とQuinlan法との違いは、Sphere間の距離の計算
法にある。本手法では、Sphere間の距離を求めるに際
し、そのSphereが Sphere Treeのどの階層にあるかによ
って、Sphere間の距離の定義を変更する。これにより、
Bubble Collision法で問題となっている、最終的にチェ
ックしなければならないポリゴンペアの数を抑えること
ができる。
【0069】(a) Depth-firstによる最近点探索法 二つの非凸多面体の最近点を以下のDepth-firstアルゴ
リズムに従って求める。尚、図34、図35は Bubble Co
llision法における Bubble Collision Checkの基本関数
である。 1) 二物体間の距離の初期値cq->distを無限大に取る。
ここで、cqは干渉チェックにおける環境クラスの変数を
表す。詳細は後述する。 2) 今、着目しているSphere同士の距離を求め、その値
が cq->dist以下ならば、カレントの(着目している)Sph
ereを以下の方針に従って縦方向に解除していく(ステッ
プ2101)。 2-1) カレントのSphereが両方ともLeaf Sphereでない時
には、半径の大きい方を解除する(ステップ2102、
2105)。 2-2) 解除した結果得られる二つの子Sphereと解除しな
いSphereとの距離を求め、近い方を先に探索する(ステ
ップ2103、2104) 2-3) カレントのSphereの一方が Leaf Sphereである時
には、Leaf Sphereでない方を解除し、2-2)と同様に探
索する(ステップ2106、2107)。
【0070】3) カレントのSphereが両方ともLeaf Sphe
reである時には(ステップ2108)、それらのLeaf Sph
ereがのっている三角形ポリゴンペアに対してGilbert法
を適用し、三角形ポリゴンペア間の距離distを求める
(ステップ2110)。 4) 求めたdistの値がcq->distより小さければ、cq->dis
tの値を更新し、上記の処理を再帰的に繰り返す(ステッ
プ2111)。 上記アルゴリズムでは、3) の過程において、同一の三
角形ポリゴンペアによる干渉チェックが多数回発生す
る。そのため、ポリゴンペアに対してハッシングを行
い、不必要な干渉チェックを行わないようにしている、
(ステップ2109)。
【0071】(b) Sphere間の距離 Bubble Collision法の効率を上げるには、cq->distの値
を出来るだけ速やかに小さくし、Depth-firstにおける
探索回数を減らすことが必要である。探索回数を減らす
ために、Sphere間の距離を以下のように定義する。 1) Intermediate Sphere(中間球)の間の距離は、中心間
の距離から両方の半径を引いた値(図36の)とする。 2) Inrermediate SphereとLeaf Sphere間の距離は、中
心間の距離からIntermediate Sphereの半径を引いた値
(図36の,)とする。 3) Leaf Sphere間の距離は、中心間の距離(図36の)
とする。 この定義により、Sphere Treeの他の枝における探索の
深度を浅く留めることができ、また、図35のステップ2
110において同一ポリゴンペアが発生することもなく
なる。
【0072】但し、この定義には、一つだけ難点があ
る。それは、二物体が複数の点で接触する多点接触の場
合である。この場合には、cq->distの値が、ある接触点
のために0に近い値を取ってしまうため、他の接触点の
探索においてその点を含むSphereを見逃してしまうこと
がある。これを避けるため、Sphere間の距離に、以下の
定義を付け加える。 4) もし、cq->distの値がある微少量EPSより小さい
場合には、Sphere間の距離を1) の定義とする。微少量
EPSの典型的な値は、1/104である。
【0073】(c) 計算負荷 Bubble Collision法の計算負荷は、最も効率良い場合に
おいてO(logN0+logN1)(N0,N1はそれぞれ各対象を
被覆しているLeaf Sphereの総数)である。被覆の度合
い、即ち、Leaf Sphereの個数は多すぎても少なすぎて
もいけない。少なすぎるとcq->distの値がなかなか小さ
くならず、探索回数が増えてしまう。また、多すぎる場
合には、探索の深度自身が深くなる。効率を上げるため
の現実的な方法としては、対象を表現するポリゴン数が
大きい時には、1ポリゴン当たり1Leaf Sphereで覆
い、ポリゴン数が少なくなるに従い、Leaf Sphere数を
増やすようにする。具体的には、前述のスケールパラメ
ータSに従って被覆の度合いを調整する。
【0074】計算負荷を下げる他の方法では、相対誤差
パラメータcq->alphaの導入である。図35のステップ2
111に示すようにcq->alphaを導入すると、cq->dist
の更新値は、求めたばかりのポリゴン間の距離distより
小さく設定され、他の枝における探索の条件が厳しくな
る。cq->alphaの値は0から1の実数を取り、求めた距
離distに対して誤差を導入する効果がある。最近点間距
離の真値をdとすると、dist≧d≧・dist・(1−cq->alph
a)の関係が成り立つ。相対誤差パラメータは、対象同
士が大きく離れている場合には効果が大きく、近づくに
つれて効果が薄れ、接触している場合には、cq->alpha
=0の場合と全く変わらなくなる。
【0075】(E)凸多面体干渉チェックにおける凸包
間連続型Gilbert法と非凸多面体用Bubble Collision法
の融合。 非凸多面体間の干渉チェックを出来るだけ無駄なく行う
ために、非凸多面体間が充分離れている場合には非凸多
面体を包含する凸包を構成し、凸包間に連続型Gilbert
法による干渉チェックを適用する。凸包同士が干渉を始
めたならば、Bubble Collision法に自動的にスイッチす
る。スイッチングの指標は、凸包間の距離とする。
【0076】(a) 干渉チェック用データ構造 図37,図38,図39は本干渉チェックアルゴリズム
を表現するために必要となる干渉チェックデータ構造の
中枢部分を示している。CollisionQueは干渉チェック用
の環境を定義するクラス、ColQue干渉チェックを行う対
象を表現するクラス、Primsは対象を構成する頂点を表
現するクラス、ConvexHullは図32に示すHLファイル
から構成した凸包を表現するクラス、MetaLeaf, MetaLe
aves, MetaSphereは、後ほど説明するメタツリー関係の
クラスである。
【0077】今、問題としている対象を二つの組み分
け、それぞれ、ColQueリスト1、ColQueリスト2とす
る。各々のColQueリストは、クラスColQueのnextポイン
タを介してリニアにつながれ、それらの先頭要素が環境
クラスCollisionQueのnext, next2につながれている。
この時、本アルゴリズムは、ColQueリスト1、ColQueリ
スト2の間で最も近接するポイントを捜し出す。ColQue
リスト1内、ColQueリスト2内での干渉チェックは行わ
ない。例えばColQueリスト1としてロボット1の各リン
ク、ColQueリスト2としてロボット2の各リンクを設定
すると、ロボット1とロボット2の間で干渉チェックを
行い、ロボット1の各リンク同士、ロボット2の各リン
ク同士の干渉チェックは無視される。ロボット1のリン
ク数をL1,ロボット2のリンク数をL2とすると単純
には、L1×L2回の干渉チェックを行わなければなら
ないが、この過程を高速化する方法がメタツリーであ
る。これについては後述する
【0078】(b)Gilbert法の概要 凸多面体同士の干渉チェックを頂点数に対してリニアの
計算量で実行するアルゴリズムがGilbert法である。図
40は、Gilbert法による最近点算出法の基本的考えを
示している。尚、詳細は特願平6-209008号公報(最接近
点探索方法及びその前処理方法)を参照されたい。Gilbe
rt法では、まず、対象の重心同士を結んだベクトルν0
を作る。−ν0(およびν0)と各頂点との内積に対し
て、最大値を計算することにより、最近点の候補p0
0を見つけ出す(図40(a))。ν0をp0,q0を結んだ
ベクトルν1に更新し、同様の内積計算により新たな候
補p1,q1を見つけ出す(図40(b))。一般にνiを頂点
集合{pk}が張るポリゴンと{qk}が張るポリゴン間の
最近ベクトルとすると、上記処理は数回の繰り返しによ
り収束し、最終的に各対象上における最近点および最近
ベクトルνfinalが得られる(図40(c))。{pk},{qk
が張る図形は何れも三角形、エッジまたは1頂点である
ため、この間の距離は簡単に求められる。上記のよう
に、Gilbert法の計算負荷は、対象を構成する各頂点と
の内積計算により発生する。従って、その計算オーダは
O(n1+n2)(n1,n2:各対象の頂点数)である。
【0079】(c) 連続型Gilbert法 最近点を連続的に求めていく場合には、前ステップで求
めた最近点の情報を使うことにより一層、効率的に次の
最近点を計算することができる。図41は本アルゴリズ
ムの概念図を示している。上記(b)で説明したようにGil
bert法では、毎回、全点にわたる内積計算を繰り返す。
最近点を連続的に追跡していく場合、次ステップにおけ
る最近点の位置は前ステップにおける最近点の近傍に存
在するはずである。従って、Gilbert法の内積計算は、
最近点の近傍のみで充分である。具体的にはνfinal(図
40)を構成する頂点集合{pk},{qk}の各々に対し
て、ポインタ変数branch方向をサーチして近傍頂点の和
集合をつくり、これに対して内積を取る。近傍頂点の和
集合を構成するに際しては、ハッシングを使い同一頂点
の重複を避けるようにする。
【0080】連続型Gilbert法の計算負荷は、近傍頂点
の和集合の要素数に比例する。この値は、厳密に言え
ば、対象を表現するポリゴン数およびそのパッチングの
仕方に依存する。例えば円錐や円柱の底面を非常に細か
く花びら状にバッチングした場合には、中心付近におけ
る近傍頂点和集合の要素数は、他の領域に比べ格段に大
きくなる。しかしながら、このような例外を除き、他の
多くの場合において、要素数は充分小さい値(具体的に
は20〜30以下)に抑えられる。従って、連続型Gilb
ert法の計算負荷は、対象に依らず一定値以下というこ
とができる。16Mflopsの計算機マシーンを使ったラフな
評価では、殆どの対象に対して0.5ms/cycleの性能が
でている。
【0081】(d) 融合アルゴリズム 図42は連続型Gilbert法とBubble Collision法の融合
アルゴリズムのフローを示している。凸包の外側では、
連続型Gilbert法による干渉チェックを行い(ステップ3
001)、干渉しなければステップ3002で「no」
となり、その結果を最近点とする(ステップ3003)。
凸包同士が干渉チェックしだしたならば、ステップ30
02で「yes」となり、Bubble Collision法に移行し(ス
テップ3004)、その結果を最近点とする(ステップ
3005)。再び、対象間の距離が離れ、連続型Gilbert
法の算出する距離が0より大きくなったならば、ステッ
プ2002で「no」となり、Bubble Collision法をや
め、連続型Gilbert法の結果を最近点とする。上記アル
ゴリズムにおける難点は、対象同士が干渉しだし、一方
が他方を飲み込むような状況においても連続型Gilbert
法が距離0を算出するか否かである。これに関しては、
3次元のGilbert法を4次元に拡張することにより解決
する。
【0082】(e) 4次元Gilbert法 凸包間連続探索法から非凸多面体用Bubble Collision法
へスイッチングする場合、またはその逆において、スイ
ッチングの指標を凸包間連続型Gilbert法により算出し
た距離とする。凸包間が干渉しだしたならば、距離を算
出するアルゴリズムを3次元連続型Gilbert法から(3
+Extra−Dim.)次元、すなわち、4次元連続型Gilbert
法にスイッチングする。これにより、一方の凸包が他方
の凸包に吸収された場合においても近接ベクトルが矛盾
なく計算される。図43は、上記状況を(2+Extra−Di
m.)次元の場合に示したものである。図43の)に示
すように、二つの凸包が干渉していない場合には、凸包
間の距離はX−Y平面上の2次元的距離dで定義され
る。dの値は、2次元連続型Gilbert法で計算される。
dの値がある微少量より小さくなったならば、二つの凸
包は干渉を始めたとし、一方の凸包をExtra Dimension
の方向にεだけ嵩上げする(図43の、)。この状態
における近接ベクトルは、3次元連続型Gilbert法を使っ
て計算される。この時、近接ベクトルはExtra Dimensio
nの方向に向いており、X−Y平面上の成分は0であ
る。従って、二凸包間の距離dは常に0であり、二凸包
は干渉状態にあると判断される。近接ベクトルのX−Y
平面成分が非零になったならば、二凸包の干渉状態は解
除されたと判断し、干渉チェックは(2+Extra−Di
m.)次元、すなわち、3次元の連続型Gilbert法から2
次元連続型Gilbert法へ移行する。Extra Dimension方向
の嵩上げεは0以外の任意の値でよい。
【0083】(f) メタツリーによる高速化 非凸多面体の集合において、最も近接する非凸多面体の
ペアを高速に算出するために、非凸多面体を包絡する球
を構成し、この球を包含する包絡球を階層的に並べたメ
タツリーを構成する。非凸多面体間を総当たり的にチェ
ックする代わりに、メタツリーに基づいて包絡球間をde
pth-firstの探索法でチェックしていき、最も接近する
球のペアを検索する。検索した球の中心が載る凸包間に
連続型Gilbert法を適用することにより、最近点を効率
よく算出する。図44は、ロボットアームRA1,RA
2に対してメタツリーを構成し、それを二本並べて干渉
チェックを行っているところを示している。メタツリー
を構成するに際し、Leaf Sphereに相当する球は以下で
定義される。
【0084】干渉チェックを行う各非凸多面体に対し、
ベクトルmax,minを max=( MAXi {Xi} ,MAXi {yi} ,MAXi {zi} ) min=( MINi {Xi} ,MINi {yi} ,MINi {zi} ) (iは非凸多面体の各頂点を走る) で定義する。この時、球の中心center及び半径rは以下
で与えられる。 center=(max+min)/2 r=|max−min|/2 メタツリーの構成法は、Bubble Collision法における、
Sphere Tree構成法と同様に行う。メタツリーを構成し
た後、Bubble Collision法と同様に、Meta Sphere Tree
に対してDepth-Firstの探索を行い、干渉の可能性のあ
る非凸多面体のペアを検出する。この時、Meta Sphere
間の距離は、両Meta Sphere間の中心間の距離から両半
径を差し引いた値とする。
【0085】(g) メタツリー構成を含めた連続干渉チェ
ック法 任意の非凸多面体間の最近点を連続的に追跡していく場
合において、メタツリー構成、Gilbert法、Bubble Coll
ision法の全てを数サイクルに一回のみ行い、他のサイ
クルでは、前回のサイクルで使用した近接ポリゴンペア
に再度Gilbert法を適用することにより最短距離を求
め、計算負荷を大幅に軽減する。図45は、本アルゴリ
ズムのフローを示している。まず、サイクルをカウント
して現サイクルとし、該現サイクルがサイクル定数CYCL
Eで割り切れるか否かを判定し、割り切れるならばステ
ップ3102〜ステップ3106の処理を行い、割り切
れなければステップ3105〜3106の処理を行う。
例えば、CYCLE=100ならば、100サイクル毎にス
テップ3102〜ステップ3106の処理を行い、それ
以外はステップ3105〜3106の処理を行うことに
なる。
【0086】すなわち、割り切れなければステップ31
02において、図44で説明したメタツリーを構成し、
Meta Sphere Treeに対してDepth-Firstの探索を行い、
干渉の可能性のある非凸多面体のペアを検出する。この
処理により、Gilbert法を適用する凸包のぺアが確定
し、ステップ3103において、該確定した凸包のペア
に対してGilbert法による干渉チェック処理を実行す
る。凸包ペアが前回のペアと同一であれば、ステップ3
103で行うGilbert法は連続型となる。それ以外は非
連続型である。凸包間が干渉していなければ、Gilbert
法の結果を近接ベクトルとする(ステップ3106)。
干渉していれば、ステップ3104のBubbleCollision
法に移行し、その結果を近接ベクトルとすると共に(ス
テップ3106)、Bubble Collision法の過程で拾いだ
される近接ポリゴンペアをステップ3105において保
存する。現サイクルがCYCLEの倍数でない場合には、ス
テップ3105で保存したポリゴンペアにGilbert法を
適用し、最も近接するペアを拾いだし、近接ベクトルを
算出する。
【0087】(h) サイクルタイム自動調整型連続干渉チ
ェック法 図45の連続干渉チェック法では、CYCLEの値が固定的
であった。本アルゴリズムでは、図45のステップ31
02〜3104で費やされる時間を計算機のクロックか
ら直接測定し、その値を基にCYCLEを決定する。図46
はサイクルタイム自動調整型連続干渉チェック処理の流
れ図であり、図45のフローと異なる点は、ステップ3
102の処理開始時刻t1を計時するステップ3201
と、ステップ3104の処理終了時刻t2を計時するス
テップ3201を付け加え、ステップ3101におい
て、CYCLEの値を次式 CYCLE=[A/(t2−t1)] により動的に決定している点である。ここで、Aは計算
機のCPUパワーに依存する定数である。これにより、
t2−t1の値が大きい時、すなわち、メタツリー構成から
Bubble Collision法に至るまでの処理時間が長い時に
は、CYCLEの値は小さくなり、ステップ3102〜31
04の処理を行う頻度は増す。また、逆にt2-t1の値が
小さい時には、その頻度は減少し、より計算負荷の小さ
いステップ3205の処理を行う頻度が増す。
【0088】(E)連続型Bubble Collision法 (a) リアルタイム干渉チェック処理の全体フロー 図47は本発明のリアルタイム干渉チェック処理の全体
フローである。シミュレーションが開始されると(ステ
ップ4100)、干渉チェック前処理を行う(ステップ
4200)。凸包間の連続型干渉チェックのための前処
理では、凸包ファイル(HLファイル)があるかないか
を判定する(ステップ4211)。初回は凸包ファイル
がないので、呼び込むCGモデルに対して凸包を構成し
(ステップ4213)、凸包ファイル(HLファイル)
を出力する(ステップ4214)。次からは凸包ファイ
ルがあれば、それを読み込む(ステップ4212)。Bu
bble Collision法の前処理(ステップ4220)では、
非凸多面体の三角形ポリゴン上にLeaf Sphereを作成し
(ステップ4221)、それらを階層球で包絡し、包絡
球からなる2分木ツリーを構成する(ステップ422
2)。
【0089】ついで、移動指令値作成のステップ430
0において、マウス302等のマンマシーンインタフェ
ース機器(MMI機器)より入力された三次元入力デー
タに基づいてインタラクティブに物体の移動指令値を作
成する(ステップ4310)。または、プログラミング
された軌道に沿って移動指令値を作成する(ステップ4
320)。しかる後、移動指令値に従って、図48に示
すように物体404(ここでは直方体B)を物体405
(ここでは非凸多面体A)に対して移動して(ステップ
4400)、CG内の環境を更新する。 ここで、マウ
スを用いた三次元データ入力方式について簡単に説明す
る。マウスを用いた三次元入力方式のシステム構成図を
図49に示す。このシステムでは、オペレータ300
は、計算機301に付属の三ボタンマウス302とキー
ボード303上のファンクションキー304を使用し、
特別な装置を必要としない。計算機301のディスクプ
レイ画面には、図50に示すCGモデルの画像が表示さ
れているとする。図50では、カーソル405の位置に
応じて、三次元座標計算部406は速度指令値を作成
し、それを積分して物体の三次元座標を計算する。マウ
ス302のボタン1,2,3(411〜413)をx,
y,zの各々の方向に対応付けてあり、ボタンがONの
場合にはカーソル位置に応じて速度Vx,Vy,Vzを
作成する。カーソル位置が画面中心線Xcentでは速度は
零で、カーソル変位量Vが小さいならば、速度は小さ
く、カーソル変位量Vが大きいならば、速度は大きくな
る。
【0090】更新したCG内の環境について、干渉チェ
ックを行う(ステップ4500)。物体が離れている場
合は、凸包間の連続型干渉チェックを高速に行い(ステ
ップ4510)、最近点、干渉点、距離を求める(ステ
ップ4511)。凸包間の干渉判定を行い(ステップ4
512)、凸包間が干渉しない間は凸包間の連続型干渉
チェックが続く。凸包間が干渉すると、連続型Bubble C
ollision法を行い(ステップ4520)、凸包が解除さ
れた非凸物体に関して最近点、干渉点、距離を求める
(ステップ4521)。ファンクションキー等により、
シュミレーション終了命令が発生すると(ステップ46
00)、シュミレーションを終了する(ステップ470
0)。終了命令が発生しないと移動指令値作成以降の処
理を繰り返す。以上がリアルタイム干渉チェックシステ
ムの全体に渡る説明であり、マウスを用いてインタラク
ティブに物体を移動しながら、逐次、実時間での干渉チ
ェックを行っていくシステムに有効となるものである。
または、プログラミングされた軌道を移動しながら、実
時間で物体間の干渉チェックを行うシステムにおいても
有効となる。以下、ステップ4520の連続型Bubble C
ollision法について詳細説明を行う。
【0091】(b) Bubble Collision法の前処理 前処理では、多面体404,405を構成する三角形ポ
リゴン上に最小球 Leaf Sphereを配置する(図51)。
図52は、三角形ポリゴンを Leaf Sphereで覆った例で
あり、(a)はLeaf Sphereが比較的大きい場合、(b)はLea
f Sphereが小さい場合の例である。(b)の場合には、
三角形ポリゴン中に隙間があるので、ほぼ等しい大きさ
の球で中の隙間を埋める。Leaf Sphereの半径は、既述
のスケールパラメータSによって決定される。すべての
三角形ポリゴンに対して、上記の処理を行い、物体をLe
af Sphereで埋める。Leaf Sphereを分割統治法を行い階
層球で包絡し、階層包絡球の2分木ツリー構造(図5
3)を構成する。図54は階層包絡球の2分木ツリー構
造の3次元イメージである。図55は物体104(直方
体B)の場合の階層包絡球の構成例を階層的に示す。図
56は非凸多面体105(物体A)の場合の階層包絡球
の構成例を階層的に示す。但し、図55、図56では、
三角形ポリゴン全体についての図は非常に繁雑になるの
で、Leaf Sphereを輪郭部のみに載せた例で簡略化して
示している。
【0092】(c) 連続型 Bubble Collision法 連続型Bubble Collision法は、Bubble Collision法の高
速化を図ったものである。連続型Bubble Collision法に
おける物体の状態を図57に、連続型Bubble Collision
法における処理フローを図58に示す。例として非凸多
面体Aと直方体Bを考える。連続型Bubble Collision法
は、複雑な非凸多面体間で物体が凸包内部に入り、かな
り接近している場合の干渉チェックに適用される(図5
7参照)。 1) 連続型Bubble Collision法を開始すると(ステップ
5100)、第1回目、または、近接ポリゴンペア更新
サイクルであったら(ステップ5200)、Bubble Col
lision法を行う(ステップ5300)。そうでなかった
ら、前の処理で保存されている近接ポリゴンペアの干渉
チェックを行う(ステップ5400)。
【0093】2) Bubble Collision法 2-1) 近接球ペア探索(ステップ5310)では、前処
理で構成した包絡球間の干渉チェックを2分木ツリーに
基づいてDepth-firstの探索法でチェックしていき、最
も接近する球のペアを探索する。図59は近接球ペアの
探索/近接ポリゴンペアの探索の手順を示す。図59
(a)のように2物体A、Bの上位階層の包絡球が干渉す
ると、その下位階層の包絡球間の干渉チェックを行う。
包絡球が干渉した部分のみ、更に、下位階層の球間の干
渉チェックを行っていく。すると図59(g)のよう
に、最も接近する球のペアが探索される。 2-2) 近接ポリゴンぺア探索ステップ(ステップ532
0)では、探索した球の中心が載っているポリゴンのペ
ア(図59(g)のP11とP12、P21とP22)を
求める。これらは最近点である可能性のあるポリゴンの
ペア(近接ポリゴンペア)である。
【0094】2-3) 近接ポリゴンペアの保存ステップ
(ステップ5330)はステップ5320で得たポリゴ
ンP11とP12、P21とP22等の近接ポリゴンペ
アを保存する。 2-4) 干渉チェックステップ(ステップ5340)で
は、その近接ポリゴンぺア間に対してGilbert法を適用
することにより、二つの非凸多面体間の干渉点、最近
点、距離を算出する。干渉すれば(ステップ534
1)、干渉点を出力する(ステップ5342)。非干渉
時には、ポリゴンP11とP12間の干渉チェックから
最近点の距離d1を、ポリゴンP21とP22間の干渉
チェックから最近点の距離d2、・・を求める(ステッ
プ5343)。しかる後、最も短いものを最近点距離と
する(最小値判定、ステップ5344)。図57(b)で
は距離d2が距離d1より小さいのでd2を最近点距離
の解とする。最近点を出力する(345)。
【0095】3) 近接ポリゴンぺアの干渉チェック 3-1) 次のサイクルで図57(c)のように直方体Bを左方
向に移動する。しかし、近接ポリゴンペア更新サイクル
でないので、保存されている近接ポリゴンペア間の干渉
チェックを行う(ステップ5400)。直方体Bが僅か
に移動したと仮定すると、その近接ポリゴンペアP1
1,P12;P21,P22は同じである。そこで、先
に保存した近接ポリゴンペア間に対してのみ干渉チェッ
クを行って、最近点、干渉点を求める。近接ポリゴンペ
アの呼出しステップ5410では、先にステップ533
0で保存した近接ポリゴンペアP11,P12;P2
1,P22等の近接ポリゴンペアを呼び出す。 3-2) ここで得た近接ポリゴンペアP11,P12;P2
1,P22等に干渉チェックを行って干渉点、最近点を
求める(ステップ5440)。図57(c)では距離d3
が距離d2より小さいのでこれを最近点距離の解とす
る。
【0096】移動距離/姿勢変化が小さいという仮定か
ら、しばらくは、この数組の近接ポリゴンペア間に対し
てのみ干渉チェックを行う近接ポリゴンペアチェック
(ステップ5400)を繰り返す。保存した数組の近接
ポリゴンのみに関して干渉チェックを行うことにより、
計算時間の短縮が図られる。しかし、移動距離が大きく
なると近接ポリゴンペアが変わる可能性があるので、数
サイクル毎にBubble Collision法(ステップ5300)
を行って近接ポリゴンペアを更新する。CG上での最近
点の表示は、移動距離が大きくなると一時、誤った点を
表示するが、すぐに次の近接ポリゴン更新サイクルで修
正される。更新サイクルが適切ならば、一時、誤った結
果が表示されても、瞬時に修正された正しい結果が表示
されるので、使用上に問題ない。本実施例では、近接ポ
リゴン更新サイクルを使用上に問題ないように調整した
値を手で入力したものを用いる。
【0097】(d) 連続型Bubble Collision法の効果 図60(a)はBubble Collision法のみの場合における
干渉チェック計算時間であり、常に計算時間が数十〜数
百msかかっている。一方、本発明によれば干渉チェッ
ク計算時間は図60(b)に示すようになる。Bubble Co
llision法では計算時間が数十〜数百msかかるが、近
接ポリゴンペアチェックは数msであるので、大半はこ
ちらを行うと平均計算時間は点線のように小さくなる。
例えば、Bubble Collision法による処理時間を100m
s、近接ポリゴンチェックの処理時間を1ms、更新サ
イクルを100とすると、平均計算時間は2ms(=(1
00+99・1)/100)程度になる。もちろん、任意の非凸多面
体にもこの連続型Bubble Collision法を適用できる。連
続型Bubble Collision法によって、任意の非凸多面体に
対して物体移動速度に応じて逐次、実時間での干渉チェ
ックが可能になる。一例として、マウス等のMMIによ
り、インタラクティブな動作時の干渉チェックをリアル
タイムに行い、その結果をCG上に表示してユーザに提
示する環境の構築への利用等を可能にする。機構設計用
CADシステムに適用すると、CG上で実時間で干渉チ
ェックを行いながら部品の組み立てを行うことで、本当
に組み立てられるかのチェックができる。また、組み上
がった機構部の移動チェックが行える。これにより、設
計ミスを発見できるので設計へのフィードバックが早く
なることや、試作品を減らす効果が得られる。他にもマ
ニピュレータや自走車等の移動ロボットのパス生成、マ
ルチメディアにおけるアニメーション作成、ゲームソフ
ト等、コンピュータグラフィックスを応用した様々な分
野に適用される。
【0098】(F)連続型Bubble Collision法の更新サ
イクル自動決定法 連続型Bubble Collision法では、物体形状と移動速度に
応じて近接ポリゴンの更新サイクル(次のBubble Colli
sion法実行までのサイクル)の調整が必要である。
(E)の実施例では、近接ポリゴン更新サイクルとし
て、調整した一定値を手で入力したものを使っている
が、この更新サイクルが不適切な場合に次の問題が生じ
る。例えば、更新サイクルを200毎にするとサイクル
が長すぎて、修正が遅くなり、図61(b)のように間
違ったポリゴンペアP21,P22間の干渉チェックを
行い、それらの最近点距離d2´を出力してしまう。一
方、サイクルを10毎にすれば、近接ポリゴンペアの更
新が早いので、正しい近接ポリゴンペアP31,P32
間の最近点距離結果d3を計算して表示する。しかし、
BubbleCollision法の実行回数が多くなり干渉チェック
に時間がかかる。このように、試行錯誤的な更新サイク
ルの調整は難しい。
【0099】そこで、Bubble Collision法を行う毎にそ
の計算時間を測定し、その計算時間から次の更新サイク
ルを自動的に決定する方法を提案する。Bubble Collisi
on法の計算時間の変動に対応して自動的にサイクルを決
定することで、試行錯誤的でなく、計算時間の短縮と修
正タイミングのバランスをうまく取れる見込みがある。
このフローを図62に示すが、図58のフローに斜線部
のステップ5601〜5603を付加したものである。
計算時間測定は、まずBubble Collision法を行う前に計
算機システムコールにて計算機内部クロックで時間測定
してt1を求める(ステップ5601)。Bubble Colli
sion法を行った後に同様にしてt2を求め、Bubble Col
lision法の計算時間を次式 tBC=t2-t1 により計算する(ステップ5602)。
【0100】そして、ポリゴンペアの更新サイクルを例
えば次式 更新サイクル=(Bubble Collision法の計算時間tBC×
α(C) により求める(ステップ5603)。但し、αは調整必
要である。従って、Bubble Collision法の干渉チェック
に100msかかり、連続型Bubble Collision法に1m
sかかり、α=1.5とすると更新サイクルは150で
平均計算時間は1.66ms(=(100+149・1)/150)程度に
なる。図63(a)では、1回目(a)より2回目(b)
のBubble Collision法の計算時間が長くなっているの
で、更新サイクルが長くなる。3回目(c)のBubble C
ollision法の計算時間は短いので、更新サイクルは短く
なる。平均計算時間は点線のように多少変動するが、Bu
bble Collision法のみの時に比べて小さくなる。このよ
うに、計算時間tBCが長くなるほど更新サイクルを長く
することにより、平均計算時間を短くでき、しかも、ク
イックレスポンスが可能になる。ただし、間違った結果
を出力する可能性があるが、近接ポリゴンぺはBubble c
ollision法により更新され、正しい結果を出力できるよ
うになる。
【0101】以上では、tBCが大きいほど更新サイクル
を長くした場合であるが、厳密に正しい出力結果が必要
の場合には、tBCが大きいほど更新サイクルを短くす
る。図63(b)では、1回目aより2回目bのBubble Co
llision法の計算時間が長くなっているので、更新サイ
クルは短くなる。3回目cのBubble Collision法の計算
時間は短いので、更新サイクルは長くなる。更新サイク
ルにより平均計算時間は多少変動するが、Bubble Colli
sion法のみの時に比べて遥かに小さくできる。又、tBC
が大きいとポリゴンペアの更新サイクルが短くなって平
均計算時間が長くなるが、厳密に正しい近接ポリゴン間
の干渉チェックを行うことができ、正しい最近点、最近
点間距離を出力できる。以上のように、Bubble Collisi
on法を行う毎にその計算時間を測定し、計算時間の変動
に対応して自動的に更新サイクルを決定することで、試
行錯誤的でなく、計算時間の短縮と修正タイミングのバ
ランスをうまく取れる。
【0102】(G)連続型Bubble Collision法の第1変
形例 連続型Bubble Collision法は移動距離/姿勢変化が小さ
いと仮定するので、大移動が発生すると、間違ったポリ
ゴンペア間の距離を示すのが目立つ(図61(b))。移
動距離/姿勢変化があるしきい値より大きい場合には、
近接ポリゴンペアの更新サイクル(図63中のb、c)
に達しなくてもBubble Collision法による干渉チェック
を行い、近接ポリゴンペアを更新する。これにより、正
しい干渉チェック結果を得ることができる。例えば、 |△x|>|△xlimit| ならば、Bubble Collision法による干渉チェックを行
い、近接ポリゴンペアを更新する。図64はかかる処理
のフローであり、斜線部のステップ5604を図62の
フローに付加したものである。上式中、△xは1サイク
ルの間の物体移動量であり、△xlimitはしきい値であ
る。
【0103】しきい値△xlimitは、図65(a)〜(c)に
示すように、移動物体Bの最大辺の長さをLmaxとすれ
ば、Lmax/βにより、あるいは、移動物体の最上位包
絡球の半径をR0とすれば、R0/βにより、あるい
は、移動物体のLeaf球の最大半径をRLmaxとすれば、R
Lmax・βにより決定する(βは2〜4程度で調整必
要)。又、しきい値△xlimitは、干渉チェック対象中
の最小物体の最大辺の長さをLmaxとすればLmax/βに
より、あるいは、干渉チェック対象中の最小物体の最上
位包絡球の半径をR0とすればR0/βにより、あるい
は、干渉チェック対象中の最小物体のLeaf球の最大半径
をRLmaxとすればRLmax・βにより決定することもでき
る。
【0104】(H)連続型Bubble Collision法の第2変
形例 連続型Bubble Collision法は移動距離/姿勢変化が小さ
いと仮定するので、大移動が発生すると、間違ったポリ
ゴンペア間の距離を示すのが目立つ(図61(b))。移
動速度があるしきい値より大きい場合には、近接ポリゴ
ンペアの更新サイクル(図63中のb、c)に達しなく
てもBubble Collision法を行い、近接ポリゴンペアを更
新する。これにより、正しい干渉チェック結果を得るこ
とができる。例えば、 |v|>|vlimit| ならば、Bubble Collision法を行い、近接ポリゴンぺを
更新する。図66はかかる処理のフローであり、斜線部
のステップ5605を図62のフローに付加したもので
ある。上式中、vは物体移動速度、vlimitはしきい値
である。
【0105】しきい値vlimitは、移動物体の最大辺の長
さLmaxとすれば、Lmax/β・dtにより、移動物体の
最上位包絡球の半径をR0とすれば、R0/β・dtによ
り、あるいは、移動物体のLeaf球の最大半径をRL max
とすれば、RL max・β/dtにより決定する(但し、
dtは積分きざみ、βは2、3、4程度で調整必要)。
又、しきい値vlimitは、干渉チェック対象中の最小物
体の最大辺の長さをLmaxとすればLmax/β・dtによ
り、あるいは、干渉チェック対象中の最小物体の最上位
包絡球の半径をR0とすれば、R0/β・dtにより、
あるいは、干渉チェック対象中の最小物体のLeaf球の最
大半径をRLmaxとすればRLmax・β/dtにより決定す
ることもできる。
【0106】(I)連続型Bubble Collision法の第3変
形例 連続型Bubble Collision法は移動距離/姿勢変化が小さ
いと仮定するので、大移動が発生すると、間違ったポリ
ゴンペア間の距離を示すのが目立つ(図61(b))。最
近点距離比があるしきい値より大きい場合には、近接ポ
リゴンペアの更新サイクル(図63中のb、c)に達し
なくてもBubble Collision法を行い、近接ポリゴンペア
を更新する。これにより、正しい干渉チェック結果を得
ることができる。例えば、(最近点距離比)>γ(但
し、γは3〜5程度)ならば、Bubble Collision法を行
い、近接ポリゴンペアを更新する。最近点距離が前回の
結果の5倍になるということは、大移動が発生したと考
えられるからである。
【0107】ある近接ポリゴンペアについて、 (最近点距離比)=|(今回の最近点距離)/(前回の
最近点距離)| とする。例えば図67では近接ポリゴンペアP11,P
12については|d1′/d1|、近接ポリゴンペアP
21,P22では、|d2′/d2|である。γ=3と
すると|d1′/d1|>3、|d2′/d2|>3に
なるので、BubbleCollision法を行い、近接ポリゴンペ
アを更新して干渉チェックを行い、正しい最近点距離d
3を出力する。
【0108】図68はかかる処理のフローであり、斜線
部のステップ5606 〜5607を図62のフローに
付加したものである。ステップ5606では、修正フラ
グBCmodeの判定を行う。BCmodeが1ならばBubble Colli
sion法を行い、近接ポリゴンを更新して干渉チェックを
行う。BCmodeが0ならば、近接ポリゴンペアの干渉チェ
ックを行う。ステップ5607では、まず、最近点距離
di′の保存と、その時の近接ポリゴンペアの保存を行
う。次に最近点距離比計算で|di′/di|を計算す
る。(diは一つ手前のサイクルの状態での最近点距離
である)。最近点距離比判定で|di′/di|>γ
(但し、γは3〜5程度)ならば、修正フラグBCmode=
1とする。そうでなければ、修正フラグBCmode=0とす
る。修正フラグBCmode=1ならば、次のサイクルでBubb
le Collision法を行い、近接ポリゴンを更新する。尚、
第1〜第3変形例は、図62に示す連続型Bubble colli
sion法の変形例として説明したが、図58の連続型Bubb
le collision法を同様に変形することができる。
【0109】(J)物体静止の干渉チェック効率化 (a) 凸包外における物体静止の干渉チェック効率化 従来は、高速化を図ることでリアルタイムな干渉チェッ
クを可能にすることに重点を置いている。そして、リア
ルタイム性が保てるということでステップ毎に毎回、干
渉チェックを行っている。しかし、干渉チェックを一度
行った後に、チェック対象物体がすべて静止していれ
ば、前回の結果と同じであるので、その結果を更新する
必要はない。そこで、速度指令、位置変位を監視し、速
度指令あるいは位置変位が零ならば、前サイクルの干渉
チェック結果をそのまま使って計算を省略する。このよ
うにすれば、干渉チェック対象物体グループが二つ以上
の場合に効果が大きい。なぜならば、移動物体を含むグ
ループのみの干渉チェック計算だけで良いからであり、
干渉チェックの効率化が図られる。
【0110】一例として、図69のような自動車工場内
ロボットの干渉チェックを考えてみる。ロボット1とロ
ボット2はプログラミングされた作業軌道で塗装作業等
を行い、ロボット3はマウス等のMMIによってインタ
ラクティブに指令値が与えられ、タイヤのネジ締め作業
等を行っているとする。この場合、干渉チェック対象物
体のグループとして3つ存在する。第1グループはロボ
ット1と車、第2グループはロボット2と車、第3グル
ープはロボット3とロボット2と車である。各グループ
の干渉チェック計算時間が10msずつかかると仮定す
ると次のような効率化が可能である。
【0111】1) ロボット1が静止の場合 第1グループの干渉チェックデータが維持され、総計算
時間は20msとなる 2) ロボット2が静止の場合 第2グループの干渉チェックデータが維持され、総計算
時間は20msとなる。 3) ロボット1、ロボット2
が静止の場合 ロボット1、ロボット2の干渉チェックデータが維持さ
れ、総計算時間は10msとなる。この考えは車が他の
装置、製品であっても、ロボットが多数の場合にも拡張
でき、干渉チェックの効率化を図れる。
【0112】(b) 凸包内における物体静止時の干渉チ
ェック効率化 以上は凸包外における物体静止時の場合であるが、それ
を物体がかなり接近して、凸包内にある場合にも適用で
きる。ただし、若干の相違がある。凸包内では連続型Bu
bble Collision法による干渉チェックを行っているが、
干渉チェックを一度行った後に、チェック対象物体がす
べて静止していれば、前回の結果を更新する必要はな
い。そこで、速度指令、位置変位を監視し、これらが零
ならば、前サイクルの干渉チェック結果をそのまま使っ
て干渉チェック処理を省略する。但し、静止後の近接ポ
リゴンペアの更新サイクルで一度だけBubble Collision
法を行って正しい結果を求める必要がある。このように
すれば、干渉チェック対象物体グループが二つ以上の場
合に、移動物体を含むグループのみの干渉チェック計算
だけで良いので効果が大きい。
【0113】例えば、図70に示す凹型物体Cと立方体
Dの簡易なモデルについて説明する。移動中t1では
(a)の状態にあり、正しく近接ポリゴンペアP11,
P12間の干渉チェックが行われる。しかし、その後の
移動量が大きく時刻t2で静止すると(b)の状態にな
り、この状態で間違ったポリゴンペアP11,P12間
で干渉チェックを行って誤った結果を示す。そこで、速
度指令、位置変位が零において、単に前サイクルでの干
渉チェック結果をそのまま使って計算を省くという方法
では、再移動後の時刻t5までは誤ったポリゴンペアP
11,P12が保存し続けられる。これを避けるために
は、時刻t2で静止した後、時刻t3の近接ポリゴンペ
アの更新サイクルで一度だけBubble Collision法を行っ
て、正しい近接ポリゴンペアP21,P22を求め、こ
れらの間の干渉チェックを行い、その結果を保持し、時
刻t4まではその干渉チェック結果をそのまま使って干
渉チェック処理を省略する。これを図69のような自動
車工場内ロボットの干渉チェックに拡張すると、物体が
かなり接近して、凸包内にある場合の干渉チェックの効
率化に結び付く。
【0114】(K)産業上の応用分野 本発明は、以下のような分野における応用が可能であ
る。 (a) 機構設計用CADシステム 機構設計では、製品を組み立てた時に不用意な干渉が度
々発生する。このようなことを事前に防ぐためには、機
構設計用CADシステム上にて部品間の接合関係、マー
ジンを入念にチェックしておくことが重要になる。本発
明のリアルタイム干渉チェック方法を機構設計用CAD
システムに組み込むことにより、実際の製品に近い形で
の事前チェックが可能となる。
【0115】(b) 移動ロボットの経路計画 マニピュレータや自走車などの移動ロボットでは、他の
物体と衝突しないよう経路計画を事前に行った後に駆動
させる場合が多い。例えば、マニピュレータを使った部
品組立て工程では、機構設計用CADシステム上に部品
モデル、マニピュレータモデルを持ち、マニピュレータ
を使って各部品を組み立てていく工程をプランニングす
ることがある。このような場合に部品間の干渉、部品と
マニピュレータ間との干渉をチェックしながら経路計画
することが必要となる。また、掃除ロボット、警護ロボ
ット、運搬ロボットなどの自走ロボットでは、地点間の
移動において壁や柱または机等の障害物との衝突を回避
した経路計画が必要である。これら経路計画において本
発明の干渉チェック方法を適用して、干渉の事前チェッ
クすることができる。
【0116】(c) マルチメディアにおけるアニメーショ
ン作成 マルチメディアでは、コンピュータグラフィックス、実
画像、音声などをミックスさせた様々な応用が期待され
ており、又、コマーシャルや映画の分野ではコンピュー
タグラフィックスを使ったリアリティの高いアニメーシ
ョン作成が望まれている。従来のコンピュータグラフィ
ックスの世界では、アニメーションはもっぱらオフライ
ン的に作成されており、干渉問題も総当たり法を使った
方法が取られていた。これからのアニメーション作成
は、高速なグラフィックコンピュータを使ったリアルタ
イム/インタラクティブ作成が主流になり、その場合に
はCGモデル間の干渉を如何に高速に解くかが鍵とな
る。例えば、アンドロイドモデル(人間の形をしたCG
モデル)を歩かせる場合には、アンドロイドモデルと地
上との接触問題を解かなければならず、また、自動車の
衝突をシミュレーションする場合には、まさしく自動車
間の干渉問題を解く必要がある。本発明の高速の干渉チ
ェック方法は、リアルタイム/インタラクティブアニメ
ーション作成において必須技術となるものである。
【0117】(d) ゲームソフト 従来のゲームソフトはもっぱら2次元的なものが多かっ
たが、今後は、グラフィックコンピュータを使い、3次
元的に表示するものが主流になると予想される。ゲーム
ソフトでは、例えば、シューティングゲームにおけるミ
サイルと戦闘機の衝突、レーシングゲームにおける車同
志の衝突など物体間の干渉問題が多くの場面に絡んでお
り、本発明の干渉チェック方法は、これらに対して非常
に強力な手段を提供するものである。以上、本発明を実
施例により説明したが、本発明は請求の範囲に記載した
本発明の主旨に従い種々の変形が可能であり、本発明は
これらを排除するものではない。
【0118】
【発明の効果】本発明によれば、高速に非凸多面体間の
干渉チェックを行うことができる。本発明によれば、干
渉チェックの前処理である凸包の生成、近接点線形リス
ト、階層球の生成を効率良く、高速に行うことができ
る。本発明によれば、非凸多面体同士がかなり接近して
いる場合の干渉チェックを連続型Bubble Collision法を
用いて高速に行うことができる。本発明によれば、物体
静止時の干渉チェックを効率的に行うことができる。
【図面の簡単な説明】
【図1】本発明の原理説明図である。
【図2】非凸多面体の説明図である。
【図3】凸包の説明図である。
【図4】干渉チェックのシステム構成図である。
【図5】干渉チェック前処理の概略フローである。
【図6】多面体を表現するためのデータ構造説明図であ
る。
【図7】多面体を表現するためのC言語によるデータ構
造である。
【図8】凸包構成アルゴリズムである。
【図9】C言語による2次元凸包構成基本関数である。
【図10】一次元凸包構成説明図である。
【図11】アッパーブリッジ、ロワーブリッッジの構成
法説明図である。
【図12】C言語による2次元凸包マージ関数の構成で
ある。
【図13】凸包構成の説明図である。
【図14】凸包構成の説明図である。
【図15】凸包構成の説明図である。
【図16】凸包構成の説明図である。
【図17】C言語による3次元凸包マージ関数の構成で
ある。
【図18】3次元凸包構成の説明図である。
【図19】ラッピングプロセス説明図である。
【図20】三角形ポリゴンのパッチングプロセスの説明
図である。
【図21】C言語による三角形パッチング関数である。
【図22】バックアップ凸包構成アルゴリズムにおける
ラッピング及びパッチングプロセス説明図である。
【図23】近接点線形リスト説明図である。
【図24】凸要素毎のポリゴンデータの説明図である。
【図25】近接点線形リスト構成アルゴリズムの説明図
である。
【図26】近接点線形リストのダンプファイルフォーマ
ットである。
【図27】リーフ球の説明図である。
【図28】三角形ポリゴン説明図である。
【図29】辺上のリーフ球による被覆説明図である。
【図30】三角形ポリゴン内部の被覆説明図である。
【図31】C言語による2分木ツリー用のデータ構造で
ある。
【図32】2分木ツリー構成のフローである。
【図33】2分木ツリーの例である。
【図34】C言語によるバブルコライジョンチェック基
本関数(その1)である。
【図35】C言語によるバブルコライジョンチェック基
本関数(その2)である。
【図36】球間距離説明図である。
【図37】C言語による干渉チェックデータ構造(その
1)である。
【図38】C言語による干渉チェックデータ構造(その
2)である。
【図39】C言語による干渉チェックデータ構造(その
3)である。
【図40】Gilbert法の基本的な説明図である。
【図41】連続型Gilbert法の説明図である。
【図42】融合アルゴリズムのフローである。
【図43】(2+1)次元干渉チェック説明図である。
【図44】メタツリー説明図である。
【図45】メタツリー構成を包含した連続型干渉チェッ
クのフローである。
【図46】メタツリー構成を包含した連続型干渉チェッ
クの別のフローである。
【図47】干渉チェックの全体フローである。
【図48】CG内の環境説明図である。
【図49】マウスを用いた三次元入力方式のシステム構
成図である。
【図50】三次元座標入力部の説明図である。
【図51】リーフ球の作成説明図である。
【図52】三角形ポリゴン上のリーフ球説明図である。
【図53】階層包絡球の2分木ツリ−構造説明図であ
る。
【図54】階層包絡球の2分木ツリ−構造の三次元イメ
ージ説明図である。
【図55】階層包絡球の構成例(直方体の場合)であ
る。
【図56】階層包絡球の構成例(非凸多面体の場合)で
ある。
【図57】連続型バブルコライジョン法説明図である。
【図58】連続型バブルコライジョン法のフロー図であ
る。
【図59】近接球ペアの探索/近接ポリゴンペアの探索
説明図である。
【図60】連続型バブルコライジョン法の計算時間説明
図である。
【図61】近接ポリゴンペア更新説明図である。
【図62】連続型バブルコライジョン法の更新サイクル
自動決定法のフローである。
【図63】連続型バブルコライジョン法の計算時間説明
図である。
【図64】連続型バブルコライジョン法の修正方法のフ
ローである。
【図65】物体移動量のしきい値の決定法説明図であ
る。
【図66】連続型バブルコライジョン法の修正方法のフ
ローである。
【図67】最近点距離比による修正説明図である。
【図68】連続型バブルコライジョン法の修正方法のフ
ローである。
【図69】自車工場内ロボット干渉チェック説明図であ
る。
【図70】凸包内における物体静止時の干渉チェックの
効率化の説明図である。
【符号の説明】
1・・凸包構成部 2・・近接点線形リスト作成部 3・・階層包絡球2分木ツリー生成部 4・・記憶部 5・・凸包間干渉チェック部 6・・バブルコライジョン法実行部 7・・ポリゴンペア間干渉チェック部

Claims (20)

    【特許請求の範囲】
  1. 【請求項1】 非凸多面体の凸包を生成し、該凸包と他
    の物体間の干渉チェックを行い、干渉し始めた時、凸包
    を解除して前記非凸多面体と他の物体間の干渉チェック
    を行う干渉チェック方法において、 非凸多面体を構成する頂点を、第1軸(例えばX軸)の
    座標値の差が零あるいは微小量ε以内の複数の頂点群に
    分割するステップ、 各頂点群について第2−第3軸平面(例えばYZ平面)
    上で2次元凸包を生成するステップ、 隣接する2次元凸包を併合して3次元凸包を生成し、以
    後、隣接する3次元凸包を順次併合して目的とする非凸
    多面体の凸包を生成するステップ、を有することを特徴
    とする干渉チェック方法。
  2. 【請求項2】 前記隣接する3次元凸包を併合するステ
    ップは、 隣接する3次元凸包の頂点間を接続する稜線のうち最も
    上に位置するアッパーブリッジを求めるステップ、 該アッパーブリッジを1辺とする最上位位置の三角形ポ
    リゴンを求め、該ポリゴンで隣接3次元凸包間をラッピ
    ングし、該三角形ポリゴンに隣接する最上位位置の三角
    形ポリゴンを求め、該ポリゴンで隣接3次元凸包間をラ
    ッピングし、以後同様にラッピングを行って3次元凸包
    を併合するステップを有することを特徴とする請求項1
    記載の干渉チェック方法。
  3. 【請求項3】 第1軸の座標値の差が零又は微小量ε以
    内の複数の頂点よりなる2次元凸包を生成するステップ
    は、 第2軸(例えばY軸)の座標値の差が微小量以内の複数
    の頂点群に分割するステップ、 各頂点群毎に、第3軸(例えばZ軸)座標値の大きさ順
    に頂点をリンクして1次元凸包を生成するステップ、 隣接する1次元凸包を併合して2次元凸包を生成し、以
    後、隣接する2次元凸包を順次併合して目的とする2次
    元凸包を生成するステップ、を有することを特徴とする
    請求項1記載の干渉チェック方法。
  4. 【請求項4】 前記隣接する2次元凸包を併合するステ
    ップは、 隣接する2次元凸包の頂点間を接続する稜線のうち最も
    上に位置するアッパーブリッジと最も下に位置するロワ
    ーブリッジを求めるステップ、 これら各ブリッジにより隣接する2つの2次元凸包を結
    合して新たな2次元凸包を生成するステップを有するこ
    とを特徴とする請求項3記載の干渉チェック方法。
  5. 【請求項5】 凸包を構成する全三角ポリゴンの頂点を
    第1方向(next方向)にリンクし、各頂点にポリゴン辺
    を介して繋がる頂点群を第2の方向(branch方向)に該
    頂点にリンクしてなるデータ構造を備えた近接点線形リ
    ストを作成して出力するステップを有することを特徴と
    する請求項1記載の干渉チェック方法。
  6. 【請求項6】 近接点線形リストを外部記憶媒体にファ
    イルとして記憶しておき、必要時に所定の近接点線形リ
    ストのファイルを読み出してシステムのメモリ上に展開
    するステップを有することを特徴とする請求項5記載の
    干渉チェック方法。
  7. 【請求項7】 非凸多面体である2つの物体間の干渉チ
    ェックを行う干渉チェック方法において、 非凸多面体を構成するポリゴン上に所定半径の複数の球
    (リーフ球)を配列して各ポリゴンを覆い、分割統治ア
    ルゴリズムに従って該球を階層球で順次包絡し、階層包
    絡球の2分木ツリー構造を生成するステップ、 前記生成された2分木ツリー構造に基づいて、上位階層
    の包絡球同士の干渉チェックを行い、干渉する上位階層
    の包絡球を、該包絡球を構成する下位階層の包絡球に分
    解し、下位階層の包絡球について干渉チェックを行い、
    以後干渉しなくなるまで前記包絡球の分解及び干渉チェ
    ック処理を行って、近接球のペアを求めるステップ、 該近接球のペアに応じたポリゴンのペアを近接ポリゴン
    のペアとして求め、近接ポリゴンのペアについて干渉チ
    ェックを行うステップを備え、 前記リーフ球の半径値を、非凸多面体を包含する球の半
    径に応じた値にすると共に、非凸多面体のポリゴン数が
    少ない場合には小さくし、ポリゴン数が多い場合には大
    きくすることを特徴とする干渉チェック方法。
  8. 【請求項8】 非凸多面体である2つの物体間の干渉チ
    ェックを行う干渉チェック方法において、 非凸多面体を構成するポリゴン上に所定半径の複数の球
    (リーフ球)を配列して各ポリゴンを覆い、分割統治ア
    ルゴリズムに従って該球を階層球で順次包絡し、階層包
    絡球の2分木ツリー構造を生成するステップ、 前記生成された2分木ツリー構造に基づいて、上位階層
    の包絡球同士の干渉チェックを行い、干渉する上位階層
    の包絡球を、該包絡球を構成する下位階層の包絡球に分
    解し、下位階層の包絡球について干渉チェックを行い、
    以後干渉しなくなるまで前記包絡球の分解及び干渉チェ
    ック処理を行って、近接球のペアを求めるステップ、 該近接球のペアに応じたポリゴンのペアを近接ポリゴン
    のペアとして求め、近接ポリゴンのペアについて干渉チ
    ェックを行うステップを備え、 リーフ球とリーフ球間の距離はこれらリーフ球の中心間
    距離とし、リーフ球と非リーフ球間の距離はこれら球の
    中心間距離から非リーフ球の半径を差し引いた距離と
    し、非リーフ球と非リーフ球間の距離はこれら球の中心
    間距離から両非リーフ球の半径を差し引いた距離とする
    ことを特徴とする干渉チェック方法。
  9. 【請求項9】 非凸多面体である2つの物体間の干渉チ
    ェックを行う干渉チェック方法において、 非凸多面体の凸包を生成し、該凸包と他の物体間の干渉
    チェックを行うステップ、 凸包間の距離が設定値以下になったとき、前記非凸多面
    体を構成するポリゴン上に所定半径の複数の球(リーフ
    球)を配列して各ポリゴンを覆い、分割統治アルゴリズ
    ムに従って該球を階層球で順次包絡し、階層包絡球の2
    分木ツリー構造を生成するステップ、 前記生成された2分木ツリー構造に基づいて、上位階層
    の包絡球同士の干渉チェックを行い、干渉する上位階層
    の包絡球を、該包絡球を構成する下位階層の包絡球に分
    解し、下位階層の包絡球について干渉チェックを行い、
    以後干渉しなくなるまで前記包絡球の分解及び干渉チェ
    ック処理を行って、近接球のペアを求めるステップ、 該近接球のペアに応じたポリゴンのペアを近接ポリゴン
    のペアとして求め、近接ポリゴンのペアについて干渉チ
    ェックを行うステップを、備えたことを特徴とする干渉
    チェック方法。
  10. 【請求項10】 前記凸包間の直交座標系における距離
    が設定値以下になった時、該直交座標軸以外の仮想的な
    第4軸を想定し、該第4軸方向における2つの凸包間の
    距離をε一定とすることを特徴とする請求項9記載の干
    渉チェック方法。
  11. 【請求項11】 非凸多面体の集合における干渉チェッ
    ク方法において、 各非凸多面体を包絡する球を構成し、各球を階層球で順
    次包絡し、階層包絡球のメタツリー構造を生成するステ
    ップ、 前記生成されたメタツリー構造に基づいて、上位階層の
    包絡球同士の干渉チェックを行い、干渉する上位階層の
    包絡球を、該包絡球を構成する下位階層の包絡球に分解
    し、下位階層の包絡球について干渉チェックを行い、以
    後干渉しなくなるまで前記包絡球の分解及び干渉チェッ
    ク処理を行って、近接球のペアを求めるステップ、 該近接球のペアに応じた近接非凸多面体のペアを求め、
    該近接非凸多面体のペアについてそれぞれ凸包を生成す
    るステップ、 凸包同士の干渉チェックを行い、干渉し始めた時、凸包
    を解除して前記非凸多面体間の干渉チェックを行うステ
    ップを、備えたことを特徴とする干渉チェック方法。
  12. 【請求項12】 前記非凸多面体間の干渉チェックステ
    ップは、 凸包間の距離が設定値以下になったとき、前記非凸多面
    体を構成するポリゴン上に所定半径の複数の球(リーフ
    球)を配列して各ポリゴンを覆い、分割統治アルゴリズ
    ムに従って該球を階層球で順次包絡し、階層包絡球の2
    分木ツリー構造を生成するステップ、 前記生成された2分木ツリー構造に基づいて、上位階層
    の包絡球同士の干渉チェックを行い、干渉する上位階層
    の包絡球を、該包絡球を構成する下位階層の包絡球に分
    解し、下位階層の包絡球について干渉チェックを行い、
    以後干渉しなくなるまで前記包絡球の分解及び干渉チェ
    ック処理を行って、近接球のペアを求めるステップ、 該近接球のペアに応じたポリゴンのペアを近接ポリゴン
    のペアとして求め、近接ポリゴンのペアについて干渉チ
    ェックを行うステップを、備えたことを特徴とする請求
    項11記載の干渉チェック方法。
  13. 【請求項13】 前記求まった近接ポリゴンのペアにつ
    いて干渉チェックを繰返し実行するステップと、 所定サイクル毎に近接非凸多面体のペア、近接ポリゴン
    ペアを更新し、新たな近接ポリゴンペアについて干渉チ
    ェックを繰返し実行するステップ、を備えたことを特徴
    とする請求項12記載の干渉チェック方法。
  14. 【請求項14】 多面体である2つの物体間の干渉チェ
    ックを行う干渉チェック方法において、 多面体を構成するポリゴン上に所定半径の球を配列し、
    分割統治アルゴリズムに従って該球を階層球で順次包絡
    し、階層包絡球の2分岐ツリー構造を生成する前処理
    を、干渉チェック対象である2つの多面体に施すステッ
    プ、 前記前処理で生成された多面体の2分岐ツリー構造に基
    づいて、上位階層の包絡球同士の干渉チェックを行い、
    干渉する上位階層の包絡球を、該包絡球を構成する下位
    階層の包絡球に分解し、下位階層の包絡球について干渉
    チェックを行い、以後干渉しなくなるまで前記包絡球の
    分解及び干渉チェック処理を行って、近接球のペアを求
    め、該近接球のペアに応じたポリゴンのペアを近接ポリ
    ゴンペアとして求めて保存し、近接ポリゴンのペアにつ
    いて干渉チェックを行うバブルコライジョンアルゴリズ
    ムを実行するステップ、 バブルコライジョンアルゴリズムにより求まった近接ポ
    リゴンのペアについて所定回数干渉チェックを繰返し実
    行するステップ、 前記ポリゴンペアの所定回数の干渉チェック毎に前記バ
    ブルコライジョンアルゴリズムを実行して近接ポリゴン
    ペアを更新し、新たな近接ポリゴンペアについて前記干
    渉チェックを繰返し実行するステップ、を備えたことを
    特徴とする干渉チェック方法。
  15. 【請求項15】 各多面体の凸包を生成し、凸包同士の
    干渉チェックを行うステップを備え、凸包同士が干渉し
    始めた時、前記バブルコライジョンアルゴリズムに従っ
    て干渉チェックを行うことを特徴とする請求項14記載
    の干渉チェック方法。
  16. 【請求項16】 バブルコライジョンアルゴリズムの計
    算時間を測定し、計算時間に基づいて近接ポリゴンの更
    新サイクルを変更するステップを備えたことを特徴とす
    る請求項14記載の干渉チェック方法。
  17. 【請求項17】 移動物体の移動量を監視し、移動量が
    設定値以上の場合には、近接ポリゴンの更新サイクルに
    達しなくてもバブルコライジョンアルゴリズムを実行し
    て近接ポリゴンのペアを更新するステップを有すること
    を特徴とする請求項14記載の干渉チェック方法。
  18. 【請求項18】 移動物体の移動速度を監視し、移動速
    度が設定値以上の場合には、近接ポリゴンの更新サイク
    ルに達しなくてもバブルコライジョンアルゴリズムを実
    行して近接ポリゴンのペアを更新するステップを有する
    ことを特徴とする請求項14記載の干渉チェック方法。
  19. 【請求項19】 近接ポリゴンペア間の距離を測定し、
    今回の距離と前回の距離の比が設定値以上の場合には、
    近接ポリゴンの更新サイクルに達しなくてもバブルコラ
    イジョンアルゴリズムを実行して近接ポリゴンのペアを
    更新するステップを有することを特徴とする請求項14
    記載の干渉チェック方法。
  20. 【請求項20】 干渉チェック対象の2つの物体が静止
    している場合には、前回の凸包間の干渉チェック結果、
    あるいは近接ポリゴン間の干渉チェック結果を保持し、
    今回出力するステップを有することを特徴とする請求項
    14又は請求項15記載の干渉チェック方法。
JP7174627A 1995-07-11 1995-07-11 干渉チェック装置 Expired - Fee Related JP2915826B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP7174627A JP2915826B2 (ja) 1995-07-11 1995-07-11 干渉チェック装置
US08/668,145 US5943056A (en) 1995-07-11 1996-06-21 Interference checking method
DE69636693T DE69636693T2 (de) 1995-07-11 1996-06-26 Verfahren zur Interferenz-Überwachung
EP96110300A EP0753837B1 (en) 1995-07-11 1996-06-26 Interference checking method
DE69626154T DE69626154T2 (de) 1995-07-11 1996-06-26 Verfahren zur Interferenz-Überwachung
EP02010238A EP1241628B1 (en) 1995-07-11 1996-06-26 Interference checking method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP7174627A JP2915826B2 (ja) 1995-07-11 1995-07-11 干渉チェック装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP00171899A Division JP3425760B2 (ja) 1999-01-07 1999-01-07 干渉チェック装置

Publications (2)

Publication Number Publication Date
JPH0927046A true JPH0927046A (ja) 1997-01-28
JP2915826B2 JP2915826B2 (ja) 1999-07-05

Family

ID=15981906

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7174627A Expired - Fee Related JP2915826B2 (ja) 1995-07-11 1995-07-11 干渉チェック装置

Country Status (4)

Country Link
US (1) US5943056A (ja)
EP (2) EP1241628B1 (ja)
JP (1) JP2915826B2 (ja)
DE (2) DE69626154T2 (ja)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6072495A (en) * 1997-04-21 2000-06-06 Doryokuro Kakunenryo Kaihatsu Jigyodan Object search method and object search system
US6157902A (en) * 1997-03-13 2000-12-05 Fujitsu Limited Disassembly route producing apparatus, assembly route producing apparatus, and supporting system for mechanical system design
US6167142A (en) * 1997-12-18 2000-12-26 Fujitsu Limited Object movement simulation apparatus
US6346941B1 (en) 1998-03-19 2002-02-12 Fujitsu Limited Interference check result displaying method and interference check result displaying apparatus as well as computer-readable recording medium having interference check result displaying program recorded thereon
JP2006318094A (ja) * 2005-05-11 2006-11-24 Canon Inc 情報処理方法、情報処理装置
JP2007511849A (ja) * 2003-11-19 2007-05-10 ユージーエス、コープ グラフィックモデルのウォール厚測定のためのシステム、方法及びコンピュータプログラム製品
JP2009116505A (ja) * 2007-11-05 2009-05-28 Jtekt Corp 工作機械の干渉検出装置
DE102012007254A1 (de) 2011-04-18 2012-10-18 Fanuc Corporation Verfahren und Vorrichtung zum Vorausberechnen einer Behinderung zwischen einem Zielteil eines Roboters und einem peripheren Objekt
US8363049B2 (en) 2008-02-25 2013-01-29 Samsung Electronics Co., Ltd. 3D image processing method and apparatus for enabling efficient retrieval of neighboring point
WO2015093073A1 (ja) * 2013-12-18 2015-06-25 株式会社ソニー・コンピュータエンタテインメント シミュレーション装置
WO2022264338A1 (ja) * 2021-06-16 2022-12-22 ファナック株式会社 制御装置、干渉チェック装置、及び制御システム

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6108010A (en) * 1997-07-18 2000-08-22 International Business Machines Corp. Method and system for a true-scale motion path editor
US6091427A (en) * 1997-07-18 2000-07-18 International Business Machines Corp. Method and system for a true-scale motion path editor using time segments, duration and synchronization
US6111590A (en) * 1997-07-18 2000-08-29 International Business Machines Corp. Method and system for a true scale motion path editor to create motion paths as independent entities
US6054997A (en) * 1997-08-29 2000-04-25 Mitsubishi Electric Information Technology Center America, Inc. System and method for determining distances between polyhedrons by clipping polyhedron edge features against voronoi regions
JP3654616B2 (ja) * 1997-12-19 2005-06-02 富士通株式会社 階層化ポリゴンデータ生成装置及び方法及び当該階層化ポリゴンデータを用いる三次元リアルタイム映像生成装置及び方法
US6853964B1 (en) 2000-06-30 2005-02-08 Alyn Rockwood System for encoding and manipulating models of objects
IL139995A (en) * 2000-11-29 2007-07-24 Rvc Llc System and method for spherical stereoscopic photographing
US8044953B2 (en) * 2002-06-28 2011-10-25 Autodesk, Inc. System for interactive 3D navigation for proximal object inspection
JP4156291B2 (ja) * 2002-07-26 2008-09-24 富士通株式会社 アニメーション作成/編集装置
US7872665B2 (en) 2005-05-13 2011-01-18 Micoy Corporation Image capture and processing
US7656403B2 (en) * 2005-05-13 2010-02-02 Micoy Corporation Image processing and display
US20070011121A1 (en) * 2005-06-03 2007-01-11 Jinbo Bi System and method for learning rankings via convex hull separation
US7986827B2 (en) * 2006-02-07 2011-07-26 Siemens Medical Solutions Usa, Inc. System and method for multiple instance learning for computer aided detection
US7565216B2 (en) * 2006-09-11 2009-07-21 Innovmetric Logiciels Inc. Clearance measurement of manufactured parts
JP5169175B2 (ja) * 2007-11-27 2013-03-27 富士通株式会社 干渉チェック方法、計算機支援設計装置及び干渉チェック用プログラム
WO2010048093A2 (en) * 2008-10-20 2010-04-29 Intel Corporation Graphics processing using culling on groups of vertices
US8296702B2 (en) * 2010-01-13 2012-10-23 International Business Machines Corporation Rectilinear covering method with bounded number of rectangles for designing a VLSI chip
JP4951111B2 (ja) * 2010-11-04 2012-06-13 株式会社東芝 設計支援装置、設計支援方法およびプログラム
US9092697B2 (en) * 2013-02-07 2015-07-28 Raytheon Company Image recognition system and method for identifying similarities in different images
US10521520B2 (en) * 2013-02-14 2019-12-31 Nocturnal Innovations LLC Highly scalable cluster engine for hosting simulations of objects interacting within a space
US9928644B2 (en) * 2014-07-01 2018-03-27 Nvidia Corporation Method and apparatus for determining mutual intersection of multiple convex shapes
CN104801044B (zh) * 2015-05-12 2017-12-12 深圳市腾讯计算机系统有限公司 生成轨迹线顶点序列的方法和装置
US9949749B2 (en) 2015-10-30 2018-04-24 Auris Surgical Robotics, Inc. Object capture with a basket
US9955986B2 (en) 2015-10-30 2018-05-01 Auris Surgical Robotics, Inc. Basket apparatus
US10639108B2 (en) 2015-10-30 2020-05-05 Auris Health, Inc. Process for percutaneous operations
DE102017215519A1 (de) 2017-09-05 2019-03-07 Robert Bosch Gmbh Verfahren und Vorrichtung zur Kollisionserkennung für ein Fahrzeug
CN109316781B (zh) * 2018-11-02 2021-03-19 四川大学 一种气泡层次可视化中气泡分离方法
US11392105B2 (en) * 2019-03-28 2022-07-19 Mitsubishi Electric Research Laboratories, Inc. System and method for generating optimal lattice tool paths
US11369386B2 (en) 2019-06-27 2022-06-28 Auris Health, Inc. Systems and methods for a medical clip applier
US11109928B2 (en) 2019-06-28 2021-09-07 Auris Health, Inc. Medical instruments including wrists with hybrid redirect surfaces
US11896330B2 (en) 2019-08-15 2024-02-13 Auris Health, Inc. Robotic medical system having multiple medical instruments
CN114502094A (zh) 2019-09-26 2022-05-13 奥瑞斯健康公司 用于碰撞检测和避免的系统和方法
WO2021064536A1 (en) 2019-09-30 2021-04-08 Auris Health, Inc. Medical instrument with capstan
US11737835B2 (en) 2019-10-29 2023-08-29 Auris Health, Inc. Braid-reinforced insulation sheath
WO2021137071A1 (en) 2019-12-31 2021-07-08 Auris Health, Inc. Advanced basket drive mode
CN114901188A (zh) 2019-12-31 2022-08-12 奥瑞斯健康公司 动态滑轮系统
CN115802975A (zh) 2020-06-29 2023-03-14 奥瑞斯健康公司 用于检测连杆与外部对象之间的接触的系统和方法
US11357586B2 (en) 2020-06-30 2022-06-14 Auris Health, Inc. Systems and methods for saturated robotic movement
CN114012726B (zh) * 2021-11-08 2023-07-04 南京航空航天大学 一种航天机械臂碰撞检测方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE456048B (sv) * 1982-02-24 1988-08-29 Philips Norden Ab Sett och anordning for att bestemma kollisionsrisken for tva inbordes rorliga kroppar
GB2196763A (en) * 1986-10-29 1988-05-05 Philips Electronic Associated Solid modeling
US4922430A (en) * 1987-10-30 1990-05-01 U.S. Philips Corporation Method and apparatus for controlling the movement of a guided object
US5056031A (en) * 1988-11-12 1991-10-08 Kabushiki Kaisha Toyota Chuo Kenyusho Apparatus for detecting the collision of moving objects
JP2826138B2 (ja) * 1988-11-12 1998-11-18 株式会社豊田中央研究所 移動体の干渉チェック装置
US5150452A (en) * 1989-07-28 1992-09-22 Megamation Incorporated Method and apparatus for anti-collision and collision protection for multiple robot system
US5444838A (en) * 1991-03-18 1995-08-22 Hewlett-Packard Company Computer system and method for interference checking of polyhedra using capping polygons
JPH0594500A (ja) * 1991-10-02 1993-04-16 Fujitsu Ltd Cadシステムにおける3次元形状検索方式
JP3053491B2 (ja) * 1992-03-10 2000-06-19 三菱電機株式会社 数値制御方法
JPH06259506A (ja) * 1993-03-10 1994-09-16 Toshiba Corp 3次元形状干渉チェック装置
US5347459A (en) * 1993-03-17 1994-09-13 National Research Council Of Canada Real time collision detection
JP3316092B2 (ja) * 1993-09-14 2002-08-19 富士通株式会社 最接近点探索装置
US5675720A (en) * 1993-09-14 1997-10-07 Fujitsu Limited Method of searching for points of closest approach, and preprocessing method therefor
JP3383862B2 (ja) * 1993-10-01 2003-03-10 株式会社豊田中央研究所 Nc加工用の工具経路生成方法およびその装置
JP3349787B2 (ja) * 1993-10-15 2002-11-25 株式会社ソニー・コンピュータエンタテインメント 描画データ作成装置及び描画データ作成方法

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6157902A (en) * 1997-03-13 2000-12-05 Fujitsu Limited Disassembly route producing apparatus, assembly route producing apparatus, and supporting system for mechanical system design
US6072495A (en) * 1997-04-21 2000-06-06 Doryokuro Kakunenryo Kaihatsu Jigyodan Object search method and object search system
US6167142A (en) * 1997-12-18 2000-12-26 Fujitsu Limited Object movement simulation apparatus
US6346941B1 (en) 1998-03-19 2002-02-12 Fujitsu Limited Interference check result displaying method and interference check result displaying apparatus as well as computer-readable recording medium having interference check result displaying program recorded thereon
JP4691040B2 (ja) * 2003-11-19 2011-06-01 シーメンス、プラダクツ、ライフサイクル、マニジマント、ソフトウエア、インク グラフィックモデルのウォール厚測定のためのシステム、方法及びコンピュータプログラム製品
JP2007511849A (ja) * 2003-11-19 2007-05-10 ユージーエス、コープ グラフィックモデルのウォール厚測定のためのシステム、方法及びコンピュータプログラム製品
JP2006318094A (ja) * 2005-05-11 2006-11-24 Canon Inc 情報処理方法、情報処理装置
JP4689344B2 (ja) * 2005-05-11 2011-05-25 キヤノン株式会社 情報処理方法、情報処理装置
JP2009116505A (ja) * 2007-11-05 2009-05-28 Jtekt Corp 工作機械の干渉検出装置
US8363049B2 (en) 2008-02-25 2013-01-29 Samsung Electronics Co., Ltd. 3D image processing method and apparatus for enabling efficient retrieval of neighboring point
DE102012007254A1 (de) 2011-04-18 2012-10-18 Fanuc Corporation Verfahren und Vorrichtung zum Vorausberechnen einer Behinderung zwischen einem Zielteil eines Roboters und einem peripheren Objekt
JP2012223845A (ja) * 2011-04-18 2012-11-15 Fanuc Ltd ロボットの着目部位と周辺物との干渉を予測する方法及び装置
DE102012007254B4 (de) * 2011-04-18 2015-10-15 Fanuc Corporation Verfahren und Vorrichtung zum Vorausberechnen einer Behinderung zwischen einem Zielteil eines Roboters und einem peripheren Objekt
WO2015093073A1 (ja) * 2013-12-18 2015-06-25 株式会社ソニー・コンピュータエンタテインメント シミュレーション装置
JP5967786B2 (ja) * 2013-12-18 2016-08-10 株式会社ソニー・インタラクティブエンタテインメント シミュレーション装置
US10824775B2 (en) 2013-12-18 2020-11-03 Sony Interactive Entertainment Inc. Simulation method and device for determining collision between objects
WO2022264338A1 (ja) * 2021-06-16 2022-12-22 ファナック株式会社 制御装置、干渉チェック装置、及び制御システム

Also Published As

Publication number Publication date
EP1241628B1 (en) 2006-11-08
DE69636693T2 (de) 2007-02-22
EP1241628A2 (en) 2002-09-18
EP1241628A3 (en) 2004-08-18
DE69626154T2 (de) 2003-06-12
EP0753837B1 (en) 2003-02-12
EP0753837A3 (en) 1998-01-07
DE69636693D1 (de) 2006-12-21
EP0753837A2 (en) 1997-01-15
JP2915826B2 (ja) 1999-07-05
US5943056A (en) 1999-08-24
DE69626154D1 (de) 2003-03-20

Similar Documents

Publication Publication Date Title
JP2915826B2 (ja) 干渉チェック装置
Tang et al. Interactive continuous collision detection between deformable models using connectivity-based culling
US7084869B2 (en) Methods and apparatus for detecting and correcting penetration between objects
US5056031A (en) Apparatus for detecting the collision of moving objects
US20140025203A1 (en) Collision detection system, collision detection data generator, and robot
JP3415438B2 (ja) 干渉チェック装置および方法
US20190303658A1 (en) Motion generating apparatus, model generating apparatus and motion generating method
CN108073682A (zh) 基于参数视图函数查询数据库
JPH03171303A (ja) データ構造発生方法及び装置
GB2227106A (en) Detecting collision
JP3425760B2 (ja) 干渉チェック装置
JPH05346957A (ja) 形状特徴量提示装置および方法
US5761391A (en) Arithmetic unit for calculating distance between objects
Zhong et al. A methodology for solid modelling in a virtual reality environment
Shah et al. GPU-accelerated collision analysis of vehicles in a point cloud environment
JPH08123835A (ja) 形状設計支援装置
JPH087800B2 (ja) ソリッドモデルの合成方法および装置
Aguilera et al. Out-of-core real-time haptic interaction on very large models
Zhong et al. Solid modelling in a virtual reality environment
CN111383342A (zh) 使用弱类型定义进行灵活建模
JPH0727582B2 (ja) Cadシステムにおける形状モデリングシステム
WO2003031005A2 (en) Methods and apparatus for detecting and correcting penetration between objects
JP2004094750A (ja) 3次元形状処理装置、干渉モデル検出方法、プログラム、及び記憶媒体
JPS61208511A (ja) 自由曲面の評価方法によるcad/camシステム
JPH1074215A (ja) 物体間距離演算装置および物体間距離演算プログラム記憶媒体

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19990406

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080416

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090416

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090416

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100416

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110416

Year of fee payment: 12

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110416

Year of fee payment: 12

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120416

Year of fee payment: 13

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130416

Year of fee payment: 14

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140416

Year of fee payment: 15

LAPS Cancellation because of no payment of annual fees