JP2005310021A - Collision detection method and collision detection system - Google Patents

Collision detection method and collision detection system 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
Japanese (ja)
Other versions
JP4444725B2 (en
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/en
Publication of JP2005310021A publication Critical patent/JP2005310021A/en
Application granted granted Critical
Publication of JP4444725B2 publication Critical patent/JP4444725B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

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

Abstract

<P>PROBLEM TO BE SOLVED: To provide a collision detection method for detecting a collision of an object including a recessed shape in a three dimensional space by using a distributed processing system at a high speed by utilizing an Octree. <P>SOLUTION: A client 1 allocates subspaces, which are formed by dividing the three-dimensional space, to at least each of a plurality of servers 2. Each of the servers 2 generates the Octree in the allocated subspace. At least each of the servers 2 detects the collision in the subspace on the basis of the generated Octree. The client 1 integrates results of collision detection by each of at least the plurality of the servers 2. <P>COPYRIGHT: (C)2006,JPO&NCIPI

Description

本発明は、衝突検出方法及び衝突検出システムに関し、特に、複数のコンピュータからなる分散処理システムにおいて、3次元空間内における凹形状を含む物体の衝突を、オクトリー(以下、Octreeとも言う)を利用して高速に検出する衝突検出方法及び衝突検出システムに関する。   The present invention relates to a collision detection method and a collision detection system, and in particular, in a distributed processing system including a plurality of computers, collision of an object including a concave shape in a three-dimensional space is utilized using octree (hereinafter also referred to as “Octree”). The present invention relates to a collision detection method and a collision detection system for detecting at high speed.

3次元空間内における物体の衝突検出法の多くは、物体相互の幾何学的な交差を求めるものである。例えば、AABBTree(Axis-Aligned Bounding Box Tree)(非特許文献1参照)、OBBTree (Oriented Bounding Box Tree)(非特許文献2参照)、 Sphere Tree(非特許文献3参照)等を利用した手法のように、外接する凸多面体を再起的に定義する手法や、Octree(非特許文献4参照)、ボロノイ分割、 BSP(Binary Space Partitioning )等によって空間を分割し、検出対象となる隣接物体対を絞り込む空間分割法と呼ばれる手法等がある。   Many object collision detection methods in a three-dimensional space require a geometrical intersection between objects. For example, a method using AABBTree (Axis-Aligned Bounding Box Tree) (see Non-Patent Document 1), OBBTree (Oriented Bounding Box Tree) (see Non-Patent Document 2), Sphere Tree (see Non-Patent Document 3), etc. In addition, a space that narrows down the adjacent object pairs to be detected by dividing the space by the method of recursively defining the circumscribed convex polyhedron, Octree (see Non-Patent Document 4), Voronoi partitioning, BSP (Binary Space Partitioning) There is a method called a division method.

凸多面体を再帰的に定義する手法は、物体の数が増加するにつれて、衝突検出コストが大きく増加する。それに対し、空間分割法は、物体の数の増加に対して衝突検出コストの増加は線形である。しかし、空間分割法を用いても、物体の数が非常に多い場合や、形状が非常に複雑な場合には、衝突検出のコストが大きくなってしまい、リアルタイムで衝突検出を行うのは困難である。   The method of recursively defining a convex polyhedron greatly increases the collision detection cost as the number of objects increases. On the other hand, in the space division method, the increase in collision detection cost is linear with the increase in the number of objects. However, even if the space division method is used, if the number of objects is very large or the shape is very complex, the cost of collision detection will increase, making it difficult to detect collisions in real time. is there.

ところで、Octree表現は、3次元空間内の物体を位置に関して階層的に表現したソリッドモデルである。図12は、3次元空間内の物体の一例である正八面体と、そのOctree表現例を示す。Octreeは、図13に示すように、x方向、y方向、z方向の各々で分割することによって、(3次元)空間を再帰的に8分割していき、分割木の各ノードが8つの子ノードをもつ8分木である。図14は、このようなOctreeの例である。Octreeの各ノードは、ノードの示す空間の位置と物体との位置関係によって、ブラック(以下、black とも言う)ノード、ホワイト(以下、white とも言う)ノード、グレイ(以下、grayとも言う)ノードの3種類に分類される。   By the way, the Octree representation is a solid model in which objects in a three-dimensional space are represented hierarchically with respect to positions. FIG. 12 shows a regular octahedron, which is an example of an object in a three-dimensional space, and an example of its Octree representation. As shown in FIG. 13, Octree recursively divides a (three-dimensional) space into eight by dividing each of the x direction, the y direction, and the z direction, and each node of the division tree has eight children. An octree with nodes. FIG. 14 is an example of such an Octtree. Each node of Octree is a black (hereinafter also referred to as black) node, white (hereinafter also referred to as white) node, or gray (hereinafter also referred to as gray) node according to the positional relationship between the space indicated by the node and the object. There are three types.

Octreeの生成手法として、例えば非特許文献5に示される手法が知られている(本発明においても、後述するように、基本的にはこの手法を用いる)。非特許文献5の手法においては、Octreeの3種類のノードは、各々、以下のように定義されている。即ち、
(1)grayノード:物体を形成する面が含まれている空間、つまり物体の内外にまたがる空間を示し、更に8つの子ノードに分割される。
(2)white ノード:物体を形成するいずれかの面に対して、面が持つ無限平面の外側、つまり物体の外部である空間を示す。
(3)black ノード:物体を形成する全ての面に対して、面が持つ無限平面の内側、つまり物体の内部である空間を示す。また、一定の深さに達したgrayノードは、black ノードとして扱われる。
As a method for generating Octree, for example, a method shown in Non-Patent Document 5 is known (also in the present invention, this method is basically used as described later). In the method of Non-Patent Document 5, the three types of nodes of Octtree are defined as follows. That is,
(1) Gray node: A space including a surface forming an object, that is, a space extending inside and outside the object, and further divided into eight child nodes.
(2) White node: A space that is outside the infinite plane of the surface, that is, outside the object, with respect to any surface forming the object.
(3) black node: A space that is inside the infinite plane of the surface, that is, inside the object, for all the surfaces forming the object. Also, a gray node that reaches a certain depth is treated as a black node.

図15は、非特許文献5の手法を用いて各ノードを分類した場合の結果を示す、2次元的な模式図である。図15(a)は空間を2度分割した結果を表している。(1)の空間(〇で1を囲んで示す空間、以下同じ)は、物体を形成する面の外側に位置するので、white ノードと分類される。(2)の空間は、物体を形成する全ての面の内側に位置するので、black ノードと分類される。残りの空間は、物体を形成する面を含むので、grayノードと分類される。図15(b)は、図15(a)において、そのgrayノードを更に分割し、かつ、Octreeの深さが一定の深さに達したとみなされたgrayノードを再分類した結果を表している。分割されたgrayノードの一部は、一定の深さに達しているため、black ノードに再分類される。これにより、物体の面を含んだ空間(元のgrayノードの空間)もblack ノードに分類される。   FIG. 15 is a two-dimensional schematic diagram showing the results when each node is classified using the method of Non-Patent Document 5. FIG. 15A shows the result of dividing the space twice. The space (1) (the space surrounded by 1 with ◯, the same applies hereinafter) is classified as a white node because it is located outside the surface forming the object. Since the space of (2) is located inside all the surfaces forming the object, it is classified as a black node. The remaining space is classified as a gray node because it includes the surfaces forming the object. FIG. 15 (b) shows the result of further dividing the gray node in FIG. 15 (a) and reclassifying the gray node deemed to have reached a certain depth in the Octtree. Yes. Since some of the divided gray nodes have reached a certain depth, they are reclassified as black nodes. As a result, the space including the surface of the object (the space of the original gray node) is also classified as a black node.

以上のように、各ノードは3種類のノードに分類される。しかし、 blackノードの「物体を形成する全ての面に対して、面が持つ無限平面の内側である」という定義によって、凹形状を含んだ物体については、そのOctreeを生成することが困難である。即ち、凹形状を含んだ物体においては、物体の内部であっても「物体を形成する全ての無限平面の内側である」とはならない。このために、3種類のノードのうち、 blackノードをうまく生成することができない。   As described above, each node is classified into three types of nodes. However, it is difficult to generate an octree for an object that contains a concave shape by the definition of the black node, which is inside the infinite plane of the surface for all the surfaces that form the object. . That is, an object including a concave shape does not mean “inside all infinite planes forming the object” even inside the object. For this reason, of the three types of nodes, the black node cannot be generated well.

図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.
FIG. 16 is a two-dimensional schematic diagram showing problems when the method of Non-Patent Document 5 is used for an object including a concave shape. The upper center is concave. The region (1) is located outside the surface (infinite plane) a, although it is inside the object. Similarly, the region (2) is located outside the surface (an infinite plane) b. As can be seen from FIG. 16, in the case of an object including a concave shape, it is difficult to determine whether the space is located inside or outside the object.
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, PM: "Approximating Polyhedra with Spheres for Time-Critical Collision Detection", ACM Trans Graphics, Vol.15, No.3, pp.179-210, 1996. Yoshifumi Kitamura, Haruo Takemura, Afjanandra, Fumiro Kishino: "Detection of collision surface between 3D objects using Octree and polyhedron representation", Journal of Robotics, Vol.14, N.5, pp.121-130, September 1996. Hiroshi Nobo, Shozo Fukuda, Takashi Arimoto: "Brep to Octtree Conversion Algorithm and Its Evaluation", IPSJ Journal, Vol.28, No.10, pp.1-10, May 2001.

前述のように、Octreeを利用した衝突検出法では、物体ごとにOctreeを生成し、各々のOctreeを並列にたどることによって衝突を検出する。しかし、従来は、前述の非特許文献5に示すように、凸形状である物体のOctree生成手法は知られているが、凹形状を含んだ物体には対応していない。実世界においては、一般的な物体の多くが凹形状を含んでいるので、凸形状のみに対応しているのでは実用的とはいえない。   As described above, in the collision detection method using the octree, an octree is generated for each object, and the collision is detected by tracing each octree in parallel. However, conventionally, as shown in the above-mentioned Non-Patent Document 5, an octree generation method for an object having a convex shape is known, but does not support an object including a concave shape. In the real world, since many common objects include a concave shape, it is not practical to support only the convex shape.

本発明者の検討によれば、前述の非特許文献5の手法において、凹形状を含んだ物体のOctree生成が困難な原因は、前述の3種類のノードの定義にある。そこで、本発明者は、3種類のノードの定義を、凹形状を含んだ物体のOctree生成が可能なように変更(拡張)すれば、凹形状を含んだ物体についても、Octreeを利用した衝突検出が可能になると考えた。   According to the study of the present inventor, in the method of Non-Patent Document 5 described above, the reason why it is difficult to generate an Octtree of an object including a concave shape is the definition of the above-described three types of nodes. Therefore, the present inventor modifies (expands) the definition of the three types of nodes so that an octree of an object including a concave shape can be generated, and the collision using an octree is also applied to an object including a concave shape. We thought that detection would be possible.

また、従来は、物体を形成する面数が多い場合、Octree生成時間が非常に長くなってしまっていた。このため、衝突検出の実用化の障害となっていた。更に、Octreeを利用した衝突検出では、物体が移動するたびにOctreeを生成しなおさなければならない。このため、Octreeの生成時間が長いと、リアルタイムで衝突検出を行うことが困難になる。   Conventionally, when the number of surfaces on which an object is formed is large, the octree generation time has become very long. For this reason, it has been an obstacle to the practical use of collision detection. Furthermore, in collision detection using an octree, the octree must be regenerated every time the object moves. For this reason, if the generation time of the octree is long, it becomes difficult to perform collision detection in real time.

本発明者の検討によれば、衝突検出の実用化のためには、Octree生成時間の短縮が最も重要である。そこで、本発明者は、Octreeの生成を、複数のコンピュータを用いた分散処理、いわゆるグリッドコンピューティング(grid computing)によれば、複数のコンピュータでの並列処理により高速で大量の処理を実行できるので、Octree生成時間を短縮することができると考えた。   According to the study of the present inventor, shortening of the Octtree generation time is the most important for practical use of collision detection. Therefore, the present inventor can generate a large amount of processing at high speed by parallel processing on a plurality of computers, according to distributed processing using a plurality of computers, that is, so-called grid computing. I thought it would be possible to shorten the generation time of the Octtree.

本発明は、3次元空間内における凹形状を含む物体の衝突を、Octreeを利用して検出する衝突検出方法を提供することを目的とする。   It is an object of the present invention to provide a collision detection method for detecting a collision of an object including a concave shape in a three-dimensional space using an octree.

また、本発明は、3次元空間内における凹形状を含む物体の衝突を、Octreeを利用して検出する衝突検出システムを提供することを目的とする。   It is another object of the present invention to provide a collision detection system that detects the collision of an object including a concave shape in a three-dimensional space using an Octtree.

また、本発明は、クライアント及び複数のサーバからなる分散処理システムを用いて、3次元空間内における凹形状を含む物体の衝突を、Octreeを利用して高速に検出する衝突検出方法を提供することを目的とする。   In addition, the present invention provides a collision detection method for detecting a collision of an object including a concave shape in a three-dimensional space at high speed using an Octree using a distributed processing system including a client and a plurality of servers. With the goal.

また、本発明は、クライアント及び複数のサーバからなる分散処理システムにおいて、3次元空間内における凹形状を含む物体の衝突を、Octreeを利用して高速に検出する衝突検出システムを提供することを目的とする。   It is another object of the present invention to provide a collision detection system for detecting a collision of an object including a concave shape in a three-dimensional space at high speed using an octree in a distributed processing system including a client and a plurality of servers. And

本発明の衝突検出方法は、3次元空間における物体の衝突を検出する衝突検出システムにおける衝突検出方法である。本発明の衝突検出方法においては、グレイノードを物体を形成する面が含まれている空間と定義し、ホワイトノードを物体を形成する面がまったく存在しない空間と定義し、ブラックノードを一定の深さに達したグレイノードと定義することにより、前記物体のオクトリーを生成し、当該生成したオクトリーに基づいて、衝突する面を検出することにより、前記物体の衝突を検出する。   The collision detection method of the present invention is a collision detection method in a collision detection system that detects a collision of an object in a three-dimensional space. In the collision detection method of the present invention, a gray node is defined as a space including a surface forming an object, a white node is defined as a space where no surface forming an object exists, and a black node is defined at a certain depth. By defining the gray node reaching the height, an octree of the object is generated, and a collision surface is detected based on the generated octree, thereby detecting the collision of the object.

本発明の衝突検出システムは、3次元空間における物体の衝突を検出する。本発明の衝突検出システムは、グレイノードを物体を形成する面が含まれている空間と定義し、ホワイトノードを物体を形成する面がまったく存在しない空間と定義し、ブラックノードを一定の深さに達したグレイノードと定義することにより、前記物体のオクトリーを生成するオクトリー生成部と、当該生成したオクトリーに基づいて、衝突する面を検出することにより、前記物体の衝突を検出する衝突検出部とを備える。   The collision detection system of the present invention detects an object collision in a three-dimensional space. The collision detection system of the present invention defines a gray node as a space including a surface forming an object, a white node as a space where no surface forming an object exists, and a black node at a certain depth. An octree generation unit that generates an octree of the object by defining it as a gray node that has reached, and a collision detection unit that detects a collision of the object by detecting a collision surface based on the generated octree With.

本発明の衝突検出方法は、クライアントと複数のサーバとからなる分散処理システムにおいて3次元空間における物体の衝突を検出する。本発明の衝突検出方法においては、前記クライアントが、前記3次元空間を分割した部分空間を、少なくとも前記複数のサーバの各々に割り当て、少なくとも前記サーバの各々が、当該割り当てられた部分空間におけるオクトリーを生成し、少なくとも前記サーバの各々が、当該生成したオクトリーに基づいて当該部分空間における衝突を検出し、前記クライアントが、少なくとも前記サーバの各々における前記衝突検出の結果を統合する。   The collision detection method of the present invention detects an object collision in a three-dimensional space in a distributed processing system composed of a client and a plurality of servers. In the collision detection method of the present invention, the client assigns a partial space obtained by dividing the three-dimensional space to at least each of the plurality of servers, and at least each of the servers assigns an octree in the assigned partial space. And at least each of the servers detects a collision in the subspace based on the generated octree, and the client integrates at least the results of the collision detection in each of the servers.

本発明の衝突検出システムは、クライアント及び複数のサーバからなる3次元空間における物体の衝突を検出する。本発明の衝突検出システムにおいては、前記クライアントが、前記3次元空間を分割した部分空間を、前記クライアント及び複数のサーバの各々に割り当てる部分空間割当部と、当該割り当てられた部分空間におけるオクトリーを生成するオクトリー生成部と、当該生成したオクトリーに基づいて当該部分空間における衝突を検出する衝突検出部と、前記クライアント及び複数のサーバの各々における前記衝突検出の結果を統合する結果統合部とを備える。前記複数のサーバの各々が、当該割り当てられた部分空間におけるオクトリーを生成するオクトリー生成部と、当該生成したオクトリーに基づいて当該部分空間における衝突を検出する衝突検出部とを備える。   The collision detection system of the present invention detects a collision of an object in a three-dimensional space composed of a client and a plurality of servers. In the collision detection system of the present invention, the client generates a subspace allocating unit that allocates the subspace obtained by dividing the three-dimensional space to each of the client and the plurality of servers, and generates an octree in the allocated subspace. An octree generation unit that performs a collision detection unit that detects a collision in the partial space based on the generated octree, and a result integration unit that integrates the results of the collision detection in each of the client and the plurality of servers. Each of the plurality of servers includes an octree generation unit that generates an octree in the allocated subspace, and a collision detection unit that detects a collision in the subspace based on the generated octree.

本発明の衝突検出方法及び衝突検出システムによれば、grayノードを物体を形成する面が含まれている空間と定義し、white ノードを物体を形成する面がまったく存在しない空間と定義し、black ノードを一定の深さに達したgrayノードと定義する。前述のように、本発明者の検討によれば、前述の非特許文献5の手法において凹形状を含んだ物体のOctree生成が困難な原因は、3種類のノードの定義にある。そこで、3種類のノードの定義を前述のように変更(拡張)する。このように3種類のノードの定義を拡張することによって、凹形状を含んだ物体のOctreeを生成することができる。即ち、black ノードが物体の表面にのみ存在し、サーフェスモデルとなる。衝突検出とは衝突する面を検出することであるので、サーフェスモデルでも衝突検出に何ら問題は無い。これにより、凸形状である物体のOctreeの生成に限らず、凹形状を含んだ物体についても、衝突検出のための情報としてのOctreeを生成することができる。従って、凹形状を含んだ物体についてもOctreeを利用した衝突検出を行うことができ、物体の多くが凹形状を含む実世界についても衝突検出を行うことができる。   According to the collision detection method and collision detection system of the present invention, a gray node is defined as a space including a surface forming an object, a white node is defined as a space where no surface forming an object exists, and black A node is defined as a gray node that reaches a certain depth. As described above, according to the study of the present inventor, the reason why it is difficult to generate an octree of an object including a concave shape in the method of Non-Patent Document 5 described above is the definition of three types of nodes. Therefore, the definition of the three types of nodes is changed (extended) as described above. By extending the definition of the three types of nodes in this way, an octree of an object including a concave shape can be generated. That is, the black node exists only on the surface of the object and becomes a surface model. Since collision detection is to detect a collision surface, there is no problem in collision detection even with a surface model. Thereby, it is possible to generate an octree as information for collision detection not only for the generation of an octree of an object having a convex shape but also for an object including a concave shape. Therefore, it is possible to perform collision detection using an octree for an object including a concave shape, and it is also possible to perform collision detection for the real world where many of the objects include a concave shape.

また、本発明の衝突検出方法及び衝突検出システムによれば、クライアントが部分空間を少なくとも複数のサーバに割り当て、サーバがOctreeを生成して衝突を検出し、クライアントが衝突検出の結果を統合する。前述のように、本発明者の検討によれば、衝突検出の実用化のためには、Octree生成時間の短縮が最も重要である。そこで、Octreeの生成と衝突検出とを複数のコンピュータを用いた並列処理により行う。このようにOctree生成処理及び衝突検出処理を分散することにより、高速で大量の処理を実行できるので、Octree生成時間を短縮することができる。これにより、物体を形成する面数が多い場合でも、Octree生成時間を短縮することができ、この結果、物体が移動するたびにOctreeを生成し直す際も、Octreeの生成時間が短いので、リアルタイムで衝突検出を行うことができる。   According to the collision detection method and collision detection system of the present invention, the client allocates a partial space to at least a plurality of servers, the server generates an Octtree to detect the collision, and the client integrates the results of the collision detection. As described above, according to the study by the present inventor, it is most important to shorten the time for generating the Octtree for practical use of collision detection. Therefore, Octtree generation and collision detection are performed by parallel processing using multiple computers. By distributing the octree generation processing and the collision detection processing in this way, a large amount of processing can be executed at high speed, and the octree generation time can be shortened. As a result, even when the number of surfaces forming the object is large, it is possible to shorten the octree generation time.As a result, even when the octree is regenerated every time the object moves, the octree generation time is short, so real time Can detect collisions.

図1は、衝突検出システム構成図であり、本発明の衝突検出システムの構成の一例を示す。この衝突検出システムは、複数のコンピュータ、即ち、クライアント1及び複数のサーバ2と、オブジェクトファイル(obj ファイル)3と、これらの間を接続するネットワーク4とからなり、3次元空間における物体の衝突を検出する。衝突検出には、Octreeを生成して、これを利用する。ネットワーク4は、例えばインターネット、LAN(Local Area Network)等からなる。   FIG. 1 is a block diagram of a collision detection system and shows an example of the structure of the collision detection system of the present invention. This collision detection system includes a plurality of computers, that is, a client 1 and a plurality of servers 2, an object file (obj file) 3, and a network 4 connecting them, and detects collisions of objects in a three-dimensional space. To detect. For collision detection, an Octtree is generated and used. The network 4 includes, for example, the Internet, a LAN (Local Area Network), and the like.

クライアント1は衝突検出システムに1個設けられる。クライアント1は、部分空間割当部11、オブジェクト読込部12、Octree生成部13、衝突検出部14、結果統合部15を備える。即ち、クライアント1は、衝突検出システムの複数のコンピュータの中で、3次元空間を分割した部分空間を割り当て、衝突検出の結果を統合する処理を実行するコンピュータである。なお、3次元空間の部分空間への分割は、当該割り当て処理に先立って、クライアント1及び複数のサーバ2のいずれにおいても行われる。   One client 1 is provided in the collision detection system. The client 1 includes a partial space allocation unit 11, an object reading unit 12, an octree generation unit 13, a collision detection unit 14, and a result integration unit 15. That is, the client 1 is a computer that executes a process of allocating a partial space obtained by dividing a three-dimensional space and integrating the results of collision detection among a plurality of computers of the collision detection system. Note that the division of the three-dimensional space into partial spaces is performed in both the client 1 and the plurality of servers 2 prior to the assignment process.

サーバ2は衝突検出システムに複数個(N個、例えばN=1〜8、16や32等でも良い)設けられる。サーバ2は、オブジェクト読込部21、Octree生成部22、衝突検出部23を備える。即ち、サーバ2は、衝突検出システムの複数のコンピュータの中で、Octreeの生成及びこれに基づく衝突の検出処理のみを実行するコンピュータである。サーバ2を区別する場合、サーバ2A、2B、・・・2Nと表す。サーバ2Aのオブジェクト読込部を21Aと表し、Octree生成部を22Aと表し、衝突検出部を23Aと表す(他のサーバ2B等についても同じ)。   A plurality of servers 2 (N, for example, N = 1 to 8, 16 or 32, etc.) may be provided in the collision detection system. The server 2 includes an object reading unit 21, an octree generation unit 22, and a collision detection unit 23. In other words, the server 2 is a computer that executes only the generation of the Octtree and the collision detection process based on the Octtree among the plurality of computers of the collision detection system. When the servers 2 are distinguished, they are represented as servers 2A, 2B,. The object reading unit of the server 2A is represented as 21A, the octree generation unit is represented as 22A, and the collision detection unit is represented as 23A (the same applies to other servers 2B and the like).

ここで、本発明は、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生成時間を短縮する。   Here, the present invention shortens the time for generating the octree by using distributed processing for the octree generation processing and the collision detection processing. That is, as a means for shortening the Octtree generation time, distributed processing using a plurality of computers, so-called grid computing is performed. Grid computing is described in, for example, Charles Hansen, Chris Johnson “Graphics Applications for Grid Computing”, IEEE Computer Graphics and Applications, Vol. 23, No. 2, pp. 20-21, March / April 2003. . Grid computing is a system that virtually creates a high-performance computer by connecting a plurality of computers via a network. By performing parallel processing on a plurality of computers, a large amount of processing can be executed at high speed even if the performance per unit is low. In the present invention, for example, grid computing is used to reduce the time for generating the octree.

クライアント1において、部分空間割当部11は、3次元空間を分割した部分空間を、少なくとも複数のサーバ2の各々に割り当てる。この例では、部分空間割当部11は、部分空間をクライアント1(自コンピュータ)にも割り当てる。これにより、クライアント1にもOctree生成等の処理を行わせ、衝突検出システムにおいて資源利用の無駄が生じないようにすることができる。なお、部分空間を複数のサーバ2の全てに割り当てる必要はない。部分空間を割り当てられたサーバ2がその時点での衝突検出システムを構成すると考えて良い。   In the client 1, the partial space allocation unit 11 allocates a partial space obtained by dividing the three-dimensional space to at least each of the plurality of servers 2. In this example, the partial space allocation unit 11 allocates the partial space to the client 1 (own computer). As a result, the client 1 can also perform processing such as octree generation, so that resource use is not wasted in the collision detection system. It is not necessary to allocate the partial space to all of the plurality of servers 2. It may be considered that the server 2 to which the partial space is allocated constitutes the collision detection system at that time.

部分空間割当部11は、部分空間を割り当てた結果を、当該サーバ2に通知する。実際には、当該通知に代えて、割り当てた部分空間についてのOctreeの生成依頼が行われる。例えば、クライアント1は、サーバ2Aに部分空間(1)〜(3)を割り当てた場合、サーバ2Aに部分空間(1)〜(3)についてのOctreeの生成依頼を行う。クライアント1は、部分空間を割り当てた全てのサーバ2にOctreeの生成依頼を行った後、自コンピュータにおけるOctreeの生成を行う。   The partial space allocation unit 11 notifies the server 2 of the result of the partial space allocation. Actually, instead of the notification, an Octree generation request for the allocated subspace is made. For example, when the client 1 assigns the partial spaces (1) to (3) to the server 2A, the client 1 requests the server 2A to generate an Octtree for the partial spaces (1) to (3). The client 1 sends an octree generation request to all the servers 2 to which the partial space is allocated, and then generates an octree on its own computer.

ここで、この例では、Octreeを利用するために、3次元空間を8分割する。これに応じて、クライアント1及び複数のサーバ2(システム中のコンピュータ)の合計数Nを最大でN=8とする。即ち、コンピュータの台数は1〜8台となり、Nの最大値はN=8である。N=8の場合、8分割した3次元空間を8個のコンピュータで処理することができ、簡易な構成を採用することができる。   Here, in this example, the three-dimensional space is divided into eight parts in order to use the octree. Accordingly, the total number N of the clients 1 and the plurality of servers 2 (computers in the system) is set to N = 8 at the maximum. That is, the number of computers is 1 to 8, and the maximum value of N is N = 8. In the case of N = 8, the eight-divided three-dimensional space can be processed by eight computers, and a simple configuration can be adopted.

このように複数のコンピュータで分散処理を行うにあたって、コンピュータは1台のクライアント1と複数のサーバ2に分けられる。図2に示すように、クライアント1がサーバ2に処理を依頼し、サーバ2は処理結果をクライアント1に返す。これにより、3次元空間をN個に分散して処理する。なお、図2はサーバ2を4個設けた(N=5の)例である。   Thus, when performing distributed processing with a plurality of computers, the computer is divided into one client 1 and a plurality of servers 2. As shown in FIG. 2, the client 1 requests the server 2 for processing, and the server 2 returns the processing result to the client 1. Thereby, the three-dimensional space is distributed to N pieces for processing. FIG. 2 shows an example in which four servers 2 are provided (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に分散する。   In the present invention, distributed processing is performed in Octtree generation processing and collision detection processing. Since Octree generation divides the space, distributed processing is performed by allocating the divided partial space to each server. For example, as shown in FIG. 3, when two servers are used (N = 2), the server 2A (server 1 in FIG. 3) performs the processing of the partial spaces (1) to (3) and the server 2B (FIG. 3). In FIG. 3, the server 2) can perform processing of the partial spaces (4) to (6), and the client 1 can perform processing of the partial spaces (7) and (8). In the present invention, the entire space is divided into eight, and the divided partial spaces are distributed to the client 1 and the servers 2A and 2B.

また、異なる3次元空間の処理において、異なる3次元空間を同一に分割し(例えば、8分割し)、クライアント1及び複数のサーバ2の各々に対して、異なる3次元空間の同一の部分空間を割り当てる。これにより、各々のコンピュータに常に決められた部分空間を割り当て、処理コストの高いOctreeの結合の処理を簡易に行うことができる。   Further, in the processing of different three-dimensional spaces, the different three-dimensional spaces are divided equally (for example, divided into eight), and the same partial space of the different three-dimensional spaces is divided for each of the client 1 and the plurality of servers 2. assign. As a result, it is possible to always assign a determined partial space to each computer, and to easily perform the process of combining Octtrees with high processing costs.

即ち、衝突検出の処理コストは、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間の通信回数も少なくなる。   That is, the processing cost for collision detection is so small that it does not need to be distributed as compared to the processing cost for generating the Octtree. However, in order to perform collision detection with only one computer, it is necessary to combine the Octtree parts generated by the client 1 and the server 2. Joining Octree is expensive to process. Therefore, a predetermined partial space is always assigned to the client 1 and the server 2, respectively, an Octree is generated, and collision detection is performed. For example, (1) to (3) of the partial space divided into eight parts with respect to the object a are set to the server 2A, (4) to (6) are set to the server 2B, and (7) and (8) are set to the client 1. Is assigned to the object b, (1) to (3) are assigned to the server 2A, (4) to (6) are assigned to the server 2B, and (7) and (8) are assigned to the client 1. The client 1 obtains the final collision detection result by integrating the collision detection results in the servers 2A and 2B and the client 1, that is, the surface information determined to be “collision”. By integrating only the collision detection results, the processing cost is lower than when collision detection is performed after combining the octrees, and the number of communications between the client 1 and the servers 2A and 2B is also reduced.

オブジェクト読込部12は、obj ファイル3を読み込んで、所定の記憶領域に格納する。この時、この例では、当該部分空間ではなく、obj ファイル3の全体を読み込む。obj ファイル3は、衝突検出の処理対象である3次元空間における当該物体についてのデータを、オブジェクト形式(拡張子が.objであるファイル形式)で格納する。obj ファイル3(のデータ)は、本発明に従って、3次元空間において凹形状を含む物体を含むことができる。読み込まれたobj ファイル3の中の当該割り当てられた部分空間についてのみが、クライアント1における処理対象とされる。   The object reading unit 12 reads the obj file 3 and stores it in a predetermined storage area. At this time, in this example, not the subspace but the entire obj file 3 is read. The obj file 3 stores data on the object in the three-dimensional space that is the object of collision detection processing in an object format (file format with an extension of .obj). The obj file 3 (data) may include objects that include concave shapes in a three-dimensional space in accordance with the present invention. Only the allocated partial space in the read obj file 3 is a processing target in the client 1.

Octree生成部13は、Octreeの生成依頼を受けると、obj ファイル3の中の当該割り当てられた部分空間におけるOctreeを生成する。即ち、この例では、クライアント1にも部分空間が割り当てられるので、クライアント1もOctreeを生成する。クライアント1においてOctreeを生成しない場合、Octree生成部13は省略される。obj ファイル3が凹形状を含む物体のデータを含む場合、Octree生成部13は、凹形状を含む物体のOctreeを生成する。   When the Octree generation unit 13 receives the generation request for the Octtree, the Octree generation unit 13 generates an Octtree in the allocated subspace in the obj file 3. That is, in this example, since a partial space is also allocated to the client 1, the client 1 also generates an Octtree. When the client 1 does not generate an octree, the octree generation unit 13 is omitted. When the obj file 3 includes data of an object including a concave shape, the octree generation unit 13 generates an octree of the object including the concave shape.

ここで、本発明は、空間分割法を拡張することにより、凹形状を含んだ物体のOctree生成を可能にする。即ち、凹形状を含んだ物体のOctree生成を行うために、前述の非特許文献5の手法を変更(拡張)する。非特許文献5の手法において凹形状を含んだ物体のOctree生成が困難な原因は、3種類のノードの定義にある。そこで、3種類のノードの定義を以下のように拡張した。即ち、
(1)grayノード:物体を形成する面が含まれている空間と定義する。即ち、物体の内外にまたがる空間を示し、更に8つの子ノードに分割される。grayノードの定義は非特許文献5と同様である。
(2)white ノード:物体を形成する面がまったく存在しない空間と定義する。
(3)black ノード:一定の深さに達したgrayノードと定義する。
Here, the present invention makes it possible to generate an octree of an object including a concave shape by extending the space division method. That is, in order to generate an octree of an object including a concave shape, the method of Non-Patent Document 5 described above is changed (extended). The reason why it is difficult to generate an octree of an object including a concave shape in the method of Non-Patent Document 5 is the definition of three types of nodes. Therefore, the definition of the three types of nodes has been expanded as follows. That is,
(1) gray node: defined as a space including a surface forming an object. That is, it indicates a space that extends inside and outside the object, and is further divided into eight child nodes. The definition of the gray node is the same as in Non-Patent Document 5.
(2) white node: defined as a space where there is no surface forming an object.
(3) black node: defined as a gray node that reaches a certain depth.

このように、3種類のノードの定義を拡張することによって、凹形状を含んだ物体のOctreeを生成することができる。図4はノードの定義を拡張して各ノードを分類したときの2次元的な模式図である。図4(a)は空間を2度分割した結果である。(1)の空間は、物体を形成する面がまったく存在しない空間なので、white ノードと分類されている。残りの空間は、物体を形成する面を含んでいるので、grayノードと分類されている。図4(b)は、図4(a)のgrayノードを更に分割し、かつ、Octreeの深さが一定の深さに達したとみなされた結果である。図4(b)から、black ノードが物体の表面にのみ存在することが判る。即ち、サーフェスモデルとなるのである。衝突検出とは衝突する面を検出することであるので、サーフェスモデルでも衝突検出に何ら問題は無い。   Thus, by extending the definition of the three types of nodes, an octree of an object including a concave shape can be generated. FIG. 4 is a two-dimensional schematic diagram when each node is classified by extending the definition of the node. FIG. 4A shows the result of dividing the space twice. The space of (1) is classified as a white node because it is a space where there is no surface forming an object. The remaining space is classified as a gray node because it contains the surfaces that form the object. FIG. 4B is a result of further dividing the gray node of FIG. 4A and assuming that the depth of the Octtree has reached a certain depth. From FIG. 4B, it can be seen that the black node exists only on the surface of the object. That is, it becomes a surface model. Since collision detection is to detect a collision surface, there is no problem in collision detection even with a surface model.

衝突検出部14は、Octreeが生成されると、当該生成したOctreeに基づいて、当該部分空間における衝突を検出する。即ち、この例では、クライアント1にも部分空間が割り当てられるので、クライアント1も衝突検出を行う。クライアント1において衝突検出を行わない場合、衝突検出部14は省略される。この例では、各ノードの分類の結果がサーフェスモデルとなるので、衝突検出部14は、当該生成したOctreeに基づいて、衝突する面を検出する。本発明のノードの定義に従って、衝突検出の対象である複数の物体において、双方のblack ノードが重なった位置(部分空間)が衝突部分(実際には、衝突の可能性がある部分)として検出(抽出)される。これにより、衝突検出部14は、凸形状の物体のみならず、凹形状を含む物体の衝突を検出することができる。   When the octree is generated, the collision detection unit 14 detects a collision in the partial space based on the generated octree. That is, in this example, since a partial space is also allocated to the client 1, the client 1 also performs collision detection. When the collision detection is not performed in the client 1, the collision detection unit 14 is omitted. In this example, the result of classification of each node is a surface model, so the collision detection unit 14 detects a collision surface based on the generated octree. According to the definition of the node of the present invention, the position (subspace) where both black nodes overlap is detected as a collision part (actually a part where collision is possible) in a plurality of objects that are targets of collision detection ( Extracted). Thereby, the collision detection unit 14 can detect not only a convex object but also a collision of an object including a concave shape.

結果統合部15は、少なくとも複数のサーバ2の各々における衝突検出の結果を統合する。この例では、クライアント1にも部分空間を割り当てるので、結果統合部15は、クライアント1及び複数のサーバ2の各々における衝突検出の結果を統合する。この衝突検出の結果の統合処理において、結果統合部15は、衝突が検出された面を全て集約することにより、衝突検出の結果を得る。   The result integration unit 15 integrates the results of collision detection in at least each of the plurality of servers 2. In this example, since a partial space is also allocated to the client 1, the result integration unit 15 integrates the results of collision detection in each of the client 1 and the plurality of servers 2. In the integration process of the collision detection result, the result integration unit 15 obtains the collision detection result by collecting all the surfaces on which the collision is detected.

例えば、第1の正八面体(図12参照)のある頂点が第2の正八面体のある平面に衝突したとする。本発明により、black ノードは物体の表面にのみ存在する。従って、この場合、当該頂点の先端部分と当該平面の一部とにおいて、双方のblack ノードが重なる。そこで、当該black ノードの重なりにより、当該位置において第1及び第2の正八面体が「衝突した」と判断される。そして、第1の正八面体の当該頂点を含む4つの面が「衝突した」と判断された面とされ、第2の正八面体の当該平面が「衝突した」と判断された面とされる。従って、これらの面の面番号(のみ)がクライアント1の結果統合部15に通知される。従って、通信量は少なくて済む。面番号は、予めユニークに定められ、クライアント1及びサーバ2の各々にobj ファイル3 の一部として与えられる。結果統合部15は、受信した面番号に基づいて、これらの「衝突した」と判断された面番号を集約する(複数の衝突した面を特定する)ことによって、最終的な衝突検出結果を求める。なお、以上の説明は、正八面体についてのものであるので、凹形状を含まないが、本発明により凹形状を含む物体についても、同様に衝突を検出することができる。また、衝突した位置の厳密な座標位置は他の手段によって求めることができる。   For example, it is assumed that a vertex having a first regular octahedron (see FIG. 12) collides with a plane having a second regular octahedron. According to the present invention, the black node exists only on the surface of the object. Therefore, in this case, both black nodes overlap at the tip portion of the vertex and a part of the plane. Therefore, it is determined that the first and second octahedrons have “collided” at the position due to the overlap of the black nodes. Then, the four surfaces including the vertex of the first octahedron are determined as “collised”, and the plane of the second octahedron is determined as “collised”. Therefore, the face number (only) of these faces is notified to the result integrating unit 15 of the client 1. Accordingly, the amount of communication is small. The face number is uniquely determined in advance and given to each of the client 1 and the server 2 as a part of the obj file 3. The result integration unit 15 obtains a final collision detection result by aggregating the surface numbers determined as “collision” based on the received surface numbers (identifying a plurality of collision surfaces). . Although the above description is about an octahedron and does not include a concave shape, a collision can be similarly detected for an object including a concave shape according to the present invention. Further, the exact coordinate position of the collision position can be obtained by other means.

サーバ2の各々において、オブジェクト読込部21は、obj ファイル3の全体を読み込んで、所定の記憶領域に格納する。従って、少なくともサーバ2の各々がobj ファイル3を読み込む。obj ファイル3(のデータ)は、3次元空間において凹形状を含む物体を含むことができる。読み込まれたobj ファイル3の中の当該割り当てられた部分空間についてのみが、当該サーバ2における処理対象とされる。   In each of the servers 2, the object reading unit 21 reads the entire obj file 3 and stores it in a predetermined storage area. Accordingly, at least each of the servers 2 reads the obj file 3. The obj file 3 (data) can include an object including a concave shape in a three-dimensional space. Only the assigned partial space in the read obj file 3 is a processing target in the server 2.

サーバ2の各々において、Octree生成部22は、Octreeの生成依頼を受けると、obj ファイル3の中の当該割り当てられた部分空間におけるOctreeを生成する。従って、少なくともサーバ2の各々が、当該割り当てられた部分空間におけるOctreeを生成する。前述のOctree生成部13と同様に、obj ファイル3が凹形状を含む物体のデータを含む場合、Octree生成部22は、凹形状を含む物体のOctreeを生成する。   In each of the servers 2, the Octree generation unit 22 generates an Octree in the allocated subspace in the obj file 3 when receiving an Octree generation request. Accordingly, at least each of the servers 2 generates an Octtree in the allocated subspace. Similar to the above-described octree generation unit 13, when the obj file 3 includes data on an object including a concave shape, the octree generation unit 22 generates an octree of the object including the concave shape.

また、サーバ2の各々において、衝突検出部23は、Octreeが生成されると、当該生成したOctreeに基づいて、当該部分空間における衝突を検出する。従って、少なくともサーバ2の各々が、当該生成したOctreeに基づいて、当該部分空間における衝突を検出する。前述の衝突検出部14と同様に、衝突検出部23は、当該生成したOctreeに基づいて衝突する面を検出し、凸形状の物体のみならず、凹形状を含む物体の衝突を検出することができる。   Further, in each of the servers 2, when the octree is generated, the collision detection unit 23 detects a collision in the partial space based on the generated octree. Accordingly, at least each of the servers 2 detects a collision in the partial space based on the generated octree. Similar to the collision detection unit 14 described above, the collision detection unit 23 detects a collision surface based on the generated octree, and can detect a collision of not only a convex object but also an object including a concave shape. it can.

実際には、クライアント1及び複数のサーバ2は、部分空間を割り当てられた場合、スレッド17及び25を生成することにより、Octree生成処理を行い、同一のスレッド17及び25において物体の衝突検出処理を行う。即ち、クライアント1及び複数のサーバ2は、生成したスレッド17及び25において、3次元空間における物体が記述されたobj ファイル3の中の当該割り当てられた部分空間についてのOctreeを生成し、当該生成したOctreeに基づいて物体の衝突を検出する。これにより、衝突検出結果の統合の処理時における(Octree生成処理及び)衝突検出処理の待ち合わせ時間をできる限り少なくして、処理時間を短縮することができる。Octree生成部13及び22と衝突検出部14及び23はスレッドとして生成される。   In practice, when the client 1 and the plurality of servers 2 are assigned a partial space, the client 1 and the plurality of servers 2 perform the octree generation process by generating the threads 17 and 25, and perform the object collision detection process in the same threads 17 and 25. Do. That is, the client 1 and the plurality of servers 2 generate an octree for the allocated subspace in the obj file 3 in which the objects in the three-dimensional space are described in the generated threads 17 and 25, and generate the generated octree. Detects object collision based on Octree. As a result, the waiting time for the collision detection process (Octree generation process) and the collision detection process during the process of integrating the collision detection results can be reduced as much as possible to shorten the processing time. Octree generation units 13 and 22 and collision detection units 14 and 23 are generated as threads.

なお、クライアント1及び複数のサーバ2は、obj ファイル3の読み込みも、スレッド17及び25とは異なるスレッド16及び24を生成することにより、読込み処理を行う。即ち、クライアント1及び複数のサーバ2は、部分空間を割り当てられた場合、スレッド16及び24を生成することにより、読込み処理を行う。読込み処理を行うスレッドとOctree生成処理を行うスレッドとを別に生成することにより、双方の処理の間に存在するタイムラグを吸収することができ、また、obj ファイル3からの形状データの読込みを1回だけとすることができる。オブジェクト読込部12及び21はスレッドとして生成される。   Note that the client 1 and the plurality of servers 2 also read the obj file 3 by generating threads 16 and 24 that are different from the threads 17 and 25. In other words, the client 1 and the plurality of servers 2 perform the reading process by generating the threads 16 and 24 when the partial space is allocated. By separately generating a thread that performs read processing and a thread that performs octree generation processing, the time lag that exists between both processes can be absorbed, and shape data read from the obj file 3 is performed once. Can only be. The object reading units 12 and 21 are generated as threads.

また、クライアント1及び複数のサーバ2は、部分空間を割り当てられた場合、当該物体の移動に伴って、当該物体の移動前について生成したOctreeを廃棄し、新たにスレッド17及び25を生成し、新たに生成したスレッド17及び25において、座標値を更新し、再度Octreeを生成する。これにより、不要となったOctreeの廃棄処理と新たなOctree生成処理とを円滑に切り換えることができる。   Further, when the partial space is allocated, the client 1 and the plurality of servers 2 discard the octree generated before the movement of the object and newly generate threads 17 and 25 as the object moves. In the newly generated threads 17 and 25, the coordinate values are updated, and an Octtree is generated again. As a result, it is possible to smoothly switch between discarding an unnecessary Octtree and creating a new Octtree.

図5は、衝突検出処理フローであり、本発明の衝突検出方法における衝突検出処理の一例の概略を示し、図5(A)はクライアント1における概略処理フローを示し、図5(B)はサーバ2における概略処理フローを示す。なお、この例はサーバ2の数が2個(N=3)の場合の例である。   FIG. 5 is a collision detection process flow, showing an outline of an example of the collision detection process in the collision detection method of the present invention, FIG. 5 (A) shows a schematic process flow in the client 1, and FIG. 5 (B) is a server. 2 shows a schematic processing flow in FIG. In this example, the number of servers 2 is two (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以下を繰り返す。なお、この例では、結果の表示処理はクライアントのみが行う。   In FIG. 5A, as a pre-process, the client 1 is a partial space divided as shown in FIG. 13, for example, and allocates a partial space to be processed by each of the client 1 and the plurality of servers 2 (step S11). ) After making a read request to each server 2, as a preparatory process for generating an Octtree, a thread 16 is generated and shape data is read from the obj file 3 (step S12). Thereafter, the client 1 makes an octree generation request to each server 2, and then generates a thread 17 to generate an octree in the allocated subspace (step S13), and in the subspace in which the octree is generated. (Step S14), the collision detection results of a plurality of servers 2 and clients 1 are integrated (step S15), and the final collision detection result obtained in step S15 is shown in FIG. 10 (described later), for example. As shown in FIG. 4, the image is displayed on the display screen of the display device (not shown) of the client 1 (step S16), and then the object to be detected is moved (step S17), and step S13 and subsequent steps are repeated. In this example, only the client performs the result display process.

図5(B)において、各々のサーバ2は、クライアント1からの読込み依頼に応じて、Octreeを生成する準備処理として、スレッド24を生成してobj ファイル3から形状データを読み込む(ステップS21)。この後、各々のサーバ2は、クライアント1からのOctree生成依頼に応じて、スレッド25を生成して当該割り当てられた部分空間内のOctreeを生成し(ステップS22)、当該Octreeを生成した部分空間内での衝突を検出し(ステップS23)、クライアント1に衝突検出の結果を返信し(ステップS24)、この後物体の移動を行い(ステップS25)、ステップS22以下を繰り返す。   In FIG. 5B, each server 2 generates a thread 24 and reads shape data from the obj file 3 as a preparation process for generating an octree in response to a read request from the client 1 (step S21). Thereafter, each server 2 generates a thread 25 in response to an Octree generation request from the client 1 to generate an Octree in the allocated subspace (step S22), and the subspace in which the Octree is generated. Is detected (step S23), the result of collision detection is returned to the client 1 (step S24), the object is then moved (step S25), and step S22 and subsequent steps are repeated.

ステップ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を読み込む。   In reading the shape data in step S12 and step S21, the obj format is used as the shape data format as described above. FIG. 6 shows the flow of the shape data reading process. First, the client 1 (simply the client in FIG. 6 and the same in FIGS. 7 to 9) connects to the server 2A (the server 1 in FIG. 6 and the same in FIGS. 7 to 9) based on the IP address designated by the user. . The server 2A notifies the client 1 that the connection has been established. Similarly, the client 1 connects to the server 2B (the server 2 in FIG. 6 and the same in FIGS. 7 to 9). Next, the client 1 requests the server 2A to read the obj file 3 designated by the user. The server 2A newly generates a thread 24A (that is, the object reading unit 24A), returns a request to the client 1 and then reads the obj file 3 in the thread 24A. At this time, since the server 2A newly generates a thread 24A, the server 2A performs processing in parallel with the processing of the client 1 until the reading of the obj file 3 is completed. The client 1 that has received the reply from the server 2A requests the server 2B to read the obj file 3. The server 2B reads the obj file 3 by the same process as the server 2A. The client 1 that has finished reading requests of the obj file 3 to all the servers 2A and 2B generates a thread 16 (that is, the object reading unit 12) for its own processing, and reads the obj file 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を生成する。   In the octree generation process in steps S13 and S22, as shown in FIG. 7, first, the client 1 and all the servers 2A and 2B divide the entire space into eight. Next, the client 1 determines the partial space to be allocated to each of the client 1 and the servers 2A and 2B from the eight partial spaces. In the example of FIG. 7, the server 2 </ b> A includes eight partial spaces (1) to (3), the server 2 </ b> B includes partial spaces (4) to (6), and the client 1 includes partial spaces (7 ), (8). The client 1 requests the server 2A to generate an Octtree in the partial spaces (1) to (3). The server 2A newly generates a thread 25A (that is, the octree generation unit 22A and the collision detection unit 23A), and sends back to the client 1 that the request has been received, and then the octree in the subspaces (1) to (3). Is generated. The client 1 that has received the reply from the server 2A next requests the server 2B to generate an octree in the subspaces (4) to (6). The server 2B starts to generate an Octtree in the subspaces (4) to (6) by the same process as the server 2A. The client 1 that has finished the request to generate the octree to all the servers 2A and 2B generates the thread 17 (that is, the octree generation unit 13 and the collision detection unit 14) and is assigned in the thread 17 (7), (8 ) In the subspace.

ステップS13及びステップS22における衝突検出処理において、図8に示すように、まず、クライアント1と全てのサーバ2A、2Bは、各々、スレッド17及び25において、Octreeを生成した空間内の衝突検出を行う。次に、クライアント1は、サーバ2Aからサーバ2Aの衝突検出結果、即ち、衝突する面の面番号を受け取る。更に、サーバ2Bからもサーバ2Bの衝突検出結果を受け取る。全てのサーバ2A、2Bから衝突検出結果を受け取ったクライアント1は、全ての衝突検出結果の和をとることによって、最終的な衝突検出結果を求める。   In the collision detection processing in step S13 and step S22, as shown in FIG. 8, first, the client 1 and all the servers 2A, 2B perform collision detection in the space where the Octtree is generated in the threads 17 and 25, respectively. . Next, the client 1 receives the collision detection result of the server 2A from the server 2A, that is, the surface number of the colliding surface. Furthermore, the server 2B receives the collision detection result of the server 2B. The client 1 that has received the collision detection results from all the servers 2A and 2B calculates the final collision detection result by taking the sum of all the collision detection results.

ステップ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 により与えられる。   In the processing by the movement of the object in step S17 and step S25, it is necessary to newly generate an octree of the object as shown in FIG. Therefore, the octree before the object moves, the collision detection result, and the like become unnecessary and need to be discarded. First, the client 1 requests the server 2A to discard an unnecessary octree possessed by the server 2A. The server 2A generates a new thread 25A and returns to the client 1 that the request has been received, and then discards the unnecessary Octtree. The client 1 that has received the reply from the server 2A also requests the server 2B to discard the unnecessary octree. The server 2B discards the unnecessary Octtree by the same process as the server 2A. The client 1 that has requested all of the servers 2A and 2B to discard the unnecessary octree discards the unnecessary octree and the collision detection result that it has. Next, it is necessary to update the coordinate value of the object to the value after the movement in preparation for newly generating an octree of the moved object. The client 1 gives the coordinates of the movement destination of the object to the server 2A, and requests the coordinate update. The server 2A creates a new thread 25A and returns that it has received the request, and then updates the coordinate value. The client 1 that has received the reply from the server 2A requests the server 2B to update the coordinate value of the object. The server 2B updates the coordinate value of the object by the same process as the server 2A. The client 1 that has requested all of the servers 2A and 2B to update the coordinate value of the object updates the coordinate value of the object. Then, in order to newly generate an octree, an octree generation process is performed. The initial value of the object coordinate value is given by obj file 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に短縮することができた。
In the present invention, DCOM (Distributed Component Object Model) is used for communication between the client 1 and the server 2. The DCOM is described in, for example, Frank E. Redmond III, “DCOM Deployment Guide”, Shoeisha Publishing, 1998. DCOM is a distributed object technology specification established by Microsoft. COM objects created according to the company's COM (Component Object Model) specification can communicate with each other over a network to exchange data, exchange processing requests, etc. Next, an example of collision detection according to the present invention will be described. . FIG. 10 shows the result of generating an octree of a dragon, which is an object including a concave shape, and performing collision detection with a regular octahedron. It can be seen that an octree with a complex shape like a dragon is generated and collision detection is performed correctly. Distributed processing was evaluated using four computers. All of the computers used are CPU Pentium 4 (3.00 GHz) (registered trademark) and memory 1 GB. All computers have a Gigabit Ethernet (registered trademark) connection. FIG. 11 shows the processing time when a dragon and a regular octahedron octree are generated by distributed processing. As can be seen from FIG. 11, distributed processing is effective for generating an octree having a complicated shape like a dragon. Furthermore, it can be seen that even a simple shape such as a regular octahedron can be accelerated by distributed processing. Distributed processing was performed in the present invention, and the processing time could be reduced to about ½.

本発明によれば、衝突検出方法及び衝突検出システムにおいて、3種類のノードの定義を変更することにより、衝突検出に何ら影響を与えることなく、凸形状である物体に限らず、凹形状を含んだ物体についても、衝突検出のための情報としてのOctreeを生成することができるので、物体の多くが凹形状を含む実世界についてもOctreeを利用した衝突検出を行うことができる。   According to the present invention, in the collision detection method and the collision detection system, by changing the definition of the three types of nodes, the collision detection is not limited to the object having the convex shape, and the concave shape is included without affecting the collision detection. Since an octree as information for collision detection can also be generated for an object, collision detection using the octree can be performed even in the real world where many of the objects include concave shapes.

また、本発明によれば、衝突検出方法及び衝突検出システムにおいて、オクトリーの生成及びこれに基づく衝突検出を少なくとも複数のサーバに分散することにより、Octreeの生成時間を短縮することができるので、物体を形成する面数が多い場合でも、又は、物体が移動するたびにOctreeを生成し直す場合でも、リアルタイムでOctreeを生成し衝突検出を行うことができる。   Further, according to the present invention, in the collision detection method and collision detection system, the generation time of the octree can be shortened by distributing the octree generation and the collision detection based on the octree generation to at least a plurality of servers. Even when there are a large number of surfaces forming the octree or when the octree is regenerated every time the object moves, the octree can be generated and the collision can be detected in real time.

衝突検出装置構成図であり、本発明の衝突検出方法を実現する衝突検出装置の構成の一例を示す。It is a collision detection apparatus block diagram, and shows an example of a structure of the collision detection apparatus which implement | achieves the collision detection method of this invention. 分散処理のイメージを示す説明図である。It is explanatory drawing which shows the image of a distributed process. 分散処理の例を示す説明図である。It is explanatory drawing which shows the example of a distributed process. ノードを分類したときの2次元的な模式図である。It is a two-dimensional schematic diagram when nodes are classified. 全体の処理の流れを示す。The overall process flow is shown. 形状データの読み込み処理の流れを示す。The flow of shape data reading processing is shown. Octree生成処理の流れを示す。The flow of the Octree generation process is shown. 衝突検出処理の流れを示す。The flow of a collision detection process is shown. 物体の移動処理の流れを示す。The flow of an object movement process is shown. 凹形状を含んだ物体であるドラゴンのOctreeを生成し、正八面体と衝突検出を行った結果を示す。This shows the result of collision detection with a regular octahedron by creating an octree of a dragon, which is an object with a concave shape. ドラゴンと正八面体のOctreeを分散処理で生成した場合の処理時間を示す。This shows the processing time when a dragon and an octahedron octree are generated by distributed processing. Octree説明図であり、正八面体のOctree表現例である。It is an explanatory diagram of Octree and is an example of Octa representation of regular octahedron. Octree説明図であり、空間の8分割の例である。It is Octree explanatory drawing, and is an example of eight divisions of space. Octree説明図であり、Octreeの例である。It is an explanatory diagram of Octree and is an example of Octtree. Octree説明図であり、各ノードを分類したときの一例を示す2次元的な模式図である。It is Octree explanatory drawing and is a two-dimensional schematic diagram showing an example when each node is classified. Octree説明図であり、凹形状を含んだ物体において生じる不都合の例を2次元的に示す。It is Octree explanatory drawing and shows the example of the inconvenience which arises in the object containing a concave shape two-dimensionally.

符号の説明Explanation of symbols

1 クライアント
2 サーバ
3 オブジェクトファイル
4 ネットワーク
11 部分空間割当部
12 オブジェクト読込部
13 Octree生成部
14 衝突検出部
15 結果統合部
16、17、24、25 スレッド
21 オブジェクト読込部
22 Octree生成部
23 衝突検出部
DESCRIPTION OF SYMBOLS 1 Client 2 Server 3 Object file 4 Network 11 Partial space allocation part 12 Object reading part 13 Octree production | generation part 14 Collision detection part 15 Result integration part 16, 17, 24, 25 Thread 21 Object reading part 22 Octree production part 23 Collision detection part

Claims (10)

3次元空間における物体の衝突を検出する衝突検出システムにおける衝突検出方法であって、
グレイノードを物体を形成する面が含まれている空間と定義し、ホワイトノードを物体を形成する面がまったく存在しない空間と定義し、ブラックノードを一定の深さに達したグレイノードと定義することにより、前記物体のオクトリーを生成し、
当該生成したオクトリーに基づいて、衝突する面を検出することにより、前記物体の衝突を検出する
ことを特徴とする衝突検出方法。
A collision detection method in a collision detection system for detecting a collision of an object in a three-dimensional space,
Define a gray node as a space that contains the surface that forms the object, a white node as a space that does not have any surface that forms the object, and a black node as a gray node that reaches a certain depth To generate an octree of the object,
A collision detection method, wherein the collision of the object is detected by detecting a collision surface based on the generated octree.
前記物体が凹形状を含み、
当該生成したオクトリーに基づいて、衝突する面を検出することにより、前記凹形状を含む物体の衝突を検出する
ことを特徴とする請求項1に記載の衝突検出方法。
The object includes a concave shape;
The collision detection method according to claim 1, wherein a collision of an object including the concave shape is detected by detecting a collision surface based on the generated octree.
3次元空間における物体の衝突を検出する衝突検出システムであって、
グレイノードを物体を形成する面が含まれている空間と定義し、ホワイトノードを物体を形成する面がまったく存在しない空間と定義し、ブラックノードを一定の深さに達したグレイノードと定義することにより、前記物体のオクトリーを生成するオクトリー生成部と、
当該生成したオクトリーに基づいて、衝突する面を検出することにより、前記物体の衝突を検出する衝突検出部とを備える
ことを特徴とする衝突検出システム。
A collision detection system for detecting a collision of an object in a three-dimensional space,
Define a gray node as a space that contains the surface that forms the object, a white node as a space that does not have any surface that forms the object, and a black node as a gray node that reaches a certain depth An octree generation unit for generating an octree of the object;
A collision detection system comprising: a collision detection unit that detects a collision of the object by detecting a collision surface based on the generated octree.
クライアントと複数のサーバとからなる分散処理システムにおいて3次元空間における物体の衝突を検出する衝突検出方法であって、
前記クライアントが、前記3次元空間を分割した部分空間を、少なくとも前記複数のサーバの各々に割り当て、
少なくとも前記サーバの各々が、当該割り当てられた部分空間におけるオクトリーを生成し、
少なくとも前記サーバの各々が、当該生成したオクトリーに基づいて当該部分空間における衝突を検出し、
前記クライアントが、少なくとも前記サーバの各々における前記衝突検出の結果を統合する
ことを特徴とする衝突検出方法。
A collision detection method for detecting a collision of an object in a three-dimensional space in a distributed processing system including a client and a plurality of servers,
The client allocates a partial space obtained by dividing the three-dimensional space to at least each of the plurality of servers;
At least each of the servers generates an octree in the assigned subspace;
At least each of the servers detects a collision in the subspace based on the generated octree,
The collision detection method, wherein the client integrates at least the results of the collision detection in each of the servers.
前記クライアントが、前記部分空間を当該クライアントにも割り当て、当該割り当てられた部分空間におけるオクトリーを生成し、当該生成したオクトリーに基づいて当該部分空間における衝突を検出し、当該クライアント及び前記複数のサーバの各々における前記衝突検出の結果を統合する
ことを特徴とする請求項4に記載の衝突検出方法。
The client allocates the subspace to the client, generates an octree in the allocated subspace, detects a collision in the subspace based on the generated octree, and detects the client and the plurality of servers. The collision detection method according to claim 4, wherein the results of the collision detection in each are integrated.
前記物体が凹形状を含み、
グレイノードを当該物体を形成する面が含まれている空間と定義し、ホワイトノードを当該物体を形成する面がまったく存在しない空間と定義し、ブラックノードを一定の深さに達したグレイノードと定義することにより、前記凹形状を含む物体のオクトリーを生成し、
当該生成したオクトリーに基づいて、衝突する面を検出することにより、前記物体の衝突を検出する
ことを特徴とする請求項4に記載の衝突検出方法。
The object includes a concave shape;
A gray node is defined as a space containing the surface forming the object, a white node is defined as a space where no surface forming the object exists, and a black node is defined as a gray node reaching a certain depth. By defining, an octree of the object including the concave shape is generated,
The collision detection method according to claim 4, wherein the collision of the object is detected by detecting a collision surface based on the generated octree.
複数の物体を分散させる処理において、各々の物体からオクトリーを生成し、前記クライアント及び複数のサーバの各々に対して、同一の部分空間を割り当てる
ことを特徴とする請求項4に記載の衝突検出方法。
5. The collision detection method according to claim 4, wherein, in the process of dispersing a plurality of objects, an octree is generated from each object, and the same partial space is assigned to each of the client and the plurality of servers. .
前記クライアント及び複数のサーバが、前記部分空間を割り当てられた場合、スレッドを生成し、前記スレッドにおいて、前記3次元空間における物体が記述されたオブジェクトファイルを読み込み、前記オブジェクトファイルの中の当該割り当てられた部分空間についてのオクトリーを生成し、当該生成したオクトリーに基づいて前記物体の衝突を検出する
ことを特徴とする請求項4に記載の衝突検出方法。
When the client and the plurality of servers are assigned the partial space, a thread is generated, and the thread reads an object file in which an object in the three-dimensional space is described, and the assigned file in the object file is assigned. The collision detection method according to claim 4, further comprising: generating an octree for the subspace and detecting the collision of the object based on the generated octree.
前記クライアント及び複数のサーバが、前記部分空間を割り当てられた場合、当該物体の移動に伴って、当該物体の移動前について生成したオクトリーを廃棄し、新たにスレッドを生成し、前記新たに生成したスレッドにおいて、座標値を更新し、再度オクトリーを生成する
ことを特徴とする請求項4に記載の衝突検出方法。
When the client and the plurality of servers are assigned the partial space, the octree generated before the movement of the object is discarded along with the movement of the object, a thread is newly generated, and the newly generated The collision detection method according to claim 4, wherein the coordinate value is updated in the thread, and the octree is generated again.
クライアント及び複数のサーバからなる3次元空間における物体の衝突を検出する衝突検出システムであって、
前記クライアントが、
前記3次元空間を分割した部分空間を、前記クライアント及び複数のサーバの各々に割り当てる部分空間割当部と、
当該割り当てられた部分空間におけるオクトリーを生成するオクトリー生成部と、
当該生成したオクトリーに基づいて当該部分空間における衝突を検出する衝突検出部と、
前記クライアント及び複数のサーバの各々における前記衝突検出の結果を統合する結果統合部とを備え、
前記複数のサーバの各々が、
当該割り当てられた部分空間におけるオクトリーを生成するオクトリー生成部と、
当該生成したオクトリーに基づいて当該部分空間における衝突を検出する衝突検出部とを備える
ことを特徴とする衝突検出システム。
A collision detection system for detecting a collision of an object in a three-dimensional space composed of a client and a plurality of servers,
The client
A partial space allocation unit that allocates a partial space obtained by dividing the three-dimensional space to each of the client and the plurality of servers;
An octree generation unit for generating octrees in the allocated subspace;
A collision detection unit that detects a collision in the partial space based on the generated octree;
A result integrating unit that integrates the results of the collision detection in each of the client and the plurality of servers,
Each of the plurality of servers is
An octree generation unit for generating octrees in the allocated subspace;
A collision detection system comprising: a collision detection unit configured to detect a collision in the partial space based on the generated octree.
JP2004129260A 2004-04-26 2004-04-26 Collision detection method and collision detection system Expired - Fee Related JP4444725B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004129260A JP4444725B2 (en) 2004-04-26 2004-04-26 Collision detection method and collision detection system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004129260A JP4444725B2 (en) 2004-04-26 2004-04-26 Collision detection method and collision detection system

Publications (2)

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

Family

ID=35438690

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004129260A Expired - Fee Related JP4444725B2 (en) 2004-04-26 2004-04-26 Collision detection method and collision detection system

Country Status (1)

Country Link
JP (1) JP4444725B2 (en)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007219913A (en) * 2006-02-17 2007-08-30 Hitachi Ltd Polymer joint prediction system
JP2008027254A (en) * 2006-07-24 2008-02-07 Namco Bandai Games Inc Program, information storage medium and image generation system
US8130220B2 (en) 2007-02-02 2012-03-06 Samsung Electronics Co., Ltd. Method, medium and apparatus detecting model collisions
CN102509317A (en) * 2011-09-27 2012-06-20 北京像素软件科技股份有限公司 Implementation method of real-time collision detection system
WO2013109602A1 (en) * 2012-01-16 2013-07-25 Intel Corporation Time-continuous collision detection using 3d rasterization
CN103295216A (en) * 2012-02-24 2013-09-11 富士通株式会社 Method and equipment for identifying space in three-dimensional model and image processing system
CN113001551A (en) * 2021-03-18 2021-06-22 青岛九维华盾科技研究院有限公司 Fast collision detection method based on octree structure segmentation

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007219913A (en) * 2006-02-17 2007-08-30 Hitachi Ltd Polymer joint prediction system
JP4589248B2 (en) * 2006-02-17 2010-12-01 株式会社日立製作所 Polymer bond prediction system
JP2008027254A (en) * 2006-07-24 2008-02-07 Namco Bandai Games Inc Program, information storage medium and image generation system
US8130220B2 (en) 2007-02-02 2012-03-06 Samsung Electronics Co., Ltd. Method, medium and apparatus detecting model collisions
CN102509317A (en) * 2011-09-27 2012-06-20 北京像素软件科技股份有限公司 Implementation method of real-time collision detection system
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 (en) * 2012-02-24 2013-09-11 富士通株式会社 Method and equipment for identifying space in three-dimensional model and image processing system
CN103295216B (en) * 2012-02-24 2016-01-06 富士通株式会社 For identifying method and apparatus and the image processing system in the space in three-dimensional model
CN113001551A (en) * 2021-03-18 2021-06-22 青岛九维华盾科技研究院有限公司 Fast collision detection method based on octree structure segmentation

Also Published As

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

Similar Documents

Publication Publication Date Title
KR102009105B1 (en) Method for detecting collision between collidors of real-time virtual scene and terminal and storage medium
CN109325998B (en) Indoor 3D modeling method, system and related device based on point cloud data
US11301954B2 (en) Method for detecting collision between cylindrical collider and convex body in real-time virtual scenario, terminal, and storage medium
Wada et al. Homography based parallel volume intersection: Toward real-time volume reconstruction using active cameras
JP2013037691A (en) System, method, and computer program product for constructing acceleration structure
US20140354626A1 (en) Block Based Level of Detail Representation
US20240127535A1 (en) Indoor structured reconstruction method, apparatus, and computer-readable storage medium
Otaduy et al. CLODs: Dual Hierarchies for Multiresolution Collision Detection.
JPH05266212A (en) Method for generating object
JPH0362276A (en) Apparatus and method for processing graphics and pixel memory device
KR20090091617A (en) 3d image processing method and apparatus for enabling efficient retrieval of neighbor point
KR101798132B1 (en) Modeling apparatus and method of work environment for high-speed collision detection of robot
JP4444725B2 (en) Collision detection method and collision detection system
CN114627219A (en) Rendering method and device of three-dimensional scene data, storage medium and electronic device
JP2024519323A (en) Collision data processing method, collision data processing device, computer program, and electronic device
EP3319047B1 (en) Apparatus for generating an acceleration structure for ray tracing
Zhang et al. Slimmer: Accelerating 3D semantic segmentation for mobile augmented reality
CN116310060B (en) Method, device, equipment and storage medium for rendering data
JP7161154B2 (en) Hierarchical bounding volume generation method, computer program and computer device
CN104537704B (en) A kind of feather real-time dynamic creation method of birds human trunk model
Watanabe et al. Parameter identification of depth-depth-matching algorithm for liver following
JP3931701B2 (en) Image generating apparatus and program
US20230206567A1 (en) Geometry-aware augmented reality effects with real-time depth map
JP3724006B2 (en) High speed rendering method and apparatus
Du et al. DCCD: Distributed N-Body Rigid Continuous Collision Detection for Large-Scale Virtual Environments

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