JP2005310021A - 衝突検出方法及び衝突検出システム - Google Patents

衝突検出方法及び衝突検出システム Download PDF

Info

Publication number
JP2005310021A
JP2005310021A JP2004129260A JP2004129260A JP2005310021A JP 2005310021 A JP2005310021 A JP 2005310021A JP 2004129260 A JP2004129260 A JP 2004129260A JP 2004129260 A JP2004129260 A JP 2004129260A JP 2005310021 A JP2005310021 A JP 2005310021A
Authority
JP
Japan
Prior art keywords
octree
collision detection
collision
client
servers
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
JP2004129260A
Other languages
English (en)
Other versions
JP4444725B2 (ja
Inventor
Kouichi Konno
晃市 今野
Shinya Fujiwara
慎也 藤原
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.)
Japan Science and Technology Agency
Original Assignee
Japan Science and Technology Agency
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 Japan Science and Technology Agency filed Critical Japan Science and Technology Agency
Priority to JP2004129260A priority Critical patent/JP4444725B2/ja
Publication of JP2005310021A publication Critical patent/JP2005310021A/ja
Application granted granted Critical
Publication of JP4444725B2 publication Critical patent/JP4444725B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Processing Or Creating Images (AREA)
  • Multi Processors (AREA)

Abstract

【課題】分散処理システムを用いて、3次元空間内における凹形状を含む物体の衝突を、Octreeを利用して高速に検出する衝突検出方法を提供する。
【解決手段】クライアント1が、3次元空間を分割した部分空間を、少なくとも複数のサーバ2の各々に割り当てる。少なくともサーバ2の各々が、その割り当てられた部分空間におけるOctreeを生成する。少なくともサーバ2の各々が、その生成したOctreeに基づいて当該部分空間における衝突を検出する。クライアント1が、少なくとも複数のサーバ2の各々における衝突検出の結果を統合する。
【選択図】図1

Description

本発明は、衝突検出方法及び衝突検出システムに関し、特に、複数のコンピュータからなる分散処理システムにおいて、3次元空間内における凹形状を含む物体の衝突を、オクトリー(以下、Octreeとも言う)を利用して高速に検出する衝突検出方法及び衝突検出システムに関する。
3次元空間内における物体の衝突検出法の多くは、物体相互の幾何学的な交差を求めるものである。例えば、AABBTree(Axis-Aligned Bounding Box Tree)(非特許文献1参照)、OBBTree (Oriented Bounding Box Tree)(非特許文献2参照)、 Sphere Tree(非特許文献3参照)等を利用した手法のように、外接する凸多面体を再起的に定義する手法や、Octree(非特許文献4参照)、ボロノイ分割、 BSP(Binary Space Partitioning )等によって空間を分割し、検出対象となる隣接物体対を絞り込む空間分割法と呼ばれる手法等がある。
凸多面体を再帰的に定義する手法は、物体の数が増加するにつれて、衝突検出コストが大きく増加する。それに対し、空間分割法は、物体の数の増加に対して衝突検出コストの増加は線形である。しかし、空間分割法を用いても、物体の数が非常に多い場合や、形状が非常に複雑な場合には、衝突検出のコストが大きくなってしまい、リアルタイムで衝突検出を行うのは困難である。
ところで、Octree表現は、3次元空間内の物体を位置に関して階層的に表現したソリッドモデルである。図12は、3次元空間内の物体の一例である正八面体と、そのOctree表現例を示す。Octreeは、図13に示すように、x方向、y方向、z方向の各々で分割することによって、(3次元)空間を再帰的に8分割していき、分割木の各ノードが8つの子ノードをもつ8分木である。図14は、このようなOctreeの例である。Octreeの各ノードは、ノードの示す空間の位置と物体との位置関係によって、ブラック(以下、black とも言う)ノード、ホワイト(以下、white とも言う)ノード、グレイ(以下、grayとも言う)ノードの3種類に分類される。
Octreeの生成手法として、例えば非特許文献5に示される手法が知られている(本発明においても、後述するように、基本的にはこの手法を用いる)。非特許文献5の手法においては、Octreeの3種類のノードは、各々、以下のように定義されている。即ち、
(1)grayノード:物体を形成する面が含まれている空間、つまり物体の内外にまたがる空間を示し、更に8つの子ノードに分割される。
(2)white ノード:物体を形成するいずれかの面に対して、面が持つ無限平面の外側、つまり物体の外部である空間を示す。
(3)black ノード:物体を形成する全ての面に対して、面が持つ無限平面の内側、つまり物体の内部である空間を示す。また、一定の深さに達したgrayノードは、black ノードとして扱われる。
図15は、非特許文献5の手法を用いて各ノードを分類した場合の結果を示す、2次元的な模式図である。図15(a)は空間を2度分割した結果を表している。(1)の空間(〇で1を囲んで示す空間、以下同じ)は、物体を形成する面の外側に位置するので、white ノードと分類される。(2)の空間は、物体を形成する全ての面の内側に位置するので、black ノードと分類される。残りの空間は、物体を形成する面を含むので、grayノードと分類される。図15(b)は、図15(a)において、そのgrayノードを更に分割し、かつ、Octreeの深さが一定の深さに達したとみなされたgrayノードを再分類した結果を表している。分割されたgrayノードの一部は、一定の深さに達しているため、black ノードに再分類される。これにより、物体の面を含んだ空間(元のgrayノードの空間)もblack ノードに分類される。
以上のように、各ノードは3種類のノードに分類される。しかし、 blackノードの「物体を形成する全ての面に対して、面が持つ無限平面の内側である」という定義によって、凹形状を含んだ物体については、そのOctreeを生成することが困難である。即ち、凹形状を含んだ物体においては、物体の内部であっても「物体を形成する全ての無限平面の内側である」とはならない。このために、3種類のノードのうち、 blackノードをうまく生成することができない。
図16は、凹形状を含んだ物体について非特許文献5の手法を用いたときの問題点を、2次元的な模式図により表している。上部中央が凹形状である。(1)の領域は、物体の内部であるにもかかわらず、面(が持つ無限平面)aの外側に位置している。(2)の領域も、同様に、面(が持つ無限平面)bの外側に位置している。図16から判るように、凹形状を含んだ物体の場合、空間が物体の内部に位置するのか、又は、外部に位置するのか、という判断が困難である。
Gottshalk S., Monocha D., :"OBBTree : A Hierarchical Structure for Rapid Interference Dtection", Proc.ACM siggraph'96, pp.177-180, 1996. Van den Bergen G. :"Efficient Collision Detection of Complex Deformable Models using AABB Trees", journal of Graphics Tools, Vol.2, No.4, pp.1-14, 1997. Hubbard, P. M.:"Approximating Polyhedra with Spheres for Time-Critical Collision Detection", ACM Trans Graphics, Vol.15, No.3, pp.179-210, 1996. 北村善文, 竹村治雄, アフジャナンドラ, 岸野文郎:"Octree と多面体表現を用いた三次元物体間の衝突面検出",ロボット学会誌, Vol.14, N.5, pp.121-130, September 1996. 登尾啓史, 福田尚三, 有本卓:"Brep からオクトツリーへの変換アルゴリズムとその評価",情報処理学会論文誌, Vol.28, No.10, pp.1-10, May 2001.
前述のように、Octreeを利用した衝突検出法では、物体ごとにOctreeを生成し、各々のOctreeを並列にたどることによって衝突を検出する。しかし、従来は、前述の非特許文献5に示すように、凸形状である物体のOctree生成手法は知られているが、凹形状を含んだ物体には対応していない。実世界においては、一般的な物体の多くが凹形状を含んでいるので、凸形状のみに対応しているのでは実用的とはいえない。
本発明者の検討によれば、前述の非特許文献5の手法において、凹形状を含んだ物体のOctree生成が困難な原因は、前述の3種類のノードの定義にある。そこで、本発明者は、3種類のノードの定義を、凹形状を含んだ物体のOctree生成が可能なように変更(拡張)すれば、凹形状を含んだ物体についても、Octreeを利用した衝突検出が可能になると考えた。
また、従来は、物体を形成する面数が多い場合、Octree生成時間が非常に長くなってしまっていた。このため、衝突検出の実用化の障害となっていた。更に、Octreeを利用した衝突検出では、物体が移動するたびにOctreeを生成しなおさなければならない。このため、Octreeの生成時間が長いと、リアルタイムで衝突検出を行うことが困難になる。
本発明者の検討によれば、衝突検出の実用化のためには、Octree生成時間の短縮が最も重要である。そこで、本発明者は、Octreeの生成を、複数のコンピュータを用いた分散処理、いわゆるグリッドコンピューティング(grid computing)によれば、複数のコンピュータでの並列処理により高速で大量の処理を実行できるので、Octree生成時間を短縮することができると考えた。
本発明は、3次元空間内における凹形状を含む物体の衝突を、Octreeを利用して検出する衝突検出方法を提供することを目的とする。
また、本発明は、3次元空間内における凹形状を含む物体の衝突を、Octreeを利用して検出する衝突検出システムを提供することを目的とする。
また、本発明は、クライアント及び複数のサーバからなる分散処理システムを用いて、3次元空間内における凹形状を含む物体の衝突を、Octreeを利用して高速に検出する衝突検出方法を提供することを目的とする。
また、本発明は、クライアント及び複数のサーバからなる分散処理システムにおいて、3次元空間内における凹形状を含む物体の衝突を、Octreeを利用して高速に検出する衝突検出システムを提供することを目的とする。
本発明の衝突検出方法は、3次元空間における物体の衝突を検出する衝突検出システムにおける衝突検出方法である。本発明の衝突検出方法においては、グレイノードを物体を形成する面が含まれている空間と定義し、ホワイトノードを物体を形成する面がまったく存在しない空間と定義し、ブラックノードを一定の深さに達したグレイノードと定義することにより、前記物体のオクトリーを生成し、当該生成したオクトリーに基づいて、衝突する面を検出することにより、前記物体の衝突を検出する。
本発明の衝突検出システムは、3次元空間における物体の衝突を検出する。本発明の衝突検出システムは、グレイノードを物体を形成する面が含まれている空間と定義し、ホワイトノードを物体を形成する面がまったく存在しない空間と定義し、ブラックノードを一定の深さに達したグレイノードと定義することにより、前記物体のオクトリーを生成するオクトリー生成部と、当該生成したオクトリーに基づいて、衝突する面を検出することにより、前記物体の衝突を検出する衝突検出部とを備える。
本発明の衝突検出方法は、クライアントと複数のサーバとからなる分散処理システムにおいて3次元空間における物体の衝突を検出する。本発明の衝突検出方法においては、前記クライアントが、前記3次元空間を分割した部分空間を、少なくとも前記複数のサーバの各々に割り当て、少なくとも前記サーバの各々が、当該割り当てられた部分空間におけるオクトリーを生成し、少なくとも前記サーバの各々が、当該生成したオクトリーに基づいて当該部分空間における衝突を検出し、前記クライアントが、少なくとも前記サーバの各々における前記衝突検出の結果を統合する。
本発明の衝突検出システムは、クライアント及び複数のサーバからなる3次元空間における物体の衝突を検出する。本発明の衝突検出システムにおいては、前記クライアントが、前記3次元空間を分割した部分空間を、前記クライアント及び複数のサーバの各々に割り当てる部分空間割当部と、当該割り当てられた部分空間におけるオクトリーを生成するオクトリー生成部と、当該生成したオクトリーに基づいて当該部分空間における衝突を検出する衝突検出部と、前記クライアント及び複数のサーバの各々における前記衝突検出の結果を統合する結果統合部とを備える。前記複数のサーバの各々が、当該割り当てられた部分空間におけるオクトリーを生成するオクトリー生成部と、当該生成したオクトリーに基づいて当該部分空間における衝突を検出する衝突検出部とを備える。
本発明の衝突検出方法及び衝突検出システムによれば、grayノードを物体を形成する面が含まれている空間と定義し、white ノードを物体を形成する面がまったく存在しない空間と定義し、black ノードを一定の深さに達したgrayノードと定義する。前述のように、本発明者の検討によれば、前述の非特許文献5の手法において凹形状を含んだ物体のOctree生成が困難な原因は、3種類のノードの定義にある。そこで、3種類のノードの定義を前述のように変更(拡張)する。このように3種類のノードの定義を拡張することによって、凹形状を含んだ物体のOctreeを生成することができる。即ち、black ノードが物体の表面にのみ存在し、サーフェスモデルとなる。衝突検出とは衝突する面を検出することであるので、サーフェスモデルでも衝突検出に何ら問題は無い。これにより、凸形状である物体のOctreeの生成に限らず、凹形状を含んだ物体についても、衝突検出のための情報としてのOctreeを生成することができる。従って、凹形状を含んだ物体についてもOctreeを利用した衝突検出を行うことができ、物体の多くが凹形状を含む実世界についても衝突検出を行うことができる。
また、本発明の衝突検出方法及び衝突検出システムによれば、クライアントが部分空間を少なくとも複数のサーバに割り当て、サーバがOctreeを生成して衝突を検出し、クライアントが衝突検出の結果を統合する。前述のように、本発明者の検討によれば、衝突検出の実用化のためには、Octree生成時間の短縮が最も重要である。そこで、Octreeの生成と衝突検出とを複数のコンピュータを用いた並列処理により行う。このようにOctree生成処理及び衝突検出処理を分散することにより、高速で大量の処理を実行できるので、Octree生成時間を短縮することができる。これにより、物体を形成する面数が多い場合でも、Octree生成時間を短縮することができ、この結果、物体が移動するたびにOctreeを生成し直す際も、Octreeの生成時間が短いので、リアルタイムで衝突検出を行うことができる。
図1は、衝突検出システム構成図であり、本発明の衝突検出システムの構成の一例を示す。この衝突検出システムは、複数のコンピュータ、即ち、クライアント1及び複数のサーバ2と、オブジェクトファイル(obj ファイル)3と、これらの間を接続するネットワーク4とからなり、3次元空間における物体の衝突を検出する。衝突検出には、Octreeを生成して、これを利用する。ネットワーク4は、例えばインターネット、LAN(Local Area Network)等からなる。
クライアント1は衝突検出システムに1個設けられる。クライアント1は、部分空間割当部11、オブジェクト読込部12、Octree生成部13、衝突検出部14、結果統合部15を備える。即ち、クライアント1は、衝突検出システムの複数のコンピュータの中で、3次元空間を分割した部分空間を割り当て、衝突検出の結果を統合する処理を実行するコンピュータである。なお、3次元空間の部分空間への分割は、当該割り当て処理に先立って、クライアント1及び複数のサーバ2のいずれにおいても行われる。
サーバ2は衝突検出システムに複数個(N個、例えばN=1〜8、16や32等でも良い)設けられる。サーバ2は、オブジェクト読込部21、Octree生成部22、衝突検出部23を備える。即ち、サーバ2は、衝突検出システムの複数のコンピュータの中で、Octreeの生成及びこれに基づく衝突の検出処理のみを実行するコンピュータである。サーバ2を区別する場合、サーバ2A、2B、・・・2Nと表す。サーバ2Aのオブジェクト読込部を21Aと表し、Octree生成部を22Aと表し、衝突検出部を23Aと表す(他のサーバ2B等についても同じ)。
ここで、本発明は、Octree生成処理及び衝突検出処理について分散処理を利用することにより、Octree生成時間を短縮する。即ち、Octree生成時間を短縮する手段として、複数のコンピュータを用いた分散処理、いわゆるグリッドコンピューティングを行う。グリッドコンピューティングについては、例えば、Charles Hansen, Chris Johnson "Graphics Applications for Grid Computing",IEEE Computer Graphics and Applications, Vol.23, No.2, pp.20-21, March/April 2003に示されている。グリッドコンピューティングとは、ネットワークを介して複数のコンピュータを接続することにより仮想的に高性能コンピュータを作るシステムである。複数のコンピュータで並列処理を行わせることにより、1台あたりの性能は低くとも高速に大量の処理を実行できるようになる。本発明では、例えばグリッドコンピューティングを利用して、Octree生成時間を短縮する。
クライアント1において、部分空間割当部11は、3次元空間を分割した部分空間を、少なくとも複数のサーバ2の各々に割り当てる。この例では、部分空間割当部11は、部分空間をクライアント1(自コンピュータ)にも割り当てる。これにより、クライアント1にもOctree生成等の処理を行わせ、衝突検出システムにおいて資源利用の無駄が生じないようにすることができる。なお、部分空間を複数のサーバ2の全てに割り当てる必要はない。部分空間を割り当てられたサーバ2がその時点での衝突検出システムを構成すると考えて良い。
部分空間割当部11は、部分空間を割り当てた結果を、当該サーバ2に通知する。実際には、当該通知に代えて、割り当てた部分空間についてのOctreeの生成依頼が行われる。例えば、クライアント1は、サーバ2Aに部分空間(1)〜(3)を割り当てた場合、サーバ2Aに部分空間(1)〜(3)についてのOctreeの生成依頼を行う。クライアント1は、部分空間を割り当てた全てのサーバ2にOctreeの生成依頼を行った後、自コンピュータにおけるOctreeの生成を行う。
ここで、この例では、Octreeを利用するために、3次元空間を8分割する。これに応じて、クライアント1及び複数のサーバ2(システム中のコンピュータ)の合計数Nを最大でN=8とする。即ち、コンピュータの台数は1〜8台となり、Nの最大値はN=8である。N=8の場合、8分割した3次元空間を8個のコンピュータで処理することができ、簡易な構成を採用することができる。
このように複数のコンピュータで分散処理を行うにあたって、コンピュータは1台のクライアント1と複数のサーバ2に分けられる。図2に示すように、クライアント1がサーバ2に処理を依頼し、サーバ2は処理結果をクライアント1に返す。これにより、3次元空間をN個に分散して処理する。なお、図2はサーバ2を4個設けた(N=5の)例である。
本発明において、分散処理を行うのは、Octree生成処理と衝突検出処理である。Octree生成では、空間を分割するので、分割した部分空間を各サーバに割り当てることにより、分散処理を行う。例えば、図3のように、2個のサーバを用いる(N=2の)場合、サーバ2A(図3ではサーバ1)が部分空間(1)〜(3)の処理を行い、サーバ2B(図3ではサーバ2)が部分空間(4)〜(6)、クライアント1が部分空間(7)、(8)の処理を行うようにすることが可能である。本発明では全体空間を8分割して、分割した部分空間をクライアント1とサーバ2A、2Bに分散する。
また、異なる3次元空間の処理において、異なる3次元空間を同一に分割し(例えば、8分割し)、クライアント1及び複数のサーバ2の各々に対して、異なる3次元空間の同一の部分空間を割り当てる。これにより、各々のコンピュータに常に決められた部分空間を割り当て、処理コストの高いOctreeの結合の処理を簡易に行うことができる。
即ち、衝突検出の処理コストは、Octree生成の処理コストと比較して、分散する必要がないほど微小である。しかし、1台のコンピュータのみで衝突検出を行うには、クライアント1とサーバ2が生成したOctreeのパーツを結合する必要がある。Octreeの結合は処理コストが高い。そこで、クライアント1とサーバ2には、各々、常に決められた部分空間を割り当て、Octreeを生成し、衝突検出を行うようにする。例えば、物体aに対して8つに分割された部分空間の(1)〜(3)をサーバ2Aに、(4)〜(6)をサーバ2Bに、(7)、(8)をクライアント1に割り当てたならば、物体bに対しても(1)〜(3)をサーバ2Aに、(4)〜(6)をサーバ2Bに、(7)、(8)をクライアント1に割り当てる。クライアント1は、サーバ2A、2B及びクライアント1における衝突検出結果、つまり「衝突した」と判断された面情報を統合化することによって、最終的な衝突検出結果を求める。衝突検出結果のみを統合することによって、Octreeを結合してから衝突検出を行うよりも処理コストが小さく、クライアント1とサーバ2A、2B間の通信回数も少なくなる。
オブジェクト読込部12は、obj ファイル3を読み込んで、所定の記憶領域に格納する。この時、この例では、当該部分空間ではなく、obj ファイル3の全体を読み込む。obj ファイル3は、衝突検出の処理対象である3次元空間における当該物体についてのデータを、オブジェクト形式(拡張子が.objであるファイル形式)で格納する。obj ファイル3(のデータ)は、本発明に従って、3次元空間において凹形状を含む物体を含むことができる。読み込まれたobj ファイル3の中の当該割り当てられた部分空間についてのみが、クライアント1における処理対象とされる。
Octree生成部13は、Octreeの生成依頼を受けると、obj ファイル3の中の当該割り当てられた部分空間におけるOctreeを生成する。即ち、この例では、クライアント1にも部分空間が割り当てられるので、クライアント1もOctreeを生成する。クライアント1においてOctreeを生成しない場合、Octree生成部13は省略される。obj ファイル3が凹形状を含む物体のデータを含む場合、Octree生成部13は、凹形状を含む物体のOctreeを生成する。
ここで、本発明は、空間分割法を拡張することにより、凹形状を含んだ物体のOctree生成を可能にする。即ち、凹形状を含んだ物体のOctree生成を行うために、前述の非特許文献5の手法を変更(拡張)する。非特許文献5の手法において凹形状を含んだ物体のOctree生成が困難な原因は、3種類のノードの定義にある。そこで、3種類のノードの定義を以下のように拡張した。即ち、
(1)grayノード:物体を形成する面が含まれている空間と定義する。即ち、物体の内外にまたがる空間を示し、更に8つの子ノードに分割される。grayノードの定義は非特許文献5と同様である。
(2)white ノード:物体を形成する面がまったく存在しない空間と定義する。
(3)black ノード:一定の深さに達したgrayノードと定義する。
このように、3種類のノードの定義を拡張することによって、凹形状を含んだ物体のOctreeを生成することができる。図4はノードの定義を拡張して各ノードを分類したときの2次元的な模式図である。図4(a)は空間を2度分割した結果である。(1)の空間は、物体を形成する面がまったく存在しない空間なので、white ノードと分類されている。残りの空間は、物体を形成する面を含んでいるので、grayノードと分類されている。図4(b)は、図4(a)のgrayノードを更に分割し、かつ、Octreeの深さが一定の深さに達したとみなされた結果である。図4(b)から、black ノードが物体の表面にのみ存在することが判る。即ち、サーフェスモデルとなるのである。衝突検出とは衝突する面を検出することであるので、サーフェスモデルでも衝突検出に何ら問題は無い。
衝突検出部14は、Octreeが生成されると、当該生成したOctreeに基づいて、当該部分空間における衝突を検出する。即ち、この例では、クライアント1にも部分空間が割り当てられるので、クライアント1も衝突検出を行う。クライアント1において衝突検出を行わない場合、衝突検出部14は省略される。この例では、各ノードの分類の結果がサーフェスモデルとなるので、衝突検出部14は、当該生成したOctreeに基づいて、衝突する面を検出する。本発明のノードの定義に従って、衝突検出の対象である複数の物体において、双方のblack ノードが重なった位置(部分空間)が衝突部分(実際には、衝突の可能性がある部分)として検出(抽出)される。これにより、衝突検出部14は、凸形状の物体のみならず、凹形状を含む物体の衝突を検出することができる。
結果統合部15は、少なくとも複数のサーバ2の各々における衝突検出の結果を統合する。この例では、クライアント1にも部分空間を割り当てるので、結果統合部15は、クライアント1及び複数のサーバ2の各々における衝突検出の結果を統合する。この衝突検出の結果の統合処理において、結果統合部15は、衝突が検出された面を全て集約することにより、衝突検出の結果を得る。
例えば、第1の正八面体(図12参照)のある頂点が第2の正八面体のある平面に衝突したとする。本発明により、black ノードは物体の表面にのみ存在する。従って、この場合、当該頂点の先端部分と当該平面の一部とにおいて、双方のblack ノードが重なる。そこで、当該black ノードの重なりにより、当該位置において第1及び第2の正八面体が「衝突した」と判断される。そして、第1の正八面体の当該頂点を含む4つの面が「衝突した」と判断された面とされ、第2の正八面体の当該平面が「衝突した」と判断された面とされる。従って、これらの面の面番号(のみ)がクライアント1の結果統合部15に通知される。従って、通信量は少なくて済む。面番号は、予めユニークに定められ、クライアント1及びサーバ2の各々にobj ファイル3 の一部として与えられる。結果統合部15は、受信した面番号に基づいて、これらの「衝突した」と判断された面番号を集約する(複数の衝突した面を特定する)ことによって、最終的な衝突検出結果を求める。なお、以上の説明は、正八面体についてのものであるので、凹形状を含まないが、本発明により凹形状を含む物体についても、同様に衝突を検出することができる。また、衝突した位置の厳密な座標位置は他の手段によって求めることができる。
サーバ2の各々において、オブジェクト読込部21は、obj ファイル3の全体を読み込んで、所定の記憶領域に格納する。従って、少なくともサーバ2の各々がobj ファイル3を読み込む。obj ファイル3(のデータ)は、3次元空間において凹形状を含む物体を含むことができる。読み込まれたobj ファイル3の中の当該割り当てられた部分空間についてのみが、当該サーバ2における処理対象とされる。
サーバ2の各々において、Octree生成部22は、Octreeの生成依頼を受けると、obj ファイル3の中の当該割り当てられた部分空間におけるOctreeを生成する。従って、少なくともサーバ2の各々が、当該割り当てられた部分空間におけるOctreeを生成する。前述のOctree生成部13と同様に、obj ファイル3が凹形状を含む物体のデータを含む場合、Octree生成部22は、凹形状を含む物体のOctreeを生成する。
また、サーバ2の各々において、衝突検出部23は、Octreeが生成されると、当該生成したOctreeに基づいて、当該部分空間における衝突を検出する。従って、少なくともサーバ2の各々が、当該生成したOctreeに基づいて、当該部分空間における衝突を検出する。前述の衝突検出部14と同様に、衝突検出部23は、当該生成したOctreeに基づいて衝突する面を検出し、凸形状の物体のみならず、凹形状を含む物体の衝突を検出することができる。
実際には、クライアント1及び複数のサーバ2は、部分空間を割り当てられた場合、スレッド17及び25を生成することにより、Octree生成処理を行い、同一のスレッド17及び25において物体の衝突検出処理を行う。即ち、クライアント1及び複数のサーバ2は、生成したスレッド17及び25において、3次元空間における物体が記述されたobj ファイル3の中の当該割り当てられた部分空間についてのOctreeを生成し、当該生成したOctreeに基づいて物体の衝突を検出する。これにより、衝突検出結果の統合の処理時における(Octree生成処理及び)衝突検出処理の待ち合わせ時間をできる限り少なくして、処理時間を短縮することができる。Octree生成部13及び22と衝突検出部14及び23はスレッドとして生成される。
なお、クライアント1及び複数のサーバ2は、obj ファイル3の読み込みも、スレッド17及び25とは異なるスレッド16及び24を生成することにより、読込み処理を行う。即ち、クライアント1及び複数のサーバ2は、部分空間を割り当てられた場合、スレッド16及び24を生成することにより、読込み処理を行う。読込み処理を行うスレッドとOctree生成処理を行うスレッドとを別に生成することにより、双方の処理の間に存在するタイムラグを吸収することができ、また、obj ファイル3からの形状データの読込みを1回だけとすることができる。オブジェクト読込部12及び21はスレッドとして生成される。
また、クライアント1及び複数のサーバ2は、部分空間を割り当てられた場合、当該物体の移動に伴って、当該物体の移動前について生成したOctreeを廃棄し、新たにスレッド17及び25を生成し、新たに生成したスレッド17及び25において、座標値を更新し、再度Octreeを生成する。これにより、不要となったOctreeの廃棄処理と新たなOctree生成処理とを円滑に切り換えることができる。
図5は、衝突検出処理フローであり、本発明の衝突検出方法における衝突検出処理の一例の概略を示し、図5(A)はクライアント1における概略処理フローを示し、図5(B)はサーバ2における概略処理フローを示す。なお、この例はサーバ2の数が2個(N=3)の場合の例である。
図5(A)において、クライアント1は、前処理として、例えば図13に示すように分割した部分空間であって、クライアント1と複数のサーバ2の各々が処理を行う部分空間を割り当て(ステップS11)、各々のサーバ2に読込み依頼をした後に、Octreeを生成する準備処理として、スレッド16を生成してobj ファイル3から形状データを読み込む(ステップS12)。この後、クライアント1は、各々のサーバ2にOctree生成依頼をした後に、スレッド17を生成して当該割り当てられた部分空間内のOctreeを生成し(ステップS13)、当該Octreeを生成した部分空間内での衝突を検出し(ステップS14)、複数のサーバ2とクライアント1の衝突検出結果を統合し(ステップS15)、ステップS15において求めた最終的な衝突検出結果を、例えば図10(後述する)に示すようにクライアント1の表示装置(図示せず)の表示画面上に表示し(ステップS16)、この後検出対象である物体の移動を行い(ステップS17)、ステップS13以下を繰り返す。なお、この例では、結果の表示処理はクライアントのみが行う。
図5(B)において、各々のサーバ2は、クライアント1からの読込み依頼に応じて、Octreeを生成する準備処理として、スレッド24を生成してobj ファイル3から形状データを読み込む(ステップS21)。この後、各々のサーバ2は、クライアント1からのOctree生成依頼に応じて、スレッド25を生成して当該割り当てられた部分空間内のOctreeを生成し(ステップS22)、当該Octreeを生成した部分空間内での衝突を検出し(ステップS23)、クライアント1に衝突検出の結果を返信し(ステップS24)、この後物体の移動を行い(ステップS25)、ステップS22以下を繰り返す。
ステップS12及びステップS21における形状データの読み込みにおいて、前述のように、形状データの形式として、obj 形式が用いられる。図6は形状データの読み込み処理の流れを示す。まず、クライアント1(図6では単にクライアント、図7〜図9において同じ)は、ユーザが指定したIPアドレスに基づいてサーバ2A(図6ではサーバ1、図7〜図9において同じ)と接続する。サーバ2Aは接続できたことをクライアント1に返信して知らせる。クライアント1は、同様にして、サーバ2B(図6ではサーバ2、図7〜図9において同じ)と接続する。次に、クライアント1は、ユーザに指定されたobj ファイル3の読み込みを、サーバ2Aに依頼する。サーバ2Aは、新たにスレッド24A(即ち、オブジェクト読込部24A)を生成し、クライアント1に依頼を受け取ったことを返信した後に、当該スレッド24Aにおいてobj ファイル3を読み込む。この時、サーバ2Aは、新たにスレッド24Aを生成するため、obj ファイル3の読み込みが終了するまで、クライアント1の処理と並行に処理を行うことになる。サーバ2Aからの返信を受け取ったクライアント1は、サーバ2Bにもobj ファイル3の読み込みを依頼する。サーバ2Bは、サーバ2Aと同様の処理により、obj ファイル3を読み込む。全てのサーバ2A、2Bにobj ファイル3の読み込み依頼を終えたクライアント1は、自分自身の処理のためにスレッド16(即ち、オブジェクト読込部12)を生成し、obj ファイル3を読み込む。
ステップS13及びステップS22におけるOctree生成処理において、図7に示すように、まず、クライアント1と全てのサーバ2A、2Bは全体空間を8分割しておく。次に、クライアント1はクライアント1とサーバ2A、2Bの各々に、割り当てる部分空間を8つの部分空間から決定する。図7の例の場合、サーバ2Aには8つの部分空間から部分空間(1)〜(3)を、サーバ2Bには部分空間(4)〜(6)を、クライアント1には部分空間(7)、(8)を割り当てる。クライアント1は、サーバ2Aに、(1)〜(3)の部分空間内のOctree生成を依頼する。サーバ2Aは、スレッド25A(即ち、Octree生成部22A及び衝突検出部23A)を新た生成し、依頼を受け取ったことをクライアント1に返信した後に、(1)〜(3)の部分空間内のOctreeを生成する。サーバ2Aからの返信を受け取ったクライアント1は、次に、サーバ2Bにも(4)〜(6)の部分空間内のOctree生成を依頼する。サーバ2Bは、サーバ2Aと同様の処理により、(4)〜(6)の部分空間内のOctreeを生成し始める。全てのサーバ2A、2BにOctree生成の依頼を終えたクライアント1は、スレッド17(即ち、Octree生成部13及び衝突検出部14)を生成し、当該スレッド17において割り当てられた(7)、(8)の部分空間内のOctreeを生成する。
ステップS13及びステップS22における衝突検出処理において、図8に示すように、まず、クライアント1と全てのサーバ2A、2Bは、各々、スレッド17及び25において、Octreeを生成した空間内の衝突検出を行う。次に、クライアント1は、サーバ2Aからサーバ2Aの衝突検出結果、即ち、衝突する面の面番号を受け取る。更に、サーバ2Bからもサーバ2Bの衝突検出結果を受け取る。全てのサーバ2A、2Bから衝突検出結果を受け取ったクライアント1は、全ての衝突検出結果の和をとることによって、最終的な衝突検出結果を求める。
ステップS17及びステップS25における物体の移動による処理において、図9に示すように、物体のOctreeを新たに生成しなおす必要がある。従って、物体が移動する前のOctreeや衝突検出結果等は不必要になってしまうため、破棄する必要がある。まず、クライアント1は、サーバ2Aに対して、サーバ2Aが所持している不必要になったOctreeの破棄を依頼する。サーバ2Aは、新たなスレッド25Aを生成し、依頼を受け取ったことをクライアント1に返信した後で、不必要になったOctreeを破棄する。サーバ2Aの返信を受け取ったクライアント1は、サーバ2Bに対しても同様に不必要になったOctreeの破棄を依頼する。サーバ2Bは、サーバ2Aと同様の処理により、不必要になったOctreeを破棄する。全てのサーバ2A、2Bに不必要になったOctreeの破棄を依頼し終えたクライアント1は、所持している不必要になったOctree及び衝突検出結果を破棄する。次に、新たに移動後の物体のOctreeを生成する準備として物体の座標値を、移動後の値に更新する必要がある。クライアント1は、サーバ2Aに物体の移動先の座標を渡し、座標の更新を依頼する。サーバ2Aは、新たなスレッド25Aを生成し、依頼を受け取ったことを返信した後で、座標値を更新する。サーバ2Aからの返信を受け取ったクライアント1は、サーバ2Bにも物体の座標値の更新を依頼する。サーバ2Bは、サーバ2Aと同様の処理により、物体の座標値を更新する。全てのサーバ2A、2Bに物体の座標値の更新を依頼し終わったクライアント1は、物体の座標値の更新を行う。そして、新たにOctreeを生成するために、Octree生成処理を実施する。なお、物体の座標値の初期値はobj ファイル3 により与えられる。
なお、本発明ではクライアント1とサーバ2の通信にDCOM(Distributed Component Object Model)を用いた。DCOMについては、例えば、Frank E. Redmond III、”DCOMデプロイメントガイド”、翔泳社出版、1998に示されている。DCOMはMicrosoft 社が定めた分散オブジェクト技術の仕様である。同社のCOM (Component Object Model)仕様に従って作成されたCOM オブジェクト同士がネットワークを通じて通信を行い、データの交換や処理依頼のやり取り等を行うことができる
次に、本発明による衝突検出の例について説明する。図10は、凹形状を含んだ物体であるドラゴン(龍)のOctreeを生成し、正八面体と衝突検出を行った結果である。ドラゴンのように複雑な形状のOctreeを生成し、正しく衝突検出が行われていることがわかる。分散処理は4台のコンピュータを用いて評価した。使用したコンピュータはいずれも、 CPU Pentium4(3.00GHz)(登録商標)、メモリ1GBである。また、全てのコンピュータはギガビットイーサネット(登録商標)接続である。図11はドラゴンと正八面体のOctreeを分散処理で生成したときの処理時間を表している。図11からわかるようにドラゴンのような複雑な形状のOctree生成に分散処理が有効であることがわかる。更に、正八面体のように、単純な形状でも分散処理によって高速化できていることがわかる。本発明にて分散処理を行い、処理時間を約1/2に短縮することができた。
本発明によれば、衝突検出方法及び衝突検出システムにおいて、3種類のノードの定義を変更することにより、衝突検出に何ら影響を与えることなく、凸形状である物体に限らず、凹形状を含んだ物体についても、衝突検出のための情報としてのOctreeを生成することができるので、物体の多くが凹形状を含む実世界についてもOctreeを利用した衝突検出を行うことができる。
また、本発明によれば、衝突検出方法及び衝突検出システムにおいて、オクトリーの生成及びこれに基づく衝突検出を少なくとも複数のサーバに分散することにより、Octreeの生成時間を短縮することができるので、物体を形成する面数が多い場合でも、又は、物体が移動するたびにOctreeを生成し直す場合でも、リアルタイムでOctreeを生成し衝突検出を行うことができる。
衝突検出装置構成図であり、本発明の衝突検出方法を実現する衝突検出装置の構成の一例を示す。 分散処理のイメージを示す説明図である。 分散処理の例を示す説明図である。 ノードを分類したときの2次元的な模式図である。 全体の処理の流れを示す。 形状データの読み込み処理の流れを示す。 Octree生成処理の流れを示す。 衝突検出処理の流れを示す。 物体の移動処理の流れを示す。 凹形状を含んだ物体であるドラゴンのOctreeを生成し、正八面体と衝突検出を行った結果を示す。 ドラゴンと正八面体のOctreeを分散処理で生成した場合の処理時間を示す。 Octree説明図であり、正八面体のOctree表現例である。 Octree説明図であり、空間の8分割の例である。 Octree説明図であり、Octreeの例である。 Octree説明図であり、各ノードを分類したときの一例を示す2次元的な模式図である。 Octree説明図であり、凹形状を含んだ物体において生じる不都合の例を2次元的に示す。
符号の説明
1 クライアント
2 サーバ
3 オブジェクトファイル
4 ネットワーク
11 部分空間割当部
12 オブジェクト読込部
13 Octree生成部
14 衝突検出部
15 結果統合部
16、17、24、25 スレッド
21 オブジェクト読込部
22 Octree生成部
23 衝突検出部

Claims (10)

  1. 3次元空間における物体の衝突を検出する衝突検出システムにおける衝突検出方法であって、
    グレイノードを物体を形成する面が含まれている空間と定義し、ホワイトノードを物体を形成する面がまったく存在しない空間と定義し、ブラックノードを一定の深さに達したグレイノードと定義することにより、前記物体のオクトリーを生成し、
    当該生成したオクトリーに基づいて、衝突する面を検出することにより、前記物体の衝突を検出する
    ことを特徴とする衝突検出方法。
  2. 前記物体が凹形状を含み、
    当該生成したオクトリーに基づいて、衝突する面を検出することにより、前記凹形状を含む物体の衝突を検出する
    ことを特徴とする請求項1に記載の衝突検出方法。
  3. 3次元空間における物体の衝突を検出する衝突検出システムであって、
    グレイノードを物体を形成する面が含まれている空間と定義し、ホワイトノードを物体を形成する面がまったく存在しない空間と定義し、ブラックノードを一定の深さに達したグレイノードと定義することにより、前記物体のオクトリーを生成するオクトリー生成部と、
    当該生成したオクトリーに基づいて、衝突する面を検出することにより、前記物体の衝突を検出する衝突検出部とを備える
    ことを特徴とする衝突検出システム。
  4. クライアントと複数のサーバとからなる分散処理システムにおいて3次元空間における物体の衝突を検出する衝突検出方法であって、
    前記クライアントが、前記3次元空間を分割した部分空間を、少なくとも前記複数のサーバの各々に割り当て、
    少なくとも前記サーバの各々が、当該割り当てられた部分空間におけるオクトリーを生成し、
    少なくとも前記サーバの各々が、当該生成したオクトリーに基づいて当該部分空間における衝突を検出し、
    前記クライアントが、少なくとも前記サーバの各々における前記衝突検出の結果を統合する
    ことを特徴とする衝突検出方法。
  5. 前記クライアントが、前記部分空間を当該クライアントにも割り当て、当該割り当てられた部分空間におけるオクトリーを生成し、当該生成したオクトリーに基づいて当該部分空間における衝突を検出し、当該クライアント及び前記複数のサーバの各々における前記衝突検出の結果を統合する
    ことを特徴とする請求項4に記載の衝突検出方法。
  6. 前記物体が凹形状を含み、
    グレイノードを当該物体を形成する面が含まれている空間と定義し、ホワイトノードを当該物体を形成する面がまったく存在しない空間と定義し、ブラックノードを一定の深さに達したグレイノードと定義することにより、前記凹形状を含む物体のオクトリーを生成し、
    当該生成したオクトリーに基づいて、衝突する面を検出することにより、前記物体の衝突を検出する
    ことを特徴とする請求項4に記載の衝突検出方法。
  7. 複数の物体を分散させる処理において、各々の物体からオクトリーを生成し、前記クライアント及び複数のサーバの各々に対して、同一の部分空間を割り当てる
    ことを特徴とする請求項4に記載の衝突検出方法。
  8. 前記クライアント及び複数のサーバが、前記部分空間を割り当てられた場合、スレッドを生成し、前記スレッドにおいて、前記3次元空間における物体が記述されたオブジェクトファイルを読み込み、前記オブジェクトファイルの中の当該割り当てられた部分空間についてのオクトリーを生成し、当該生成したオクトリーに基づいて前記物体の衝突を検出する
    ことを特徴とする請求項4に記載の衝突検出方法。
  9. 前記クライアント及び複数のサーバが、前記部分空間を割り当てられた場合、当該物体の移動に伴って、当該物体の移動前について生成したオクトリーを廃棄し、新たにスレッドを生成し、前記新たに生成したスレッドにおいて、座標値を更新し、再度オクトリーを生成する
    ことを特徴とする請求項4に記載の衝突検出方法。
  10. クライアント及び複数のサーバからなる3次元空間における物体の衝突を検出する衝突検出システムであって、
    前記クライアントが、
    前記3次元空間を分割した部分空間を、前記クライアント及び複数のサーバの各々に割り当てる部分空間割当部と、
    当該割り当てられた部分空間におけるオクトリーを生成するオクトリー生成部と、
    当該生成したオクトリーに基づいて当該部分空間における衝突を検出する衝突検出部と、
    前記クライアント及び複数のサーバの各々における前記衝突検出の結果を統合する結果統合部とを備え、
    前記複数のサーバの各々が、
    当該割り当てられた部分空間におけるオクトリーを生成するオクトリー生成部と、
    当該生成したオクトリーに基づいて当該部分空間における衝突を検出する衝突検出部とを備える
    ことを特徴とする衝突検出システム。
JP2004129260A 2004-04-26 2004-04-26 衝突検出方法及び衝突検出システム Expired - Fee Related JP4444725B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004129260A JP4444725B2 (ja) 2004-04-26 2004-04-26 衝突検出方法及び衝突検出システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004129260A JP4444725B2 (ja) 2004-04-26 2004-04-26 衝突検出方法及び衝突検出システム

Publications (2)

Publication Number Publication Date
JP2005310021A true JP2005310021A (ja) 2005-11-04
JP4444725B2 JP4444725B2 (ja) 2010-03-31

Family

ID=35438690

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004129260A Expired - Fee Related JP4444725B2 (ja) 2004-04-26 2004-04-26 衝突検出方法及び衝突検出システム

Country Status (1)

Country Link
JP (1) JP4444725B2 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007219913A (ja) * 2006-02-17 2007-08-30 Hitachi Ltd 高分子結合予測システム
JP2008027254A (ja) * 2006-07-24 2008-02-07 Namco Bandai Games Inc プログラム、情報記憶媒体及び画像生成システム
US8130220B2 (en) 2007-02-02 2012-03-06 Samsung Electronics Co., Ltd. Method, medium and apparatus detecting model collisions
CN102509317A (zh) * 2011-09-27 2012-06-20 北京像素软件科技股份有限公司 一种实时碰撞检测***的实现方法
WO2013109602A1 (en) * 2012-01-16 2013-07-25 Intel Corporation Time-continuous collision detection using 3d rasterization
CN103295216A (zh) * 2012-02-24 2013-09-11 富士通株式会社 用于识别三维模型中的空间的方法和设备及图像处理***
CN113001551A (zh) * 2021-03-18 2021-06-22 青岛九维华盾科技研究院有限公司 基于八叉树结构分割的快速碰撞检测方法

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007219913A (ja) * 2006-02-17 2007-08-30 Hitachi Ltd 高分子結合予測システム
JP4589248B2 (ja) * 2006-02-17 2010-12-01 株式会社日立製作所 高分子結合予測システム
JP2008027254A (ja) * 2006-07-24 2008-02-07 Namco Bandai Games Inc プログラム、情報記憶媒体及び画像生成システム
US8130220B2 (en) 2007-02-02 2012-03-06 Samsung Electronics Co., Ltd. Method, medium and apparatus detecting model collisions
CN102509317A (zh) * 2011-09-27 2012-06-20 北京像素软件科技股份有限公司 一种实时碰撞检测***的实现方法
WO2013109602A1 (en) * 2012-01-16 2013-07-25 Intel Corporation Time-continuous collision detection using 3d rasterization
US9196083B2 (en) 2012-01-16 2015-11-24 Intel Corporation Time-continuous collision detection using 3D rasterization
CN103295216A (zh) * 2012-02-24 2013-09-11 富士通株式会社 用于识别三维模型中的空间的方法和设备及图像处理***
CN103295216B (zh) * 2012-02-24 2016-01-06 富士通株式会社 用于识别三维模型中的空间的方法和设备及图像处理***
CN113001551A (zh) * 2021-03-18 2021-06-22 青岛九维华盾科技研究院有限公司 基于八叉树结构分割的快速碰撞检测方法

Also Published As

Publication number Publication date
JP4444725B2 (ja) 2010-03-31

Similar Documents

Publication Publication Date Title
KR102009105B1 (ko) 실시간 가상 장면의 충돌체 사이의 충돌을 검출하기 위한 방법 및 단말과 저장 매체
US20190251657A1 (en) Method for detecting collision between cylindrical collider and convex body in real-time virtual scenario, terminal, and storage medium
WO2013111195A1 (ja) 描画データ生成装置及び画像描画装置
Wada et al. Homography based parallel volume intersection: Toward real-time volume reconstruction using active cameras
US20140354626A1 (en) Block Based Level of Detail Representation
JP2013037691A (ja) 加速構造を構築するためのシステム、方法、及びコンピュータプログラムプロダクト
US20240127535A1 (en) Indoor structured reconstruction method, apparatus, and computer-readable storage medium
Otaduy et al. CLODs: Dual Hierarchies for Multiresolution Collision Detection.
JPH0362276A (ja) グラフィクス処理装置及び方法並びにピクセル・メモリ装置
JP4444725B2 (ja) 衝突検出方法及び衝突検出システム
US10460506B2 (en) Method and apparatus for generating acceleration structure
CN115115773A (zh) 碰撞检测方法、装置、设备及存储介质
KR101560283B1 (ko) 3차원 영상 생성 방법, 이를 수행하는 3차원 영상 생성 장치 및 이를 저장하는 기록매체
Zhang et al. Slimmer: Accelerating 3D semantic segmentation for mobile augmented reality
CN116310060B (zh) 一种渲染数据的方法、装置、设备及存储介质
JP7161154B2 (ja) 階層バウンディングボリューム生成方法、コンピュータプログラム及びコンピュータ装置
Watanabe et al. Parameter identification of depth-depth-matching algorithm for liver following
US20230206567A1 (en) Geometry-aware augmented reality effects with real-time depth map
JP3724006B2 (ja) 高速レンダリング方法およびその装置
Du et al. DCCD: Distributed N-Body Rigid Continuous Collision Detection for Large-Scale Virtual Environments
Melero et al. Bounding-planes Octree: A new volume-based LOD scheme
JP6636001B2 (ja) 画像処理装置、画像処理方法およびプログラム
CN116758243B (zh) 基于实时点云流的场景网格划分生成及渲染显示方法
Kumar et al. Collision detection for volumetric objects using bounding volume hierarchy method
Fan et al. IBCD: a fast collision detection algorithm based on image space using OBB

Legal Events

Date Code Title Description
A621 Written request for application examination

Effective date: 20070423

Free format text: JAPANESE INTERMEDIATE CODE: A621

A977 Report on retrieval

Effective date: 20090910

Free format text: JAPANESE INTERMEDIATE CODE: A971007

A131 Notification of reasons for refusal

Effective date: 20090929

Free format text: JAPANESE INTERMEDIATE CODE: A131

A521 Written amendment

Effective date: 20091130

Free format text: JAPANESE INTERMEDIATE CODE: A523

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: 20100112

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)

Effective date: 20100114

Free format text: JAPANESE INTERMEDIATE CODE: A61

R150 Certificate of patent (=grant) or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Year of fee payment: 3

Free format text: PAYMENT UNTIL: 20130122

LAPS Cancellation because of no payment of annual fees