KR20140108087A - 재구성 가능한 프로세서를 이용하여 가상의 장면에서 오브젝트의 충돌 검출을 위한 방법 및 장치 - Google Patents
재구성 가능한 프로세서를 이용하여 가상의 장면에서 오브젝트의 충돌 검출을 위한 방법 및 장치 Download PDFInfo
- Publication number
- KR20140108087A KR20140108087A KR1020130080732A KR20130080732A KR20140108087A KR 20140108087 A KR20140108087 A KR 20140108087A KR 1020130080732 A KR1020130080732 A KR 1020130080732A KR 20130080732 A KR20130080732 A KR 20130080732A KR 20140108087 A KR20140108087 A KR 20140108087A
- Authority
- KR
- South Korea
- Prior art keywords
- collision
- pair
- hash table
- reconfigurable processor
- collision detection
- 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)를 갱신하는 단계, 오브젝트의 충돌 쌍을 결정하는 단계 및 협소한 페이즈 충돌 검출을 위해 충돌하는 쌍을 전송하는 단계를 포함한다. 방법은 다양한 실시예에 따라, 공유된 메모리에서 구성된 하나 이상의 프로그램을 이용하는 재구성 가능한 프로세서에 의해 수행된다.
Description
보스, 만티에 의해 2012년 7월 10일에 출원된 인도 가출원 제 2806/CHE/2012호 "재구성 가능한 프로세서를 이용하여 실시간 N 바디 충돌 검출 동안 교차하는 AABB(AXIS-ALIGNED BOUNDING BOXES)의 병렬 검출을 위한 장치 및 방법"에 대해 우선권을 주장하며, 상기 가출원의 내용 전체는 본 명세서에 참조로 포함된다.
실시예들은 물리 엔진(physics engine) 분야에 연관된다. 더 구체적으로, 실시예들은 재구성 가능한 프로세서(reconfigurable processor)를 이용하여 가상의 장면(virtual scene)에서 물리 엔진으로 오브젝트 충돌(collision of object)을 검출하는 장치 및 방법에 연관된다.
물리 기반 애니메이션은 해당 기술분야에서 알려져 있다. 그러한 애니메이션에서 복수의 프로세싱 요구 때문에, 컴퓨터 기능에 대한 제어는 극도로 중요하다. 물리 기반 애니메이션은 결과적으로 실시간 효과를 제공하기 위해 준수(adhere)되는 다수의 물리 법칙을 요구한다. 물리 기반 애니메이션에서 실시간 결과를 달성하기 위해, 요구되는 하드웨어 및 물리 엔진은 컴퓨터의 노력(computational effort)을 줄이는 등의 방법으로 프레임(frame)될 필요가 있다. 나아가, 애니메이션에 연관된 3-D 오브젝트 렌더링(rendering)에서 프로세서를 도와주는 물리 엔진은 과중한 컴퓨터의 백업(computational backup)을 요구한다. 기존의 방법은 그러한 물리 기반 애니메이션을 지원하는 큰 스케일에서 장치의 비용을 증가시키는 결과가 되는 것으로 인지될 수 있다.
물리 기반 애니메이션에서, 충돌 검출은 가장 중요한 것들 중 하나이다. 가상 장면에서 나타나는 오브젝트 간의 충돌 검출 어플리케이션은 로봇 공학(robotics), 애니메이션 및 게임 등의 분야에서 중요하다. 예를 들어, 로봇 공학 시뮬레이션에서, 3차원 공간에서 나타나는 모든 오브젝트는 특정한 자유도(certain degree of freedom)로 제공된다. 이런 이유로, 가상 장면에서 그러한 오브젝트의 움직임 동안, 반드시 그들 사이에 충돌이 방지되는 것이 중요하다. 애니메이션 및 게임에서, 실시간 타입 시뮬레이션 (real-time type of simulation) 중에 서로 충돌하는 오브젝트를 목격하는 것이 불합리하게 발생할 수 있다. 그러한 어플리케이션을 프로그래밍하는 동안, 오브젝트의 오버래핑(overlapping)하는 쌍 또는 충돌을 확인하기 위해 어플리케이션을 준비하는 것이 논리적일 수 있다. 또한, 충돌 검출은 뉴턴 법칙(Newtonian laws)과 같은 물리 법칙 준수에 크게 의존한다.
일 측에 따르면, 물리 엔진을 이용하는 오브젝트의 충돌 검출 방법이 제공된다. 이 방법은, 재구성 가능한 프로세서를 이용하여 수행되도록 광범위 페이즈 충돌 검출(broad phase collision detection)에서 하나 이상의 미리 정의된 명령(instruction)을 할당하는 단계를 포함한다. 상기 하나 이상의 미리 정의된 명령은, 현재 프레임에서 변형되는 오브젝트의 AABB(Axis Aligned Bounding Box)를 동적으로 갱신하는 단계, 상기 현재 프레임에서 오브젝트의 충돌 쌍(colliding pair)을 결정하는 단계, 및 협소 페이즈 충돌 검출(narrow phase collision detection)을 위해 상기 충돌 쌍을 전송하는 단계를 포함한다.
일 측에 따르면, 물리 엔진을 이용하는 오브젝트 충돌 검출 장치가 제공된다. 이 장치는 미리 정의된 명령 프로세서의 세트(set)를 할당하는 공유된 메모리(shared memory), 미리 정의된 명령의 제1 세트를 실행하기 위한 메인 프로세서(main processor); 및 미리 정의된 명령의 제2 세트를 수행하도록 상기 공유된 메모리와 연결되는 재구성 가능한 프로세서를 포함한다. 미리 정의된 명령의 제2 세트는, 현재 프레임에서 변화되는 오브젝트의 AABB를 동적으로 갱신하는 단계, 오브젝트의 충돌 쌍을 결정하는 단계, 및 협소 페이즈 충돌 검출을 위해 상기 충돌 쌍을 전송하는 단계를 포함한다.
도 1은 물리 기반 애니메이션에서 두 개의 오브젝트 간 충돌의 예를 도시한다.
도 2는 물리 엔진 및 프로세서를 이용하는 충돌 검출의 기존의 방법을 도시한다.
도 3은 물리 엔진을 이용하여 물리 기반 애니메이션을 수행하는 다른 기존의 방법을 도시한다.
도 4는 일실시예에 따른 광범위 페이즈 충돌 검출 방법을 도시한다.
도 5는 일실시예에 따라 물리 엔진을 이용하여 오브젝트 간 충돌을 검출하는 장치를 도시한다.
도 6은 일실시예에 따라 이종의 컴퓨팅 기술을 이용하는 물리 기반 애니메이션 수행 방법을 도시한다.
도 7은 일실시예에 따라 시뮬레이션 또는 물리 기반 애니메이션의 가상 장면에서 오브젝트들 간 충돌을 검출하는 재구성 가능한 프로세서에 의해 수행되는 단계를 포함하는 방법을 도시한다.
예시적으로 제시되는 도면들은 단지 설명을 위한 것이고 어떤 방식으로든 이러한 예에 제한되는 것이 아니다.
도 2는 물리 엔진 및 프로세서를 이용하는 충돌 검출의 기존의 방법을 도시한다.
도 3은 물리 엔진을 이용하여 물리 기반 애니메이션을 수행하는 다른 기존의 방법을 도시한다.
도 4는 일실시예에 따른 광범위 페이즈 충돌 검출 방법을 도시한다.
도 5는 일실시예에 따라 물리 엔진을 이용하여 오브젝트 간 충돌을 검출하는 장치를 도시한다.
도 6은 일실시예에 따라 이종의 컴퓨팅 기술을 이용하는 물리 기반 애니메이션 수행 방법을 도시한다.
도 7은 일실시예에 따라 시뮬레이션 또는 물리 기반 애니메이션의 가상 장면에서 오브젝트들 간 충돌을 검출하는 재구성 가능한 프로세서에 의해 수행되는 단계를 포함하는 방법을 도시한다.
예시적으로 제시되는 도면들은 단지 설명을 위한 것이고 어떤 방식으로든 이러한 예에 제한되는 것이 아니다.
다음의 설명은 재구성 가능한 프로세서를 이용하는 충돌 검출을 위한 장치 및 방법을 제공한다. 다음 실시예의 자세한 설명에서, 이 문서의 일부인 동반되는 도면에 참조가 표시되어 있고, 실시될 수 있는 구체적인 실시예들은 설명의 방법으로 보여진다. 이러한 실시예들은 기술분야에서 통상의 지식을 가진 자가 실시예들을 실시할 수 있도록 충분히 자세하게 설명되었고, 다른 실시예들이 활용될 수 있으며, 변경은 실시예들의 범위를 벗어나지 않고 수행될 수 있는 것으로 이해될 수 있다. 그러므로, 다음의 기술된 설명은 제한 하는 의미로 받아들여서는 안되고, 실시예들의 범위는 오직 첨부된 청구항에 의해 정의된다.
도 1은 물리 기반 애니메이션에서 두 개의 오브젝트 간 충돌의 예를 도시한다.
도 1은 오브젝트 O1 및 O2 간에 충돌 가능성이 도시된 곳의 3차원 시점을 제공한다. 스크린에서 묘사되어야 하는 동작은 특정 시간 윈도우에 고정(froze)된다. 충돌 중에 복수의 쌍(1 및 1', 2 및 2', 3 및 3', 4 및 4',)이 예시적 접점(contact of point)으로 도시된다. 중력, 회전 축, 임펄스(impulse)와 같은 실시간 조건들이 충돌 영향(collision impact)을 계산하기 전에 고려된다. 오브젝트 O1 및 O2의 축은 (104a, 104b)로 표시된다.
충돌 검출 동안, 오브젝트들의 축들은 입력 중 하나로 또한 고려된다. 또한, 화살표(106)는 오브젝트 O1 및 O2의 충돌 방향을 도시한다. 도 1은 단지 설명을 위해서 제공되고 다른 프리미티브(primitive)(모양, 크기 등)로 오브젝트의 수치 가능성(numeral possibilities)이 있을 수 있다. 다양한 실시예는 충돌 검출 동안 준수되는 방법 및 그러한 충돌의 검출로 향해진다.
도 2는 프로세서 및 물리 엔진을 이용하는 충돌 검출의 기존의 방법(200)을 도시한다. 충돌 검출의 방법(200)은 어떤 컴퓨터 장치에 의해서도 수행될 수 있다. 충돌 검출을 수행하기 위한 명령은 컴퓨터 장치의 메모리에 저장된다.
가상 물리 애니메이션에서의 모든 오브젝트들 또는 바디(body)들은 뉴턴 법칙 및 다른 물리 법칙에 따라야만 하는 점이 주목되어야 한다. 단계(202)에서, 오브젝트 각각에 관련된 모든 물리 파라미터가 적용된다. 물리 파라미터는 실시간 상황과 유사한 속도, 중력, 토크, 임펄스 및 모멘트(moment) 등을 포함한다. 단계(204)에서, 광범위 페이즈 충돌 검출이 수행된다.
또한, 물리 기반 애니메이션을 디스플레이 하기 위해 스크린에서 나타나고 있는 모든 프레임에 대하여, 물리 엔진이 모든 오브젝트들에 대한 합력(resultant force)의 계산을 용이하게 한다. N-바디 프로세싱(N-Body processing) 또는 광범위 충돌 검출 동안, 잠재적 충돌 오브젝트(potentially colliding object) 쌍이 결정된다. 충돌 데이터는 광범위 페이즈 충돌 검출을 수행하기 전에 수집된다. 광범위 페이즈 충돌 검출을 위한 충돌 데이터는 충돌 모양 및 오브젝트에서 오버래핑 하는 쌍 등을 포함한다.
그 후에, 단계(206)에서, 협소 페이즈 충돌 검출이 수행된다. 협소 페이즈 충돌 검출은, 광범위 페이즈 충돌 검출과 비교하면 더 세분화된(granular) 레벨이다. 협소 페이즈 충돌 검출에서, 물리 기반 애니메이션이 실행되는 동안 높은 레벨의 정확도로 접점이 확인된다.
단계(208)에서, 물리 기반 애니메이션의 오브젝트에 수반된 제한(constraint)은 컴퓨터 장치에 의해 해결된다. 그 후에, 단계(202)부터 단계(208)까지 생산된 중간 출력을 수집함으로써 출력이 단계(210)에서 통합된다. 단계(200)은 물리 기반 애니메이션 또는 시뮬레이션의 모든 프레임 및 모든 오브젝트에 대해 반복된다.
도 3은 물리 엔진을 이용하여 물리 기반 애니메이션을 수행하는 다른 기존의 방법(300)을 도시한다.
복수의 단계를 가진 기존의 방법(300)은 프로세서에 의해 실행되고, 메모리에서 컴퓨터가 판독 가능한 명령으로 저장될 수 있다. 단계(302)에서, 복수의 오브젝트들은 가상의 장면에서 렌더링(render)되고 생성된다. 오브젝트의 렌더링 및 생성은 그래픽 디스플레이(graphical display)에 의하여 수행될 수 있다. 단계(304)에서, BVH(Boundary Volume Hierarchical) 트리는 가상 장면에서의 오브젝트의 공간 분할에 기반하여 생성된다.
그 후에, 단계(306)에서, 가상 점검이 현재 프레임에서 이미 생성된 오브젝트 각각의 변형 또는 어떤 변화가 있는지 여부를 결정하기 위해 수행된다. 단계(308)에서, 현재 프레임에서 어떤 변형도 되지 않은 오브젝트의 비활성 노드(inactive node)가 제거된다. 오브젝트의 세부사항을 가진 BVH 트리(The BVH tree with the details of objects)는 단계(310)에서 처리되기 위해 데이터의 활성 세트(active set of data)로 갱신된다.
광범위 페이즈 충돌 검출은 단계(312)에서의 현재 프레임에서 데이터의 활성 세트에 대해 수행된다. 협소 페이즈 충돌 검출은 단계(314)에서 수행된다. 충돌 가능성이 검출되는 곳에서의 오브젝트의 제한은 단계(318)에서 해결된다. 그 후에, 단계(318)에서, 방법(300)의 모든 프로세싱 단계의 출력이 통합된다.
도 4는 일실시예에 따른 광범위 페이즈 충돌 검출 방법(400)을 도시한다.
방법(400)은 가상 장면에 제공되는 오브젝트 간에 광범위 페이즈 충돌을 검출하기 위한 복수의 단계를 포함한다. 단계(402)에서, 현재 프레임에 나타난 오브젝트의 가상 장면 리스트는 충돌 검출 시험을 위해 패스(pass)되거나 전송된다. 오브젝트들은 AABB(Axis Aligned Bounding Box)에 관련하여 제공된다. 단계(404)에서, 오브젝트 간 충돌 가능성이 있는 경우 바운딩 볼륨이 갱신된다. 그 후에, 바운딩 볼륨 트리는 단계(406)를 통해 스캐닝(scan)된다. 바운딩 볼륨은 가상 장면의 현재 프레임에서 나타나는 충돌 오브젝트를 둘러싼다(enclose).
단계(408)에서, 어떤 새로운 오브젝트가 가상 장면으로부터 제거되었는지 또는 더해졌는지를 결정한다. 제거 또는 더해진 경우, 단계(410)에서, 바운딩 볼륨 트리는 더해진 또는 제거된 오브젝트 및 관련된 정보로 갱신된다. 그 후에, 단계(412)에서, 바운딩 볼륨 트리는, 바운딩 볼륨 트리의 마디(leaf node of bounding volume tree)가 충돌 오브젝트 부분에서, 밸런싱(balance)된다. 단계(414)에서, 가상 장면의 현재 프레임에서의 모든 오브젝트 쌍은 스캐닝된다.
현재 프레임의 오브젝트 간에 충돌이 있는지 없는지에 대해 단계(416)에서 결정된다. 충돌이 없는 경우, 단계(418)에서, 충돌하고 있지 않은 오브젝트 쌍의 인덱스는 검색되고(retrieve) 제거되고, 그렇게 함으로써 각각의 해시 테이블 구조(hash table structure)를 재배열한다. 충돌이 있는 경우, 단계(420)에서, 스캐닝이 완료되는지 여부를 결정한다. 그 후에, 단계(422)에서, 해시 테이블에서의 인덱스를 가진 쌍의 교차(intersecting pairs with indices in the hash table)는 협소 페이즈 충돌 검출을 위해 전송된다.
도 5는 일실시예에 따라 물리 엔진을 이용하여 오브젝트 간 충돌을 검출하는 장치(500)를 도시한다..
장치(500)는 물리적 프로세싱 모듈(physics processing module)(504)을 가지는 공유된 메모리(shared memory)(502), 버스(506), 입력/출력(I/O) 유닛(508), 트랜스시버(transceiver)(510), RAM(Random Access Memory)(512), 메인 프로세서(514) 및 재구성 가능한 프로세서(516)를 포함한다.
다양한 실시예에 따르면, 물리적 프로세싱 모듈(504)은 물리 엔진을 이용하여 기능(function)을 관리하도록 구성된다. 메인 프로세서(514) 및 재구성 가능한 프로세서(516)는, 일부 실시예에서 물리적 프로세싱 모듈(504)로부터 기능하는 방법 및 모드에서 명령을 수신할 수 있다.
또한, 다양한 실시예에서, 공유된 메모리(502)는 개별 프로세서에 미리 정의된 명령의 다른 세트를 할당하도록 구성된다. 미리 정의된 명령의 제1 세트는 메인 프로세서(514)에 할당되고, 미리 정의된 명령의 제2 세트는 실행을 위해 재구성 가능한 프로세서(516)에 할당된다. 공유된 메모리(502)에서 비롯되는 모든 미리 정의된 명령은 가상 장면에서 오브젝트의 충돌 검출을 위한 것이어야 한다.
여기에서 이용된 메인 프로세서(514)는, 마이크로 프로세서(microprocessor), 마이크로 컨트롤러(microcontroller), 콤플렉스 명령 세트 컴퓨팅 마이크로프로세서(complex instruction set computing microprocessor), 감소된 명령 세트 컴퓨팅 마이크로 프로세서(reduced instruction set computing microprocessor), 명시적 병렬 명령 컴퓨팅 마이크로프로세서(explicitly parallel instruction computing microprocessor), 그래픽 프로세서, 디지털 신호 프로세서 또는 처리 회로의 모든 다른 유형과 같은 연산 회로(computational circuit)의 모든 유형을 의미하지만 제한되지는 않는다.
프로세서(514)는 포괄적인 또는 프로그램 가능한 로직 장치 또는 어레이(generic or programmable logic devices or arrays), 회로가 집적된 구체적 어플리케이션(application specific integrated circuits), 단일 칩 컴퓨터(single-chip computers) 및 스마트 카드와 같은 임베디드 컨트롤러(embedded controllers)를 또한 포함할 수 있다.
또한, 일부 실시예들은, 선형 시 복잡성(linear time complexity)을 가지는 장면에서의 프리미티브 오브젝트를 구성하는 AABB 트리의 마디 사이에 충돌 시험 상의 갱신과 관련 있다. 예를 들어, 방법은, CGRA의 4x4 유닛을 이용하는 ADRES(Architecture for Dynamically Reconfigurable Embedded Systems) 디자인 기반 재구성 가능한 프로세서 해법에 구체적인 것일 수 있고, 이 설정(setup)은, ARMㄾ과 같은 임베디드 플랫폼 상에 광범위 페이즈 검출의 기존의 구현 이상인 8X 인자로 성능의 튠업(tune-up)을 보장한다.
일실시예에서, 재구성 가능한 프로세서(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)를 이용하는 것을 또한 도와준다.
메모리(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) 및 데이터 저장을 위한 모든 적합한 메모리 장치를 포함할 수 있다.
장치(500)의 구성요소, I/O 유닛(508), 트랜스시버(510) 및 RAM(512)은 해당 기술 분야의 통상의 기술자에게 알려져 있으므로, 더 상세한 설명은 생략한다.
도 6은 일실시예에 따라 이종의 컴퓨팅 기술을 이용하는 물리 기반 애니메이션 수행 방법을 도시한다.
방법(600)은 단계(602)에서 물리 엔진을 초기화하는 것으로 시작한다. 물리 엔진이 초기화 되었을 때, 가상 장면에서 렌더링 되기 위한 복수의 파라미터의 수치가 구해진다(evaluate). 단계(604)에서, 충돌 대상으로 가상의 장면에서 이용되기 위한 오브젝트가 생성된다. 단계(602) 및 단계(604)는 메인 프로세서(514)에 의해 수행된다.
그 후에, 단계(606)에서, 재구성 가능한 프로세서(516)는, 크기(dimension), 모양과 같은 오브젝트 프리미티브로 가상의 장면에서의 오브젝트를 둘러싸는(enclose) AABB를 갱신한다. 단계(608)에서, 재구성 가능한 프로세서(516)는 물리 기반 애니메이션에서의 오브젝트의 충돌 또는 오버래핑 쌍을 결정한다. 그 뒤에, 오브젝트의 결정된 충돌 쌍은, 메인 프로세서(514)에서 협소 페이즈 충돌 분석과 같은 뒤따르는 처리를 위해 전송된다. 그 후에, 단계(612)에서, 오브젝트의 접점은 충돌 쌍에 기초하여 생성된다. 접점 생성은 오브젝트 쌍의 충돌/오버랩의 세분화된 분석에 도움이 된다.
도 7은 일실시예에 따라, 물리 기반 애니메이션 또는 시뮬레이션의 가상 장면에서 오브젝트 간에 충돌을 검출하기 위한 재구성 가능한 프로세서(516)에 의해 수행되는 단계를 포함하는 방법(700)을 도시한다.
단계(702)에서, 해시 테이블 구조는 재구성 가능한 프로세서(516)에 의해 생성된다. 처음에, CGA 모드에서 동작하는 재구성 가능한 프로세서(516)에서의 기능 유닛의 수가 결정된다. 해시 테이블 구조 각각은 CGA 모드에서 동작하는 기능 유닛 각각에 대응한다.
CGA 모드에서, 데이터는 충분한 컴퓨팅 프로세스(due computation process) 후에 드물게 전송된다. 만약 오브젝트 쌍의 수 'N'이 물리 엔진에 의해 지원되고, 해시 테이블 구조의 수 'M'이 나타난다면, 해시 테이블이 지원할 수 있는 엔트리(entry)의 수치를 구하기 위한 표현은 수학식 1과 같이 제공된다.
'Floor'는 함수이고 'mod'는 컴퓨터 언어에서 이용되는 연산자이다. 단계(702)는 VLIW 모드에서 수행될 수 있다. 예를 들어, VLIW 모드에서, 단계(702)의 출력은 방법(700)에서 병렬적으로 처리되는 다른 단계(consequent step)에 영향을 주지 않는다.
단계(704)에서, 어레이 구조, 다시 말해서, 글로벌 충돌 어레이 구조(global collision array structure) 및 글로벌 프록시 오브젝트 어레이 구조(global proxy object array structure)가 생성된다. 글로벌 충돌 어레이 구조는 위치, 변형, 속도 및 파라미터에 연관된 다른 충돌 물리적 특성과 연관되는 모든 특성을 저장한다. 글로벌 프록시 오브젝트 어레이 구조는 충돌 오브젝트 및 관련된 AABB를 저장한다. 단계(704)는 VLIW 모드에서 수행된다.
단계(706)에서, VLIW 모드에서, 재구성 가능한 프로세서(516)는 해시 테이블 구조를 초기화 한다. 일실시예에서, 해시 테이블 구조의 초기화는 2가지 페이즈를 수반할 수 있다. 가상의 장면에서 각각의 오브젝트에 대해, 2가지 페이즈는 오브젝트 쌍 인덱스를 저장(페이즈Ⅰ), 해시 테이블 id를 제공(페이즈 Ⅱ)하는 것이고, 해시 테이블 id는 구체적 오브젝트의 글로벌 프록시 오브젝트 어레이에 통합(incorporate)된다.
단계(708)에서, 충돌 오브젝트 어레이 리스트는 재구성 가능한 프로세서(516)에 의해 트래버싱(traverse) 되거나 스캐닝된다. 트래버싱 또는 스캐닝은 가상 장면의 오브젝트에서 어떤 변형이 있는지 여부를 확인하기 위해 수행된다. 상기 변형은, 가상 장면의 존재하는 오브젝트의 모든 특성의 통합 또는 갱신 또는 변화를 참조할 수 있다. 단계(708)는 재구성 가능한 프로세서(516)에 의해 CGA 모드에서 수행된다.
단계(710)에서, CGA 모드에서, 오브젝트에서 확인되는 어떠한 변형이라도 있는 경우, 오브젝트의 바운딩 볼륨 또는 글로벌 프록시 오브젝트 어레이 구조는 가상 장면의 현재 프레임에 대해 갱신된다. 단계(712)에서, BVH 트리의 비활성 노드는 확인되고, BVH 트리로부터 제거된다. 프로세서(516)는 비활성 노드 처리를 필요로하지 않으므로, 활성 리스트로부터 그들을 제거하기에 더 좋다. 비활성 노드를 제거하자마자, BVH 트리 갱신의 서브 단계가 수행된다.
그 후에, 단계(714)에서, 재구성 가능한 프로세서(516)는, CGA 모드에서, 가상 장면의 현재 프레임의 BVH 트리의 모든 노드를 트래버싱 하거나 스캐닝한다. 단계(716)에서, CGA 모드에서, 재구성 가능한 프로세서(516)는, BVH 트리의 노드를 통한 스캐닝 후에, 현재 프레임에서 나타나는 바디 또는 오브젝트의 바운딩 볼륨 노드 간의 교차(intersection)가 있는지 여부를 결정한다. 결정 단계는 가상 장면에서 나타나는 모든 바운딩 볼륨의 각 노드에 대해 수행된다.
교차가 없는 경우, 단계(718)에서, 재구성 가능한 프로세서(516)가 VLIW 모드에서의 바디의 오브젝트 쌍 또는 비교차 노드에 대해 해시 테이블 id(단계(706)에서 제공된)를 검색한다. 검색된 해시 테이블 id 및 비-교차 오브젝트 쌍은 단계(720)에서 저장된다.
단계(722)에서, VLIW 모드에서, 재구성 가능한 프로세서(516)는 해시 테이블 id에 대하여 비-교차 쌍을 큐잉(queue)한다. 그 후에, CGA 모드에서 재구성 가능한 프로세서(516)는, 단계(724)에서 바디의 비-교차 오브젝트 쌍 인덱스를 검색한다. 비-교차 오브젝트 쌍의 인덱스는 글로벌 프록시 오브젝트 어레이 리스트로부터 단계(726)에서 제거된다. 기존의 글로벌 프록시 오브젝트 쌍 어레이 리스트는 협소 페이즈 충돌 검출을 위해 재구성 가능한 프로세서(516)에 의해 전송된다.
실시예들은 구체적인 예시 실시예들을 참조하여 설명되었다. 더 나아가, 다양한 장치, 모듈, 선택 장치(selector), 측정 장치(estimator)와 같이 여기에서 설명된 것은, 하드웨어 회로, 예를 들어, 상보성 금속 산화물 반도체 기반의 논리 회로(complementary metal oxide semiconductor based logic circuitry), 펌웨어, 소프트웨어 및/또는 하드웨어의 모든 조합, 펌웨어, 및/또는 기계 판독 가능 매체에서 구현된 소프트웨어를 이용하여 동작되고 인에이블(enable)될 수 있다. 예를 들어, 다양한 전기적 구조 및 방법은 구체적 집적 회로 어플레케이션과 같은 전자 회로, 논리 게이트 및 트랜지스터를 이용하여 구현될 수 있다.
Claims (12)
- 물리 엔진을 이용하는 오브젝트의 충돌 검출 방법에 있어서, 상기 방법은,
재구성 가능한 프로세서를 이용하여 수행되도록 광범위 페이즈 충돌 검출에 하나 이상의 미리 정의된 명령을 할당하는 단계
를 포함하고,
상기 하나 이상의 미리 정의된 명령은,
현재 프레임에서 변형되는 오브젝트의 AABB(Axis Aligned Bounding Box)를 동적으로 갱신하는 단계;
상기 현재 프레임에서 상기 오브젝트의 충돌 쌍을 결정하는 단계; 및
협소 페이즈 충돌 검출을 위해 상기 충돌 쌍을 전송하는 단계
를 포함하는 오브젝트의 충돌 검출 방법. - 제1항에 있어서,
상기 오브젝트의 충돌 쌍을 결정하는 단계는,
상기 재구성 가능한 프로세서에서 CGA(Coarse Grain Array) 모드로 동작하는 기능 유닛의 수에 대하여 해시 테이블(hash table) 구조를 생성하는 단계;
글로벌 충돌 어레이 구조 및 글로벌 프록시 오브젝트 어레이 구조를 포함하는, 하나 이상의 어레이 구조를 생성하는 단계; 및
상기 해시 테이블 구조를 초기화하는 단계
를 포함하는 오브젝트의 충돌 검출 방법. - 제2항에 있어서,
상기 글로벌 충돌 오브젝트 어레이를 스캐닝하여 현재 프레임에서 상기 오브젝트의 변형이 있는지의 여부를 결정하는 단계;
상기 변형이 있는 경우, 상기 현재 프레임에서 상기 오브젝트의 바운딩 볼륨을 갱신하는 단계; 및
상기 변형이 없는 경우, 상기 오브젝트의 상기 바운딩 볼륨으로부터 비활성 노드를 제거하는 단계
를 더 포함하는 오브젝트의 충돌 검출 방법. - 제3항에 있어서,
상기 오브젝트의 상기 바운딩 볼륨의 상기 노드 각각을 스캐닝하여 상기 노드 간에 교차가 있는지의 여부를 결정하는 단계; 및
상기 교차가 없는 경우, 상기 오브젝트의 비-교차 쌍의 해시 테이블 ids를 검색하고 저장하는 단계
를 더 포함하는 오브젝트의 충돌 검출 방법. - 제4항에 있어서,
상기 비-교차 쌍의 상기 해시 테이블 ids를 검색하고 저장하는 단계는,
상기 해시 테이블 ids에 대하여 상기 비-교차 쌍을 큐잉하는(queuing) 단계; 및
상기 해시 테이블 ids를 이용하여 상기 비-교차 쌍의 인덱스를 검색하는 단계
를 더 포함하는 오브젝트의 충돌 검출 방법. - 제5항에 있어서,
글로벌 프록시 오브젝트 쌍 어레이 리스트로부터 상기 비-교차 쌍의 상기 인덱스를 제거하는 단계; 및
상기 협소 페이즈 충돌 검출을 위해 상기 비-교차 쌍이 전혀 없는, 상기 기존의 글로벌 프록시 오브젝트 쌍 어레이 리스트를 전송하는 단계
를 더 포함하는 오브젝트의 충돌을 검출 방법. - 물리 엔진을 이용하는 오브젝트의 충돌 검출 장치에 있어서,
미리 정의된 명령 프로세서의 세트를 할당하는 공유된 메모리;
미리 정의된 명령의 제1 세트를 실행하기 위한 메인 프로세서; 및
미리 정의된 명령의 제2 세트를 수행하도록 상기 공유된 메모리와 연결된 재구성 가능한 프로세서
를 포함하고,
상기 미리 정의된 명령의 제2 세트는,
현재 프레임에서 변형되는 AABB를 동적으로 갱신하는 단계;
상기 오브젝트의 충돌 쌍을 결정하는 단계; 및
협소 프레임 충돌 검출을 위해 상기 충돌 쌍을 전송하는 단계
를 포함하는 오브젝트의 충돌 검출 장치. - 제7항에 있어서,
상기 재구성 가능한 프로세서가,
상기 재구성 가능한 프로세서에서 CGA 모드로 동작하는 기능 유닛의 수에 대하여 해시 테이블 구조를 생성하는 단계;
글로벌 충돌 어레이 구조 및 글로벌 프록시 오브젝트 어레이 구조를 포함하는, 하나 이상의 어레이 구조를 생성하는 단계; 및
상기 해시 테이블 구조를 초기화하는 단계
의 명령을 더 수행하는 오브젝트의 충돌 검출 장치. - 제8항에 있어서,
상기 재구성 가능한 프로세서가,
상기 글로벌 충돌 오브젝트 어레이를 스캐닝하여 현재 프레임에서 상기 오브젝트의 변형이 있는지의 여부를 결정하는 단계;
상기 변형이 있는 경우, 상기 현재 프레임에서 상기 오브젝트의 바운딩 볼륨을 갱신하는 단계; 및
상기 변형이 없는 경우, 상기 오브젝트의 상기 바운딩 볼륨으로부터 비활성 노드를 제거하는 단계
의 명령을 더 수행하는 오브젝트의 충돌 검출 장치. - 제9항에 있어서,
상기 재구성 가능한 프로세서가,
상기 오브젝트의 상기 바운딩 볼륨의 상기 노드 각각을 스캐닝하여 상기 노드 간에 교차가 있는지의 여부를 결정하는 단계; 및
상기 교차가 없는 경우, 상기 오브젝트의 비-교차 쌍의 해시 테이블 ids를 검색하고 저장하는 단계
의 명령을 더 수행하는 오브젝트의 충돌 검출 장치. - 제10항에 있어서,
상기 비-교차 쌍의 상기 해시 테이블 ids를 검색하고 저장하는 단계는,
상기 재구성 가능한 프로세서가,
상기 해시 테이블 ids에 대하여 상기 비-교차 쌍을 큐잉하는 단계; 및
상기 해시 테이블 ids를 이용하여 상기 비-교차 쌍의 인덱스를 검색하는 단계
의 명령을 더 수행하는 오브젝트의 충돌 검출 장치. - 제11항에 있어서,
상기 재구성 가능한 프로세서가,
글로벌 프록시 오브젝트 쌍 어레이 리스트로부터 상기 비-교차 쌍의 인덱스를 제거하는 단계; 및
상기 협소 페이즈 충돌 검출을 위해 상기 비--차 쌍이 전혀 없는, 상기 기존의 글로벌 프록시 오브젝트 쌍 어레이 리스트를 전송하는 단계
의 명령을 더 수행하는 오브젝트의 충돌 검출 장치.
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 true KR20140108087A (ko) | 2014-09-05 |
KR102059559B1 KR102059559B1 (ko) | 2019-12-26 |
Family
ID=51755454
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130080732A KR102059559B1 (ko) | 2012-07-10 | 2013-07-10 | 재구성 가능한 프로세서를 이용하여 가상의 장면에서 오브젝트의 충돌 검출을 위한 방법 및 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102059559B1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105469406A (zh) * | 2015-11-30 | 2016-04-06 | 东北大学 | 一种基于包围盒与空间划分的虚拟物体碰撞检测方法 |
KR20180004766A (ko) * | 2015-11-30 | 2018-01-12 | 텐센트 테크놀로지(센젠) 컴퍼니 리미티드 | 실시간 가상 장면의 충돌체 사이의 충돌을 검출하기 위한 방법 및 단말과 저장 매체 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100787952B1 (ko) | 2006-08-11 | 2007-12-24 | 광주과학기술원 | 지역 점유맵 인스턴스를 이용한 햅틱 렌더링 방법과 장치,및 이를 이용한 햅틱 시스템 |
-
2013
- 2013-07-10 KR KR1020130080732A patent/KR102059559B1/ko active IP Right Grant
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105469406A (zh) * | 2015-11-30 | 2016-04-06 | 东北大学 | 一种基于包围盒与空间划分的虚拟物体碰撞检测方法 |
KR20180004766A (ko) * | 2015-11-30 | 2018-01-12 | 텐센트 테크놀로지(센젠) 컴퍼니 리미티드 | 실시간 가상 장면의 충돌체 사이의 충돌을 검출하기 위한 방법 및 단말과 저장 매체 |
US10235764B2 (en) | 2015-11-30 | 2019-03-19 | Tencent Technology (Shenzhen) Company Limited | Method, terminal, and storage medium for detecting collision between colliders in real-time virtual scene |
Also Published As
Publication number | Publication date |
---|---|
KR102059559B1 (ko) | 2019-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11455768B2 (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 | |
US11720472B2 (en) | Liveness as a factor to evaluate memory vulnerability to soft errors | |
US10417803B2 (en) | Multiple-pass rendering of a digital three-dimensional model of a structure | |
Kageyama et al. | An approach to exascale visualization: Interactive viewing of in-situ visualization | |
KR101702996B1 (ko) | 영상 처리를 위한 정렬 격자 및 그래프 운행 | |
EP3223244A1 (en) | Hierarchy merging | |
EP3933779A1 (en) | Intersection testing in a ray tracing system | |
WO2017164924A1 (en) | System for gpu based depth reprojection for accelerating depth buffer generation | |
US10719982B2 (en) | Surface extrction method, apparatus, and non-transitory computer readable storage medium thereof | |
KR102059559B1 (ko) | 재구성 가능한 프로세서를 이용하여 가상의 장면에서 오브젝트의 충돌 검출을 위한 방법 및 장치 | |
CN113240789A (zh) | 虚拟对象构建方法及装置 | |
Avril et al. | Dynamic adaptation of broad phase collision detection algorithms | |
Serpa et al. | Flexible use of temporal and spatial reasoning for fast and scalable CPU broad‐phase collision detection using KD‐Trees | |
CN116434303A (zh) | 基于多尺度特征融合的人脸表情捕捉方法、装置及介质 | |
CN116127802A (zh) | 3d视景展示cae仿真结果的方法、装置及*** | |
Anand et al. | Comparative run time analysis of LiDAR point cloud processing with GPU and CPU | |
Kawamura et al. | Remote visualization system based on particle based volume rendering | |
Morvan et al. | High performance gpu‐based proximity queries using distance fields | |
Movania et al. | A Novel GPU‐Based Deformation Pipeline | |
Blasquez et al. | Undo facilities for the extended z-buffer in NC machining simulation | |
EP3933781A1 (en) | Intersection testing in a ray tracing system | |
Ralha et al. | Distributed dense stereo matching for 3d reconstruction using parallel-based processing advantages | |
CN116797892A (zh) | 用于自由空间检测的快速传感器融合 |
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 |