KR20070006069A - Method for detecting collision of objects in game engine - Google Patents
Method for detecting collision of objects in game engine Download PDFInfo
- Publication number
- KR20070006069A KR20070006069A KR1020050061073A KR20050061073A KR20070006069A KR 20070006069 A KR20070006069 A KR 20070006069A KR 1020050061073 A KR1020050061073 A KR 1020050061073A KR 20050061073 A KR20050061073 A KR 20050061073A KR 20070006069 A KR20070006069 A KR 20070006069A
- Authority
- KR
- South Korea
- Prior art keywords
- collider
- information
- collision
- collision check
- game engine
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 26
- 230000004044 response Effects 0.000 claims abstract description 3
- 230000006870 function Effects 0.000 claims description 46
- 230000008859 change Effects 0.000 claims description 13
- 238000001514 detection method Methods 0.000 claims description 7
- 238000007689 inspection Methods 0.000 claims description 4
- 238000012360 testing method Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/10—Services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2219—Large Object storage; Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- Tourism & Hospitality (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Primary Health Care (AREA)
- Strategic Management (AREA)
- Marketing (AREA)
- General Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Economics (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Processing Or Creating Images (AREA)
Abstract
Description
도 1은 본 발명에 따른 게임 엔진에서 사람 및 총알의 충돌검사를 수행하는 일례를 도시한 도면이다.1 is a diagram showing an example of performing a collision test of a person and a bullet in a game engine according to the present invention.
도 2는 도 1의 충돌검사를 수행하기 위한 단계를 도시한 흐름도이다.FIG. 2 is a flowchart illustrating steps for performing the collision test of FIG. 1.
도 3은 본 발명에 따른 함수 클라스에서 유지되는 충돌검사 함수를 도시한 도면이다.3 is a diagram illustrating a collision checking function maintained in a function class according to the present invention.
도 4는 본 발명에 따른 게임 엔진에서의 충돌검사 방법을 수행하는데 채용될 수 있는 범용 컴퓨터 시스템의 내부 블록도이다.4 is an internal block diagram of a general purpose computer system that may be employed to perform the collision detection method in the game engine according to the present invention.
<도면의 주요 부분에 대한 부호의 설명><Explanation of symbols for main parts of the drawings>
201: 쿼리 송신 단계 202: 쿼리 수신 단계201: Step for sending a query 202: Step for receiving a query
203: 충돌자 정보 수신 단계 204: 충돌자 정보 전송 단계203: Receiving collider information 204: Transmitting collider information
205: 충돌검사 요청 단계 206: 충돌검사 수행 단계205: Collision check request step 206: Collision check perform step
207: 충돌검사 연산 결과 반환 단계 208: 충돌검사 연산 결과 반환 단계207: Return of collision check operation result step 208: Return of collision check operation result
209: 충돌검사 처리 단계209: Collision check processing step
본 발명은 게임 엔진에서 오브젝트 간의 충돌검사를 수행하는 방법에 관한 것으로, 보다 상세하게는 상기 게임 엔진이 제1 오브젝트로부터 충돌검사를 요청받는 경우에 제2 오브젝트로 제2 충돌자 정보를 요청하여 수집하고, 상기 수집한 제2 충돌자 정보를 상기 제1 오브젝트로 전달하며, 상기 제1 오브젝트는 상기 제2 충돌자 정보 및 제1 충돌자 정보를 소정의 충돌검사 함수 클라스를 통해 충돌 여부를 판정 후 상기 게임 엔진으로 리턴하는 것을 요지로 하고 있다.The present invention relates to a method for performing collision checking between objects in a game engine. More specifically, when the game engine receives a collision check request from a first object, the second object information is collected and collected by a second object. And transfer the collected second collider information to the first object, and the first object determines whether the second collider information and the first collider information collide through a predetermined collision check function class. The point is to return to the game engine.
오늘날 컴퓨터의 발달과 더불어 컴퓨터와 관련된 3D 게임 산업이 나날이 발전하고 있다. 이에 따라, 게임의 종류도 다양하게 변화되고 있다. 이러한 게임 종류의 다양한 변화에 대하여 게임 내 오브젝트 간 충돌 여부를 판단하는 충돌검사도 다양한 방법으로 변화되고 있다. 현재 충돌검사의 대표적인 방법으로는 게임 엔진은 게임 내 오브젝트의 충돌검사를 수행하기 위하여 상기 오브젝트 대신에 소정의 충돌자로서 상기 충돌검사를 수행한다. 상기 충돌자는 사각형(rectangle) 형태, 경계상자(axis aligned bounding box) 형태, 구(sphere) 형태, 원통(cylinder) 형태, 원뿔(frustum) 형태, 레이(ray) 형태, 그물망(mesh) 형태 중에서 적어도 하나의 형태를 포함하는 도형의 단위이며, 복잡한 형태로 표현되는 오브젝트를 대표하여 충돌검사를 수행한다. 일례로, 총알과 사람의 충돌검사를 수행하기 위하여, 총알은 구 형태의 충돌자로 대신하여 충돌검사를 수행하고, 상기 사람은 경계상자 형태의 충돌자로 대신하여 충돌검사를 수행할 수 있다.Today, with the development of computers, the 3D game industry related to computers is developing day by day. Accordingly, the types of games have also changed in various ways. For such various changes in game types, collision tests for determining whether or not collisions between objects in a game are being changed in various ways. As a representative method of the current collision check, the game engine performs the collision check as a predetermined collider instead of the object in order to perform the collision check of the object in the game. The collider has at least one of a rectangle shape, an axis aligned bounding box shape, a sphere shape, a cylinder shape, a cone shape, a frustum shape, a ray shape and a mesh shape. It is a unit of figure that includes one shape and performs collision check on behalf of the object represented by complex shape. For example, in order to perform a collision test between a bullet and a person, the bullet may perform a collision test instead of a spherical collider, and the person may perform a collision test instead of a collider in the form of a bounding box.
상기 충돌검사를 수행하기 위하여 충돌 판정이 필요한 게임 엔진(Before) 측 의 종래 코딩의 일례를 살펴보면, 다음과 같다.Looking at an example of the conventional coding of the game engine (Before) side that needs a collision determination in order to perform the collision check, as follows.
제1 오브젝트의 충돌자 정보를 가져오기 위한 메소드((1), (2))를 구현하여 상기 제1 오브젝트의 충돌자 정보를 수집한다.Implement methods (1) and (2) for obtaining collider information of the first object to collect collider information of the first object.
Before vCenter = A -> GetSphereCollisionCenter(); - (1)Before vCenter = A-> GetSphereCollisionCenter (); - (One)
Float fRad = A -> GetSphereCollisionRadus(); - (2)Float fRad = A-> GetSphereCollisionRadus (); - (2)
이와 더불어, 제2 오브젝트의 충돌자 정보를 가져오기 위한 메소드((3), (4))를 구현하여 상기 제2 오브젝트의 충돌자 정보를 수집한다.In addition, by implementing methods (3) and (4) for obtaining collider information of the second object, collider information of the second object is collected.
Before vMin = B -> GetAABBCollisionMin(); - (3)Before vMin = B-> GetAABBCollisionMin (); -(3)
Before vMax = B -> GetAABBCollisionMax(); - (4)Before vMax = B-> GetAABBCollisionMax (); - (4)
상기 제1 오브젝트 및 상기 제2 오브젝트로부터 충돌자 정보의 수집이 완료되면, 상기 제1 오브젝트 및 상기 제2 오브젝트의 형태별로 제1 오브젝트 및 상기 제2 오브젝트의 충돌검사를 수행한다. 이 때, 게임 엔진은 상기 충돌검사를 수행하기 위하여 상기 제1 오브젝트 및 상기 제2 오브젝트의 형태에 따라 특화된(specified) 함수를 생성한다.When collection of collider information from the first object and the second object is completed, collision checking of the first object and the second object is performed for each type of the first object and the second object. At this time, the game engine generates a specialized function according to the shape of the first object and the second object to perform the collision check.
상기 함수는 제1 오브젝트의 형태인 구 형태 및 제2 오브젝트의 형태인 경계상자 형태의 충돌검사를 수행하는 함수를 포함하고, 상기 구 형태 및 상기 경계상 자 형태의 충돌검사를 수행하는 함수(5)의 일례는 다음과 같다.The function includes a function of performing a collision check in the form of a sphere in the form of a first object and a bounding box in the form of a second object, and performing a collision test in the form of the sphere and the bounding box. ) Is as follows.
bool bCollide CollisionQuerySphereAndAABB(&vCenter, fRad, &vMin, &vMax); - (5)bool bCollide CollisionQuerySphereAndAABB (& vCenter, fRad, & vMin, &vMax); -(5)
즉, 상기 제1 오브젝트 및 상기 제2 오브젝트로부터 수집한 충돌자 정보를 인자로서 상기 함수(5)에 적용하여 충돌검사를 수행한다.That is, collision inspection is performed by applying the collider information collected from the first object and the second object to the function 5 as a factor.
그러나, 상기와 같은 종래의 충돌검사 시 제1 오브젝트 측에서 구 형태로 대표되던 충돌자가 원통 형태로 대표되는 충돌자로 변경되는 일례의 경우에는 상기 원통 형태에 대응되는 메소드를 구현하여, 상기 변경된 제1 오브젝트로부터 새로운 충돌자 정보를 수집해야 한다. 즉, 게임 엔진에서 사용되었던 메소드((1), (2))가 새로운 메소드로 변경되어야 한다. 또한, 상기 새로 수집된 충돌자 정보는 상기 함수(5)에 적용하여 충돌검사를 수행할 수가 없다. 이는 "&vCenter" 및 "fRad"의 인자 대신에 원통 형태에 사용되는 인자를 적용하여 충돌검사를 수행해야 하기에 상기 함수(5)가 새로운 상기 원통 형태 및 상기 경계상자의 충돌검사를 수행하는 함수로 변경되어야 한다. 변경된 제1 오브젝트와 상기 제2 오브젝트의 충돌검사를 수행하는 함수의 일례는 다음과 같다.However, in the case of an example in which a collision collimator represented by a spherical shape on the first object side is changed to a collider represented by a cylindrical form in the conventional collision inspection as described above, the method corresponding to the cylindrical form is implemented to implement the modified first We need to collect new collider information from the object. In other words, the methods ((1), (2)) used in the game engine should be changed to the new methods. In addition, the newly collected collider information cannot be applied to the function 5 to perform a collision check. This function (5) performs a collision check of the new cylindrical shape and the bounding box because the collision check should be performed by applying the factor used in the cylindrical shape instead of the & vCenter and fRad arguments. Should be changed. An example of a function for performing collision checking between the changed first object and the second object is as follows.
bool bCollide CollisionQueryCylinderAndAABB(Cylinderinfo, &vMin, &vMax); - (6)bool bCollide CollisionQueryCylinderAndAABB (Cylinderinfo, & vMin, &vMax); -(6)
함수(6)은 "&vCenter" 및 "fRad"를 대신하여 "Cylinderinfo"라는 인자를 적용하여 충돌검사를 수행한다. 이때, "Cylinderinfo"는 3차원 공간에서 원통 형태를 표현하는 인자이다. 이와 더불어, 충돌검사를 수행하는 함수도 원통 형태 및 경계상자를 비교하는 함수를 사용하여야 한다. 이로써, 충돌검사를 수행하는 함수의 변경된다.Function 6 performs a collision check by applying an argument of "Cylinderinfo" on behalf of "& vCenter" and "fRad". At this time, "Cylinderinfo" is a factor expressing the cylindrical shape in the three-dimensional space. In addition, the function that performs the collision check should use the function that compares the cylindrical shape and the bounding box. This changes the function that performs the collision check.
즉, 종래 게임 엔진에서 오브젝트 간 충돌검사는 오브젝트를 대표하는 충돌자의 형태가 변경되는 경우에 인자 값을 전달 받기 위한 메소드 및 충돌검사를 수행하기 위한 함수 등 전반 적인 코딩이 현저하게 변화되어야만 한다. 이러한 대대적인 코딩의 변화는 게임 엔진의 속도 저하의 문제의 근본적인 원인이 될 뿐만 아니라, 게임 엔진의 범용화를 저해하는 결정적인 요인으로 작용하고 있다.That is, in the conventional game engine, the collision checking between objects should significantly change the overall coding such as a method for receiving argument values and a function for performing collision checking when the type of collider representing the object is changed. This massive change in coding is not only a fundamental cause of the problem of slowing down the game engine, but also acts as a decisive factor that hinders the generalization of the game engine.
또한, 게임 엔진 측에서의 대대적인 코딩의 변화는 게임의 수정 또는 유지보수 시에 상당량의 코딩 작업이 요구되고, 이때 많은 비용이 소비되고 있는 실정이다.In addition, a significant change in coding on the game engine side requires a large amount of coding work when modifying or maintaining a game, and at this time, a high cost is consumed.
본 발명은 상기와 같은 종래기술을 개선하기 위해 안출된 것으로서, 충돌검사를 오브젝트로 위임하고, 상기 오브젝트로부터 상기 충돌검사의 결과를 리턴함으로써 게임 엔진에서 충돌자의 형태 변화 시 수정되는 코딩을 최소화하는 것이다.SUMMARY OF THE INVENTION The present invention has been made to improve the prior art as described above, which delegates collision checking to an object and returns the results of the collision checking from the object to minimize coding that is modified when the shape of the collision is changed in the game engine. .
본 발명은 게임 엔진에서 오브젝트의 형태에 상관없이 충돌검사를 수행함으로써 범용화된 게임 엔진을 제공하는 것을 목적으로 한다.An object of the present invention is to provide a generalized game engine by performing a collision check regardless of the shape of the object in the game engine.
상기의 목적을 달성하고, 상술한 종래기술의 문제점을 해결하기 위하여, 본 발명에 따른 게임 엔진에서의 충돌검사 방법은 상기 제1 오브젝트로부터 상기 제2 오브젝트의 제2 충돌자 정보 - 상기 제2 오브젝트의 충돌자에 대한 위치 정보 - 를 요청하는 쿼리(query)를 수신하는 단계, 상기 쿼리에 따라 상기 제2 오브젝트로 상기 제2 충돌자 정보 요청 명령을 전송하고, 상기 제2 오브젝트로부터 상기 제2 충돌자 정보를 수신하는 단계, 상기 쿼리에 대한 응답으로 상기 제2 충돌자 정보를 상기 제1 오브젝트로 전송하는 단계, 및 상기 제1 오브젝트로부터 상기 제2 오브젝트와의 충돌검사결과를 수신하는 단계를 포함하고, 상기 제1 오브젝트는 소정의 충돌검사 함수 클라스(class)로 상기 제2 충돌자 정보 및 상기 제1 오브젝트의 제1 충돌자 정보를 전송하고, 상기 충돌검사 함수 클라스는 상기 제1 충돌자 정보 및 상기 제2 충돌자 정보에 대한 충돌검사 연산 결과를 상기 제1 오브젝트로 전송하고, 상기 제1 오브젝트는 상기 충돌검사 연산 결과에 대응하는 충돌검사 결과를 상기 충돌검사 함수 클라스로 전송하는 것을 특징으로 한다. In order to achieve the above object and solve the above-mentioned problems of the prior art, the collision inspection method in the game engine according to the present invention is the second collider information of the second object from the first object-the second object Receiving a query requesting-location information for the collider of the request, sending the second collider information request command to the second object according to the query, and transmitting the second collision from the second object. Receiving child information, transmitting the second collider information to the first object in response to the query, and receiving a collision check result with the second object from the first object. The first object transmits the second collider information and the first collider information of the first object to a predetermined collision check function class. The collision check function class transmits a collision check operation result for the first collider information and the second collider information to the first object, and the first object receives a collision check result corresponding to the collision check operation result. Characterized in that the transmission to the collision detection function class.
이하, 첨부된 도면을 참조하여 본 발명에 따른 충돌검사 방법에 대하여 상세히 설명한다.Hereinafter, with reference to the accompanying drawings will be described in detail a collision detection method according to the present invention.
도 1은 본 발명에 따른 게임 엔진에서 사람 및 총알의 충돌검사를 수행하는 일례를 도시한 도면이다.1 is a diagram showing an example of performing a collision test of a person and a bullet in a game engine according to the present invention.
도 1에서는 제1 오브젝트(110)의 일례로 사람(111)을 제2 오브젝트(120)의 일례로 총알을 도시하였다. 사람(111)과 총알(121)은 게임 내에서 소정의 변화율 에 따라 이동하며, 사람(111)은 총알(121)이 자신에게 충돌하였는지 여부를 판단하게 된다. 일반적으로 사람(111)이 총알(121)보다 시간에 따른 거리의 변화율이 적은 값으로 표현되기에 사람(111)이 대상 충돌자, 총알(121)이 충돌자가 된다. 따라서, 대상 충돌자인 사람(111)이 충돌자인 총알(121)의 충돌 여부를 판단한다. 상기 대상 충돌자 및 상기 충돌자는 게임을 제공하는 게임 어플리케이션의 소정의 룰(rule)에 따라서 다양하게 변경 가능하다.1 illustrates a
일례로, 사람(111)은 충돌자로서 사각형 형태(112), 총알은 충돌자로서 구(122) 형태로 치환될 수 있다. 일반적으로, 총알(121)이 사람(111)에게 충돌하였는지 여부를 검사하기 위하여, 복잡한 오브젝트의 현재 좌표를 파악하지 않고 대략적으로 충돌자를 통해 충돌검사를 수행한다. 이러한 충돌자는 사각형(rectangle) 형태, 경계상자(axis aligned bounding box) 형태, 구(sphere) 형태, 원통(cylinder) 형태, 원뿔(frustum) 형태, 레이(ray) 형태, 그물망(mesh) 형태 중에서 적어도 하나의 형태를 포함하여 상기 오브젝트의 현재 좌표를 대표한다. 즉, 도 1의 게임 엔진(130)은 사람(111)과 총알(121)의 충돌검사에 따른 결과를 처리하기 위하여 사람(111) 대신 사각형 형태(112)의 충돌자, 총알(121) 대신 구 형태(122)의 충돌자의 위치 정보를 이용한다. 이러한 충돌자를 이용한 충돌검사는 주지된 관용 기술이므로 이하 상세한 설명은 생략한다.In one example, the
충돌검사를 수행하기 위하여, 제1 오브젝트(110)는 제2 오브젝트(120)의 충돌자인 구 형태(122)의 제2 충돌자 정보를 수집한다. 이 때, 상기 제2 충돌자 정보를 수집하기 위하여, 제1 오브젝트(110)는 게임 엔진(130)으로 상기 제2 충돌자 정보의 수집을 요청하여 수집한다. 제2 충돌자 정보를 수집한 제1 오브젝트(110)는 소정의 충돌자 검사 함수를 유지하는 충돌검사 함수 클라스(140)로 제1 오브젝트(110)의 제1 충돌자 정보 및 제2 오브젝트(120)의 제2 충돌자 정보를 전송하여 충돌검사를 요청한다. 이에 충돌검사 함수 클라수(140)는 상기 제1 충돌자 정보 및 상기 제2 충돌자 정보에 포함된 충돌자의 형태에 따른 충돌검사 함수를 검색하여 충돌검사를 수행하고, 이에 따라 생성된 충돌검사 결과를 제1 오브젝트(110)로 반환한다. 제1 오브젝트(110)는 게임 엔진(130)으로 상기 충돌검사 결과를 반환하고 게임 엔진(130)은 상기 충돌검사 결과에 따라 소정의 충돌 결과 처리를 수행한다. 상기 충돌 결과 처리는 게임의 제작과 관련된 제작자에 의하여 사전에 코딩된 함수이다.In order to perform the collision check, the first object 110 collects the second collider information of the
즉, 도 1에 따르면 충돌검사를 수행하기 위하여 게임 엔진이 오브젝트 들의 충돌자 정보에 대한 인자값을 직접적으로 수집하여 소정의 서브루틴을 수행함에 따라 발생하는 코딩의 수정 등에 대한 문제점을 최소화할 수 있다.That is, according to FIG. 1, in order to perform a collision check, a game engine directly collects argument values of collider information of objects and minimizes a problem of coding modification that occurs when a predetermined subroutine is performed. .
도 2는 도 1의 충돌검사를 수행하기 위한 단계를 도시한 흐름도이다.FIG. 2 is a flowchart illustrating steps for performing the collision test of FIG. 1.
단계(201)에서 제1 오브젝트는 본 발명에 따른 게임 엔진으로 상기 제2 오브젝트의 제2 충돌자 정보를 요청하는 쿼리(query)를 전송한다. 상기 제2 충돌자 정보는 상기 제2 오브젝트의 충돌자에 대한 위치 정보이다. 일례로, 상기 제2 충돌자가 구 형태의 충돌자인 경우에 상기 제2 충돌자 정보는 상기 구 형태를 3차원 상에서 표현할 수 있는 중심점 및 반지름 길이 정보를 포함할 수 잇다. 다른 일례로, 충돌자가 원통 형태인 경우에 두 면의 중심점 및 반지름 길이 정보를 포함하 고, 원통이 높이를 더 포함하여 3차원 상에서 원통 형태를 표현할 수 있다. 또한, 상기 쿼리는 상기 제2 오브젝트가 소정의 주기로 상기 게임 엔진에 요구할 수 있으며, 제1 오브젝트의 시간에 따른 이동의 변화율이 제2 오브젝트의 시간에 따른 이동 변화율 보다 증가되는 시점에서 상기 게임 엔진으로 요구할 수도 있다.In
단계(202)에서, 상기 게임 엔진은 제1 오브젝트로부터 상기 쿼리를 수신하고 상기 쿼리에 따라 상기 제2 오브젝트로 상기 제2 충돌자 정보 요청 명령을 전송한다. 상기 제2 충돌자 정보 요청 명령을 수신한 상기 제2 오브젝트는 현재 자신의 위치 정보인 제2 충돌자 정보를 게임 엔진으로 전송하고, 상기 게임 엔진은 상기 제2 충돌자 정보를 수신한다(단계(203)). 상기 제2 충돌자 정보를 수신한 상기 게임 엔진은 상기 제1 오브젝트로 상기 제2 충돌자 정보를 전송한다(204).In
단계(205)에서, 제1 오브젝트는 게임 엔진으로부터 수신한 제2 충돌자 정보 및 현재 자신의 위치 정보인 제1 충돌자 정보를 충돌검사 함수 클라스로 전송하여 충돌검사를 요청한다. 상기 제1 충돌자 정보 및 상기 제2 충돌자 정보를 수신한 충돌검사 함수 클라스는 상기 제1 충돌자 정보 및 상기 제2 충돌자 정보로부터 상기 제1 오브젝트 및 상기 제2 오브젝트의 형태를 파악하고 사전에 정의된 충돌검사 함수로부터 충돌검사를 수행한다(단계(206)). 상기 충돌검사 함수는 상기 제1 오브젝트 및 상기 제2 오브젝트 각각의 충돌자의 형태 개수(N)와 연관된 소정의(predetermined) 개수의 함수 집합이다. 충돌검사 함수 클라스에 유지되는 충돌검사 함수는 도 3에서 상세히 설명한다.In
도 3은 본 발명에 따른 함수 클라스에서 유지되는 충돌검사 함수를 도시한 도면이다.3 is a diagram illustrating a collision checking function maintained in a function class according to the present invention.
충돌검사 함수 클라스는 충돌자 타입(301)에 따라, 다수의 충돌검사 함수(302)를 유지한다. 도 3에서 보는 바와 같이, 충돌자 타입(301)이 사각형 형태, 경계상자 형태, 구 형태, 원통 형태, 원뿔 형태, 레이 형태, 및 그물망 형태를 포함하는 경우에 충돌검사 함수(302)는 사각형 형태와 사각형 형태를 비교, 사각형 형태와 경계상자 형태를 비교, 사각형 형태와 구 형태를 비교, …, 그물망 형태와 그물망 형태를 비교 하는 6+5+4+3+2+1 = 21개의 함수를 유지한다.The collision check function class maintains a number of collision check functions 302, depending on the collider type 301. As shown in FIG. 3, the collision check function 302 is rectangular when the collider type 301 includes a rectangular shape, a bounding box shape, a spherical shape, a cylindrical shape, a cone shape, a ray shape, and a mesh shape. Compares square and square shapes, compares square and bounding box shapes, compares square and sphere shapes,… We maintain 6 + 5 + 4 + 3 + 2 + 1 = 21 functions that compare the mesh form with the mesh form.
도 1의 일례에서 제1 오브젝트(110)의 사각형 형태(112)인 제1 충돌자와 제2 오브젝트(120)의 구 형태(122)인 제2 충돌자의 충돌검사를 수행하기 위해서는 식별번호<303>을 참조할 수 있다. 이 때, 사용되는 충돌검사 함수는 다음과 같다.In the example of FIG. 1, in order to perform a collision check between the
Collision(GoRectangleCollider * GoSphereCollider)Collision (GoRectangleCollider * GoSphereCollider)
도 2의 단계(207)에서, 충돌검사를 수행한 충돌검사 함수 클라스는 제1 오브젝트로 충돌검사 연산 결과를 반환하고, 단계(208)에서 제1 오브젝트는 상기 충돌검사 연산 결과를 게임 엔진으로 반환한다. 충돌검사 연산 결과를 수신한 게임 엔진은 상기 충돌검사 연산 결과에 따라 소정의 충돌 결과 처리를 수행한다. 상기 충돌 결과 처리는 게임의 제작자 등이 사전에 작성한 프로그램에 기초하여 동작한다.In
이로써, 본 발명에 따른 게임 엔진은 다양한 형태의 충돌자에 대한 충돌검사 를 수행하며, 상기 충돌검사에 따른 코딩의 수정을 최소화할 수 있다. 상기 게임 엔진은 상기 제1 오브젝트 또는 상기 제2 오브젝트의 속성 변화와 무관하게 변하지 아니하는 코딩 정보를 포함하여 충돌검사를 수행한다. 즉, 본 발명에 따른 게임 엔진은 충돌자의 변화에 동요되지 않는 범용화된 충돌검사 방법을 제공하게 된다.As a result, the game engine according to the present invention performs collision checks on various types of collisions, and can minimize coding modifications according to the collision checks. The game engine performs a collision check including coding information that does not change regardless of a property change of the first object or the second object. That is, the game engine according to the present invention provides a generalized collision checking method that is not shaken by the change of the collision.
결국 종래 기술에서 언급한 사람과 총알의 충돌에 따른 객체 지향 언어로 작성된 코딩은 다음과 같이 범용화될 수 있다.As a result, coding written in an object-oriented language due to a collision between a person and a bullet mentioned in the prior art may be generalized as follows.
먼저, 제2 오브젝트인 총알의 제2 충돌자 정보를 수집하기 위한 메소드를 생성한다.First, a method for collecting second collider information of a bullet, which is a second object, is generated.
class Bulletclass Bullet
{{
public:public:
GoCollider* GetCollider() { return &m_collider; } GoCollider * GetCollider () {return &m_collider; }
protected:protected:
GoVisual m_BulletVisual; // 총알의 비주얼 GoVisual m_BulletVisual; // bullet visual
GoSphereCollider m_collider; // 총알의 충돌자 GoSphere Collider m_collider; // collider
};};
다음으로, 제1 오브젝트인 사람의 제1 충돌자 정보를 수집하기 위한 메소드를 생성한다.Next, a method for collecting first collider information of a person who is a first object is generated.
class Manclass Man
{{
public:public:
GoCollider* GetCollider() { return &m_collider; } GoCollider * GetCollider () {return &m_collider; }
protected:protected:
GoVisual m_ManVisual; // 사람의 비주얼 GoVisual m_ManVisual; // human visual
GoAABBCollider m_collider; // 사람의 충돌자 GoAABBCollider m_collider; // collider
};};
다음으로, 게임 엔진에서는 총알과 사람의 충돌을 처리하기 위한 함수를 호출한다. 이 때, 총알과 사람은 각각 m_pBullet, m_pMan으로 인스턴스화 되었다고 가정한다.Next, the game engine calls a function to handle the collision between the bullet and the person. We assume that bullets and people are instantiated with m_pBullet and m_pMan, respectively.
bool CheckManHitByBullet() {bool CheckManHitByBullet () {
GoCollider* pBulletCollider = m_pBullet->GetCollider(); -(7) GoCollider * pBulletCollider = m_pBullet-> GetCollider (); -(7)
GoCollider* pManCollider = m_pMan->GetCollider(); -(8) GoCollider * pManCollider = m_pMan-> GetCollider (); -(8)
return pBulletCollider->Query( pManCollider ); -(9)return pBulletCollider-> Query (pManCollider); -(9)
}}
식별번호(7)에서 제2 오브젝트(총알)로부터 제2 충돌자 정보를 수집하고, 식 별번호(8)에서 제1 오브젝트(사람)로부터 제1 충돌자 정보를 수집한다. 식별번호(9)에서 게임 엔진은 제1 오브젝트(사람)로 충돌검사를 요청하는 쿼리를 전송하고, 리턴 값을 기다린다. 이는 종래 게임 엔진 상에서 수행되던 충돌검사를 각 오브젝트에 위임한 것이다. 또한, 이때 pBulletCollider의 Query 함수 내에서는 제1 오브젝트의 형태 및 제1 오브젝트의 형태를 판별하여 타입별 충돌검사 함수를 호출할 수 있다. 즉, 게임 엔진은 제1 오브젝트 및 제2 오브젝트에 대한 구체적인 충돌자 타입(GoSphereCollider나 GoAABBCollider)을 몰라도 추상적인 GoCollider를 통해서 오브젝트로 충돌검사를 위임하게 되면 객체 지향 언어의 특성상 Method Overriding기술을 이용해 구체적인 충돌검사를 수행할 수 있다.The second collider information is collected from the second object (bullet) at the identification number 7, and the first collider information is collected from the first object (person) at the identification number 8. At identification number 9 the game engine sends a query requesting collision checking to the first object (person) and waits for a return value. This delegates to each object a collision check that was previously performed on a game engine. In this case, within the Query function of pBulletCollider, the collision detection function for each type may be called by determining the shape of the first object and the shape of the first object. That is, if the game engine delegates collision checking to an object through an abstract GoCollider without knowing the specific collider type (GoSphereCollider or GoAABBCollider) for the first object and the second object, The test can be performed.
도 4는 본 발명에 따른 게임 엔진에서의 충돌검사 방법을 수행하는데 채용될 수 있는 범용 컴퓨터 시스템의 내부 블록도이다.4 is an internal block diagram of a general purpose computer system that may be employed to perform the collision detection method in the game engine according to the present invention.
도 4을 참조하면, 컴퓨터 시스템(400)은 램(RAM: Random Access Memory)(420)과 롬(ROM: Read Only Memory)(430)을 포함하는 주기억장치와 연결되는 하나 이상의 프로세서(410)를 포함한다. 프로세서(410)는 중앙처리장치(CPU)로 불리기도 한다. 본 기술분야에서 널리 알려져 있는 바와 같이, 롬(430)은 데이터(data)와 명령(instruction)을 단방향성으로 CPU에 전달하는 역할을 하며, 램(420)은 통상적으로 데이터와 명령을 양방향성으로 전달하는 데 사용된다. 램(420) 및 롬(430)은 컴퓨터 판독 가능 매체의 어떠한 적절한 형태를 포함할 수 있다. 대용량 기억장치(Mass Storage)(440)는 양방향성으로 프로세서(410)와 연결되어 추가적인 데이터 저장 능력을 제공하며, 상기된 컴퓨터 판독 가능 기록 매체 중 어떠한 것일 수 있다. 대용량 기억장치(440)는 프로그램, 데이터 등을 저장하는데 사용되며, 통상적으로 주기억장치보다 속도가 느린 하드디스크와 같은 보조기억장치이다. CD 롬(460)과 같은 특정 대용량 기억장치가 사용될 수도 있다. 프로세서(410)는 비디오 모니터, 트랙볼, 마우스, 키보드, 마이크로폰, 터치스크린 형 디스플레이, 카드 판독기, 자기 또는 종이 테이프 판독기, 음성 또는 필기 인식기, 조이스틱, 또는 기타 공지된 컴퓨터 입출력장치와 같은 하나 이상의 입출력 인터페이스(450)와 연결된다. 마지막으로, 프로세서(410)는 네트워크 인터페이스(470)를 통하여 유선 또는 무선 통신 네트워크에 연결될 수 있다. 이러한 네트워크 연결을 통하여 상기된 방법의 절차를 수행할 수 있다. 상기된 장치 및 도구는 컴퓨터 하드웨어 및 소프트웨어 기술 분야의 당업자에게 잘 알려져 있다.Referring to FIG. 4, the
상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있다.The hardware device described above may be configured to operate as one or more software modules to perform the operations of the present invention.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 이는 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명 사상은 아래에 기재된 특허청구범위에 의해서만 파악되어야 하고, 이의 균등 또는 등가적 변형 모두는 본 발명 사상의 범주에 속한다고 할 것이다.As described above, the present invention has been described by way of limited embodiments and drawings, but the present invention is not limited to the above-described embodiments, which can be variously modified and modified by those skilled in the art to which the present invention pertains. Modifications are possible. Accordingly, the spirit of the present invention should be understood only by the claims set forth below, and all equivalent or equivalent modifications thereof will belong to the scope of the present invention.
본 발명에 따르면, 충돌검사를 오브젝트로 위임하고, 상기 오브젝트로부터 상기 충돌검사의 결과를 리턴함으로써 게임 엔진에서 충돌자의 형태 변화 시 수정 되는 코딩을 최소할 수 있다.According to the present invention, by delegating the collision check to the object and returning the result of the collision check from the object it is possible to minimize the coding to be modified when the shape change of the collision in the game engine.
본 발명에 따르면, 게임 엔진에서 오브젝트의 형태에 상관없이 충돌검사를 수행함으로써 범용 게임 엔진을 제공할 수 있다.According to the present invention, a general-purpose game engine can be provided by performing a collision check regardless of the shape of an object in the game engine.
Claims (7)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050061073A KR100847754B1 (en) | 2005-07-07 | 2005-07-07 | Method for detecting collision of objects in game engine |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050061073A KR100847754B1 (en) | 2005-07-07 | 2005-07-07 | Method for detecting collision of objects in game engine |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20070006069A true KR20070006069A (en) | 2007-01-11 |
KR100847754B1 KR100847754B1 (en) | 2008-07-22 |
Family
ID=37871383
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020050061073A KR100847754B1 (en) | 2005-07-07 | 2005-07-07 | Method for detecting collision of objects in game engine |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100847754B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100888475B1 (en) * | 2007-02-02 | 2009-03-12 | 삼성전자주식회사 | Method and apparatus for detecting model collision |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102313845B1 (en) * | 2019-03-11 | 2021-10-18 | 아주큐엠에스 주식회사 | Device and Method for Testing Game Using Script Based on Object |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6747651B1 (en) * | 1998-07-18 | 2004-06-08 | National University Of Singapore | System and method for creating bounding volume hierarchies utilizing model simplification |
KR20040010038A (en) * | 2002-07-26 | 2004-01-31 | 이남재 | Server for online role playing game |
-
2005
- 2005-07-07 KR KR1020050061073A patent/KR100847754B1/en active IP Right Grant
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100888475B1 (en) * | 2007-02-02 | 2009-03-12 | 삼성전자주식회사 | Method and apparatus for detecting model collision |
US8130220B2 (en) | 2007-02-02 | 2012-03-06 | Samsung Electronics Co., Ltd. | Method, medium and apparatus detecting model collisions |
Also Published As
Publication number | Publication date |
---|---|
KR100847754B1 (en) | 2008-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11301954B2 (en) | Method for detecting collision between cylindrical collider and convex body in real-time virtual scenario, terminal, and storage medium | |
Peuquet et al. | An algorithm to determine the directional relationship between arbitrarily-shaped polygons in the plane | |
Hudson et al. | V-COLLIDE: Accelerated collision detection for VRML | |
EP1086385A1 (en) | Location system | |
CN113723361A (en) | Video monitoring method and device based on deep learning | |
US20210406432A1 (en) | Calculation method, medium and system for real-time physical engine enhancement based on neural network | |
CN107608609A (en) | A kind of event object sending method and device | |
EP4118626A1 (en) | Partially resident bounding volume hierarchy | |
CN112991511A (en) | Point cloud data display method | |
Xia et al. | Cloud security and privacy metamodel | |
KR100847754B1 (en) | Method for detecting collision of objects in game engine | |
CN112528428B (en) | Method and device for displaying physical parameters of engineering structure and computer equipment | |
Broman et al. | Polytopes, a novel approach to tracking | |
CN116167440B (en) | Space-time knowledge rule judging method based on grid space-time knowledge graph and related equipment | |
EP4099292A2 (en) | Method and apparatus of determining state of target object, electronic device, storage medium, and program product | |
US20090326888A1 (en) | Vectorized parallel collision detection pipeline | |
CN111639173A (en) | Epidemic situation data processing method, device, equipment and storage medium | |
Xiong et al. | Facilitating Construction Scene Understanding Knowledge Sharing and Reuse via Lifelong Site Object Detection | |
Garratt et al. | Achieving Interoperability Between Gaming Engines by Utilizing Open Simulation Standards | |
Chiatti et al. | Commonsense spatial reasoning for visually intelligent agents | |
KR102528593B1 (en) | Apparatus, method, computer-readable storage medium and computer program for identifying abnormal process | |
JP2014063406A (en) | Verification support program, verification support method and verification support device | |
KR101558174B1 (en) | Spatial reasoner for inferring the topological and directional relationships between two geo-entities, method and recording medium | |
CN112783746A (en) | Multi-language-based benchmark implementation method, system and storage medium | |
Nebel et al. | Formal properties of constraint calculi for qualitative spatial reasoning |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
J201 | Request for trial against refusal decision | ||
AMND | Amendment | ||
B601 | Maintenance of original decision after re-examination before a trial | ||
E801 | Decision on dismissal of amendment | ||
J301 | Trial decision |
Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20071022 Effective date: 20080626 |
|
S901 | Examination by remand of revocation | ||
GRNO | Decision to grant (after opposition) | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20130626 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20140703 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20150626 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20160628 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20170628 Year of fee payment: 10 |
|
FPAY | Annual fee payment |
Payment date: 20180626 Year of fee payment: 11 |
|
FPAY | Annual fee payment |
Payment date: 20190624 Year of fee payment: 12 |