KR102059559B1 - Method and device for detecting collisions of objects in a virtual scene using a reconfigurable processor - Google Patents

Method and device for detecting collisions of objects in a virtual scene using a reconfigurable processor Download PDF

Info

Publication number
KR102059559B1
KR102059559B1 KR1020130080732A KR20130080732A KR102059559B1 KR 102059559 B1 KR102059559 B1 KR 102059559B1 KR 1020130080732 A KR1020130080732 A KR 1020130080732A KR 20130080732 A KR20130080732 A KR 20130080732A KR 102059559 B1 KR102059559 B1 KR 102059559B1
Authority
KR
South Korea
Prior art keywords
collision
collision detection
pair
reconfigurable processor
hash table
Prior art date
Application number
KR1020130080732A
Other languages
Korean (ko)
Other versions
KR20140108087A (en
Inventor
보스 만티
Original Assignee
삼성전자주식회사
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 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20140108087A publication Critical patent/KR20140108087A/en
Application granted granted Critical
Publication of KR102059559B1 publication Critical patent/KR102059559B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/368Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
    • G06F13/376Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control using a contention resolving method, e.g. collision detection, collision avoidance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Processing Or Creating Images (AREA)

Abstract

물리 기반 애니메이션에서 오브젝트 충돌 검출을 위한 방법과 연관된 발명이다. 방법은 재구성 가능한 프로세서를 이용하여 수행되도록, 광범위한 페이즈 충돌 검출에서 하나 이상의 미리 정의된 명령을 할당하는 단계를 포함하고, 상기 하나 이상의 미리 정의된 명령은 현재 프레임에서 변화되는 오브젝트 프리미티브를 가진 오브젝트의 축에 정렬된 바운딩 박스(AABB)를 갱신하는 단계, 오브젝트의 충돌 쌍을 결정하는 단계 및 협소한 페이즈 충돌 검출을 위해 충돌하는 쌍을 전송하는 단계를 포함한다. 방법은 다양한 실시예에 따라, 공유된 메모리에서 구성된 하나 이상의 프로그램을 이용하는 재구성 가능한 프로세서에 의해 수행된다.An invention associated with a method for object collision detection in physics-based animation. The method includes assigning one or more predefined instructions in extensive phase collision detection to be performed using a reconfigurable processor, wherein the one or more predefined instructions are axes of an object whose object primitives change in the current frame. Updating the bounding box AABB aligned to, determining a collision pair of objects, and transmitting the conflicting pair for narrow phase collision detection. The method is performed by a reconfigurable processor using one or more programs configured in shared memory, in accordance with various embodiments.

Description

재구성 가능한 프로세서를 이용하여 가상의 장면에서 오브젝트의 충돌 검출을 위한 방법 및 장치{METHOD AND DEVICE FOR DETECTING COLLISIONS OF OBJECTS IN A VIRTUAL SCENE USING A RECONFIGURABLE PROCESSOR}TECHNICAL AND DEVICE FOR DETECTING COLLISIONS OF OBJECTS IN A VIRTUAL SCENE USING A RECONFIGURABLE PROCESSOR}

보스, 만티에 의해 2012년 7월 10일에 출원된 인도 가출원 제 2806/CHE/2012호 "재구성 가능한 프로세서를 이용하여 실시간 N 바디 충돌 검출 동안 교차하는 AABB(AXIS-ALIGNED BOUNDING BOXES)의 병렬 검출을 위한 장치 및 방법"에 대해 우선권을 주장하며, 상기 가출원의 내용 전체는 본 명세서에 참조로 포함된다.Indian Provisional Application No. 2806 / CHE / 2012, filed July 10, 2012 by Boss, Manti, for the parallel detection of AXIS-ALIGNED BOUNDING BOXES (AABBs) intersecting during real-time N-body collision detection. Prior to, and the entire contents of the provisional application are incorporated herein by reference.

실시예들은 물리 엔진(physics engine) 분야에 연관된다. 더 구체적으로, 실시예들은 재구성 가능한 프로세서(reconfigurable processor)를 이용하여 가상의 장면(virtual scene)에서 물리 엔진으로 오브젝트 충돌(collision of object)을 검출하는 장치 및 방법에 연관된다.Embodiments relate to the field of physics engines. More specifically, embodiments relate to an apparatus and method for detecting a collision of objects with a physics engine in a virtual scene using a reconfigurable processor.

물리 기반 애니메이션은 해당 기술분야에서 알려져 있다. 그러한 애니메이션에서 복수의 프로세싱 요구 때문에, 컴퓨터 기능에 대한 제어는 극도로 중요하다. 물리 기반 애니메이션은 결과적으로 실시간 효과를 제공하기 위해 준수(adhere)되는 다수의 물리 법칙을 요구한다. 물리 기반 애니메이션에서 실시간 결과를 달성하기 위해, 요구되는 하드웨어 및 물리 엔진은 컴퓨터의 노력(computational effort)을 줄이는 등의 방법으로 프레임(frame)될 필요가 있다. 나아가, 애니메이션에 연관된 3-D 오브젝트 렌더링(rendering)에서 프로세서를 도와주는 물리 엔진은 과중한 컴퓨터의 백업(computational backup)을 요구한다. 기존의 방법은 그러한 물리 기반 애니메이션을 지원하는 큰 스케일에서 장치의 비용을 증가시키는 결과가 되는 것으로 인지될 수 있다.Physics-based animation is known in the art. Because of the multiple processing requirements in such animations, control over computer functions is extremely important. Physics-based animations, in turn, require a number of physics laws to be followed to provide real-time effects. In order to achieve real-time results in physics-based animation, the required hardware and physics engine need to be framed in such a way as to reduce computational effort. Furthermore, the physics engine, which aids the processor in 3-D object rendering associated with animation, requires a heavy computer backup. It can be appreciated that existing methods result in increased device cost at large scales that support such physics-based animation.

물리 기반 애니메이션에서, 충돌 검출은 가장 중요한 것들 중 하나이다. 가상 장면에서 나타나는 오브젝트 간의 충돌 검출 어플리케이션은 로봇 공학(robotics), 애니메이션 및 게임 등의 분야에서 중요하다. 예를 들어, 로봇 공학 시뮬레이션에서, 3차원 공간에서 나타나는 모든 오브젝트는 특정한 자유도(certain degree of freedom)로 제공된다. 이런 이유로, 가상 장면에서 그러한 오브젝트의 움직임 동안, 반드시 그들 사이에 충돌이 방지되는 것이 중요하다. 애니메이션 및 게임에서, 실시간 타입 시뮬레이션 (real-time type of simulation) 중에 서로 충돌하는 오브젝트를 목격하는 것이 불합리하게 발생할 수 있다. 그러한 어플리케이션을 프로그래밍하는 동안, 오브젝트의 오버래핑(overlapping)하는 쌍 또는 충돌을 확인하기 위해 어플리케이션을 준비하는 것이 논리적일 수 있다. 또한, 충돌 검출은 뉴턴 법칙(Newtonian laws)과 같은 물리 법칙 준수에 크게 의존한다.In physics-based animation, collision detection is one of the most important ones. Collision detection applications between objects appearing in virtual scenes are important in areas such as robotics, animation, and games. For example, in robotics simulation, all objects appearing in three-dimensional space are provided with a certain degree of freedom. For this reason, it is important that during the movement of such objects in the virtual scene, collisions between them must be avoided. In animation and games, it can be unreasonable to witness objects that collide with each other during real-time type of simulation. While programming such an application, it may be logical to prepare the application to identify overlapping pairs or conflicts of objects. Collision detection also relies heavily on compliance with physical laws, such as Newtonian laws.

일 측에 따르면, 물리 엔진을 이용하는 오브젝트의 충돌 검출 방법이 제공된다. 이 방법은, 재구성 가능한 프로세서를 이용하여 수행되도록 광범위 페이즈 충돌 검출(broad phase collision detection)에서 하나 이상의 미리 정의된 명령(instruction)을 할당하는 단계를 포함한다. 상기 하나 이상의 미리 정의된 명령은, 현재 프레임에서 변형되는 오브젝트의 AABB(Axis Aligned Bounding Box)를 동적으로 갱신하는 단계, 상기 현재 프레임에서 오브젝트의 충돌 쌍(colliding pair)을 결정하는 단계, 및 협소 페이즈 충돌 검출(narrow phase collision detection)을 위해 상기 충돌 쌍을 전송하는 단계를 포함한다.According to one side, a collision detection method of an object using a physics engine is provided. The method includes assigning one or more predefined instructions in broad phase collision detection to be performed using a reconfigurable processor. The one or more predefined instructions may include dynamically updating an Axis Aligned Bounding Box (AABB) of an object that is deformed in the current frame, determining a collating pair of objects in the current frame, and a narrow phase. Transmitting the collision pair for narrow phase collision detection.

일 측에 따르면, 물리 엔진을 이용하는 오브젝트 충돌 검출 장치가 제공된다. 이 장치는 미리 정의된 명령 프로세서의 세트(set)를 할당하는 공유된 메모리(shared memory), 미리 정의된 명령의 제1 세트를 실행하기 위한 메인 프로세서(main processor); 및 미리 정의된 명령의 제2 세트를 수행하도록 상기 공유된 메모리와 연결되는 재구성 가능한 프로세서를 포함한다. 미리 정의된 명령의 제2 세트는, 현재 프레임에서 변화되는 오브젝트의 AABB를 동적으로 갱신하는 단계, 오브젝트의 충돌 쌍을 결정하는 단계, 및 협소 페이즈 충돌 검출을 위해 상기 충돌 쌍을 전송하는 단계를 포함한다.According to one side, an object collision detection apparatus using a physics engine is provided. The apparatus comprises a shared memory for allocating a set of predefined instruction processors, a main processor for executing a first set of predefined instructions; And a reconfigurable processor coupled with the shared memory to perform a second set of predefined instructions. The second set of predefined instructions includes dynamically updating the AABB of the object that is changing in the current frame, determining a conflict pair of the object, and transmitting the conflict pair for narrow phase collision detection. do.

도 1은 물리 기반 애니메이션에서 두 개의 오브젝트 간 충돌의 예를 도시한다.
도 2는 물리 엔진 및 프로세서를 이용하는 충돌 검출의 기존의 방법을 도시한다.
도 3은 물리 엔진을 이용하여 물리 기반 애니메이션을 수행하는 다른 기존의 방법을 도시한다.
도 4는 일실시예에 따른 광범위 페이즈 충돌 검출 방법을 도시한다.
도 5는 일실시예에 따라 물리 엔진을 이용하여 오브젝트 간 충돌을 검출하는 장치를 도시한다.
도 6은 일실시예에 따라 이종의 컴퓨팅 기술을 이용하는 물리 기반 애니메이션 수행 방법을 도시한다.
도 7은 일실시예에 따라 시뮬레이션 또는 물리 기반 애니메이션의 가상 장면에서 오브젝트들 간 충돌을 검출하는 재구성 가능한 프로세서에 의해 수행되는 단계를 포함하는 방법을 도시한다.
예시적으로 제시되는 도면들은 단지 설명을 위한 것이고 어떤 방식으로든 이러한 예에 제한되는 것이 아니다.
1 illustrates an example of collision between two objects in physics-based animation.
2 illustrates a conventional method of collision detection using a physics engine and a processor.
3 illustrates another existing method of performing physics-based animation using a physics engine.
4 illustrates a broad phase collision detection method according to an embodiment.
5 illustrates an apparatus for detecting a collision between objects using a physics engine according to an embodiment.
6 illustrates a method of performing physically-based animation using heterogeneous computing technology, according to an embodiment.
7 illustrates a method comprising steps performed by a reconfigurable processor that detects collisions between objects in a virtual scene of a simulation or physics-based animation, according to one embodiment.
The drawings presented by way of example are for illustrative purposes only and are not intended to be limiting to these examples in any way.

다음의 설명은 재구성 가능한 프로세서를 이용하는 충돌 검출을 위한 장치 및 방법을 제공한다. 다음 실시예의 자세한 설명에서, 이 문서의 일부인 동반되는 도면에 참조가 표시되어 있고, 실시될 수 있는 구체적인 실시예들은 설명의 방법으로 보여진다. 이러한 실시예들은 기술분야에서 통상의 지식을 가진 자가 실시예들을 실시할 수 있도록 충분히 자세하게 설명되었고, 다른 실시예들이 활용될 수 있으며, 변경은 실시예들의 범위를 벗어나지 않고 수행될 수 있는 것으로 이해될 수 있다. 그러므로, 다음의 기술된 설명은 제한 하는 의미로 받아들여서는 안되고, 실시예들의 범위는 오직 첨부된 청구항에 의해 정의된다.The following description provides an apparatus and method for collision detection using a reconfigurable processor. In the following detailed description of the embodiments, reference is made to the accompanying drawings which are part of this document, and specific embodiments that may be practiced are shown by way of explanation. These embodiments have been described in sufficient detail to enable those skilled in the art to practice the embodiments, and it is to be understood that other embodiments may be utilized, and changes may be made without departing from the scope of the embodiments. Can be. Therefore, the following description is not to be taken in a limiting sense, and the scope of the embodiments is defined only by the appended claims.

도 1은 물리 기반 애니메이션에서 두 개의 오브젝트 간 충돌의 예를 도시한다.1 illustrates an example of collision between two objects in physics-based animation.

도 1은 오브젝트 O1 및 O2 간에 충돌 가능성이 도시된 곳의 3차원 시점을 제공한다. 스크린에서 묘사되어야 하는 동작은 특정 시간 윈도우에 고정(froze)된다. 충돌 중에 복수의 쌍(1 및 1', 2 및 2', 3 및 3', 4 및 4',)이 예시적 접점(contact of point)으로 도시된다. 중력, 회전 축, 임펄스(impulse)와 같은 실시간 조건들이 충돌 영향(collision impact)을 계산하기 전에 고려된다. 오브젝트 O1 및 O2의 축은 (104a, 104b)로 표시된다.1 provides a three-dimensional view of where collision possibilities between objects O 1 and O 2 are shown. The action that must be depicted on the screen is frozen in a specific time window. A plurality of pairs (1 and 1 ', 2 and 2', 3 and 3 ', 4 and 4',) are shown as exemplary contacts of points during the collision. Real-time conditions such as gravity, axis of rotation, and impulse are taken into account before calculating the collision impact. The axes of the objects O 1 and O 2 are represented by 104a and 104b.

충돌 검출 동안, 오브젝트들의 축들은 입력 중 하나로 또한 고려된다. 또한, 화살표(106)는 오브젝트 O1 및 O2의 충돌 방향을 도시한다. 도 1은 단지 설명을 위해서 제공되고 다른 프리미티브(primitive)(모양, 크기 등)로 오브젝트의 수치 가능성(numeral possibilities)이 있을 수 있다. 다양한 실시예는 충돌 검출 동안 준수되는 방법 및 그러한 충돌의 검출로 향해진다.During collision detection, the axes of the objects are also considered as one of the inputs. Arrow 106 also shows the collision direction of objects O 1 and O 2 . 1 is provided for illustrative purposes only and there may be numerical possibilities of an object with other primitives (shape, size, etc.). Various embodiments are directed to methods that are observed during collision detection and detection of such collisions.

도 2는 프로세서 및 물리 엔진을 이용하는 충돌 검출의 기존의 방법(200)을 도시한다. 충돌 검출의 방법(200)은 어떤 컴퓨터 장치에 의해서도 수행될 수 있다. 충돌 검출을 수행하기 위한 명령은 컴퓨터 장치의 메모리에 저장된다.2 illustrates an existing method 200 of collision detection using a processor and a physics engine. The method 200 of collision detection can be performed by any computer device. Instructions for performing conflict detection are stored in a memory of the computer device.

가상 물리 애니메이션에서의 모든 오브젝트들 또는 바디(body)들은 뉴턴 법칙 및 다른 물리 법칙에 따라야만 하는 점이 주목되어야 한다. 단계(202)에서, 오브젝트 각각에 관련된 모든 물리 파라미터가 적용된다. 물리 파라미터는 실시간 상황과 유사한 속도, 중력, 토크, 임펄스 및 모멘트(moment) 등을 포함한다. 단계(204)에서, 광범위 페이즈 충돌 검출이 수행된다.It should be noted that all objects or bodies in the virtual physics animation must comply with Newton's law and other laws of physics. In step 202, all physical parameters associated with each object are applied. Physical parameters include speed, gravity, torque, impulse, moment, etc., similar to real time situations. In step 204, broad phase collision detection is performed.

또한, 물리 기반 애니메이션을 디스플레이 하기 위해 스크린에서 나타나고 있는 모든 프레임에 대하여, 물리 엔진이 모든 오브젝트들에 대한 합력(resultant force)의 계산을 용이하게 한다. N-바디 프로세싱(N-Body processing) 또는 광범위 충돌 검출 동안, 잠재적 충돌 오브젝트(potentially colliding object) 쌍이 결정된다. 충돌 데이터는 광범위 페이즈 충돌 검출을 수행하기 전에 수집된다. 광범위 페이즈 충돌 검출을 위한 충돌 데이터는 충돌 모양 및 오브젝트에서 오버래핑 하는 쌍 등을 포함한다.In addition, for every frame appearing on the screen to display physics-based animation, the physics engine facilitates the calculation of the residual force for all objects. During N-Body processing or widespread collision detection, a potential colliding object pair is determined. Collision data is collected before performing extensive phase collision detection. Collision data for widespread phase collision detection includes collision shapes, pairs that overlap in an object, and the like.

그 후에, 단계(206)에서, 협소 페이즈 충돌 검출이 수행된다. 협소 페이즈 충돌 검출은, 광범위 페이즈 충돌 검출과 비교하면 더 세분화된(granular) 레벨이다. 협소 페이즈 충돌 검출에서, 물리 기반 애니메이션이 실행되는 동안 높은 레벨의 정확도로 접점이 확인된다.Thereafter, in step 206, narrow phase collision detection is performed. Narrow phase collision detection is at a more granular level compared to broad phase collision detection. In narrow phase collision detection, the contact is identified with a high level of accuracy while the physics-based animation is running.

단계(208)에서, 물리 기반 애니메이션의 오브젝트에 수반된 제한(constraint)은 컴퓨터 장치에 의해 해결된다. 그 후에, 단계(202)부터 단계(208)까지 생산된 중간 출력을 수집함으로써 출력이 단계(210)에서 통합된다. 단계(200)은 물리 기반 애니메이션 또는 시뮬레이션의 모든 프레임 및 모든 오브젝트에 대해 반복된다.In step 208, the constraints involved in objects of physics-based animation are solved by the computer device. Thereafter, the output is integrated in step 210 by collecting the intermediate output produced from step 202 to step 208. Step 200 is repeated for every frame and every object in a physics-based animation or simulation.

도 3은 물리 엔진을 이용하여 물리 기반 애니메이션을 수행하는 다른 기존의 방법(300)을 도시한다.3 illustrates another existing method 300 for performing physics-based animation using a physics engine.

복수의 단계를 가진 기존의 방법(300)은 프로세서에 의해 실행되고, 메모리에서 컴퓨터가 판독 가능한 명령으로 저장될 수 있다. 단계(302)에서, 복수의 오브젝트들은 가상의 장면에서 렌더링(render)되고 생성된다. 오브젝트의 렌더링 및 생성은 그래픽 디스플레이(graphical display)에 의하여 수행될 수 있다. 단계(304)에서, BVH(Boundary Volume Hierarchical) 트리는 가상 장면에서의 오브젝트의 공간 분할에 기반하여 생성된다.Existing method 300 having multiple steps may be executed by a processor and stored in a computer as computer readable instructions. In step 302, the plurality of objects is rendered and created in the virtual scene. Rendering and creation of the object may be performed by a graphical display. In step 304, a Boundary Volume Hierarchical (BVH) tree is generated based on the spatial partitioning of objects in the virtual scene.

그 후에, 단계(306)에서, 가상 점검이 현재 프레임에서 이미 생성된 오브젝트 각각의 변형 또는 어떤 변화가 있는지 여부를 결정하기 위해 수행된다. 단계(308)에서, 현재 프레임에서 어떤 변형도 되지 않은 오브젝트의 비활성 노드(inactive node)가 제거된다. 오브젝트의 세부사항을 가진 BVH 트리(The BVH tree with the details of objects)는 단계(310)에서 처리되기 위해 데이터의 활성 세트(active set of data)로 갱신된다.Thereafter, in step 306, a virtual check is performed to determine whether there is a deformation or any change of each object already created in the current frame. In step 308, the inactive node of the object that has not been deformed in the current frame is removed. The BVH tree with the details of objects is updated with an active set of data for processing in step 310.

광범위 페이즈 충돌 검출은 단계(312)에서의 현재 프레임에서 데이터의 활성 세트에 대해 수행된다. 협소 페이즈 충돌 검출은 단계(314)에서 수행된다. 충돌 가능성이 검출되는 곳에서의 오브젝트의 제한은 단계(318)에서 해결된다. 그 후에, 단계(318)에서, 방법(300)의 모든 프로세싱 단계의 출력이 통합된다.Broad phase collision detection is performed on the active set of data in the current frame at step 312. Narrow phase collision detection is performed at step 314. Restriction of the object where the possibility of collision is detected is resolved at step 318. Thereafter, at step 318, the output of all processing steps of method 300 are integrated.

도 4는 일실시예에 따른 광범위 페이즈 충돌 검출 방법(400)을 도시한다.4 illustrates a method 400 for detecting a broad phase collision according to an embodiment.

방법(400)은 가상 장면에 제공되는 오브젝트 간에 광범위 페이즈 충돌을 검출하기 위한 복수의 단계를 포함한다. 단계(402)에서, 현재 프레임에 나타난 오브젝트의 가상 장면 리스트는 충돌 검출 시험을 위해 패스(pass)되거나 전송된다. 오브젝트들은 AABB(Axis Aligned Bounding Box)에 관련하여 제공된다. 단계(404)에서, 오브젝트 간 충돌 가능성이 있는 경우 바운딩 볼륨이 갱신된다. 그 후에, 바운딩 볼륨 트리는 단계(406)를 통해 스캐닝(scan)된다. 바운딩 볼륨은 가상 장면의 현재 프레임에서 나타나는 충돌 오브젝트를 둘러싼다(enclose).The method 400 includes a plurality of steps for detecting broad phase collisions between objects provided in a virtual scene. In step 402, the virtual scene list of the objects present in the current frame is passed or sent for collision detection test. The objects are provided in connection with an Axis Aligned Bounding Box (AABB). In step 404, the bounding volume is updated if there is a possibility of collision between objects. Thereafter, the bounding volume tree is scanned through step 406. The bounding volume encloses a collision object that appears in the current frame of the virtual scene.

단계(408)에서, 어떤 새로운 오브젝트가 가상 장면으로부터 제거되었는지 또는 더해졌는지를 결정한다. 제거 또는 더해진 경우, 단계(410)에서, 바운딩 볼륨 트리는 더해진 또는 제거된 오브젝트 및 관련된 정보로 갱신된다. 그 후에, 단계(412)에서, 바운딩 볼륨 트리는, 바운딩 볼륨 트리의 마디(leaf node of bounding volume tree)가 충돌 오브젝트 부분에서, 밸런싱(balance)된다. 단계(414)에서, 가상 장면의 현재 프레임에서의 모든 오브젝트 쌍은 스캐닝된다.In step 408, it is determined which new object has been removed or added from the virtual scene. If removed or added, at step 410, the bounding volume tree is updated with the added or removed object and associated information. Thereafter, in step 412, the bounding volume tree is balanced in the collision object portion of the leaf node of bounding volume tree. In step 414, all object pairs in the current frame of the virtual scene are scanned.

현재 프레임의 오브젝트 간에 충돌이 있는지 없는지에 대해 단계(416)에서 결정된다. 충돌이 없는 경우, 단계(418)에서, 충돌하고 있지 않은 오브젝트 쌍의 인덱스는 검색되고(retrieve) 제거되고, 그렇게 함으로써 각각의 해시 테이블 구조(hash table structure)를 재배열한다. 충돌이 있는 경우, 단계(420)에서, 스캐닝이 완료되는지 여부를 결정한다. 그 후에, 단계(422)에서, 해시 테이블에서의 인덱스를 가진 쌍의 교차(intersecting pairs with indices in the hash table)는 협소 페이즈 충돌 검출을 위해 전송된다.It is determined at step 416 whether there is a conflict between objects in the current frame. If there are no conflicts, then at step 418, the indexes of the object pairs that are not in conflict are retrieved and removed, thereby rearranging each hash table structure. If there is a conflict, in step 420 it is determined whether scanning is complete. Then, at step 422, intersecting pairs with indices in the hash table are sent for narrow phase collision detection.

도 5는 일실시예에 따라 물리 엔진을 이용하여 오브젝트 간 충돌을 검출하는 장치(500)를 도시한다..5 illustrates an apparatus 500 for detecting collisions between objects using a physics engine, according to one embodiment.

장치(500)는 물리적 프로세싱 모듈(physics processing module)(504)을 가지는 공유된 메모리(shared memory)(502), 버스(506), 입력/출력(I/O) 유닛(508), 트랜스시버(transceiver)(510), RAM(Random Access Memory)(512), 메인 프로세서(514) 및 재구성 가능한 프로세서(516)를 포함한다.The apparatus 500 includes a shared memory 502 with a physical processing module 504, a bus 506, an input / output (I / O) unit 508, a transceiver 510, a random access memory (RAM) 512, a main processor 514, and a reconfigurable processor 516.

다양한 실시예에 따르면, 물리적 프로세싱 모듈(504)은 물리 엔진을 이용하여 기능(function)을 관리하도록 구성된다. 메인 프로세서(514) 및 재구성 가능한 프로세서(516)는, 일부 실시예에서 물리적 프로세싱 모듈(504)로부터 기능하는 방법 및 모드에서 명령을 수신할 수 있다.According to various embodiments, physical processing module 504 is configured to manage functions using a physics engine. The main processor 514 and the reconfigurable processor 516 may receive instructions in a method and mode functioning from the physical processing module 504 in some embodiments.

또한, 다양한 실시예에서, 공유된 메모리(502)는 개별 프로세서에 미리 정의된 명령의 다른 세트를 할당하도록 구성된다. 미리 정의된 명령의 제1 세트는 메인 프로세서(514)에 할당되고, 미리 정의된 명령의 제2 세트는 실행을 위해 재구성 가능한 프로세서(516)에 할당된다. 공유된 메모리(502)에서 비롯되는 모든 미리 정의된 명령은 가상 장면에서 오브젝트의 충돌 검출을 위한 것이어야 한다.Also, in various embodiments, shared memory 502 is configured to assign different sets of predefined instructions to individual processors. The first set of predefined instructions is assigned to the main processor 514 and the second set of predefined instructions is assigned to the reconfigurable processor 516 for execution. All predefined instructions originating from shared memory 502 should be for collision detection of objects in the virtual scene.

여기에서 이용된 메인 프로세서(514)는, 마이크로 프로세서(microprocessor), 마이크로 컨트롤러(microcontroller), 콤플렉스 명령 세트 컴퓨팅 마이크로프로세서(complex instruction set computing microprocessor), 감소된 명령 세트 컴퓨팅 마이크로 프로세서(reduced instruction set computing microprocessor), 명시적 병렬 명령 컴퓨팅 마이크로프로세서(explicitly parallel instruction computing microprocessor), 그래픽 프로세서, 디지털 신호 프로세서 또는 처리 회로의 모든 다른 유형과 같은 연산 회로(computational circuit)의 모든 유형을 의미하지만 제한되지는 않는다.The main processor 514 used herein includes a microprocessor, a microcontroller, a complex instruction set computing microprocessor, and a reduced instruction set computing microprocessor. ), Any type of computational circuit, such as, but not limited to, explicitly parallel instruction computing microprocessor, graphics processor, digital signal processor, or any other type of processing circuit.

프로세서(514)는 포괄적인 또는 프로그램 가능한 로직 장치 또는 어레이(generic or programmable logic devices or arrays), 회로가 집적된 구체적 어플리케이션(application specific integrated circuits), 단일 칩 컴퓨터(single-chip computers) 및 스마트 카드와 같은 임베디드 컨트롤러(embedded controllers)를 또한 포함할 수 있다.The processor 514 may include generic or programmable logic devices or arrays, application specific integrated circuits, single-chip computers, and smart cards. The same embedded controllers may also be included.

또한, 일부 실시예들은, 선형 시 복잡성(linear time complexity)을 가지는 장면에서의 프리미티브 오브젝트를 구성하는 AABB 트리의 마디 사이에 충돌 시험 상의 갱신과 관련 있다. 예를 들어, 방법은, CGRA의 4x4 유닛을 이용하는 ADRES(Architecture for Dynamically Reconfigurable Embedded Systems) 디자인 기반 재구성 가능한 프로세서 해법에 구체적인 것일 수 있고, 이 설정(setup)은, ARMㄾ과 같은 임베디드 플랫폼 상에 광범위 페이즈 검출의 기존의 구현 이상인 8X 인자로 성능의 튠업(tune-up)을 보장한다.In addition, some embodiments relate to an update on the crash test between nodes in the AABB tree that make up a primitive object in a scene with linear time complexity. For example, the method may be specific to an Architecture for Dynamically Reconfigurable Embedded Systems (ADRES) design-based reconfigurable processor solution using 4x4 units of CGRA, and this setup may be extensive on embedded platforms such as ARM®. The 8X factor, beyond the existing implementation of phase detection, ensures tune-up of performance.

일실시예에서, 재구성 가능한 프로세서(516)는 VLIW(Very Large Instruction Word) 프로세서 및 재구성 가능한 CGA(Coarse Grain Array) 프로세서를 포함하는 ADRES이다. VLIW 및 CGA 둘 모두에서 다중 기능 유닛(FUs: Multiple functional units)은 명령 레벨 병렬처리(ILP: instruction Level Parallelism)를 이용함으로써 고 성능을 달성하기 위해 이용된다. 또한 CGA 유형 프로세싱은 타임 크리티컬 어플리케이션(time critical applications)에서 성능을 크게 증가시키는 루프 레벨 병렬처리(LLP: Loop Level Parallelism)를 이용하는 것을 또한 도와준다.In one embodiment, the reconfigurable processor 516 is an ADRES including a Very Large Instruction Word (VLIW) processor and a reconfigurable Coarse Grain Array (CGA) processor. In both VLIW and CGA, multiple functional units (FUs) are used to achieve high performance by utilizing instruction level parallelism (ILP). CGA type processing also helps to use Loop Level Parallelism (LLP), which greatly increases performance in time critical applications.

메모리(502)는 휘발성 메모리 및 비휘발성 메모리 일 수 있다. 다양한 컴퓨터 판독 가능 저장 매체는 메모리 요소들로부터 접속되고 메모리 요소에 저장될 수 있다. 메모리 요소는, 읽기 전용 메모리(read only memory), 랜덤 엑세스 메모리(random access memory), 소거 가능하고 프로그램 가능한 읽기 전용 메모리(erasable programmable read only memory), 전기적으로 소거 가능하고 프로그램 가능한 읽기 전용 메모리(electrically erasable programmable read only memory), 하드 드라이브, 메모리 카드를 핸들링하기 위한 제거 가능한 미디어 드라이브(removable media drive for handling memory cards), 메모리 스틱TM(Memory SticksTM)과 같은 기계 판독 가능한 명령(machine-readable instructions) 및 데이터 저장을 위한 모든 적합한 메모리 장치를 포함할 수 있다.The memory 502 may be a volatile memory and a nonvolatile memory. Various computer readable storage media can be connected to and stored in memory elements. Memory elements include read only memory, random access memory, erasable programmable read only memory, electrically erasable and programmable read only memory machine-readable instructions such as erasable programmable read only memory, hard drives, removable media drives for handling memory cards, Memory SticksTM, and Any suitable memory device for data storage may be included.

장치(500)의 구성요소, I/O 유닛(508), 트랜스시버(510) 및 RAM(512)은 해당 기술 분야의 통상의 기술자에게 알려져 있으므로, 더 상세한 설명은 생략한다.The components of the device 500, the I / O unit 508, the transceiver 510, and the RAM 512 are known to those skilled in the art, and thus, further description thereof is omitted.

도 6은 일실시예에 따라 이종의 컴퓨팅 기술을 이용하는 물리 기반 애니메이션 수행 방법을 도시한다.6 illustrates a method of performing physically-based animation using heterogeneous computing technology, according to an embodiment.

방법(600)은 단계(602)에서 물리 엔진을 초기화하는 것으로 시작한다. 물리 엔진이 초기화 되었을 때, 가상 장면에서 렌더링 되기 위한 복수의 파라미터의 수치가 구해진다(evaluate). 단계(604)에서, 충돌 대상으로 가상의 장면에서 이용되기 위한 오브젝트가 생성된다. 단계(602) 및 단계(604)는 메인 프로세서(514)에 의해 수행된다.The method 600 begins with initializing a physics engine at step 602. When the physics engine is initialized, a number of parameters are rendered for rendering in the virtual scene. In step 604, an object is created for use in the virtual scene as the collision target. Steps 602 and 604 are performed by the main processor 514.

그 후에, 단계(606)에서, 재구성 가능한 프로세서(516)는, 크기(dimension), 모양과 같은 오브젝트 프리미티브로 가상의 장면에서의 오브젝트를 둘러싸는(enclose) AABB를 갱신한다. 단계(608)에서, 재구성 가능한 프로세서(516)는 물리 기반 애니메이션에서의 오브젝트의 충돌 또는 오버래핑 쌍을 결정한다. 그 뒤에, 오브젝트의 결정된 충돌 쌍은, 메인 프로세서(514)에서 협소 페이즈 충돌 분석과 같은 뒤따르는 처리를 위해 전송된다. 그 후에, 단계(612)에서, 오브젝트의 접점은 충돌 쌍에 기초하여 생성된다. 접점 생성은 오브젝트 쌍의 충돌/오버랩의 세분화된 분석에 도움이 된다.Thereafter, at step 606, the reconfigurable processor 516 updates the AABB enclosing the object in the virtual scene with object primitives such as dimensions and shapes. In step 608, the reconfigurable processor 516 determines a collision or overlapping pair of objects in the physics-based animation. Thereafter, the determined collision pair of objects is sent for subsequent processing such as narrow phase collision analysis in the main processor 514. Thereafter, in step 612, the contact of the object is created based on the collision pair. Contact generation aids in the granular analysis of collisions / overlaps of object pairs.

도 7은 일실시예에 따라, 물리 기반 애니메이션 또는 시뮬레이션의 가상 장면에서 오브젝트 간에 충돌을 검출하기 위한 재구성 가능한 프로세서(516)에 의해 수행되는 단계를 포함하는 방법(700)을 도시한다.FIG. 7 illustrates a method 700 including steps performed by a reconfigurable processor 516 to detect collisions between objects in a virtual scene of physically based animation or simulation, according to one embodiment.

단계(702)에서, 해시 테이블 구조는 재구성 가능한 프로세서(516)에 의해 생성된다. 처음에, CGA 모드에서 동작하는 재구성 가능한 프로세서(516)에서의 기능 유닛의 수가 결정된다. 해시 테이블 구조 각각은 CGA 모드에서 동작하는 기능 유닛 각각에 대응한다.In step 702, the hash table structure is generated by the reconfigurable processor 516. Initially, the number of functional units in the reconfigurable processor 516 operating in CGA mode is determined. Each hash table structure corresponds to each functional unit operating in CGA mode.

CGA 모드에서, 데이터는 충분한 컴퓨팅 프로세스(due computation process) 후에 드물게 전송된다. 만약 오브젝트 쌍의 수 'N'이 물리 엔진에 의해 지원되고, 해시 테이블 구조의 수 'M'이 나타난다면, 해시 테이블이 지원할 수 있는 엔트리(entry)의 수치를 구하기 위한 표현은 수학식 1과 같이 제공된다.In CGA mode, data is rarely transmitted after a sufficient computation process. If the number of object pairs 'N' is supported by the physics engine and the number 'M' of the hash table structure appears, then the expression for obtaining the number of entries that the hash table can support is given by Equation 1. Is provided.

Figure 112013061926956-pat00001
Figure 112013061926956-pat00001

'Floor'는 함수이고 'mod'는 컴퓨터 언어에서 이용되는 연산자이다. 단계(702)는 VLIW 모드에서 수행될 수 있다. 예를 들어, VLIW 모드에서, 단계(702)의 출력은 방법(700)에서 병렬적으로 처리되는 다른 단계(consequent step)에 영향을 주지 않는다.'Floor' is a function and 'mod' is an operator used in computer languages. Step 702 may be performed in the VLIW mode. For example, in the VLIW mode, the output of step 702 does not affect other consequent steps processed in parallel in method 700.

단계(704)에서, 어레이 구조, 다시 말해서, 글로벌 충돌 어레이 구조(global collision array structure) 및 글로벌 프록시 오브젝트 어레이 구조(global proxy object array structure)가 생성된다. 글로벌 충돌 어레이 구조는 위치, 변형, 속도 및 파라미터에 연관된 다른 충돌 물리적 특성과 연관되는 모든 특성을 저장한다. 글로벌 프록시 오브젝트 어레이 구조는 충돌 오브젝트 및 관련된 AABB를 저장한다. 단계(704)는 VLIW 모드에서 수행된다.In step 704, an array structure is created, that is, a global collision array structure and a global proxy object array structure. The global collision array structure stores all properties associated with position, deformation, velocity and other collision physical properties related to parameters. The global proxy object array structure stores collision objects and their associated AABBs. Step 704 is performed in the VLIW mode.

단계(706)에서, VLIW 모드에서, 재구성 가능한 프로세서(516)는 해시 테이블 구조를 초기화 한다. 일실시예에서, 해시 테이블 구조의 초기화는 2가지 페이즈를 수반할 수 있다. 가상의 장면에서 각각의 오브젝트에 대해, 2가지 페이즈는 오브젝트 쌍 인덱스를 저장(페이즈Ⅰ), 해시 테이블 id를 제공(페이즈 Ⅱ)하는 것이고, 해시 테이블 id는 구체적 오브젝트의 글로벌 프록시 오브젝트 어레이에 통합(incorporate)된다.In step 706, in the VLIW mode, the reconfigurable processor 516 initializes a hash table structure. In one embodiment, initialization of the hash table structure may involve two phases. For each object in the fictional scene, two phases are to store the object pair index (phase I), provide a hash table id (phase II), and the hash table id is integrated into the global proxy object array of the specific object ( incorporate.

단계(708)에서, 충돌 오브젝트 어레이 리스트는 재구성 가능한 프로세서(516)에 의해 트래버싱(traverse) 되거나 스캐닝된다. 트래버싱 또는 스캐닝은 가상 장면의 오브젝트에서 어떤 변형이 있는지 여부를 확인하기 위해 수행된다. 상기 변형은, 가상 장면의 존재하는 오브젝트의 모든 특성의 통합 또는 갱신 또는 변화를 참조할 수 있다. 단계(708)는 재구성 가능한 프로세서(516)에 의해 CGA 모드에서 수행된다.In step 708, the collision object array list is traversed or scanned by the reconfigurable processor 516. Traversing or scanning is performed to see if there is any deformation in the object of the virtual scene. The modification may refer to the integration or update or change of all the properties of the existing object of the virtual scene. Step 708 is performed in the CGA mode by the reconfigurable processor 516.

단계(710)에서, CGA 모드에서, 오브젝트에서 확인되는 어떠한 변형이라도 있는 경우, 오브젝트의 바운딩 볼륨 또는 글로벌 프록시 오브젝트 어레이 구조는 가상 장면의 현재 프레임에 대해 갱신된다. 단계(712)에서, BVH 트리의 비활성 노드는 확인되고, BVH 트리로부터 제거된다. 프로세서(516)는 비활성 노드 처리를 필요로하지 않으므로, 활성 리스트로부터 그들을 제거하기에 더 좋다. 비활성 노드를 제거하자마자, BVH 트리 갱신의 서브 단계가 수행된다.In step 710, in the CGA mode, if there is any variation identified in the object, the object's bounding volume or global proxy object array structure is updated for the current frame of the virtual scene. In step 712, inactive nodes of the BVH tree are identified and removed from the BVH tree. Processor 516 does not require inactive node processing, so it is better to remove them from the active list. As soon as the inactive node is removed, a substep of BVH tree update is performed.

그 후에, 단계(714)에서, 재구성 가능한 프로세서(516)는, CGA 모드에서, 가상 장면의 현재 프레임의 BVH 트리의 모든 노드를 트래버싱 하거나 스캐닝한다. 단계(716)에서, CGA 모드에서, 재구성 가능한 프로세서(516)는, BVH 트리의 노드를 통한 스캐닝 후에, 현재 프레임에서 나타나는 바디 또는 오브젝트의 바운딩 볼륨 노드 간의 교차(intersection)가 있는지 여부를 결정한다. 결정 단계는 가상 장면에서 나타나는 모든 바운딩 볼륨의 각 노드에 대해 수행된다.Thereafter, in step 714, the reconfigurable processor 516 traverses or scans all nodes of the BVH tree of the current frame of the virtual scene, in CGA mode. In step 716, in CGA mode, reconfigurable processor 516 determines whether there is an intersection between the bounding volume nodes of the body or object appearing in the current frame after scanning through the nodes of the BVH tree. The decision step is performed for each node of all bounding volumes appearing in the virtual scene.

교차가 없는 경우, 단계(718)에서, 재구성 가능한 프로세서(516)가 VLIW 모드에서의 바디의 오브젝트 쌍 또는 비교차 노드에 대해 해시 테이블 id(단계(706)에서 제공된)를 검색한다. 검색된 해시 테이블 id 및 비-교차 오브젝트 쌍은 단계(720)에서 저장된다.If there is no intersection, at step 718, the reconfigurable processor 516 retrieves the hash table id (provided at step 706) for the object pair or non-cross node of the body in VLIW mode. The retrieved hash table id and non-crossing object pair are stored at step 720.

단계(722)에서, VLIW 모드에서, 재구성 가능한 프로세서(516)는 해시 테이블 id에 대하여 비-교차 쌍을 큐잉(queue)한다. 그 후에, CGA 모드에서 재구성 가능한 프로세서(516)는, 단계(724)에서 바디의 비-교차 오브젝트 쌍 인덱스를 검색한다. 비-교차 오브젝트 쌍의 인덱스는 글로벌 프록시 오브젝트 어레이 리스트로부터 단계(726)에서 제거된다. 기존의 글로벌 프록시 오브젝트 쌍 어레이 리스트는 협소 페이즈 충돌 검출을 위해 재구성 가능한 프로세서(516)에 의해 전송된다.In step 722, in the VLIW mode, the reconfigurable processor 516 queues the non-crossing pair for the hash table id. The reconfigurable processor 516 in CGA mode then retrieves the non-crossing object pair index of the body at step 724. The index of the non-crossing object pair is removed at step 726 from the global proxy object array list. The existing global proxy object pair array list is sent by the reconfigurable processor 516 for narrow phase collision detection.

실시예들은 구체적인 예시 실시예들을 참조하여 설명되었다. 더 나아가, 다양한 장치, 모듈, 선택 장치(selector), 측정 장치(estimator)와 같이 여기에서 설명된 것은, 하드웨어 회로, 예를 들어, 상보성 금속 산화물 반도체 기반의 논리 회로(complementary metal oxide semiconductor based logic circuitry), 펌웨어, 소프트웨어 및/또는 하드웨어의 모든 조합, 펌웨어, 및/또는 기계 판독 가능 매체에서 구현된 소프트웨어를 이용하여 동작되고 인에이블(enable)될 수 있다. 예를 들어, 다양한 전기적 구조 및 방법은 구체적 집적 회로 어플레케이션과 같은 전자 회로, 논리 게이트 및 트랜지스터를 이용하여 구현될 수 있다.Embodiments have been described with reference to specific example embodiments. Furthermore, what is described herein, such as various devices, modules, selectors, and estimators, may be hardware circuits, such as complementary metal oxide semiconductor based logic circuitry. ), Any combination of firmware, software and / or hardware, firmware, and / or software implemented on a machine readable medium may be operated and enabled. For example, various electrical structures and methods may be implemented using electronic circuits such as specific integrated circuit applications, logic gates, and transistors.

Claims (12)

물리 엔진을 이용하는 오브젝트의 충돌 검출 방법에 있어서, 상기 방법은,
재구성 가능한 프로세서를 이용하여 수행되도록 광범위 페이즈 충돌 검출에 하나 이상의 미리 정의된 명령을 할당하는 단계
를 포함하고,
상기 하나 이상의 미리 정의된 명령은,
현재 프레임에서 변형되는 오브젝트의 AABB(Axis Aligned Bounding Box)를 동적으로 갱신하는 단계;
상기 현재 프레임에서 상기 오브젝트의 충돌 쌍을 결정하는 단계; 및
협소 페이즈 충돌 검출을 위해 상기 충돌 쌍을 전송하는 단계
를 포함하는 오브젝트의 충돌 검출 방법.
In the collision detection method of an object using a physics engine, the method
Assigning one or more predefined instructions to detect broad phase collisions to be performed using a reconfigurable processor
Including,
The one or more predefined commands,
Dynamically updating an Axis Aligned Bounding Box (AABB) of an object that is deformed in the current frame;
Determining a collision pair of the object in the current frame; And
Transmitting the collision pair for narrow phase collision detection
Collision detection method of an object comprising a.
제1항에 있어서,
상기 오브젝트의 충돌 쌍을 결정하는 단계는,
상기 재구성 가능한 프로세서에서 CGA(Coarse Grain Array) 모드로 동작하는 기능 유닛의 수에 대하여 해시 테이블(hash table) 구조를 생성하는 단계;
글로벌 충돌 어레이 구조 및 글로벌 프록시 오브젝트 어레이 구조를 포함하는, 하나 이상의 어레이 구조를 생성하는 단계; 및
상기 해시 테이블 구조를 초기화하는 단계
를 포함하는 오브젝트의 충돌 검출 방법.
The method of claim 1,
Determining a collision pair of the object,
Generating a hash table structure for the number of functional units operating in coarse grain array (CGA) mode in the reconfigurable processor;
Creating one or more array structures, comprising a global collision array structure and a global proxy object array structure; And
Initializing the hash table structure
Collision detection method of an object comprising a.
제2항에 있어서,
충돌 오브젝트 어레이 리스트를 스캐닝하여 현재 프레임에서 상기 오브젝트의 변형이 있는지의 여부를 결정하는 단계;
상기 변형이 있는 경우, 상기 현재 프레임에서 상기 오브젝트의 바운딩 볼륨을 갱신하는 단계; 및
상기 변형이 없는 경우, 상기 오브젝트의 상기 바운딩 볼륨으로부터 비활성 노드를 제거하는 단계
를 더 포함하는 오브젝트의 충돌 검출 방법.
The method of claim 2,
Scanning a collision object array list to determine whether there is a deformation of the object in the current frame;
Updating the bounding volume of the object in the current frame if there is the deformation; And
If there is no deformation, removing an inactive node from the bounding volume of the object.
Collision detection method of the object further comprising.
제3항에 있어서,
상기 오브젝트의 상기 바운딩 볼륨의 상기 노드 각각을 스캐닝하여 상기 노드 간에 교차가 있는지의 여부를 결정하는 단계; 및
상기 교차가 없는 경우, 상기 오브젝트의 비-교차 쌍의 해시 테이블 id를 검색하고 저장하는 단계
를 더 포함하는 오브젝트의 충돌 검출 방법.
The method of claim 3,
Scanning each of the nodes of the bounding volume of the object to determine whether there is an intersection between the nodes; And
Retrieving and storing a hash table id of a non-crossed pair of objects if there is no intersection
Collision detection method of the object further comprising.
제4항에 있어서,
상기 비-교차 쌍의 상기 해시 테이블 id를 검색하고 저장하는 단계는,
상기 해시 테이블 id에 대하여 상기 비-교차 쌍을 큐잉하는(queuing) 단계; 및
상기 해시 테이블 id를 이용하여 상기 비-교차 쌍의 인덱스를 검색하는 단계
를 더 포함하는 오브젝트의 충돌 검출 방법.
The method of claim 4, wherein
Retrieving and storing the hash table id of the non-crossed pair,
Queuing the non-crossing pair with respect to the hash table id; And
Retrieving the index of the non-crossed pair using the hash table id
Collision detection method of the object further comprising.
제5항에 있어서,
글로벌 프록시 오브젝트 쌍 어레이 리스트로부터 상기 비-교차 쌍의 상기 인덱스를 제거하는 단계; 및
상기 협소 페이즈 충돌 검출을 위해 상기 비-교차 쌍이 전혀 없는, 상기 글로벌 프록시 오브젝트 쌍 어레이 리스트를 전송하는 단계
를 더 포함하는 오브젝트의 충돌 검출 방법.
The method of claim 5,
Removing the index of the non-crossed pair from a global proxy object pair array list; And
Sending the global proxy object pair array list without the non-crossing pair for detecting the narrow phase collision.
Collision detection method of the object further comprising.
물리 엔진을 이용하는 오브젝트의 충돌 검출 장치에 있어서,
미리 정의된 명령 프로세서의 세트를 할당하는 공유된 메모리;
미리 정의된 명령의 제1 세트를 실행하기 위한 메인 프로세서; 및
미리 정의된 명령의 제2 세트를 수행하도록 상기 공유된 메모리와 연결된 재구성 가능한 프로세서
를 포함하고,
상기 미리 정의된 명령의 제2 세트는,
현재 프레임에서 변형되는 AABB를 동적으로 갱신하는 단계;
상기 오브젝트의 충돌 쌍을 결정하는 단계; 및
협소 프레임 충돌 검출을 위해 상기 충돌 쌍을 전송하는 단계
를 포함하는 오브젝트의 충돌 검출 장치.
In the collision detection apparatus of an object using a physics engine,
Shared memory for allocating a set of predefined instruction processors;
A main processor for executing a first set of predefined instructions; And
A reconfigurable processor associated with the shared memory to perform a second set of predefined instructions
Including,
The second set of predefined instructions is
Dynamically updating the AABB transformed in the current frame;
Determining a collision pair of the object; And
Transmitting the collision pair for narrow frame collision detection
Collision detection apparatus of the object comprising a.
제7항에 있어서,
상기 재구성 가능한 프로세서가,
상기 재구성 가능한 프로세서에서 CGA 모드로 동작하는 기능 유닛의 수에 대하여 해시 테이블 구조를 생성하는 단계;
글로벌 충돌 어레이 구조 및 글로벌 프록시 오브젝트 어레이 구조를 포함하는, 하나 이상의 어레이 구조를 생성하는 단계; 및
상기 해시 테이블 구조를 초기화하는 단계
의 명령을 더 수행하는 오브젝트의 충돌 검출 장치.
The method of claim 7, wherein
The reconfigurable processor,
Generating a hash table structure for the number of functional units operating in a CGA mode in the reconfigurable processor;
Creating one or more array structures, comprising a global collision array structure and a global proxy object array structure; And
Initializing the hash table structure
Collision detection device of the object to perform further instructions.
제8항에 있어서,
상기 재구성 가능한 프로세서가,
충돌 오브젝트 어레이 리스트를 스캐닝하여 현재 프레임에서 상기 오브젝트의 변형이 있는지의 여부를 결정하는 단계;
상기 변형이 있는 경우, 상기 현재 프레임에서 상기 오브젝트의 바운딩 볼륨을 갱신하는 단계; 및
상기 변형이 없는 경우, 상기 오브젝트의 상기 바운딩 볼륨으로부터 비활성 노드를 제거하는 단계
의 명령을 더 수행하는 오브젝트의 충돌 검출 장치.
The method of claim 8,
The reconfigurable processor,
Scanning a collision object array list to determine whether there is a deformation of the object in the current frame;
Updating the bounding volume of the object in the current frame if there is the deformation; And
If there is no deformation, removing an inactive node from the bounding volume of the object.
Collision detection device of the object to perform further instructions.
제9항에 있어서,
상기 재구성 가능한 프로세서가,
상기 오브젝트의 상기 바운딩 볼륨의 상기 노드 각각을 스캐닝하여 상기 노드 간에 교차가 있는지의 여부를 결정하는 단계; 및
상기 교차가 없는 경우, 상기 오브젝트의 비-교차 쌍의 해시 테이블 id를 검색하고 저장하는 단계
의 명령을 더 수행하는 오브젝트의 충돌 검출 장치.
The method of claim 9,
The reconfigurable processor,
Scanning each of the nodes of the bounding volume of the object to determine whether there is an intersection between the nodes; And
Retrieving and storing a hash table id of a non-crossed pair of objects if there is no intersection
Collision detection device of the object to perform further instructions.
삭제delete 삭제delete
KR1020130080732A 2012-07-10 2013-07-10 Method and device for detecting collisions of objects in a virtual scene using a reconfigurable processor KR102059559B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN2806/CHE/2012 2013-02-28
IN2806CH2012 2013-02-28

Publications (2)

Publication Number Publication Date
KR20140108087A KR20140108087A (en) 2014-09-05
KR102059559B1 true KR102059559B1 (en) 2019-12-26

Family

ID=51755454

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130080732A KR102059559B1 (en) 2012-07-10 2013-07-10 Method and device for detecting collisions of objects in a virtual scene using a reconfigurable processor

Country Status (1)

Country Link
KR (1) KR102059559B1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105488851B (en) 2015-11-30 2017-07-07 腾讯科技(深圳)有限公司 In real-time virtual scene between collision body collision detection method and apparatus
CN105469406B (en) * 2015-11-30 2018-05-04 东北大学 A kind of dummy object collision checking method based on bounding box and space division

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100787952B1 (en) 2006-08-11 2007-12-24 광주과학기술원 Apparatus and method for haptic rendering using local occupancy map instance, and haptic system using them

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100787952B1 (en) 2006-08-11 2007-12-24 광주과학기술원 Apparatus and method for haptic rendering using local occupancy map instance, and haptic system using them

Also Published As

Publication number Publication date
KR20140108087A (en) 2014-09-05

Similar Documents

Publication Publication Date Title
US11928772B2 (en) Method for forward progress and programmable timeouts of tree traversal mechanisms in hardware
US11966737B2 (en) Robust, efficient multiprocessor-coprocessor interface
US10810785B2 (en) Method for forward progress tree traversal mechanisms in hardware
Kim et al. HPCCD: Hybrid parallel continuous collision detection using CPUs and GPUs
KR101702996B1 (en) Structured grids and graph traversal for image processing
JP2017188098A (en) Hierarchy merging
US10417803B2 (en) Multiple-pass rendering of a digital three-dimensional model of a structure
US8279227B2 (en) Method for detecting collisions among large numbers of particles
CN111465943A (en) On-chip computing network
KR102059559B1 (en) Method and device for detecting collisions of objects in a virtual scene using a reconfigurable processor
JP7245880B2 (en) System and method for accelerated ray tracing and ray conversion with asynchronous operation
US20170206299A1 (en) Method for improving capacitance extraction performance by approximating the effect of distant shapes
EP3425593A1 (en) Highly parallelizable algorithm for detecting intersections of shapes
GB2599183A (en) Intersection testing in a ray tracing system
Shahbahrami et al. FPGA implementation of parallel histogram computation
CN111062473B (en) Data calculation method, image processing method and device in neural network model
US20170109462A1 (en) System and a method for determining approximate set of visible objects in beam tracing
Avril et al. Dynamic adaptation of broad phase collision detection algorithms
CN116127802A (en) Method, device and system for displaying CAE simulation result on 3D (three-dimensional) view
Raabe et al. Space-efficient FPGA-accelerated collision detection for virtual prototyping
US20150146877A1 (en) System and a method for determining approximate set of visible objects in beam tracing
Movania et al. A Novel GPU‐Based Deformation Pipeline
Raabe et al. Hardware accelerated collision detection-an architecture and simulation results
CN112489203A (en) Model processing method, model processing apparatus, electronic device, and storage medium
CA2835490A1 (en) A system and a method for determining approximate set of visible objects in beam tracing

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant