JP2006302098A - 3次元オブジェクト制御装置および3次元オブジェクト制御プログラム - Google Patents

3次元オブジェクト制御装置および3次元オブジェクト制御プログラム Download PDF

Info

Publication number
JP2006302098A
JP2006302098A JP2005125056A JP2005125056A JP2006302098A JP 2006302098 A JP2006302098 A JP 2006302098A JP 2005125056 A JP2005125056 A JP 2005125056A JP 2005125056 A JP2005125056 A JP 2005125056A JP 2006302098 A JP2006302098 A JP 2006302098A
Authority
JP
Japan
Prior art keywords
interference
vector
depth
objects
minimum
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
JP2005125056A
Other languages
English (en)
Other versions
JP4557785B2 (ja
Inventor
Heihachi Ueki
平八 植木
Takeki Matsumoto
壮樹 松本
Yutaka Kano
裕 加納
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.)
THREE D KK
Original Assignee
THREE D KK
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 THREE D KK filed Critical THREE D KK
Priority to JP2005125056A priority Critical patent/JP4557785B2/ja
Publication of JP2006302098A publication Critical patent/JP2006302098A/ja
Application granted granted Critical
Publication of JP4557785B2 publication Critical patent/JP4557785B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】 仮想空間に配置されたオブジェクト同士の干渉を簡易な演算により演算可能な3次元オブジェクト制御装置または3次元オブジェクト制御プログラムを提供する。
【解決手段】 3次元オブジェクト制御装置50において、オブジェクト制御部52は、仮想空間に配置されたオブジェクトのうち、注目オブジェクトと、該注目オブジェクトの2箇所以上において同時に干渉し得る周辺オブジェクトとの干渉を判定する。干渉すると判定された場合に、表示出力部58または応答出力部60は、干渉することを報知する。
【選択図】 図7

Description

本発明は、3次元オブジェクト制御装置等に関し、仮想空間に配置されたオブジェクトの干渉の演算手段を有する3次元オブジェクト制御装置および3次元オブジェクト制御プログラム等に関する。
コンピュータ上に設けられた3次元仮想空間において、3次元オブジェクトの移動などを行うコンピュータ・グラフィックス(以下、「CG」という。)技術が、コンピュータの演算処理能力の飛躍的な向上に伴い、近年急速に発展してきている。これに伴い、3次元仮想空間において3次元オブジェクト同士が接触または干渉する場合における正確かつ迅速な3次元オブジェクト制御のニーズもまた高まっている。
3次元仮想空間において、複数の多面体が干渉する場合に、その干渉の方向や大きさを干渉深度(Penetration Depth;以下必要に応じて「PD」と記載する。)、または干渉深度ベクトルとしてよく定義され、コンピュータにより演算された干渉深度に応じて3次元オブジェクトの制御を行っている。この干渉深度の応用分野としては、例えばロボット工学(Robotics)、ハプティクス(Haptics)、インタラクティブ・コンピュータ・ゲーム(interactive computer games)などがあり、この干渉深度に関する研究結果が、例えば非特許文献1及至非特許文献7などに記載されている。
Young J.Kim, Ming C.Lin, Dinesh Manocha、「DEEP: Dual-space Expansion for Estimating Penetration depth between convex polytopes」 Young J.Kim, Miguel A. Otaduy, Ming C.Lin, Dinesh Manocha、「ix-Degree-of-Freedom Haptic Rendering Using Incremental and Localized Computations」 Pankaj K.Agarwal, Leonidas J.Guibas, Sariel Har-Peled、「Penetration Depth of Two Convex Polytopes in 3D」、2000年10月11日 Stephen Cameron、「Enhancing GJK: Computing Minimum and Penetration Distances between Convex Polyhedra」、Int Conf Robotics and Automation Stephen A. Ehmann and Ming C.Lin、「Accurate and Fast Proximity Queries Between Polyhedra Using Convex Surface Decomposition」 Willian A.McNeely, Kevin D. Puterbaugh, James J. Troy、「Six Degree-of-Freedom Haptic Rendering Using Voxel Sampling」、The Boeing Company 足立吉隆,池本明夫,熊野宜弘、「力覚仮想環境における非凸形状物体の操作」、日本ロボット学会誌Vol.21
しかし、まず、上記文献のいずれにおいても、凸多面体などの凸オブジェクトと2以上の凸多面体などの凸オブジェクトとの干渉については記載されていない。また、例えば非特許文献1及至非特許文献4の大部分の記載は2つの凸多面体同士の干渉についての説明であり、非特許文献3および非特許文献4の記載においては、非凸多面体の干渉については記載されていない。非特許文献1および非特許文献2においては、非凸多面体への拡張も試みられているが、これらの文献に記載される技術は、あくまでも凸多面体の干渉における干渉深度を用いて非凸多面体の干渉深度を算出する技術である。このように非凸多面体を凸多面体に分解し、個々の凸多面体同士の間で計算された干渉深度から、全体の干渉深度を求めることができるという理論的な根拠はなく、確立された手法とは到底いうことはできない。
また、非特許文献6は、Point Shell and Normals Vs. Voxmap の干渉判定に基づく非凸多面体を対象としたHapticsアプリケーションの事例であり、非特許文献7は、点群と三角形群の間の距離の計算をもとにした接触判定に基づく非凸多面体を対象としたHapticsアプリケーションの事例である。しかし、これらのアプリケーションは、いずれも直接非凸多面体同士の干渉判定は取り扱っているわけではなく、3次元の立体的なオブジェクト間の干渉を仮想的に再現するには十分ではない。
以上より、例えば、凸オブジェクトと2以上の凸オブジェクトとの干渉や、凸または非凸オブジェクトと非凸オブジェクトとの干渉など、注目オブジェクトと、該注目オブジェクトの2箇所以上において同時に干渉し得る周辺オブジェクトとの干渉を判定する手法が確立されているということはできない。
本発明はこうした課題に鑑みてなされたものであり、その目的は、仮想空間に配置されたオブジェクト同士の干渉を簡易な演算により演算可能な3次元オブジェクト制御装置または3次元オブジェクト制御プログラムを提供することにある。
上記課題を解決するために、本発明のある態様の3次元オブジェクト制御装置は、仮想空間に配置されたオブジェクトのうち、注目オブジェクトと、該注目オブジェクトの2箇所以上において同時に干渉し得る周辺オブジェクトとの干渉を判定する干渉判定手段と、干渉判定手段により干渉すると判定された場合に、干渉することを報知する干渉報知手段を備える。この態様によれば、注目オブジェクトと、該注目オブジェクトの2箇所以上において同時に干渉し得る周辺オブジェクトとの干渉を確認することができ、よりリアルな3次元オブジェクトの制御が可能となる。
「注目オブジェクトと、該注目オブジェクトの2箇所以上において同時に干渉し得る周辺オブジェクトとの干渉」とは、1対の凸オブジェクト同士の干渉以外の干渉であってもよく、例えば、凸オブジェクトと2以上の凸オブジェクトとの干渉や、凸または非凸オブジェクトと非凸オブジェクトとの干渉などを含んでもよい。「凸オブジェクト」とは、外周面が凸部のみで構成されたオブジェクトでもよく、例えば凸多面体などでもよい。「非凸オブジェクト」とは、外周面に凹部を含むオブジェクトでもよく、例えば非凸多面体などでもよい。
「オブジェクト」には、例えば凸多面体および非凸多面体を含む多面体、サーフィス・オブジェクト、プリミティブ・オブジェクト、およびこれらが結合した結合オブジェクトなどが含まれてもよい。「サーフィス・オブジェクト」とは、例えば任意の三角形の集合から構成されるオブジェクトなど、閉じられていないものや、厚さの定義を有さないものなどが含まれてもよい。また、「プリミティブ・オブジェクト」とは、例えばプリミティブ、またはプリミティブを組み合わせて得られるオブジェクトなどが含まれてもよい。この「プリミティブを組み合わせて得られるオブジェクト」は、互いに干渉することが判定可能で、互いに最近傍点ベクトルが計算可能なプリミティブを組み合わせて得られるオブジェクトが含まれてもよい。
仮想空間に配置された非干渉状態におけるオブジェクト間の最近傍点を結ぶ最近傍ベクトルを算出する最近傍ベクトル演算手段と、注目オブジェクトが周辺オブジェクトと干渉しているものとした場合に、注目オブジェクトの位置である干渉位置に対して注目オブジェクトが周辺オブジェクトとの干渉を解消する極小近傍の位置である極小近傍非干渉位置から、干渉位置へ向かうベクトルである干渉深度ベクトルを、最近傍ベクトルから算出するベクトル演算手段とをさらに備えてもよい。干渉報知手段は、干渉深度ベクトルから干渉を報知してもよい。
この態様によれば、干渉深度ベクトルの演算のために、例えば従来から存在する最近傍ベクトル演算手段を適用することができるなど、簡易に干渉深度ベクトルを算出することができ、また注目オブジェクトと、該注目オブジェクトの2箇所以上において同時に干渉し得る周辺オブジェクトとの干渉を判定することも可能となる。
3次元オブジェクト制御装置のベクトル演算手段は、注目オブジェクトが周辺オブジェクトと干渉しているものとした場合に、注目オブジェクトの位置を干渉位置と定義し、この干渉位置とは別に、注目オブジェクトが周辺オブジェクトと干渉しない非干渉位置を定義することにより、周辺オブジェクトに対する注目オブジェクトの干渉深度ベクトルを演算してもよい。これにより、周辺オブジェクトに対する注目オブジェクトの非干渉位置における演算を行うことにより、周辺オブジェクトに対する注目オブジェクトの干渉深度ベクトルを演算することが可能となる。
干渉位置を干渉位置r、オブジェクトが周辺オブジェクトからεだけ離れた位置を非干渉位置rとした場合、ベクトル演算手段は、非干渉位置rのうち、干渉位置rから非干渉位置rへの距離が極小となるときまたは極小と近似されるときの極小近傍位置rを演算する極小近傍演算手段を有してもよい。ベクトル演算手段は、干渉位置rから極小近傍位置rへ向かうベクトル、および極小近傍位置rにある注目オブジェクトと周辺オブジェクトの間の最近傍点を結ぶ最近傍ベクトルから、干渉深度ベクトルを算出してもよい。この態様によれば、干渉深度ベクトルの演算のために、例えば従来から存在する最近傍ベクトル演算手段をより明確に適用することができ、簡易に干渉深度ベクトルを算出することができる。
オブジェクトを仮想空間において移動または回転する移動回転手段をさらに備えてもよい。移動回転手段は、干渉深度ベクトルを用いて、干渉する1つ以上のオブジェクトを該干渉が解消する位置へ移動または回転し、報知手段は、仮想空間に配置された複数のオブジェクトを画面に表示する表示出力手段を有し、表示出力手段は、移動または回転されたオブジェクトを画面に表示することにより干渉することを報知してもよい。この態様によれば、ユーザの視覚に対してオブジェクトが干渉することを報知することができる。干渉する1以上のオブジェクトの非干渉位置への移動または回転は、相互に干渉するオブジェクトの一方を、干渉深度ベクトルの方向および大きさ以上に移動または回転させることにより行っても良く、また、相互に干渉するオブジェクトの双方を相対的に干渉深度ベクトルの方向および大きさ以上に移動または回転させることにより行っても良い。
報知手段は、仮想空間に配置された複数のオブジェクトを画面に表示する表示出力手段を有し、表示出力手段は、干渉すると判定された場合に、干渉深度ベクトルを用いて、干渉することを画面に表示することにより干渉することを報知してもよい。この態様によれば、例えば干渉するオブジェクトの色などの表示態様を変更することにより干渉することを報知することも可能となる。
報知手段は、入力された情報に応じて作動するアクチュエータに情報を出力する応答出力手段を備えてもよい。応答出力手段は、干渉すると判定された場合に、干渉深度ベクトルを用いた情報をアクチュエータに出力してアクチュエータを作動させることにより、干渉することを報知してもよい。この態様によれば、例えばユーザの触覚に対してオブジェクトが干渉することを報知することができる。
報知手段は、干渉深度ベクトルに応じた方向に作動し、干渉深度ベクトルのスカラー量である干渉深度に応じた力で作動するアクチュエータに情報を出力する応答出力手段を備えてもよい。応答出力手段は、干渉すると判定された場合に、干渉深度ベクトルおよび干渉深度をアクチュエータに出力してアクチュエータを作動させることにより、干渉することを報知してもよい。この態様によれば、例えばユーザの触覚に対してよりリアルにオブジェクトが干渉することを報知することができる。
本発明の3次元オブジェクト制御装置または3次元オブジェクト制御プログラムによれば、仮想空間に配置されたオブジェクト同士の干渉を簡易な演算により演算可能な3次元オブジェクト制御装置または3次元オブジェクト制御プログラムを提供することができる。
図1は、一般的な干渉深度の定義を示す図であり、(a)はある一般的な干渉深度の定義を示す図であり、(b)は他の一般的な干渉深度の定義を示す図である。図1(a)において、干渉深度PDは、オブジェクトAとオブジェクトBが相互に干渉しているときにおける、オブジェクトAとオブジェクトBを干渉しない状態にするための最小の距離である。干渉深度PDをdとした場合、以下の式1により定義される。
Figure 2006302098
また、図1(b)において、干渉深度は、オブジェクトAとオブジェクトBのCSO(Configuration Space Obstacle)の原点から最も近い点までの距離として定義される。CSOは、オブジェクトAとreflection of B (-B)のMinkowski sumとして、以下の式2のように定義される。
Figure 2006302098
オブジェクトAがPA1、PA2、およびPA3の3点を頂点とする三角形を断面に持つ3次元オブジェクトであり、オブジェクトBがLB1、LB2、LB3、およびLB4の4辺を有する四角形を断面に持つ3次元オブジェクトであるとすると、CSOは、オブジェクトBの4辺であるLB1、LB2、LB3、およびLB4上を、オブジェクトAの頂点PA3が移動したときのオブジェクトAの軌跡となる。以下の説明において、理解を容易にするため、3次元オブジェクトの断面により説明を行う。
図2は、オブジェクトAとオブジェクトBとが干渉している場合のグローバル・ミニマム(Global Minimum)とローカル・ミニマム(Local Minmum)との関係を示す図であり、(a)はオブジェクトAとオブジェクトBとが干渉した状態におけるグローバル・ミニマムとローカル・ミニマムを例示する図であり、(b)はCSOにおけるグローバル・ミニマムとローカル・ミニマムを例示する図である。オブジェクトAが頂点PA1、PA2、PA3を持ち、辺LA1、LA2、LA3、LA4を持つ三角形であり、オブジェクトBが頂点PB1、PB2、PB3、PB4を持ち、辺LB1、LB2、LB3、LB4を持つ四角形であるものとする。なお、LA2とLB2が平行であり、オブジェクトBの断面は、LB4とLB2、LB1とLB3がそれぞれ平行な長方形であるとする。
図2(a)において、例えば、オブジェクトAがオブジェクトBとの干渉を解消するために移動した場合に、オブジェクトAがオブジェクトBとの干渉を解消するための移動距離が極小値をとるときの干渉深度ベクトルを表したものが、本図における第1ベクトルVから第5ベクトルVとなり、これらのベクトルの長さをローカル・ミニマムとする。この場合、まず第1ベクトルVは、辺LB4から辺LA2に向かう最短距離のベクトルとなる。また第2ベクトルVは、辺LB3から頂点PA2に向かう最短距離のベクトルとなる。また第3ベクトルVは、辺LB1から頂点PA3へ向かう最短距離のベクトルとなる。また第4ベクトルVは、頂点PB2から辺LA3へ向かう最短距離のベクトルとなる。また第5ベクトルVは、辺LB2から辺PA1へ向かう最短距離のベクトルとなる。
前記の第1ベクトルVから第5ベクトルVをCSOにおいて表した場合、各々のベクトルは、CSOの原点からCSOの各辺に向かう最短距離のベクトルとして表される。図2(a)において示される相互に干渉するオブジェクトAとオブジェクトBのCSOを表したものが図2(b)に示される図となる。この場合のCSOは、辺LC1、LC2、LC3、LC4、LC5、LC6を有する図形となり、前述の第1ベクトルVから第5ベクトルVは、CSO原点からこれら各辺へ向かう最短距離のベクトルとなる。すなわち、第1ベクトルVはCSO原点から辺LC3へ向かう最短距離のベクトルとなり、また第2ベクトルVはCSO原点から辺LC2へ向かう最短距離のベクトルとなり、また第3ベクトルVはCSO原点から辺LC4へ向かう最短距離のベクトルとなり、また第4ベクトルVはCSO原点から辺LC5へ向かう最短距離のベクトルとなり、また第5ベクトルVはCSO原点から辺LC6へ向かう最短距離のベクトルとなる。
3次元オブジェクトにおいて、オブジェクト同士の干渉を示す干渉深度は、一般にCSOの原点から最も近い点までの距離として定義される。したがって、図2(b)においては、第1ベクトルVの距離が干渉深度となる。この場合の第1ベクトルVの距離をグローバル・ミニマムとする。
図3は、干渉を始めた位置と最適な干渉深度の関係を例示する図である。前述のように、ローカル・ミニマムは第1ベクトルVから第5ベクトルVのように複数存在し、グローバル・ミニマムを求めるには、すべてのローカル・ミニマムを比較して、最小の値を求める必要がある。実用上の応用においては、オブジェクト同士が干渉を始めた時点の干渉深度を初期値として、初期値に最も近い最適な干渉深度を求めることが必要十分条件となる場合が多い。
図3(a)に示されるように、オブジェクトAの辺LA2とオブジェクトBの辺LB4とが干渉を始めて本図における干渉に至った場合は、干渉深度は、辺LB4から辺LA2へと向かう最短ベクトルである第1ベクトルVの長さとなる。また、図3(b)に示されるように、オブジェクトAの頂点PA2とオブジェクトBの辺LB3とが干渉を始めて本図における干渉に至った場合は、干渉深度は、辺LB3から頂点PA2へと向かう最短ベクトルである第2ベクトルVの長さとなる。また、図3(c)に示されるように、オブジェクトAの頂点PA3とオブジェクトBの辺LB1とが干渉を始めて本図における干渉に至った場合は、干渉深度は、辺LB1から頂点PA3へと向かう最短ベクトルである第3ベクトルVの長さとなる。また、図3(d)に示されるように、オブジェクトAの辺LA3とオブジェクトBの頂点PB2とが干渉を始めて本図における干渉に至った場合は、干渉深度は、頂点PB2から辺LA3へと向かう最短ベクトルである第4ベクトルVの長さとなる。また、図3(e)に示されるように、オブジェクトAの頂点PA1とオブジェクトBの辺LB2とが干渉を始めて本図における干渉に至った場合は、干渉深度は、辺LB2から頂点PA1へと向かう最短ベクトルである第5ベクトルVの長さとなる。
図4は、非凸多面体が多面体と干渉する場合の部分干渉深度を例示する図であり、(a)は非凸多面体Cと凸多面体Dが干渉する前の状態を例示する図であり、(b)は非凸多面体Cと凸多面体Dが干渉した後の状態を例示する図である。非凸多面体Cは、LC1からLC8の8辺により形成され、辺LC1、LC2、LC3、LC4、LC8から形成される長方形から辺LC5、LC6、LC7から形成される長方形が切り取られた凹部を有する形状を断面に有する3次元オブジェクトとする。凸多面体Dは、LD1からLD4の4辺により形成された長方形の断面を有する3次元オブジェクトとする。非凸多面体Cの対向する辺である辺LC4およびLC8と凸多面体Dの対向する辺である辺LD2およびLD4は平行であるものとする。また、非凸多面体Cの凹部の幅である辺LC5から辺LC7までの長さは、凸多面体Dの幅である辺LD1から辺LD3への長さより短いものとする。また、凸多面体Dは非凸多面体Cの凹部に向かって図4(a)に示される矢印の方向に移動しているものとする。
前述のように凸多面体Dが非凸多面体Cに向かって移動すると、まず凸多面体Dの辺LD2が非凸多面体Cの辺LC4および辺LC8に干渉し始める。やがて凸多面体Dの辺LD2に対向する辺である辺LD4も非凸多面体Cの辺LC4および辺LC8を通過するまで干渉が進行し、図4(b)に示すような干渉状態となる。このように、非凸多面体と多面体とが干渉する場合、複数の箇所で干渉が生じる可能性がある。このような場合に、非凸多面体を凸多面体の集合として取り扱い、凸多面体の干渉深度から非凸多面体の干渉深度を計算しようと試みる場合、複数の凸多面体同士についての部分干渉深度PDの情報から、全体干渉深度PDを計算する必要がある。例えば、本図における非凸多面体Cと凸多面体Dの例においては、非凸多面体Cと凸多面体Dが干渉する第1部分干渉深度PDp1および第2部分干渉深度PDp2から、全体干渉深度PDを計算することとなる。しかし、第1部分干渉深度PDp1および第2部分干渉深度PDp2のような部分干渉深度PDから全体干渉深度PDを求めることができるという理論的根拠はなく、その手法も確立されていない。なお、本図の説明において述べた非凸多面体の全体干渉深度PDとは、前述のグローバル・ミニマムの干渉深度とは異なるものである。
図5は、非凸多面体が多面体と干渉する場合の全体干渉深度をCSOにより例示する図である。本図に示されるように、非凸多面体Cと凸多面体Dが干渉する場合、非凸多面体Cは凹部を有しているが、CSOは長方形となる。したがって、ローカル・ミニマムはCSO原点からCSOの各辺への最短距離で表すことができる。ここで、凸多面体Dの辺LD2が非凸多面体の辺LC4およびLC8に干渉し始めて本図のような干渉状態に至っていることから、最適な干渉深度は、CSO原点からCSOの上辺への最短距離で表すことができる。
このような現象に鑑み、本発明者らは、3次元オブジェクト制御において、非凸多面体と多面体との干渉、および多面体の複数の多面体との干渉を把握するため鋭意研究を重ね、その結果、非干渉状態におけるオブジェクト間の最短距離や最近傍ベクトルと干渉深度の関係に着目するに至った。以下、図面を参照して本発明の実施の形態(以下、「実施形態」という。)について詳細に説明する。
(第1の実施形態)
図6は、第1の実施形態にかかる3次元オブジェクト制御装置50を含むコンピュータシステム100の外観図である。コンピュータシステム100は、コンピュータ本体10、ディスプレイ12、マウス14、キーボード16、3次元入出力装置20などにより構成される。コンピュータ本体10は、内部に図示しないハードディスク、メモリ、CPU(Central Processing Unit)などを有している。コンピュータ本体10には、インターフェースを介してディスプレイ12、マウス14、キーボード16、3次元入出力装置20などが接続されている。
コンピュータ本体10のハードディスクには、複数のオブジェクトの形状データや位置データ等が格納されている。コンピュータ本体10は、このオブジェクトの各データをハードディスクから読み出し、メモリに格納する。コンピュータ本体10には、これらのオブジェクトの位置や形状を制御する後述する3次元オブジェクト制御装置50を有している。この3次元オブジェクト制御装置50は、メモリおよびCPUなどにより構成される。ハードディスクから読み出されたオブジェクトは、この3次元オブジェクト制御装置50により仮想空間に配置された状態としてディスプレイ12に表示出力される。操作者がマウス14、キーボード16を操作することにより、3次元オブジェクト制御装置50にオブジェクトの座標などが入力され、メモリに格納されたオブジェクトのうち操作対象のオブジェクトを移動させたり回転させたりすることが可能となっている。また、操作者は、後述する3次元入出力装置20の操作部30を3次元空間において動かすことにより、操作対象のオブジェクトを仮想空間内で操作部30の動きと同様に動かすことができる。
3次元入出力装置20は、テーブル36、第1ロッド34、第2ロッド32、操作部30などにより構成される。第1ロッド34は、テーブル36に垂直方向の軸を中心として回転可能に支持されている。また、第1ロッド34は、第1回転摺動部26により、水平方向の軸を中心として回転可能とされている。第1ロッド34と第2ロッド32は、第2回転摺動部24により、水平方向の軸を中心として回転可能とされている。第2ロッド32と操作部30も第3回転摺動部22により、水平方向の軸を中心として回転可能とされている。これにより、操作者が操作部30を操作することにより、操作部30を様々な姿勢にすることができる。
テーブル36、第1回転摺動部26、第2回転摺動部24、および第3回転摺動部には、ぞれぞれ図示しないエンコーダなどの回転センサが設けられており、3次元入出力装置20を操作する者が操作部30を操作することにより、操作部30の姿勢に関する情報が各回転センサの回転情報としてコンピュータ本体10内の3次元オブジェクト制御装置50に送信される。3次元オブジェクト制御装置50は、操作部30の姿勢に関する情報の入力を受けて、操作部30の姿勢に応じて仮想空間におけるオブジェクトの移動および回転を行う。以上のように、3次元入出力装置20は、操作対象のオブジェクトを仮想空間内で操作部30の動きと同様に動かすことができ、3軸座標入力センサとして機能する。
また、テーブル36、第1回転摺動部26、第2回転摺動部24、および第3回転摺動部には、ぞれぞれ図示しないモータなどのアクチュエータが設けられている。例えば仮想空間における操作対象のオブジェクトが他のオブジェクトに干渉すると3次元オブジェクト制御装置50により判断された場合に、操作対象のオブジェクトの干渉に関する情報が3次元入出力装置20に出力される。3次元入出力装置20は、操作対象のオブジェクトの干渉に関する情報の入力を受け、操作対象のオブジェクトの干渉の方向や大きさに応じて、各アクチュエータを作動させる。例えば、操作者が操作部30を操作することにより、操作対象のオブジェクトが仮想空間における他のオブジェクトに干渉した場合、干渉を解消するための最短距離の方向に操作部30に力を与えるように、3次元オブジェクト制御装置50は各アクチュエータを作動する。なお、この際3次元オブジェクト制御装置50は、前述の干渉深度に比例した力を操作部30に与えるよう、各アクチュエータを作動する。なお、操作部30に力を与える方向は、干渉したときの操作方向と逆の方向でもよい。この場合においても、前述の干渉深度に比例した力を操作部30に与えるよう、各アクチュエータを作動させてもよい。以上のように、3次元入出力装置20は、反力フィードバック装置として機能する。
図7は、第1の実施形態にかかる3次元オブジェクト制御装置50の機能ブロック図である。3次元オブジェクト制御装置50は、オブジェクト制御部52、最短距離演算部54、干渉深度ベクトル演算部56、表示出力部58、応答出力部60などにより構成される。
オブジェクト制御部52は、オブジェクトの移動や回転などを制御する移動回転制御部、およびオブジェクトの形状を制御する形状制御部を有している。移動回転制御部は、メモリに格納された操作対象のオブジェクトの位置データとマウス14、キーボード16、3次元入出力装置20からの入力に基づいて、CPUにより操作対象のオブジェクトの、移動または回転された位置を演算する。これにより操作者は、仮想空間内のオブジェクトを移動または回転することが可能となる。
最短距離演算部54は、メモリに格納されたオブジェクトの位置データおよび形状データから、CPUにより、複数のオブジェクトの最近傍点の距離である最短距離、および複数のオブジェクトの最近傍点を結ぶベクトルである最近傍ベクトルを演算する。このオブジェクト間の最短距離および最近傍ベクトルの演算は、既存の計算ライブラリを用いることができる。ここで、既存の計算ライブラリとは、例えばSWIFT++やPQPなどをいう。これらの既存の計算ライブラリを用いることにより、オブジェクト間の最短距離および最近傍ベクトルを簡易に演算することが可能となる。
干渉深度ベクトル演算部56は、仮想空間に配置された複数のオブジェクトの干渉深度ベクトルを演算する。干渉深度ベクトルとは、干渉するオブジェクトのうちの一つのオブジェクトの位置である干渉位置に対して一つのオブジェクトが干渉を解消する最も近い位置である最近傍非干渉位置から、干渉位置へ向かうベクトルをいう。干渉深度ベクトル演算部56は、最短距離演算部54により演算されたオブジェクト間の最短距離および最近傍ベクトルの演算結果を用いて干渉深度ベクトルを演算する。これにより、既存の計算ライブラリを用いて干渉深度ベクトルを算出することができるため、簡易に干渉深度ベクトルを算出することができる。
算出された干渉深度ベクトルは、オブジェクト制御部52に送信される。オブジェクト制御部52は、仮想空間に配置された複数のオブジェクトが干渉するかを判定する干渉判定部を有している。干渉判定部は、入力を受けた干渉深度ベクトルに基づいて、オブジェクト同士が干渉するかを判定する。その結果、オブジェクト同士が干渉すると判定された場合は、干渉深度ベクトルを用いて、干渉する1以上の多面体を非干渉位置へ移動または回転させる。干渉する1以上の多面体の非干渉位置への移動または回転は、相互に干渉する多面体の一方を、干渉深度ベクトルと平行な方向に干渉深度をゼロにするまでまたはそれ以上に移動または回転させることにより行っても良い。また、相互に干渉する多面体の双方を相対的に干渉深度ベクトルと平行な方向に干渉深度をゼロにするまでまたはそれ以上に移動または回転させることにより行っても良い。
オブジェクト制御部52により演算されたオブジェクトのに関する情報は、表示出力部58に入力される。表示出力部58は、入力を受けたオブジェクトに関する情報から、ディスプレイ12に表示出力を行う。表示出力の入力を受けたディスプレイ12は、画面12aにオブジェクトの画像を表示する。表示出力部は、一定周波数で表示の更新を行い、例えば3次元入出力装置20により、操作対象のオブジェクトの移動や回転などの操作が行われた場合に、オブジェクトが移動する状況や回転する状況が画面12aに表示される。したがって、オブジェクト同士が干渉すると判定され、干渉する1以上の多面体を非干渉位置へ移動または回転させられた場合もその状況が画面12aに表示される。このため、3次元オブジェクト制御装置50は、操作者に操作対象のオブジェクトが干渉する旨を報知することができ、操作者は視覚によりその干渉を認識することが可能となる。
また、オブジェクト同士が干渉すると判定された場合は、オブジェクト制御部52は、応答出力部60に、干渉深度ベクトルの方向および大きさのデータなど、干渉深度ベクトルに関する情報を出力する。応答出力部60は、干渉深度ベクトルの方向および大きさのデータに対応する情報を3次元入出力装置20に出力する。干渉深度ベクトルに関する情報の入力を受けた3次元入出力装置20は、入力された情報に応じてアクチュエータを作動させる。例えば、応答出力部60は、3次元入出力装置20の操作部30に干渉深度ベクトルの方向と逆方向に力がかかるように各アクチュエータに情報を出力し、各アクチュエータを動作させることができる。また、応答出力部60は、干渉深度ベクトルの大きさに比例した力を発生するように、各アクチュエータに情報を出力し、各アクチュエータを動作させる。これにより、操作部30を操作することによりオブジェクトを操作する操作者に、操作対象のオブジェクトが他のオブジェクトに干渉した旨を報知することができ、操作者は触覚によりその干渉を認識することが可能となる。
図8は、第1の実施形態にかかる3次元オブジェクト制御装置50において、多面体同士の干渉深度の計算を行うための各変数などを表す図であり、(a)は後述する|r−r|が極小値をとらない場合を例示する図であり、(b)は|r−r|が極小値をとる場合を例示する図である。本図において、オブジェクトAおよびオブジェクトBは凸多面体であり、オブジェクトAを注目オブジェクト、オブジェクトBをオブジェクトAとの干渉の判定対象とな周辺オブジェクトとする。なお、オブジェクトBを注目オブジェクトとし、オブジェクトAを周辺オブジェクトとしてもよいことは勿論である。オブジェクトBに対するオブジェクトAの干渉深度ベクトルをPD(A,B)とする。また、オブジェクトAの干渉位置をrとし、オブジェクトAがオブジェクトBからεだけ離れた位置をrとする。この場合、オブジェクトAからオブジェクトBの最近傍点へ向かうベクトルである最近傍ベクトルの単位ベクトルをnとする。図8(a)に示されるように、|r−r|が極小値をとらない場合は、r−rがnと平行にならない。しかし、オブジェクトAの非干渉位置rが|r−r|が極小値をとる極小近傍位置にあるとき、図8(b)に示されるように、r−rがnと平行になり、以下の式3が成立する。
Figure 2006302098
このとき、単位ベクトルn、r−r、干渉深度ベクトルPD(A,B)はすべて平行になり、干渉深度ベクトルPD(A,B)は以下の式4で与えられる。
Figure 2006302098
このとき、干渉深度は、干渉深度ベクトルの絶対値|PD(A,B)|により与えられる。これにより、|r−r|が極小値をとるときの極小近傍位置であるrを求めることにより、干渉深度を求めることが可能となる。この場合、単位ベクトルnの演算は、例えば既存の計算ライブラリを用いて計算することができる。
図9は、第1の実施形態にかかる干渉深度ベクトルを演算する処理を示すフローチャートである。本フローチャートにおける処理は、所定時間ごとに開始し、繰り返される。
3次元オブジェクト制御装置50は、オブジェクトAの入力位置rを取得しメモリに格納する(S11)。3次元オブジェクト制御装置50は、メモリに格納されたオブジェクトAおよびオブジェクトBの位置情報から、オブジェクトAがオブジェクトBと干渉するか判定する(S12)。オブジェクトAとオブジェクトBが干渉しないと判定された場合は(S12のN)、3次元オブジェクト制御装置50は、オブジェクトAとオブジェクトBの最近傍ベクトルD(r)N(r)を計算し保存する(S18)。オブジェクトAとオブジェクトBが干渉すると判定された場合は(S12のY)、3次元オブジェクト制御装置50は、r=rとする(S13)。r=rとされると、3次元オブジェクト制御装置50は、メモリに保存されていたオブジェクトAとオブジェクトBの最近傍ベクトルD(r)N(r)から、オブジェクトAがオブジェクトBからε離れた位置rを定義する(S14)。rが定義されると、3次元オブジェクト制御装置50は、|r−r|を演算し、|r−r|が極小値を取るときの極小近傍非干渉位置であるrと、そのときの最近傍ベクトルの単位ベクトルnを算出する(S15)。最近傍ベクトルの単位ベクトルnが算出されると、3次元オブジェクト制御装置50は、式4から、干渉深度ベクトルP(A,B)を算出する(S16)。
3次元オブジェクト制御装置50のオブジェクト制御部52は、オブジェクトAの入力位置とその時の干渉深度ベクトルP(A,B)の情報から、3次元オブジェクト制御装置50のオブジェクト制御部52は、干渉を解消するようにオブジェクトAの位置を制御する。具体的には、オブジェクトAをオブジェクトBの非干渉位置まで移動または回転することにより、干渉を解消するようにオブジェクトAの位置を制御する。オブジェクト制御部52により位置が制御されたオブジェクトAは、表示出力部58を介してディスプレイ12に表示出力され、ディスプレイ12の画面12aにオブジェクトAのが表示される(S17)。これにより、ユーザはディスプレイ12の画面12aを通じて、視覚により3次元仮想空間におけるオブジェクト同士の干渉を確認することができる。なお、オブジェクト制御部52は、オブジェクトAおよびオブジェクトBの双方を非干渉位置まで移動または回転することにより干渉を解消するようにオブジェクトAおよびオブジェクトBの位置を制御してもよいことは勿論である。
また、3次元オブジェクト制御装置50のオブジェクト制御部52は、オブジェクトAの入力位置とその時の干渉深度ベクトルP(A,B)の情報から、応答出力部60に干渉深度ベクトルに関する情報を出力する(S17)。応答出力部60は、干渉深度ベクトルの方向および大きさのデータに対応する情報を3次元入出力装置20に出力し、干渉深度ベクトルに関する情報の入力を受けた3次元入出力装置20は、入力された情報に応じてアクチュエータを作動させる。これにより、ユーザは3次元入出力装置20により、触覚により3次元仮想空間におけるオブジェクト同士の干渉を確認することができる。
図10は、第1の実施形態にかかる3次元オブジェクト制御装置50において、多面体同士の干渉深度の計算を行うための各変数などを表す図である。本実施形態においては、3次元オブジェクト制御装置50は、凸多面体同士が干渉した場合の干渉深度の計算を行う。
本図において、オブジェクトAがオブジェクトBからεだけ離れた位置をrとして、初期設定におけるrをrとする。凸多面体同士の場合は、εは任意の値をとることができる。この場合、式3を満たすようなrを、以下の式5に示される計算アルゴリズムにより算出する。
Figure 2006302098
なお、p・nはベクトルpとベクトルnの内積を表す。Δhがゼロになるまで上記の計算が反復して行われる。Δhnがゼロになると、解が収束され、上記の計算は終了する。ここで、N(r)は、仮想空間に配置された非干渉状態におけるオブジェクト間の最近傍点を結ぶ最近傍ベクトルを算出する最近傍ベクトルを示し、本図における例においては、オブジェクトAがrにあるときのオブジェクトAからオブジェクトBの最近傍点に向かう最近傍ベクトルの単位ベクトルを示す。また、D(r)は、仮想空間に配置された非干渉状態におけるオブジェクト間の最短距離を示し、本図における例においては、オブジェクトAがrにあるときのオブジェクトAからオブジェクトBの最近傍点までの最短距離を示す。仮想空間に配置されたオブジェクトが相互に干渉する場合、D(r)はゼロ以下の値を返す。N(r)とD(r)は、例えば既存の最短距離の計算ライブラリを用いて計算することができる。Δhがゼロになった時点のnおよびpにより、干渉深度ベクトルは、以下の式6で与えられる。
Figure 2006302098
図11は、第1の実施形態にかかるオブジェクト間の干渉深度ベクトルの計算アルゴリズムにおける計算の経過を示す図であり、(a)は干渉深度ベクトルの計算のある過程を示す図であり、(b)は干渉深度ベクトルの計算の次の過程を示す図である。図11(a)および(b)において、理解を容易にするため、オブジェクトAの位置は、頂点PA6を基準に図示する。図11(a)および(b)においては、オブジェクトAを注目オブジェクト、オブジェクトBを前述の周辺オブジェクトとする。なお、オブジェクトBを注目オブジェクトとし、オブジェクトAを周辺オブジェクトとしてもよいことは勿論である。オブジェクトAは、オブジェクトBに対して、オブジェクトAの辺LA6が辺LA6と平行なオブジェクトBの辺LB6に干渉をし始め、干渉位置であるrに位置しているものとする。この場合、干渉深度ベクトルPD(A,B)は、図11(a)および(b)に示されるように辺LB6から辺Lへ向かうベクトルとなる。
これに対し、図11(a)に示されるように、オブジェクトAの非干渉位置を、オブジェクトBの辺LB6ではなく辺LB5に対してεだけ離れた位置であるrとした場合、オブジェクトAとオブジェクトBとの距離は、オブジェクトAの頂点PA7と辺LB5との距離となる。ここで、3次元オブジェクト制御装置50は、式5のΔhがゼロとなるオブジェクトAの位置r’を算出する。次に、3次元オブジェクト制御装置50は、既存の最短距離の計算ライブラリを用いて、N(r’)D(r’)を算出し、オブジェクトAをオブジェクトBからεの離れた位置であるrn+1までN(r’)と平行な方向に移動する。次に3次元オブジェクト制御装置50は、図11(b)に示されるように、式5のΔhn+1がゼロとなるオブジェクトAの位置r’n+1を算出する。このr’n+1ではオブジェクトAとオブジェクトBの距離はεのままなので、r’n+1はrn+2となる。これにより、|r−r|が極小値をとるオブジェクトAの位置であるrを算出することができる。したがって、算出されたrn+2から式6により干渉深度ベクトルPD(A,B)を算出することができ、また干渉深度ベクトルPD(A,B)の絶対値を求めることにより干渉深度を求めることができる。
(第2の実施形態)
図12は、第2の実施形態にかかるオブジェクト間の干渉深度ベクトルの計算アルゴリズムにおける計算の経過を示す図であり、(a)は干渉深度ベクトルの計算のある過程を示す図であり、(b)は干渉深度ベクトルの計算の次の過程を示す図である。前述と同様に、オブジェクトAを注目オブジェクト、オブジェクトBを前述の周辺オブジェクトとする。なお、オブジェクトBを注目オブジェクトとし、オブジェクトAを周辺オブジェクトとしてもよいことは勿論である。オブジェクトAは、頂点PA11、PA12、PA13を有し、PA12が角度が90°より大きい非凸多面体である。オブジェクトBも頂点PB11、PB12、PB13を有し、PB12が角度が90°より大きい非凸多面体である。図12(a)および(b)において、理解を容易にするため、オブジェクトAの位置は、頂点PA11を基準に図示する。
このように、非凸多面体同士の干渉、またはいずれか一方が非凸多面体である多面体同士の干渉における干渉深度ベクトルを算出するための非干渉位置rを以下の式7を用いて算出することができる。
Figure 2006302098
式7において、前述と同様に、N(r)は、仮想空間に配置された非干渉状態におけるオブジェクト間の最近傍点を結ぶ最近傍ベクトルを算出する最近傍ベクトルを示す。また、D(r)は、仮想空間に配置された非干渉状態におけるオブジェクト間の最短距離を示す。仮想空間に配置されたオブジェクトが相互に干渉する場合、D(r)はゼロ以下の値を返す。また、εは許容誤差であり、αは定数であり、ゼロより大きく0.5より小さい値が設定される。rは、干渉するオブジェクトの、干渉されるオブジェクトに対する非干渉位置の初期位置を表す。min(αε,|Δh|)とは、αεと|Δh|のうち小さい方の値を表す。計算アルゴリズムの対象となるオブジェクトが凸多面体同士でない場合は、Δhの移動により非干渉オブジェクトが干渉する場合がある。そのため、|Δh|の大きさをεより小さい値であるαε以下にすることにより、非干渉オブジェクトが干渉しないようにする。min(αε,|Δh|)<εは常に成立する。
図12(a)および(b)に示されるように、オブジェクトAがオブジェクトBに干渉し、干渉位置rにあるものとする。図12(a)において、3次元オブジェクト制御装置50は、オブジェクトAがオブジェクトBの表面からεnだけ離れた位置rの非干渉位置を定義する。本図の例においては、rは、オブジェクトAの頂点PA11がオブジェクトBの辺LB11からεの距離を持つ位置として定義される。3次元オブジェクト制御装置50は、rからαεΔh/|Δh|とΔhのうち小さい方だけ移動した位置r’を算出する。本図の例においては、αεΔh/|Δh|の方が小さいのでr’はrからαεΔh/|Δh|だけ移動した位置となる。
ここで、1つの多面体と2以上の多面体との干渉、または1つの多面体と1つ以上の非凸多面体との干渉を考える場合、rからr’に移動することにより他の多面体または同一の多面体の他の部分に近づくまたは干渉する可能性がある。本図の例においては、rからr’に移動することにより、オブジェクトAの頂点PA13がオブジェクトBの辺LB12にεより小さい距離まで近づく。このため、3次元オブジェクト制御装置50は、オブジェクトAをN(r’)D(r’)だけ移動した位置であるrn+1まで移動する。これにより、オブジェクトAの位置rn+1は、オブジェクトBのある表面からεnn+1だけ離れた位置となる。
次に、図12(b)に示されるように、3次元オブジェクト制御装置50は、rn+1からαεΔh/|Δh|とΔhのうち小さい方だけ移動した位置r’n+1を算出する。本図の例においては、やはりαεΔh/|Δh|の方が小さいのでr’n+1はrn+1からαεΔh/|Δh|だけ移動した位置となる。
凸オブジェクト同士の場合は、Δhの移動により、D(r)が減少することはない。しかし、少なくとも一方が凹オブジェクトであるオブジェクト同士、および一つのオブジェクトの周辺に複数のオブジェクトが存在する場合のオブジェクト同士なども含む、一般的なオブジェクト同士の場合は、Δhの移動により、D(r)が減少したり、干渉が生じて最短距離が計算できない場合がある。したがって、Δhをεよりも小さい値であるmin(αε,|Δh|)Δh /|Δh|に修正する。また、(p・n)<0となる場合があるが、この場合は、Δh =−pとする。D(r’)がεよりも小さくなった場合は、r’に補正(ε−D(r’))g/g・nn+1を行う。D(r’’)がεよりも小さくなった場合は、r’’に補正(ε−D(r’’))f/f・N(r’’)を行う。ここで、gはnn+1からnに平行な成分を引いたベクトルであり、g・n=0が成り立つ。fは、nとnn+1に垂直なベクトルであり、f・n=0、f・nn+1=0が成り立つ。
本実施形態においては、オブジェクトAがrn+1からr’n+1に移動することにより、オブジェクトAの頂点PA11がオブジェクトBの辺LB11にεより小さい距離まで近づく。これにより、D(r)がεよりも小さくなるので、(ε−D(r’))/(g*nn+1)による補正が行われる。以上より、オブジェクトAはr’n+1からオブジェクトBのある表面からεnn+1だけ離れた位置であるrn+2へ移動する。アルゴリズム中で、干渉が発生する場合は、オブジェクトAを(ε−D(r))N(r)移動させることによって、最近傍点が変化したときに発生する可能性がある。この場合は、最近傍点を再計算する。
一般的な多面体同士の場合、Δhはゼロになるとは限らないが、解がローカル・ミニマムの近傍に達したときは、D(r’’)がεより小さくなった場合や、|pn+1|が|p|よりも大きくなる場合がある。このとき解が収束したとみなし、干渉深度ベクトルの近似値は、以下の式8により与えられる。D(r’)≦0、D(r’’)≦0、D(r’’’)≦0、となった場合も、ローカル・ミニマムの近傍に達したとみなし、rを収束解とする。なお、あるεで計算した収束解を初期値として、より小さい値をεに設定することによって、より精度の高い結果を得ることも可能である。
Figure 2006302098
図13は、第2の実施形態における多面体オブジェクト間の実際の干渉深度の計算の例を示す図であり、(a)は計算に用いられたオブジェクトを示す図であり、(b)は算出された干渉深度と計算時間を示す図である。本計算は、図13(a)に示される凸多面体同士の干渉における干渉深度の計算を例としている。図13(b)において、Pは従来の計算アルゴリズムであるSWIFT++とDEEPの計算ライブラリを用いた場合おける干渉深度であり、Pは本実施形態における計算アルゴリズムにおいて、α=0.9、ε=0.001、反復数1でSWIFT++の計算ライブラリを用いた場合の干渉深度であり、Pは本実施形態における計算アルゴリズムにおいて、α=0.9、ε=0.001、反復数1でPQPの計算ライブラリを用いた場合の干渉深度である。本図に示されるように、算出された干渉深度はいずれもほぼ同じ値となっている。
はPの計算時間、TはPの計算時間、TはPの計算時間である。本実施形態における計算アルゴリズムによる計算時間Tは、従来の計算アルゴリズムによる計算時間Tよりも大きい。しかし、本実施形態における計算アルゴリズムによる別の計算時間Tでは、従来の計算アルゴリズムによる計算時間Tよりも小さくなっている。これにより、適切な計算ライブラリを選択することにより、干渉深度の計算時間を短縮化することが可能となる。
図14は、第2の実施形態における多面体オブジェクト間の実際の干渉深度の計算の例を示す図であり、(a)は計算に用いられたオブジェクトを示す図であり、(b)は算出された干渉深度と計算時間を示す図である。本計算は、図14(a)に示される非凸多面体と多面体との干渉における干渉深度の計算を例としている。図14(b)において、Pは本実施形態における計算アルゴリズムにおいて、ε=0.01、反復数1でSWIFT++の計算ライブラリを用いた場合の干渉深度であり、Pは本実施形態における計算アルゴリズムにおいて、ε=0.01、反復数1でPQPの計算ライブラリを用いた場合の干渉深度である。本図に示されるように、本実施形態における3次元オブジェクト制御装置によれば、非凸多面体と多面体との干渉深度の計算も行うことが可能となる。算出された干渉深度はいずれの場合もほぼ同じ値となっている。
はPの計算時間、TはPの計算時間である。Tは、Tよりも大きくなっており、適切な計算ライブラリを選択することにより、より短時間で非凸多面体と多面体との干渉深度の計算を行うことができる。
以上、本発明を実施形態をもとに説明した。これらの実施形態は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。以下、そうした例をあげる。
オブジェクト同士が干渉することの報知は、干渉する一方または双方のオブジェクトの形状を変形させて干渉を解消し、変形させられたオブジェクトをディスプレイ12の画面12aに表示することにより行ってもよい。この場合、オブジェクトの形状を変形させることは、オブジェクト制御部52の形状制御部により行われる。
また、オブジェクト同士が干渉することの報知は、干渉深度ベクトルを画面12aに表示する、干渉が生じたオブジェクトの色を変更するなど表示態様を変更して画面12aに表示する、などにより行っても良い。
一般的な干渉深度の定義を示す図であり、(a)はある一般的な干渉深度の定義を示す図であり、(b)は他の一般的な干渉深度の定義を示す図である。 オブジェクトAとオブジェクトBとが干渉している場合のグローバル・ミニマムとローカル・ミニマムとの関係を示す図であり、(a)はオブジェクトAとオブジェクトBとが干渉した状態におけるグローバル・ミニマムとローカル・ミニマムを例示する図であり、(b)はCSOにおけるグローバル・ミニマムとローカル・ミニマムを例示する図である。 干渉を始めた位置と最適な干渉深度の関係を例示する図である。 非凸多面体が多面体と干渉する場合の部分干渉深度を例示する図であり、(a)は非凸多面体Cと凸多面体Dが干渉する前の状態を例示する図であり、(b)は非凸多面体Cと凸多面体Dが干渉した後の状態を例示する図である。 非凸多面体が多面体と干渉する場合の全体干渉深度をCSOにより例示する図である。 第1の実施形態にかかる次元オブジェクト制御装置を含むコンピュータシステムの外観図である。 第1の実施形態にかかる次元オブジェクト制御装置の機能ブロック図である。 第1の実施形態にかかる次元オブジェクト制御装置において、多面体同士の干渉深度の計算を行うための各変数などを表す図であり、(a)は|r−r|が極小値をとらない場合を例示する図であり、(b)は|r−r|が極小値をとる場合を例示する図である。 第1の実施形態にかかる干渉深度ベクトルを演算する処理を示すフローチャートである。 第1の実施形態にかかる次元オブジェクト制御装置において、多面体同士の干渉深度の計算を行うための各変数などを表す図である。 第1の実施形態にかかるオブジェクト間の干渉深度ベクトルの計算アルゴリズムにおける計算の経過を示す図であり、(a)は干渉深度ベクトルの計算のある過程を示す図であり、(b)は干渉深度ベクトルの計算の次の過程を示す図である。 第2の実施形態にかかるオブジェクト間の干渉深度ベクトルの計算アルゴリズムにおける計算の経過を示す図であり、(a)は干渉深度ベクトルの計算のある過程を示す図であり、(b)は干渉深度ベクトルの計算の次の過程を示す図である。 第2の実施形態における多面体オブジェクト間の実際の干渉深度の計算の例を示す図であり、(a)は計算に用いられたオブジェクトを示す図であり、(b)は算出された干渉深度と計算時間を示す図である。 第2の実施形態における多面体オブジェクト間の実際の干渉深度の計算の例を示す図であり、(a)は計算に用いられたオブジェクトを示す図であり、(b)は算出された干渉深度と計算時間を示す図である。
符号の説明
10 コンピュータ本体、 12 ディスプレイ、 20 3次元入出力装置、 50 3次元オブジェクト制御装置、 52 オブジェクト制御部、 54 最短距離演算部、 56 干渉深度ベクトル演算部、 58 表示出力部、 60 応答出力部。

Claims (9)

  1. 仮想空間に配置されたオブジェクトのうち、注目オブジェクトと、該注目オブジェクトの2箇所以上において同時に干渉し得る周辺オブジェクトとの干渉を判定する干渉判定手段と、
    前記干渉判定手段により干渉すると判定された場合に、干渉することを報知する干渉報知手段を備えることを特徴とする3次元オブジェクト制御装置。
  2. 仮想空間に配置された非干渉状態におけるオブジェクト間の最近傍点を結ぶ最近傍ベクトルを算出する最近傍ベクトル演算手段と、
    前記注目オブジェクトが前記周辺オブジェクトと干渉しているものとした場合に、前記注目オブジェクトの位置である干渉位置に対して前記注目オブジェクトが前記周辺オブジェクトとの干渉を解消する極小近傍の位置である極小近傍非干渉位置から、前記干渉位置へ向かうベクトルである干渉深度ベクトルを、前記最近傍ベクトルから算出するベクトル演算手段とをさらに備え、
    前記干渉報知手段は、前記干渉深度ベクトルから干渉を報知することを特徴とする請求項1に記載の3次元オブジェクト制御装置。
  3. 前記干渉位置を干渉位置r、前記オブジェクトが前記周辺オブジェクトからεだけ離れた位置を非干渉位置rとした場合、
    前記ベクトル演算手段は、前記非干渉位置rのうち、前記干渉位置rから前記非干渉位置rへの距離が極小となるときまたは極小と近似されるときの極小近傍位置rを演算する極小近傍演算手段を有し、
    前記ベクトル演算手段は、前記干渉位置rから極小近傍位置rへ向かうベクトル、および前記極小近傍位置rにある注目オブジェクトと前記周辺オブジェクトの間の最近傍点を結ぶ最近傍ベクトルから、前記干渉深度ベクトルを算出することを特徴とする請求項2に記載の3次元オブジェクト制御装置。
  4. オブジェクトを前記仮想空間において移動または回転する移動回転手段をさらに備え、
    前記移動回転手段は、前記干渉深度ベクトルを用いて、干渉する1つ以上のオブジェクトを該干渉が解消する位置へ移動または回転し、
    前記干渉報知手段は、仮想空間に配置された複数のオブジェクトを画面に表示する表示出力手段を有し、前記表示出力手段は、移動または回転された前記オブジェクトを画面に表示することにより干渉することを報知することを特徴とする請求項1から3のいずれかに記載の3次元オブジェクト制御装置。
  5. 前記干渉報知手段は、仮想空間に配置された複数のオブジェクトを画面に表示する表示出力手段を有し、前記表示出力手段は、干渉すると判定された場合に、前記干渉深度ベクトルを用いて、干渉することを画面に表示することにより干渉することを報知することを特徴とする請求項1から3のいずれかに記載の3次元オブジェクト制御装置。
  6. 前記干渉報知手段は、入力された情報に応じて作動するアクチュエータに情報を出力する応答出力手段を備え、
    前記応答出力手段は、干渉すると判定された場合に、前記干渉深度ベクトルを用いた情報を前記アクチュエータに出力して前記アクチュエータを作動させることにより、干渉することを報知することを特徴とする請求項2から5のいずれかに記載の3次元オブジェクト制御装置。
  7. 前記干渉報知手段は、前記干渉深度ベクトルに応じた方向に作動し、前記干渉深度ベクトルのスカラー量である干渉深度に応じた力で作動するアクチュエータに情報を出力する応答出力手段を備え、
    前記応答出力手段は、干渉すると判定された場合に、前記干渉深度ベクトルおよび前記干渉深度を前記アクチュエータに出力して前記アクチュエータを作動させることにより、干渉することを報知することを特徴とする請求項2または3に記載の3次元オブジェクト制御装置。
  8. 仮想空間に配置された非干渉状態におけるオブジェクト間の最近傍点を結ぶ最近傍ベクトルを算出する機能と、
    仮想空間に配置されたオブジェクトのうち、注目オブジェクトと、該注目オブジェクトの2箇所以上において同時に干渉し得る周辺オブジェクトにおいて、前記注目オブジェクトが前記周辺オブジェクトと干渉しているものとした場合に、前記注目オブジェクトの位置である干渉位置に対して前記注目オブジェクトが前記周辺オブジェクトとの干渉を解消する極小近傍の位置である極小近傍非干渉位置から、前記干渉位置へ向かうベクトルである干渉深度ベクトルを、前記最近傍ベクトルから算出する機能とをコンピュータに実現せしめることを特徴とする3次元オブジェクト制御プログラム。
  9. 仮想空間に配置された非干渉状態におけるオブジェクト間の最近傍点を結ぶ最近傍ベクトルを算出する機能と、
    仮想空間に配置されたオブジェクトのうち、注目オブジェクトと、該注目オブジェクトの2箇所以上において同時に干渉し得る周辺オブジェクトにおいて、前記注目オブジェクトが前記周辺オブジェクトと干渉しているものとした場合であって、前記注目オブジェクトの位置を干渉位置rとし、前記注目オブジェクトが前記周辺オブジェクトからεだけ離れた位置を非干渉位置rとした場合、前記非干渉位置rのうち、前記干渉位置rから前記非干渉位置rへの距離が極小となるときまたは極小と近似されるときの極小近傍位置rを演算する機能と、
    前記干渉位置rから極小近傍位置rへ向かうベクトル、および前記極小近傍位置rにある注目オブジェクトと前記周辺オブジェクトの間の最近傍点を結ぶ最近傍ベクトルから、前記干渉深度ベクトルを算出する機能とをコンピュータに実現せしめることを特徴とする3次元オブジェクト制御プログラム。
JP2005125056A 2005-04-22 2005-04-22 3次元オブジェクト制御装置および3次元オブジェクト制御プログラム Active JP4557785B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005125056A JP4557785B2 (ja) 2005-04-22 2005-04-22 3次元オブジェクト制御装置および3次元オブジェクト制御プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005125056A JP4557785B2 (ja) 2005-04-22 2005-04-22 3次元オブジェクト制御装置および3次元オブジェクト制御プログラム

Publications (2)

Publication Number Publication Date
JP2006302098A true JP2006302098A (ja) 2006-11-02
JP4557785B2 JP4557785B2 (ja) 2010-10-06

Family

ID=37470290

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005125056A Active JP4557785B2 (ja) 2005-04-22 2005-04-22 3次元オブジェクト制御装置および3次元オブジェクト制御プログラム

Country Status (1)

Country Link
JP (1) JP4557785B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000353183A (ja) * 1999-06-09 2000-12-19 Agency Of Ind Science & Technol 三次元構造体作製システム
JP2003248843A (ja) * 2002-12-24 2003-09-05 Fujitsu Ltd 仮想3次元空間内における物体編集制御方式
JP2004252756A (ja) * 2003-02-20 2004-09-09 Fujitsu Ltd 物体干渉表現装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000353183A (ja) * 1999-06-09 2000-12-19 Agency Of Ind Science & Technol 三次元構造体作製システム
JP2003248843A (ja) * 2002-12-24 2003-09-05 Fujitsu Ltd 仮想3次元空間内における物体編集制御方式
JP2004252756A (ja) * 2003-02-20 2004-09-09 Fujitsu Ltd 物体干渉表現装置

Also Published As

Publication number Publication date
JP4557785B2 (ja) 2010-10-06

Similar Documents

Publication Publication Date Title
US20150097777A1 (en) 3D Motion Interface Systems and Methods
US6704694B1 (en) Ray based interaction system
JP5791976B2 (ja) 画像処理装置、画像処理方法、およびプログラム
US8345044B2 (en) Indirect binding with segmented thin layers to provide shape-preserving deformations in computer animation
Balasubramaniam et al. Generation of collision-free 5-axis tool paths using a haptic surface
JP2016107384A (ja) 干渉回避方法、制御装置及びプログラム
JP2000172854A (ja) 二次元の奥行き画像からボリュメトリック距離マップを推定する方法
US20080034023A1 (en) Contact geometry calculation device, contact geometry calculation method, and computer program product
CN101140598A (zh) 部件识别图像处理器、生成部件识别图像的程序和存储程序的记录介质
JP2018008347A (ja) ロボットシステムおよび動作領域表示方法
Dybvik et al. A low-cost predictive display for teleoperation: Investigating effects on human performance and workload
JP2019198914A (ja) 多関節ロボットの干渉判定装置、多関節ロボットの干渉判定方法、多関節ロボットの干渉判定プログラム、及び経路計画生成装置
Chablat et al. Self-motion conditions for a 3-PPPS parallel robot with delta-shaped base
JP4557785B2 (ja) 3次元オブジェクト制御装置および3次元オブジェクト制御プログラム
JP3526605B2 (ja) 3次元的な物体の変形方法及びモデリングシステム
US11543889B2 (en) Selection of a vertex with an immersive gesture in 3D modeling
US20110037839A1 (en) Industrial robot, and methods for determining the position of an industrial robot relative to an object
EP2474882B1 (en) Haptic input device
CN111105501A (zh) B-rep皮肤的3d设计
JP4868044B2 (ja) オブジェクト属性変更処理装置、オブジェクト属性変更処理方法、および3次元モデル処理装置、3次元モデル処理方法
JP2003248843A (ja) 仮想3次元空間内における物体編集制御方式
Andrews et al. Haptic texturing based on real-world samples
JP4389350B2 (ja) オブジェクト属性変更処理装置、オブジェクト属性変更処理方法、および3次元モデル処理装置、3次元モデル処理方法、並びにプログラム提供媒体
US11822727B2 (en) Selection of a face with an immersive gesture in 3D modeling
US11941773B2 (en) Method for designing a three-dimensional mesh in a 3D scene

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071112

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100310

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100706

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100720

R150 Certificate of patent or registration of utility model

Ref document number: 4557785

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130730

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250