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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/368—Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
- G06F13/376—Handling 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration 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
보스, 만티에 의해 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.
도 2는 프로세서 및 물리 엔진을 이용하는 충돌 검출의 기존의 방법(200)을 도시한다. 충돌 검출의 방법(200)은 어떤 컴퓨터 장치에 의해서도 수행될 수 있다. 충돌 검출을 수행하기 위한 명령은 컴퓨터 장치의 메모리에 저장된다.2 illustrates an
가상 물리 애니메이션에서의 모든 오브젝트들 또는 바디(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
또한, 물리 기반 애니메이션을 디스플레이 하기 위해 스크린에서 나타나고 있는 모든 프레임에 대하여, 물리 엔진이 모든 오브젝트들에 대한 합력(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
단계(208)에서, 물리 기반 애니메이션의 오브젝트에 수반된 제한(constraint)은 컴퓨터 장치에 의해 해결된다. 그 후에, 단계(202)부터 단계(208)까지 생산된 중간 출력을 수집함으로써 출력이 단계(210)에서 통합된다. 단계(200)은 물리 기반 애니메이션 또는 시뮬레이션의 모든 프레임 및 모든 오브젝트에 대해 반복된다.In
도 3은 물리 엔진을 이용하여 물리 기반 애니메이션을 수행하는 다른 기존의 방법(300)을 도시한다.3 illustrates another existing
복수의 단계를 가진 기존의 방법(300)은 프로세서에 의해 실행되고, 메모리에서 컴퓨터가 판독 가능한 명령으로 저장될 수 있다. 단계(302)에서, 복수의 오브젝트들은 가상의 장면에서 렌더링(render)되고 생성된다. 오브젝트의 렌더링 및 생성은 그래픽 디스플레이(graphical display)에 의하여 수행될 수 있다. 단계(304)에서, BVH(Boundary Volume Hierarchical) 트리는 가상 장면에서의 오브젝트의 공간 분할에 기반하여 생성된다.Existing
그 후에, 단계(306)에서, 가상 점검이 현재 프레임에서 이미 생성된 오브젝트 각각의 변형 또는 어떤 변화가 있는지 여부를 결정하기 위해 수행된다. 단계(308)에서, 현재 프레임에서 어떤 변형도 되지 않은 오브젝트의 비활성 노드(inactive node)가 제거된다. 오브젝트의 세부사항을 가진 BVH 트리(The BVH tree with the details of objects)는 단계(310)에서 처리되기 위해 데이터의 활성 세트(active set of data)로 갱신된다.Thereafter, in
광범위 페이즈 충돌 검출은 단계(312)에서의 현재 프레임에서 데이터의 활성 세트에 대해 수행된다. 협소 페이즈 충돌 검출은 단계(314)에서 수행된다. 충돌 가능성이 검출되는 곳에서의 오브젝트의 제한은 단계(318)에서 해결된다. 그 후에, 단계(318)에서, 방법(300)의 모든 프로세싱 단계의 출력이 통합된다.Broad phase collision detection is performed on the active set of data in the current frame at
도 4는 일실시예에 따른 광범위 페이즈 충돌 검출 방법(400)을 도시한다.4 illustrates a
방법(400)은 가상 장면에 제공되는 오브젝트 간에 광범위 페이즈 충돌을 검출하기 위한 복수의 단계를 포함한다. 단계(402)에서, 현재 프레임에 나타난 오브젝트의 가상 장면 리스트는 충돌 검출 시험을 위해 패스(pass)되거나 전송된다. 오브젝트들은 AABB(Axis Aligned Bounding Box)에 관련하여 제공된다. 단계(404)에서, 오브젝트 간 충돌 가능성이 있는 경우 바운딩 볼륨이 갱신된다. 그 후에, 바운딩 볼륨 트리는 단계(406)를 통해 스캐닝(scan)된다. 바운딩 볼륨은 가상 장면의 현재 프레임에서 나타나는 충돌 오브젝트를 둘러싼다(enclose).The
단계(408)에서, 어떤 새로운 오브젝트가 가상 장면으로부터 제거되었는지 또는 더해졌는지를 결정한다. 제거 또는 더해진 경우, 단계(410)에서, 바운딩 볼륨 트리는 더해진 또는 제거된 오브젝트 및 관련된 정보로 갱신된다. 그 후에, 단계(412)에서, 바운딩 볼륨 트리는, 바운딩 볼륨 트리의 마디(leaf node of bounding volume tree)가 충돌 오브젝트 부분에서, 밸런싱(balance)된다. 단계(414)에서, 가상 장면의 현재 프레임에서의 모든 오브젝트 쌍은 스캐닝된다.In
현재 프레임의 오브젝트 간에 충돌이 있는지 없는지에 대해 단계(416)에서 결정된다. 충돌이 없는 경우, 단계(418)에서, 충돌하고 있지 않은 오브젝트 쌍의 인덱스는 검색되고(retrieve) 제거되고, 그렇게 함으로써 각각의 해시 테이블 구조(hash table structure)를 재배열한다. 충돌이 있는 경우, 단계(420)에서, 스캐닝이 완료되는지 여부를 결정한다. 그 후에, 단계(422)에서, 해시 테이블에서의 인덱스를 가진 쌍의 교차(intersecting pairs with indices in the hash table)는 협소 페이즈 충돌 검출을 위해 전송된다.It is determined at
도 5는 일실시예에 따라 물리 엔진을 이용하여 오브젝트 간 충돌을 검출하는 장치(500)를 도시한다..5 illustrates an
장치(500)는 물리적 프로세싱 모듈(physics processing module)(504)을 가지는 공유된 메모리(shared memory)(502), 버스(506), 입력/출력(I/O) 유닛(508), 트랜스시버(transceiver)(510), RAM(Random Access Memory)(512), 메인 프로세서(514) 및 재구성 가능한 프로세서(516)를 포함한다.The
다양한 실시예에 따르면, 물리적 프로세싱 모듈(504)은 물리 엔진을 이용하여 기능(function)을 관리하도록 구성된다. 메인 프로세서(514) 및 재구성 가능한 프로세서(516)는, 일부 실시예에서 물리적 프로세싱 모듈(504)로부터 기능하는 방법 및 모드에서 명령을 수신할 수 있다.According to various embodiments,
또한, 다양한 실시예에서, 공유된 메모리(502)는 개별 프로세서에 미리 정의된 명령의 다른 세트를 할당하도록 구성된다. 미리 정의된 명령의 제1 세트는 메인 프로세서(514)에 할당되고, 미리 정의된 명령의 제2 세트는 실행을 위해 재구성 가능한 프로세서(516)에 할당된다. 공유된 메모리(502)에서 비롯되는 모든 미리 정의된 명령은 가상 장면에서 오브젝트의 충돌 검출을 위한 것이어야 한다.Also, in various embodiments, shared
여기에서 이용된 메인 프로세서(514)는, 마이크로 프로세서(microprocessor), 마이크로 컨트롤러(microcontroller), 콤플렉스 명령 세트 컴퓨팅 마이크로프로세서(complex instruction set computing microprocessor), 감소된 명령 세트 컴퓨팅 마이크로 프로세서(reduced instruction set computing microprocessor), 명시적 병렬 명령 컴퓨팅 마이크로프로세서(explicitly parallel instruction computing microprocessor), 그래픽 프로세서, 디지털 신호 프로세서 또는 처리 회로의 모든 다른 유형과 같은 연산 회로(computational circuit)의 모든 유형을 의미하지만 제한되지는 않는다.The
프로세서(514)는 포괄적인 또는 프로그램 가능한 로직 장치 또는 어레이(generic or programmable logic devices or arrays), 회로가 집적된 구체적 어플리케이션(application specific integrated circuits), 단일 칩 컴퓨터(single-chip computers) 및 스마트 카드와 같은 임베디드 컨트롤러(embedded controllers)를 또한 포함할 수 있다.The
또한, 일부 실시예들은, 선형 시 복잡성(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
메모리(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
장치(500)의 구성요소, I/O 유닛(508), 트랜스시버(510) 및 RAM(512)은 해당 기술 분야의 통상의 기술자에게 알려져 있으므로, 더 상세한 설명은 생략한다.The components of the
도 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
그 후에, 단계(606)에서, 재구성 가능한 프로세서(516)는, 크기(dimension), 모양과 같은 오브젝트 프리미티브로 가상의 장면에서의 오브젝트를 둘러싸는(enclose) AABB를 갱신한다. 단계(608)에서, 재구성 가능한 프로세서(516)는 물리 기반 애니메이션에서의 오브젝트의 충돌 또는 오버래핑 쌍을 결정한다. 그 뒤에, 오브젝트의 결정된 충돌 쌍은, 메인 프로세서(514)에서 협소 페이즈 충돌 분석과 같은 뒤따르는 처리를 위해 전송된다. 그 후에, 단계(612)에서, 오브젝트의 접점은 충돌 쌍에 기초하여 생성된다. 접점 생성은 오브젝트 쌍의 충돌/오버랩의 세분화된 분석에 도움이 된다.Thereafter, at
도 7은 일실시예에 따라, 물리 기반 애니메이션 또는 시뮬레이션의 가상 장면에서 오브젝트 간에 충돌을 검출하기 위한 재구성 가능한 프로세서(516)에 의해 수행되는 단계를 포함하는 방법(700)을 도시한다.FIG. 7 illustrates a
단계(702)에서, 해시 테이블 구조는 재구성 가능한 프로세서(516)에 의해 생성된다. 처음에, CGA 모드에서 동작하는 재구성 가능한 프로세서(516)에서의 기능 유닛의 수가 결정된다. 해시 테이블 구조 각각은 CGA 모드에서 동작하는 기능 유닛 각각에 대응한다.In
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
'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
단계(704)에서, 어레이 구조, 다시 말해서, 글로벌 충돌 어레이 구조(global collision array structure) 및 글로벌 프록시 오브젝트 어레이 구조(global proxy object array structure)가 생성된다. 글로벌 충돌 어레이 구조는 위치, 변형, 속도 및 파라미터에 연관된 다른 충돌 물리적 특성과 연관되는 모든 특성을 저장한다. 글로벌 프록시 오브젝트 어레이 구조는 충돌 오브젝트 및 관련된 AABB를 저장한다. 단계(704)는 VLIW 모드에서 수행된다.In
단계(706)에서, VLIW 모드에서, 재구성 가능한 프로세서(516)는 해시 테이블 구조를 초기화 한다. 일실시예에서, 해시 테이블 구조의 초기화는 2가지 페이즈를 수반할 수 있다. 가상의 장면에서 각각의 오브젝트에 대해, 2가지 페이즈는 오브젝트 쌍 인덱스를 저장(페이즈Ⅰ), 해시 테이블 id를 제공(페이즈 Ⅱ)하는 것이고, 해시 테이블 id는 구체적 오브젝트의 글로벌 프록시 오브젝트 어레이에 통합(incorporate)된다.In
단계(708)에서, 충돌 오브젝트 어레이 리스트는 재구성 가능한 프로세서(516)에 의해 트래버싱(traverse) 되거나 스캐닝된다. 트래버싱 또는 스캐닝은 가상 장면의 오브젝트에서 어떤 변형이 있는지 여부를 확인하기 위해 수행된다. 상기 변형은, 가상 장면의 존재하는 오브젝트의 모든 특성의 통합 또는 갱신 또는 변화를 참조할 수 있다. 단계(708)는 재구성 가능한 프로세서(516)에 의해 CGA 모드에서 수행된다.In
단계(710)에서, CGA 모드에서, 오브젝트에서 확인되는 어떠한 변형이라도 있는 경우, 오브젝트의 바운딩 볼륨 또는 글로벌 프록시 오브젝트 어레이 구조는 가상 장면의 현재 프레임에 대해 갱신된다. 단계(712)에서, BVH 트리의 비활성 노드는 확인되고, BVH 트리로부터 제거된다. 프로세서(516)는 비활성 노드 처리를 필요로하지 않으므로, 활성 리스트로부터 그들을 제거하기에 더 좋다. 비활성 노드를 제거하자마자, BVH 트리 갱신의 서브 단계가 수행된다.In
그 후에, 단계(714)에서, 재구성 가능한 프로세서(516)는, CGA 모드에서, 가상 장면의 현재 프레임의 BVH 트리의 모든 노드를 트래버싱 하거나 스캐닝한다. 단계(716)에서, CGA 모드에서, 재구성 가능한 프로세서(516)는, BVH 트리의 노드를 통한 스캐닝 후에, 현재 프레임에서 나타나는 바디 또는 오브젝트의 바운딩 볼륨 노드 간의 교차(intersection)가 있는지 여부를 결정한다. 결정 단계는 가상 장면에서 나타나는 모든 바운딩 볼륨의 각 노드에 대해 수행된다.Thereafter, in
교차가 없는 경우, 단계(718)에서, 재구성 가능한 프로세서(516)가 VLIW 모드에서의 바디의 오브젝트 쌍 또는 비교차 노드에 대해 해시 테이블 id(단계(706)에서 제공된)를 검색한다. 검색된 해시 테이블 id 및 비-교차 오브젝트 쌍은 단계(720)에서 저장된다.If there is no intersection, at
단계(722)에서, VLIW 모드에서, 재구성 가능한 프로세서(516)는 해시 테이블 id에 대하여 비-교차 쌍을 큐잉(queue)한다. 그 후에, CGA 모드에서 재구성 가능한 프로세서(516)는, 단계(724)에서 바디의 비-교차 오브젝트 쌍 인덱스를 검색한다. 비-교차 오브젝트 쌍의 인덱스는 글로벌 프록시 오브젝트 어레이 리스트로부터 단계(726)에서 제거된다. 기존의 글로벌 프록시 오브젝트 쌍 어레이 리스트는 협소 페이즈 충돌 검출을 위해 재구성 가능한 프로세서(516)에 의해 전송된다.In
실시예들은 구체적인 예시 실시예들을 참조하여 설명되었다. 더 나아가, 다양한 장치, 모듈, 선택 장치(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.
상기 오브젝트의 충돌 쌍을 결정하는 단계는,
상기 재구성 가능한 프로세서에서 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.
충돌 오브젝트 어레이 리스트를 스캐닝하여 현재 프레임에서 상기 오브젝트의 변형이 있는지의 여부를 결정하는 단계;
상기 변형이 있는 경우, 상기 현재 프레임에서 상기 오브젝트의 바운딩 볼륨을 갱신하는 단계; 및
상기 변형이 없는 경우, 상기 오브젝트의 상기 바운딩 볼륨으로부터 비활성 노드를 제거하는 단계
를 더 포함하는 오브젝트의 충돌 검출 방법.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.
상기 오브젝트의 상기 바운딩 볼륨의 상기 노드 각각을 스캐닝하여 상기 노드 간에 교차가 있는지의 여부를 결정하는 단계; 및
상기 교차가 없는 경우, 상기 오브젝트의 비-교차 쌍의 해시 테이블 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.
상기 비-교차 쌍의 상기 해시 테이블 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.
글로벌 프록시 오브젝트 쌍 어레이 리스트로부터 상기 비-교차 쌍의 상기 인덱스를 제거하는 단계; 및
상기 협소 페이즈 충돌 검출을 위해 상기 비-교차 쌍이 전혀 없는, 상기 글로벌 프록시 오브젝트 쌍 어레이 리스트를 전송하는 단계
를 더 포함하는 오브젝트의 충돌 검출 방법.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.
상기 재구성 가능한 프로세서가,
상기 재구성 가능한 프로세서에서 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.
상기 재구성 가능한 프로세서가,
충돌 오브젝트 어레이 리스트를 스캐닝하여 현재 프레임에서 상기 오브젝트의 변형이 있는지의 여부를 결정하는 단계;
상기 변형이 있는 경우, 상기 현재 프레임에서 상기 오브젝트의 바운딩 볼륨을 갱신하는 단계; 및
상기 변형이 없는 경우, 상기 오브젝트의 상기 바운딩 볼륨으로부터 비활성 노드를 제거하는 단계
의 명령을 더 수행하는 오브젝트의 충돌 검출 장치.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.
상기 재구성 가능한 프로세서가,
상기 오브젝트의 상기 바운딩 볼륨의 상기 노드 각각을 스캐닝하여 상기 노드 간에 교차가 있는지의 여부를 결정하는 단계; 및
상기 교차가 없는 경우, 상기 오브젝트의 비-교차 쌍의 해시 테이블 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.
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)
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)
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 |
-
2013
- 2013-07-10 KR KR1020130080732A patent/KR102059559B1/en active IP Right Grant
Patent Citations (1)
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 |