KR20110108321A - 가상 세계 애플리케이션에서 비주얼 시뮬레이션 루프에 대한 총 계산 시간을 감소시키는 방법 - Google Patents

가상 세계 애플리케이션에서 비주얼 시뮬레이션 루프에 대한 총 계산 시간을 감소시키는 방법 Download PDF

Info

Publication number
KR20110108321A
KR20110108321A KR1020110027614A KR20110027614A KR20110108321A KR 20110108321 A KR20110108321 A KR 20110108321A KR 1020110027614 A KR1020110027614 A KR 1020110027614A KR 20110027614 A KR20110027614 A KR 20110027614A KR 20110108321 A KR20110108321 A KR 20110108321A
Authority
KR
South Korea
Prior art keywords
phase
data structure
visual simulation
calculation
simulation loop
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
KR1020110027614A
Other languages
English (en)
Other versions
KR101215126B1 (ko
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 KR20110108321A publication Critical patent/KR20110108321A/ko
Application granted granted Critical
Publication of KR101215126B1 publication Critical patent/KR101215126B1/ko
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/005Tree description, e.g. octree, quadtree
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

비주얼 시뮬레이션 루프에 대한 총 계산 시간을 감소시키는 방법은 상기 비주얼 시뮬레이션 루프의 각 특정한 페이즈에 대한 계산을 수행하기 전에 그 특정한 페이즈에 대한 요건에 공통의 데이터 구조를 적응시키는 것에 의해 상기 비주얼 시뮬레이션 루프의 각 페이즈에 걸쳐서 상기 공통의 데이터 구조를 공유하는 단계를 포함한다.

Description

가상 세계 애플리케이션에서 비주얼 시뮬레이션 루프에 대한 총 계산 시간을 감소시키는 방법{METHOD OF DECREASING A TOTAL COMPUTATION TIME FOR A VISUAL SIMULATION LOOP IN A VIRTUAL WORLD APPLICATION}
본 발명의 개시된 실시예들은 일반적으로 컴퓨터 생성 이미지(computer-generated imagery)에 관한 것으로, 특히 컴퓨터 생성 이미지에 대한 효율을 증가시키기 위한 방법에 관한 것이다.
가상 세계 애플리케이션들은 전형적으로 사용자에게 3D 리얼리즘의 느낌을 주기 위해 서버 및 클라이언트 양쪽 모두에서 실행되는 상이한 페이즈들(phases)로 이루어진다. 예를 들면, 서버는 오브젝트들을 개선하기 위해 물리적 시뮬레이션 및 AI(인공 지능(artificial intelligence))를 수행하고 가시성 계산(visibility computations)을 이용하여 클라이언트에게 전송되는 가시적 세트(visible set)를 계산한다. 마찬가지로, 클라이언트는 장면(scene)을 표시하기 위해 (레이-트레이싱(ray-tracing) 및/또는 래스터화(rasterization)를 이용하여) (효과 기반) 물리적 시뮬레이션 및 렌더링을 수행한다. 이러한 "계산 커널들"(computational kernels) 각각은 그 각각의 계산의 속도를 빠르게 하기 위해 그 자신의 데이터 구조들을 유지하고 구축한다. 이러한 계산 커널들은, 그것들 각각이 (이웃 계산(neighbor computation)의 속도를 빠르게 하는 것 대 각 노드에서 삼각형의 수를 최소화하는 것 대 노드들에서 빈 공간을 최소화하는 것과 같이) 그 자신의 작업에 대하여 최적화되기 때문에 서로 다르다. (용어들 "페이즈", "커널", 및 "계산 커널"은 여기에서 동의어로 사용된다.)
개시된 실시예들은 첨부 도면들과 함께 이하의 상세한 설명을 읽는 것으로부터 더 잘 이해될 것이다.
도 1은 종래 기술에 따른 컴퓨터 생성 이미지의 생성을 둘러싸는 기존의 프로세스의 표현이다.
도 2는 본 발명의 실시예에 따른 컴퓨터 생성 이미지의 생성을 둘러싸는 프로세스의 표현이다.
도 3은 본 발명의 실시예에 따른 데이터 구조 변경에 따른 리프 노드(leaf node)에 대한 점진적 세분화들(progressive refinements)의 세트를 도시한다.
도 4는 본 발명의 실시예에 따른 비주얼 시뮬레이션 루프에 대한 총 계산 시간을 감소시키는 방법을 설명하는 흐름도이다.
도 5는 본 발명의 실시예에 따른 비주얼 시뮬레이션 루프에 의해 생성된 가상 장면의 전자 디스플레이 상의 시각적 표현을 가능하게 하는 방법을 설명하는 흐름도이다.
도 6은 본 발명의 실시예에 따른 가상 세계 애플리케이션에서 비주얼 시뮬레이션 루프를 다루는 방법을 설명하는 흐름도이다.
설명의 간결함과 명료함을 위하여, 도면들은 일반적인 구축 방법을 설명하며, 본 발명의 설명된 실시예들에 대한 논의를 불필요하게 불명료하게 하는 것을 피하기 위해 잘 알려진 특징들 및 기법들에 대한 설명들 및 세부사항들은 생략될 수 있다. 게다가, 도면들 내의 엘리먼트들은 반드시 일정한 비례로 그려진 것은 아니다. 예를 들면, 본 발명의 실시예들에 대한 이해의 증진을 돕기 위해 도면들 내의 엘리먼트들 중 일부의 치수들은 다른 엘리먼트들에 비하여 과장될 수 있다. 상이한 도면들 내의 동일한 참조 번호들은 동일한 엘리먼트들을 나타내는 한편, 유사한 참조 번호들은 유사한 엘리먼트들을 나타낼 수 있으나, 반드시 그러한 것은 아니다.
상세한 설명 및 청구항들에서 용어들 "제1", "제2", "제3", "제4" 등은, 만약 있다면, 유사한 엘리먼트들을 구별하기 위해 사용되며 반드시 특정한 순차적인 또는 연대순의 순서를 설명하기 위해 사용되는 것은 아니다. 그렇게 사용된 용어들은, 본 명세서에서 설명된 발명의 실시예들이, 예를 들면, 본 명세서에서 설명되거나 다르게 묘사된 시퀀스들 이외의 시퀀스들로 동작이 가능하도록, 적절한 상황들 하에서 교환 가능하다는 것을 이해해야 한다. 유사하게, 방법이 본 명세서에서 일련의 단계들을 포함하는 것으로 기술된다면, 본 명세서에 제시된 그러한 단계들의 순서는 반드시 그러한 단계들이 수행될 수 있는 유일한 순서는 아니며, 진술된 단계들 중 특정한 단계들이 가능한 생략될 수 있고 및/또는 본 명세서에서 기술되지 않은 특정한 다른 단계들이 가능한 그 방법에 추가될 수 있다. 더욱이, 용어들 "comprise", "include", "have", 및 이들의 임의의 변형들은 비배타적인 포함(non-exclusive inclusion)을 커버하기 위해 의도되고, 따라서 엘리먼트들의 리스트를 포함하는(comprises) 프로세스, 방법, 물건, 또는 장치는 반드시 그러한 엘리먼트들에 한정되는 것은 아니고, 명백히 리스트되지 않거나 또는 그러한 프로세스, 방법, 물건, 또는 장치에 내재해 있는 다른 엘리먼트들을 포함할 수 있다.
상세한 설명에서 및 청구항들에서 용어들 "왼쪽", "오른쪽", "전방", "후방", "상부", "하부", "위에", "아래에" 등은, 만약 있다면, 설명의 목적으로 사용되고 반드시 영구적인 상대적 위치들을 묘사하기 위해 사용되는 것은 아니다. 그렇게 사용된 용어들은, 본 명세서에서 설명된 발명의 실시예들이, 예를 들면, 본 명세서에서 설명되거나 다르게 묘사된 것들과 다른 방위들에서 동작이 가능하도록, 적절한 상황들 하에서 교환 가능하다는 것을 이해해야 한다. 용어 "결합된"은, 본 명세서에서 사용될 때, 전기적인 또는 비전기적인 방식으로 직접 또는 간접으로 접속된 것으로 정의된다. 본 명세서에서 서로 "인접한" 것으로 묘사된 물체들은, 그 구문이 사용되는 문맥에 대하여 적절하게, 서로 물리적으로 접촉하거나, 서로에 아주 근접하거나, 또는 서로 동일한 일반적인 지역 또는 영역에 있을 수 있다. 본 명세서에서 구문 "일 실시예에서"의 출현들은 반드시 모두가 동일한 실시예를 참조하는 것은 아니다.
본 발명의 일 실시예에서, 비주얼 시뮬레이션 루프에 대한 총 계산 시간을 감소시키는 방법은, 그 특정한 페이즈에 대한 계산을 수행하기 전에 각 특정한 페이즈에 대한 요건에 공통의 데이터 구조를 적응시키는 것에 의해 상기 비주얼 시뮬레이션 루프의 각 페이즈에 걸쳐 상기 공통의 데이터 구조를 공유하는 단계를 포함한다.
매니-코어(many-core) 아키텍처의 출현으로 인해, 앞에 언급된 상이한 계산 커널들은 아마, 캐시, 메모리 컨트롤러, 버스 등과 같은 공유된 리소스들을 사용하여, 동일한 프로세서 상에서 실행될 것이다. 따라서, 그것들 자신의 상태들을 구축하고 유지하는 것은 이러한 데이터 구조들을 구축하는 시간을 증가시킬 뿐만 아니라 그것들을 저장하기 위해 더 많은 리소스들을 요구한다. 일례로서, 물리적 시뮬레이션은 전형적으로 가속 데이터 구조들(예를 들면, BVH(bounding volume hierarchies), kd-트리(kd-trees) 등)의 구축을 위해 (프레임당) 총 처리 시간의 약 10 내지 20 퍼센트를 필요로 하고, 레이 트레이싱은 그것의 데이터 구조들을 구축하기 위해 (프레임당) 처리 시간의 약 30 내지 40 퍼센트를 필요로 한다. 그 데이터 구조들의 사이즈는 전형적으로 각각에 대해 동일하므로, 총 처리 시간이 2배 증가하게 된다.
특정한 계산 작업들의 속도를 빠르게 하기 위해 데이터 구조들(또는 가속 계층 구조들)을 구축하는 것은 잘 알려져 있다. 그러나, 이러한 데이터 구조들은, 크로스-애플리케이션(cross-application) 정보 공유 없이 그리고 (비주얼 시뮬레이션의 경우에 피직스(physics), 그래픽, 및 AI와 같은) 모든 작업들에 대하여 하나의 데이터 구조가 사용됨이 없이, 분리하여(in isolation) 구축되고 유지된다. 이와 대비하여, 본 발명의 실시예들은 완전한 비주얼 시뮬레이션 루프에 걸쳐 하나의 공통의 데이터 구조를 구축하고 유지한다. 이 "공통의 데이터 구조"는, 저비용으로, 개개의 최적화된 데이터 구조들의 성능만큼 거의 양호한 성능을 달성하도록 변경될 수 있다. 이것은 공유된 아키텍처의 모든 이익들을 달성하면서 각 개개의 알고리즘에 대한 실행 시간의 작은 증가만으로 구축 비용의 상당한 감소를 허용한다. 그 결과는 구축 및 사용 비용의 최종적인 개선(net improvement), 즉, 최종적인 프레임 레이트(net frame rate)의 증가이다.
본 발명의 실시예들은 상이한 애플리케이션들에 걸쳐서 공통의 데이터 구조를 공유하고, 그것들을 그 다양한 애플리케이션들의 요건들에 대하여 필요한 대로 적응시킨다. 이 시간 효율적이고 공간 효율적인 데이터 구조 공유는 리소스들의 효율적인 사용뿐만 아니라 성능 향상을 가능하게 한다. 동일한 플랫폼 상에서 이러한 애플리케이션들을 실행하는 멀티-코어 및 매니-코어 아키텍처들에 대하여, 본 발명의 실시예들은 또한 메모리 공간을 절약하고, 캐시 지역성(cache locality)을 개선하고, 데이터 구조 구축 시간을 감소시킨다.
이제 도면들을 참조하면, 도 1은 종래 기술에 따른 컴퓨터 생성 이미지의 생성을 둘러싸는 기존의 프로세스(100)의 표현이다. 도 1은 물리적 시뮬레이션 및 레이-트레이싱 커널들로 이루어진 애플리케이션을 도시한다. 이러한 커널들 각각은 그 커널에 대하여 특수화된 그 자신의 가속 데이터 구조들(kd-트리들이 도시되어 있지만 임의의 데이터 구조가 사용될 수 있음)을 구축한다. 따라서, 종래 기술은 프레임마다 양쪽 kd-트리들을 구축하는 비용을 지불한다.
도 2는 본 발명의 실시예에 따른 컴퓨터 생성 이미지의 생성을 둘러싸는 프로세스(200)의 표현이다. 도 2에 도시된 바와 같이, 프로세스(200)는 물리적 시뮬레이션에 대한 하나의 kd-트리를 구축하고 그 후 그 데이터 구조를 레이-트레이싱에 대하여 적응시킨다. 일례로서, 물리적 시뮬레이션 엔진은 (스탠포드 대학으로부터의) PhysBAM으로 지칭되는 소스 리포지토리(source repository)에 기초할 수 있다. 적은 구축 비용으로 상이한 비주얼 계산 커널들에 대하여 데이터 구조들을 빠르게 적응시키기 위한 기법들이 식별되었고(도 2에서 "데이터 구조를 적응(adapting data structure)" 박스로 표시됨); 이것들은 각 커널에 대한 특수화된 데이터 구조의 효율의 대부분을 유지한다. 이것은 양쪽 커널들을 합친 것에 대한 구축 및 계산 시간의 새로운 절약으로 귀착한다.
일례로서, 물리적 시뮬레이션 엔진에 의해 구축된 kd-트리를 취하고 그것을 레이 트레이싱 엔진에 대하여 적응시키는 것(이것은 도 2에 도시된 상황임)은 다음과 같이 PhysBAM 트리의 리프 노드들을 세분화(refine)하기 위해 SAH(Surface Area Heuristic)를 적응시키는 것에 의해 달성될 수 있다.
Figure pat00001
여기에서, C1은 노드 횡단 비용(node traversal cost)이고, CL(x)은 노드 충돌 비용(node collision cost): 왼쪽 자식 프리미티브들(left child primitives)의 수이고, CR(x)은 노드 충돌 비용: 오른쪽 자식 프리미티브들(right child primitives)의 수이고,
Figure pat00002
는 왼쪽 자식 대 부모의 표면적 비율(surface area ratio of left child to parent)이고,
Figure pat00003
는 오른쪽 자식 대 부모의 표면적 비율(surface area ratio of right child to parent)이다. 빈 공간을 분리하는 분리 점들(split points)은 노드들과 삼각형들의 교점들과 일치하는 평면들을 분리할 수 있는 것으로 식별될 수 있다(그것은 삼각형들로 이루어진 노드들의 면적을 감소시키기 때문에). 도 3은 리프 노드에 대한 점진적 세분화들(progressive refinements)(3a에서 시작하여 3b 및 3c를 통하여 3d까지 진행하는)의 세트를 이용한 결과들을 나타낸다. 도시된 바와 같이, 리프 노드는 빈 공간을 베어내도록(carve away) 세분된다. 완전한 3D 공간에 대하여 이 프로세스가 수행될 필요가 있는 최초의 레이-트레이싱 트리와 비교해서, 본 발명의 실시예들은 "양호한" 트리를 출발점으로서 이용하고 (시간 및 공간에 관하여) 감소된 비용으로 유사한 전략을 수행한다.
도 2에 도시된 상황(즉, 물리적 시뮬레이션을 위하여 구축된 kd-트리를 적응시키고/변경하고 그 변경된 kd-트리를 사용하여 레이-트레이싱의 속도를 빠르게 하는 것)에 대하여 예시적인 적응된 kd-트리는 레이-트레이싱의 목적으로 특별히 구축된 kd-트리의 프레임 레이트의 82 퍼센트를 달성하고, 적응/변경을 위해 요구되는 시간은 무시해도 좋다(그것을 구축하는 비용의 1 퍼센트 미만). 유사하게, 물리적 시뮬레이션을 위하여 구축된 예시적인 BVH는 레이-트레이서(ray-tracer)에 의해 구축된 전용의 BVH에 의해 달성된 렌더링 레이트의 86 퍼센트를 달성하고(변경 후), 이 경우에도 요구되는 변경 시간은 구축 시간과 비교하여 무시해도 좋다.
서버 측 비주얼 시뮬레이션 루프에 대하여, 물리적 시뮬레이션과 가시성 계산 사이에 계층적 공간 데이터 구조들을 공유하는 것은, 그 데이터 구조들을 개별적으로 유지하기 위해 요구되는 메모리 공간의 대략 2/3만을 필요로 한다. (일례로서, 이것은 보잉 모델(Boeing model)에 대하여 20MB의 메모리 공간 감소와 동등하다).
전술된 바와 같이, 본 발명의 실시예들은 완전한 비주얼 시뮬레이션 루프에 대한 공통의 데이터 구조를 구축하는 개념을 제안한다. 이 공통의 데이터 구조는 각 특정한 커널에 대하여 적응되고 따라서 거의 최적의 성능을 달성할 수 있다. 특정한 계산 커널에 의해 요구되는 특정한 기준으로 데이터 구조를 더 개선하기 위하여 변경들이 필요하다. 이것은 적어도 이하의 2개의 단락에서 설명되는 이유 때문에 필요할 수 있다.
예를 들면, 물리적 시뮬레이션 및 렌더링(레이-트레이싱)이 클라이언트 측에서 수행되고 있다고 가정한다. 물리적 시뮬레이션은 아주 근접해 있는 오브젝트들의 계산의 속도를 빠르게 하기 위하여 kd-트리를 구축한다. 한편, 레이-트레이서는 레이-트레이싱 성능의 속도를 빠르게 하기 위하여 노드들 각각의 내부의 빈 공간을 감소시키는 kd-트리를 구축한다. 따라서, 첫 번째 kd-트리는 그것이 또한 빈 공간들을 감소시키고 레이-트레이싱에 대하여 잘 작동하는 방법으로 변경될 수 있다.
게다가, 작업되고 있는 모델들의 해상도는 2개의 애플리케이션들에 대하여 상이할 수 있다. 물리적 시뮬레이션은 (실행 시간을 빠르게 하기 위해) 오브젝트들의 보다 성긴 모델(coarser model)로 작업할 수 있고, 렌더링은 (증가된 리얼리즘을 위해) 오브젝트의 보다 정교한 버전(more refined version)으로 작업할 수 있다. 그러한 상황들 하에서, 변경된 트리에 이르는, 새로운 삼각형들이 수용되어야 한다.
앞의 설명은 물리적 시뮬레이션 엔진에 의해 구축되고 그 후 레이 트레이싱에 대하여 적응된 kd-트리에 초점을 맞추었다. 본 발명의 상이한 실시예들은, 레이-트레이서에 의해 구축되고 물리적 시뮬레이션 엔진에 의해 그 자신의 요건에 대하여 적응되는 kd-트리(다음에 설명됨) 또는 유사한 방식으로 구축되고 변경되는 BVH(하기에 설명됨)와 같은, 상이한 접근법을 취할 수 있다.
레이 트레이서에 의해 구축되고 후속하여 (예를 들면, PhysBAM에 기초하는) 물리적 시뮬레이션 엔진에 대하여 변경되는 kd-트리에 대하여, 통합된 공간 계층 구조가 구상될 수 있다. 이것은 프리미티브들의 다양한 세트들을 동일한 계층 구조에 의해 분할하는 것을 수반한다. PhysBAM은 충돌 검출을 수행하기 위해 성긴 정점들(vertices), 삼각형들, 및 라인 세그먼트들을 필요로 하는 반면, 레이 트레이서들은 미세한 삼각형들(fine triangles)에 대한 계층 구조를 제공한다. 다음으로 요구되는 것은 성긴 프리미티브들이 미세한 삼각형들에 의해 제공된 계층 구조 아래로 푸시되는 것이다. (소수의 예외적인 경우들은 PhysBAM의 터미네이션 휴리스틱(termination heuristic)에 적합하도록 계층 구조를 확장하는 것을 요구할 수 있다.) 더 구체적으로, 레이 트레이서는 보다 섬세한 메쉬(finer mesh)에 작용하기 때문에, 트리에 대한 어떤 변경도 필요하지 않다: 리프 노드들은 단지 피직스 루프(physics loop)에 의해 사용되는 오브젝트들의 관련 삼각형들로 채워질(populated) 필요가 있다. 이것은 그 삼각형들에 가장 잘 맞는 노드에 기초하여 루트로부터 삼각형들을 푸시하는 것에 의해 쉽게 달성될 수 있다. 일례로서, 이것은 중앙값 분리(median split)를 이용하여 행해질 수 있고, 더욱이, (스크래치로부터 그러한 트리들을 구축하기 위한 O(nlogn) 시간과 비교하여) 선형 시간으로(in linear time) 행해질 수 있어, 실행 시간의 매우 현저한 감소로 이어진다.
전술된 kd-트리 시나리오들의 요약과 함께 BVH들을 수반하는 시나리오들에 대한 결과들이 이제 제시될 것이다. BVH에 기초한 레이 트레이서는 X-Ray로 지칭된다. kd-트리들에 기초한 레이 트레이서는 MLRTA로 지칭된다.
1. PhysBAM KD-트리 → MLTRA (렌더링 성능의 82%)
2. PhysBAM BVH → XRay (렌더링 성능의 86%)
3. MLTRA KD-트리 → PhysBAM (PhysBAM 성능의 0.3% 저하)
4. XRay BVH → PhysBAM (PhysBAM 성능의 0.5% 저하)
상기 모든 시나리오들에서 데이터 구조는 프레임당 한 번만 구축(및 적응)된다는 것이 반복된다; 이것은 개개의 애플리케이션들에 대한 다수의 데이터 구조들을 구축하기 위해 요구되는 것과 비교하여 상당한 양의 시간을 절약하고 모든 테스트된 시나리오들에 대하여 (15-20 퍼센트만큼) 실행 시간의 감소로 이어진다. 상기 결과들로부터 특정한 예를 고르면, (1)에서, 렌더링을 위한 가속 데이터 구조를 구축하는 시간은 프레임 시간의 대략 20 퍼센트이다. 비록 렌더링 레이트는 18 퍼센트만큼 떨어지지만, 프레임 시간의 10 퍼센트만이 레이-트레이싱에 소비되어, 프레임 시간에서 1.8 퍼센트의 감속 - 18.2 퍼센트의 전체 이득으로 이어진다. 이것은 전체 3D 비주얼 시뮬레이션 루프에 대한 프레임 레이트의 전체적인 증가로 이어져서, 보다 나은 경험으로 이어진다. 비록 지금까지 초점은 피직스 엔진 및 레이-트레이서가 실행되고 있는 시나리오들에 맞추어졌지만, 본 명세서에서 개시된 개념들은 (예를 들면, (가상 세계 환경의 맥락에서) 다음에 설명될 가시성 계산들을 포함하는) 다른 시나리오들로 쉽게 확장될 수 있다는 것이 여기에 언급되어야 한다.
가상 세계 서버들은 다양한 작업들(물리적 시뮬레이션, 가시성 계산, AI 등)을 동시에 지원할 필요가 있다. 이하의 설명은 물리적 시뮬레이션을 위하여 구축된 kd-트리들과 같은 계층적 공간 데이터 구조들이 가상 세계 서버들에서 가시성 계산을 위해 사용될 수 있는 예시에 초점을 맞춘다.
서버 측 가시성 계산들은 서버 네트워크 대역폭 요건 및 클라이언트 측 렌더링 리소드들을 상당히 감소시킬 수 있다. 주어진 시점에서 가상 세계의 작은 부분만이 클라이언트에 의해 보일 것이다. 따라서, 매 프레임에서 전체 세계에 대한 업데이트들을 전송하는 것은 낭비일 것이다. 대신에, 서버들은 영역으로부터 보이는 모든 오브젝트들을 보고, 클라이언트에 업데이트들이 전송될 필요가 있는 잠재적으로 보이는 오브젝트들만을 전송한다. 본 발명의 실시예들은 영역으로부터 보수적인 가시성 계산(conservative visibility computation)을 수행하고, 이것은 영역 내의 정말로 보이지 않는 오브젝트들만이 보이지 않는(invisible) 것으로 분류된다는 것을 의미한다. (보이지 않는 오브젝트들은 보이는 것으로 분류될 수 있으며, 보이는 오브젝트 세트들의 과대 평가(overestimation)로 귀착된다).
가시성 계산에서 계층적 공간 데이터 구조들의 사용에 관한 중요한 개념은 숨겨져 있는 오브젝트들이 차폐물들(occluders)로서 간주될 필요가 없다는 것이다. 일례로서, 특정한 방향으로부터 보았을 때 BB2에 의해 BB3가 시야(view)로부터는 숨겨지는 반면 BB1에 의해 BB2 및 BB3 양쪽 모두가 시야로부터 숨겨지는 방식으로 배열된, BB1, BB2 및 BB3라 불리는 3축 정렬된 입방형 구조들(three axis-aligned cuboidal structures)의 바운딩 박스들(bounding boxes)을 생각해보자. 보통은 우리는 BB1, BB2, 및 BB3를 차폐물들로서 한 번 포함할 것이다. 그러나, BB2에 의해 차폐되는 임의의 오브젝트는 BB1에 의해서도 차폐되고 - 따라서 BB1을 차폐물로서 간주하는 것으로 충분하다. 어느 오브젝트들이 보이는지를 빠르게 결정하는 것이 가능하다면, 차폐물들로서 래스터화된 오브젝트들의 수는 감소될 수 있다.
그 때문에, 오브젝트의 바운딩 박스가 보이지 않는다면, 그 오브젝트는 보이지 않아야 한다. 한편, 바운딩 박스가 보인다면, 우리는 그 오브젝트가 보이지 않는지 여부를 말할 수 없고, 실제로 차폐물로서 래스터화해야 한다. 가시성 쿼리들(visibility queries)의 속도를 빠르게 하기 위하여 계층적 공간 데이터 구조의 리프 노드들만을 이용하여 실험이 행해졌다(UNC 파워플랜트 모델 및 보잉 모델 둘 다를 이용하여). 이 방식은 래스터화된 오브젝트들의 수를 현저히 감소시키고, 어떠한 공간 데이터 구조도 이용하지 않는 경우와 비교하여 2-3배의 속도 증가로 이어진다는 것이 확인되었다. 물리적 시뮬레이션을 위하여 구축된 공간 데이터 구조가 가시성 계산을 위하여 공유될 때, 공간 데이터 구조에 전용되는 메모리 공간의 33 퍼센트가 절약될 수 있다. (물리적 시뮬레이션은 계층적 데이터 구조들을 유지하기 때문에, 요구되는 노드들의 총수는 요구되는 리프 노드들의 수의 2배이다.) 따라서, 데이터 구조들을 공유하는 것은 리프 노드들의 수만큼 절약할 수 있고, 개별 데이터 구조들을 유지하는 것과 비교하여 33 퍼센트 감소로 귀착한다. 756,417개의 오브젝트들을 갖는 보잉 모델에 의하면, 이 33 퍼센트 감소는 약 20MB의 메모리 공간 절약으로 귀착한다.
도 4는 본 발명의 실시예에 따른 비주얼 시뮬레이션 루프에 대한 총 계산 시간을 감소시키는 방법(400)을 설명하는 흐름도이다.
방법(400)의 단계(410)는 비주얼 시뮬레이션 루프의 그 특정한 페이즈에 대한 계산을 수행하기 전에 각 특정한 페이즈에 대한 요건에 공통의 데이터 구조를 적응시키는 것에 의해 비주얼 시뮬레이션 루프의 각 페이즈에 걸쳐 공통의 데이터 구조를 공유하는 것이다. 단계(410)는 데이터 구조가 주어진 페이즈에 대하여 이미 최적화되어 있다면 그 페이즈에 대한 데이터 구조의 적응을 필요로 하지 않는다는 것을 이해해야 한다. 일례로서, 데이터 구조는 아마 그것의 구축 동안에 그 제1 페이즈에 대하여 최적화될 것이기 때문에 제1 페이즈에 대한 계산을 위해 데이터 구조를 사용하기 전에 아마 데이터 구조의 어떤 변경도 요구되지 않을 것이다.
단계(410)는 특정한 하위 단계들(sub-steps)의 수행을 수반하고; 이것들도 도 4에서 도시고 이하에 설명된다.
단계(410)의 하위 단계(411)는 공통의 데이터 구조를 평가하는 것이고, 그 공통의 데이터 구조는 이전에 ― 전형적으로 그 데이터 구조를 사용하는 최초의 것이 될 비주얼 시뮬레이션 루프의 페이즈에 의해 구축된 것임을 이해해야 한다. 단계(410)의 하위 단계(412)는, 수행되어야 하는 라인에서 다음에 있는 계산에 대하여 공통의 데이터 구조가 최적화되어 있는지를 판정하는 것이다. (현재의 프레임에 대하여) 아직 어떤 계산도 수행되지 않았다면, 수행되어야 할 다음 계산은 제1 계산이고, 상기 언급된 바와 같이, 공통의 데이터 구조는 그 계산을 위하여 구축되었기 때문에 아마 그 계산에 대하여 이미 최적화되어 있을 것이다. 한편, 수행되어야 할 다음 계산이 제1 계산이 아니라면, 공통의 데이터 구조는 그것이 사용되기 전에 최적화되어야 할 것이다. 이것은 본 명세서에 개시된 하나 이상의 최적화 기법들에 따라서 또는 본 기술 분야에 알려진 다른 최적화 기법들에 따라서 달성될 수 있다.
단계(410)의 하위 단계(413)는 다음 계산을 수행하는 것이다. 이 하위 단계는, 하위 단계(412)가 수행되어야 하는 라인에서 다음에 있는 계산에 대하여 공통의 데이터 구조가 최적화되어 있다고 판정하면, 하위 단계(412)에 이어서 즉시 수행된다. 수행되어야 하는 라인에서 다음에 있는 계산에 대하여 공통의 데이터 구조가 최적화되어 있지 않다면, 하위 단계(413)에 앞서 단계(410)의 하위 단계(414)가 수행되고, 이 하위 단계(414)는 다음 계산에 대하여 공통의 데이터 구조를 적응시키는 것이다. 방금 언급된 바와 같이, 이 계산은 본 명세서에 개시된 하나 이상의 최적화 기법들에 따라서 또는 본 기술 분야에 알려진 다른 최적화 기법들에 따라서 달성될 수 있다.
단계(410)의 하위 단계(415)는 수행되어야 할 추가적인 계산들이 있는지를 묻는다. 만약 있다면, 방법은 하위 단계(411)로 되돌아가고 프로세스가 반복된다. 만약 없다면, 방법은 종료한다(하위 단계(416)).
일 실시예에서, 비주얼 시뮬레이션 루프는 물리적 시뮬레이션 페이즈, 가시성 계산 페이즈, 인공 지능 페이즈, 및 렌더링 페이즈를 포함한다. 특정한 실시예에서, 비주얼 시뮬레이션 루프는 제1 처리 장치(예를 들면, 서버) 및 제2 처리 장치(예를 들면, 클라이언트)에서 다루어지고, 제1 처리 장치는 인공 지능 페이즈, 가시성 계산 페이즈, 및 물리적 시뮬레이션 페이즈의 제1 인스턴스를 수행하고, 제2 처리 장치는 렌더링 페이즈 및 물리적 시뮬레이션 페이즈의 제2 인스턴스를 수행한다. 일례로서, 공통의 데이터 구조는 kd-트리, BVH, BIH(bounding interval hierarchy), 또는 몇몇의 다른 분할 데이터 구조를 포함할 수 있다.
일 실시예에서, 제1 페이즈는 물리적 시뮬레이션 페이즈이고, 제2 페이즈는 렌더링 페이즈이고, 데이터 구조를 적응시키는 것은 3D에서 SAH(Surface Area Heuristic)를 수행하는 것을 포함한다. 다른 실시예에서, 제1 페이즈는 렌더링 페이즈이고, 제2 페이즈는 물리적 시뮬레이션 페이즈이고, 데이터 구조를 적응시키는 것은 루트 노드 및 리프 노드들을 포함하는 공간 계층 구조를 식별하는 것, 렌더링 페이즈에 의해 사용되는 복수의 프리미티브를 식별하는 것, 및 복수의 프리미티브 중 특정한 것들, 즉, 물리적 시뮬레이션 엔진에 의해 요구되는 관련 삼각형들(또는 다른 프리미티브들)로 리프 노드들을 채우는 것을 포함한다. 리프 노드들을 채우는 것은 (O(nlogn) 시간과 대조적으로) 선형 시간으로 수행될 수 있어, 실행 시간의 현저한 감소로 이어진다.
도 5는 본 발명의 실시예에 따른 비주얼 시뮬레이션 루프에 의해 생성된 가상 장면의 전자 디스플레이 상의 시각적 표현을 가능하게 하는 방법(500)을 설명하는 흐름도이다.
방법(500)의 단계(510)는 비주얼 시뮬레이션 루프의 제1 페이즈에 대한 데이터 구조를 구축하는 것이다. 일 실시예에서, 방법(400)에서와 같이, 비주얼 시뮬레이션 루프는 물리적 시뮬레이션 페이즈, 가시성 계산 페이즈, 인공 지능 페이즈, 및 렌더링 페이즈를 포함하고, 제1 페이즈는 이것들(또는 열거되지 않은 다른 것들) 중 어느 하나일 수 있다. 방법(400)에서와 같이, 일 실시예에서 비주얼 시뮬레이션 루프는 제1 처리 장치 및 제2 처리 장치에 의해 다루어지고, 제1 처리 장치는 인공 지능 페이즈, 가시성 계산 페이즈, 및 물리적 시뮬레이션 페이즈의 제1 인스턴스를 수행하고, 제2 처리 장치는 렌더링 페이즈 및 물리적 시뮬레이션 페이즈의 제2 인스턴스를 수행한다.
방법(500)의 단계(520)는 데이터 구조를 이용하여 제1 페이즈에 대한 계산을 수행하는 것이다. 방법(500)의 단계(530)는 비주얼 시뮬레이션 루프의 제2 페이즈에 대하여 데이터 구조를 적응시키는 것이다. 방법(500)의 단계(540)는 적응된 데이터 구조를 이용하여 제2 페이즈에 대한 계산을 수행하는 것이다.
비주얼 시뮬레이션 루프가 추가적인 페이즈들을 포함한다면, 방법(500)은 비주얼 시뮬레이션 루프의 각각의 추가적인 페이즈에 대하여 데이터 구조를 적응시키는 것 및 적응된 데이터 구조들 중 대응하는 하나의 데이터 구조, 즉, 그 특정한 추가적인 페이즈에 대하여 적응된 데이터 구조를 이용하여 비주얼 시뮬레이션 루프의 각각의 추가적인 페이즈에 대한 계산을 수행하는 것을 더 포함할 수 있다. 본 명세서의 다른 부분에서 언급된 바와 같이, 데이터 구조는 kd-트리, BVH, BIH 등을 포함할 수 있다. 제1 페이즈 및 제2 페이즈의 정체성 및 적응의 세부사항들은 위에 제시된 것과 마찬가지일 수 있다.
도 6은 본 발명의 실시예에 따른 가상 세계 애플리케이션에서 비주얼 시뮬레이션 루프를 다루는 방법(600)을 설명하는 흐름도이다. 방법(600)의 이하의 단계들 각각은 비주얼 시뮬레이션 루프의 각 시간 단계 또는 이미지 업데이트 프레임에 대하여 수행된다.
방법(600)의 단계(610)는 정확히 하나의 데이터 구조를 구축하는 것이다. 일례로서, 데이터 구조는 비주얼 시뮬레이션 루프의 어떠한 페이즈이든 제1 계산을 수행할 페이즈에 의해(또는 그 페이즈를 위하여) 구축될 수 있다.
방법(600)의 단계(620)는 서버 처리 장치에서 데이터 구조의 최초의 또는 적응된 버전을 이용하여 제1 계산을 수행하는 것이다. 상기 언급된 바와 같이, 데이터 구조가 제1 계산에 대하여 이미 적응되거나 최적화되어 있다면 아마 어떤 적응도 필요하지 않을 것이지만, 데이터 구조가 이전에 사용되었고 아직 적응되지 않았다면 계산은 아마 특정한 적응이 먼저 행해진 후에 향상될 것이다.
방법(600)의 단계(630)는 클라이언트 처리 장치에서 데이터 구조의 최초의 또는 적응된 버전을 이용하여 제2 계산을 수행하는 것이다. 이 제2 계산에 대해서는 시스템 성능을 최적화하기 위하여 특정한 적응이 필요하거나 또는 적어도 바람직할 것 같다(비록 단계(630)는 일부의 실시예들에서 그러한 적응들 없이 수행될 수 있지만). 그러한 적응들은, 수행된다면, 본 명세서에서 앞에 개시된 기법들에 따라서 또는 이 기술 분야에 알려진 다른 기법들에 따라서 달성될 수 있다.
일 실시예에서, 데이터 구조는 클라이언트 처리 장치의 온-칩 캐시에 존재한다. 동일한 또는 다른 실시예에서, 제1 계산 및 제2 계산은 이미지 업데이트 프레임 동안에 수행되는 유일한 계산들이다. 다른 실시예들에서는, 프레임마다 3개 이상의 계산들이 수행될 수 있다.
특정한 실시예들을 참조하여 본 발명을 설명하였지만, 본 기술 분야의 숙련자들은 본 발명의 사상 및 범주로부터 벗어나지 않고 다양한 변경들이 이루어질 수 있다는 것을 이해할 것이다. 따라서, 본 발명의 실시예들의 개시는 본 발명의 범주의 예증이 되기 위해 의도된 것이고, 한정을 위해 의도된 것이 아니다. 본 발명의 범주는 첨부된 청구항들이 요구하는 정도까지만 제한될 것이 의도된다. 예를 들면, 본 명세서에서 설명된 방법들은 다양한 실시예들에서 구현될 수 있고, 이 실시예들 중 특정한 실시예들에 대한 앞의 설명은 반드시 모든 가능한 실시예들에 대한 완전한 설명을 나타내는 것이 아니라는 것은 본 기술 분야의 통상의 지식을 가진 자에게 즉시 명백할 것이다.
게다가, 특정한 실시예들과 관련하여 이익들, 다른 이점들, 및 문제점들의 해결책들이 설명되었다. 그러나, 그 이익들, 이점들, 및 문제점들의 해결책들, 및 임의의 이익, 이점, 또는 해결책이 생기거나 더욱 두드러지게 할 수 있는 임의의 엘리먼트 또는 엘리먼트들은 임의의 청구항 또는 모든 청구항의 결정적인, 필수적인, 또는 본질적인 특징들 또는 구성 요소들로서 해석되지 않아야 한다.
더욱이, 본 명세서에 개시된 실시예들 및 한정 사항들은, 실시예들 및/또는 한정 사항들이 (1) 청구항들에서 명백히 청구되어 있지 않고; (2) 균등론(doctrine of equivalents) 하의 청구항들에서 잠재적으로 명시된 엘리먼트들 및/또는 한정 사항들의 균등물들이라면 균등론 하에서 일반인에게 전용이지 않다.

Claims (19)

  1. 비주얼 시뮬레이션 루프(visual simulation loop)에 의해 생성된 가상 장면(virtual scene)의 전자 디스플레이 상의 시각적 표현을 가능하게 하는 방법으로서,
    상기 비주얼 시뮬레이션 루프의 제1 페이즈(phase)에 대한 데이터 구조를 구축하는 단계;
    상기 데이터 구조를 이용하여 상기 제1 페이즈에 대한 제1 계산을 수행하는 단계;
    상기 비주얼 시뮬레이션 루프의 제2 페이즈에 대하여 상기 데이터 구조를 적응시키는 단계; 및
    상기 적응된 데이터 구조를 이용하여 상기 제2 페이즈에 대한 제2 계산을 수행하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 비주얼 시뮬레이션 루프의 각각의 추가적인 페이즈에 대하여 상기 데이터 구조를 적응시키는 단계; 및
    상기 적응된 데이터 구조들 중 대응하는 데이터 구조를 이용하여 상기 비주얼 시뮬레이션 루프의 각각의 추가적인 페이즈에 대한 후속의 계산을 수행하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서,
    상기 비주얼 시뮬레이션 루프는 물리적 시뮬레이션(physical simulation) 페이즈, 가시성 계산(visibility computation) 페이즈, 인공 지능(artificial intelligence) 페이즈, 및 렌더링(rendering) 페이즈를 포함하는 방법.
  4. 제3항에 있어서,
    상기 비주얼 시뮬레이션 루프는 제1 처리 장치 및 제2 처리 장치에 의해 다루어지고;
    상기 제1 처리 장치는 상기 인공 지능 페이즈, 상기 가시성 계산 페이즈, 및 상기 물리적 시뮬레이션 페이즈의 제1 인스턴스를 수행하고;
    상기 제2 처리 장치는 상기 렌더링 페이즈 및 상기 물리적 시뮬레이션 페이즈의 제2 인스턴스를 수행하는 방법.
  5. 제1항에 있어서,
    상기 데이터 구조는 kd-트리 및 BVH(bounding volume hierarchy) 중 하나를 포함하는 방법.
  6. 제1항에 있어서,
    상기 제1 페이즈는 물리적 시뮬레이션 페이즈이고, 상기 제2 페이즈는 렌더링 페이즈이고;
    상기 데이터 구조를 적응시키는 단계는 SAH(Surface Area Heuristic)를 수행하는 단계를 포함하는 방법.
  7. 제1항에 있어서,
    상기 제1 페이즈는 렌더링 페이즈이고, 상기 제2 페이즈는 물리적 시뮬레이션 페이즈이고;
    상기 데이터 구조를 적응시키는 단계는,
    루트 노드(root node) 및 리프 노드들(leaf nodes)을 포함하는 공간 계층 구조(spatial hierarchy structure)를 식별하는 단계;
    상기 렌더링 페이즈에 의해 사용되는 복수의 프리미티브(primitive)를 식별하는 단계; 및
    상기 복수의 프리미티브들 중 특정한 프리미티브들로 상기 리프 노드들을 채우는(populating) 단계를 포함하는 방법.
  8. 제7항에 있어서,
    상기 리프 노드들을 채우는 단계는 선형 시간으로(in linear time) 수행되는 방법.
  9. 비주얼 시뮬레이션 루프에 대한 총 계산 시간을 감소시키는 방법으로서,
    상기 비주얼 시뮬레이션 루프의 각각의 특정한 페이즈에 대한 계산을 수행하기 전에 그 특정한 페이즈에 대한 요건에 공통의 데이터 구조를 적응시키는 것에 의해 상기 비주얼 시뮬레이션 루프의 각각의 페이즈에 걸쳐서 상기 공통의 데이터 구조를 공유하는 단계를 포함하는 방법.
  10. 제9항에 있어서,
    상기 비주얼 시뮬레이션 루프는 물리적 시뮬레이션 페이즈, 가시성 계산 페이즈, 인공 지능 페이즈, 및 렌더링 페이즈를 포함하는 방법.
  11. 제10항에 있어서,
    상기 비주얼 시뮬레이션 루프는 제1 처리 장치 및 제2 처리 장치에서 다루어지고;
    상기 제1 처리 장치는 상기 인공 지능 페이즈, 상기 가시성 계산 페이즈, 및 상기 물리적 시뮬레이션 페이즈의 제1 인스턴스를 수행하고; 그리고
    상기 제2 처리 장치는 상기 렌더링 페이즈 및 상기 물리적 시뮬레이션 페이즈의 제2 인스턴스를 수행하는 방법.
  12. 제9항에 있어서,
    상기 공통의 데이터 구조는 kd-트리 또는 BVH(bounding volume hierarchy)를 포함하는 방법.
  13. 제9항에 있어서,
    상기 비주얼 시뮬레이션 루프의 제1 페이즈는 물리적 시뮬레이션 페이즈이고, 상기 비주얼 시뮬레이션 루프의 제2 페이즈는 렌더링 페이즈이고;
    상기 공통의 데이터 구조를 적응시키는 것은 SAH(Surface Area Heuristic)를 수행하는 것을 포함하는 방법.
  14. 제9항에 있어서,
    상기 비주얼 시뮬레이션 루프의 제1 페이즈는 렌더링 페이즈이고, 상기 비주얼 시뮬레이션 루프의 제2 페이즈는 물리적 시뮬레이션 페이즈이고;
    상기 공통의 데이터 구조를 적응시키는 것은,
    루트 노드 및 리프 노드들을 포함하는 공간 계층 구조를 식별하는 것;
    상기 렌더링 페이즈에 의해 사용되는 복수의 프리미티브를 식별하는 것; 및
    상기 복수의 프리미티브들 중 특정한 프리미티브들로 상기 리프 노드들을 채우는 것을 포함하는 방법.
  15. 제14항에 있어서,
    상기 리프 노드들을 채우는 것은 선형 시간으로 수행되는 방법.
  16. 가상 세계(Virtual World) 애플리케이션에서 비주얼 시뮬레이션 루프를 다루는 방법으로서,
    상기 비주얼 시뮬레이션 루프의 각각의 이미지 업데이트 프레임에 대하여,
    정확히 하나의 데이터 구조를 구축하는 단계;
    서버 처리 장치에서 상기 데이터 구조의 최초의 또는 적응된 버전을 이용하여 제1 계산을 수행하는 단계; 및
    클라이언트 처리 장치에서 상기 데이터 구조의 상기 최초의 또는 적응된 버전을 이용하여 제2 계산을 수행하는 단계
    를 포함하는 방법.
  17. 제16항에 있어서,
    상기 데이터 구조는 상기 클라이언트 처리 장치의 온-칩 캐시(on-chip cache)에 존재하는 방법.
  18. 제16항에 있어서,
    상기 제1 계산 및 상기 제2 계산은 상기 이미지 업데이트 프레임 동안에 수행되는 유일한 계산들인 방법.
  19. 제16항에 있어서,
    상기 데이터 구조는 kd-트리 및 BVH(bounding volume hierarchy) 중 하나를 포함하는 방법.
KR1020110027614A 2010-03-26 2011-03-28 가상 세계 애플리케이션에서 비주얼 시뮬레이션 루프에 대한 총 계산 시간을 감소시키는 방법 Expired - Fee Related KR101215126B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/732,392 US8275805B2 (en) 2010-03-26 2010-03-26 Method of decreasing a total computation time for a visual simulation loop in a virtual world application
US12/732,392 2010-03-26

Publications (2)

Publication Number Publication Date
KR20110108321A true KR20110108321A (ko) 2011-10-05
KR101215126B1 KR101215126B1 (ko) 2012-12-24

Family

ID=44012775

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110027614A Expired - Fee Related KR101215126B1 (ko) 2010-03-26 2011-03-28 가상 세계 애플리케이션에서 비주얼 시뮬레이션 루프에 대한 총 계산 시간을 감소시키는 방법

Country Status (6)

Country Link
US (1) US8275805B2 (ko)
KR (1) KR101215126B1 (ko)
CN (1) CN102201127B (ko)
DE (1) DE102011014977A1 (ko)
GB (1) GB2479047B (ko)
TW (2) TWI421792B (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9965821B2 (en) 2012-03-09 2018-05-08 Nvidia Corporation Fully parallel in-place construction of 3D acceleration structures in a graphics processing unit
US9697640B2 (en) * 2014-04-21 2017-07-04 Qualcomm Incorporated Start node determination for tree traversal in ray tracing applications
EP3201883B1 (en) * 2014-09-30 2024-04-24 CAE Inc. Rendering damaged-enhanced images in a computer simulation
EP3726474A1 (en) * 2019-04-19 2020-10-21 Koninklijke Philips N.V. Methods and systems for handling virtual 3d object surface interaction
US11494966B2 (en) * 2020-01-07 2022-11-08 Disney Enterprises, Inc. Interactive editing of virtual three-dimensional scenes

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5816820A (en) * 1996-09-18 1998-10-06 Kelly Properties, Inc. Simulation generation system
NO304766B1 (no) 1997-06-16 1999-02-08 Sintef Fingeravtrykksensor
WO2002097780A1 (en) 2001-05-25 2002-12-05 Exluna, Inc. System and method related to data structures in the context of a computer graphics system
US7064766B2 (en) * 2001-10-18 2006-06-20 Microsoft Corporation Intelligent caching data structure for immediate mode graphics
US7619633B2 (en) * 2002-06-27 2009-11-17 Microsoft Corporation Intelligent caching data structure for immediate mode graphics
US7729538B2 (en) * 2004-08-26 2010-06-01 Microsoft Corporation Spatial recognition and grouping of text and graphics
US7928993B2 (en) * 2006-07-28 2011-04-19 Intel Corporation Real-time multi-resolution 3D collision detection using cube-maps
US20080062183A1 (en) * 2006-09-11 2008-03-13 Bart Swaelens Hybrid data structures for graphics programs
GB2462860B (en) * 2008-08-22 2012-05-16 Advanced Risc Mach Ltd Apparatus and method for communicating between a central processing unit and a graphics processing unit
TW201014630A (en) * 2008-10-06 2010-04-16 Inventec Corp Visual simulation system and method for exercise parameters

Also Published As

Publication number Publication date
GB2479047B (en) 2013-11-13
CN102201127A (zh) 2011-09-28
GB201104574D0 (en) 2011-05-04
TW201203168A (en) 2012-01-16
TWI421792B (zh) 2014-01-01
DE102011014977A1 (de) 2011-10-27
CN102201127B (zh) 2014-05-07
TWI499998B (zh) 2015-09-11
KR101215126B1 (ko) 2012-12-24
GB2479047A (en) 2011-09-28
US8275805B2 (en) 2012-09-25
TW201428677A (zh) 2014-07-16
US20110238680A1 (en) 2011-09-29

Similar Documents

Publication Publication Date Title
US8018453B2 (en) Deferred acceleration data structure optimization for improved performance
US8004518B2 (en) Combined spatial index for static and dynamic objects within a three-dimensional scene
US8570322B2 (en) Method, system, and computer program product for efficient ray tracing of micropolygon geometry
US20230410433A1 (en) Navigation mesh update
US11756256B2 (en) Dedicated ray memory for ray tracing in graphics systems
JP2012528376A (ja) レイトレーシング装置及び方法
Steinberger et al. On‐the‐fly generation and rendering of infinite cities on the GPU
KR101215126B1 (ko) 가상 세계 애플리케이션에서 비주얼 시뮬레이션 루프에 대한 총 계산 시간을 감소시키는 방법
KR20110042872A (ko) 타일 기반의 랜더링 장치 및 방법
CN104751507A (zh) 图形内容渲染方法和装置
US12505607B2 (en) Generation of tight world space bounding regions
Dietrich et al. Massive-model rendering techniques: a tutorial
JP5372241B2 (ja) 画像表示装置
US9117254B2 (en) System, method, and computer program product for performing ray tracing
US9519997B1 (en) Perfect bounding for optimized evaluation of procedurally-generated scene data
KR100624455B1 (ko) 3차원 그래픽스 환경에서의 라이트맵 처리 방법 및 장치
WILLCOCKS Sparse volumetric deformation
Atanasov et al. Efficient Rendering of Digital Twins Consisting of Both Static And Dynamic Data
KR101072889B1 (ko) 털 렌더링을 위한 앰비언트 오클루전 맵 생성 장치 및 방법
AU2004219190A1 (en) Visual simulation of dynamic moving bodies
Argudo et al. Multidisciplinary Development of an Educational 3D Simulation Game for Bee Biology using Advanced Graphics Techniques
Ha et al. Out-of-core interactive display of large meshes using an oriented bounding box-based hardware depth query
CN120219473A (zh) 表面法线生成方法、装置、设备及存储介质
CN102298796A (zh) 大数据量cad模型实时绘制方法
Ellis MSc Dissertation Report Granular Material Simulation

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

St.27 status event code: A-0-1-A10-A12-nap-PA0109

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

T11-X000 Administrative time limit extension requested

St.27 status event code: U-3-3-T10-T11-oth-X000

T11-X000 Administrative time limit extension requested

St.27 status event code: U-3-3-T10-T11-oth-X000

T11-X000 Administrative time limit extension requested

St.27 status event code: U-3-3-T10-T11-oth-X000

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

R15-X000 Change to inventor requested

St.27 status event code: A-3-3-R10-R15-oth-X000

R16-X000 Change to inventor recorded

St.27 status event code: A-3-3-R10-R16-oth-X000

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

D13-X000 Search requested

St.27 status event code: A-1-2-D10-D13-srh-X000

D14-X000 Search report completed

St.27 status event code: A-1-2-D10-D14-srh-X000

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

R18-X000 Changes to party contact information recorded

St.27 status event code: A-3-3-R10-R18-oth-X000

GRNT Written decision to grant
PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U11-oth-PR1002

Fee payment year number: 1

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

FPAY Annual fee payment

Payment date: 20151201

Year of fee payment: 4

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 4

FPAY Annual fee payment

Payment date: 20161129

Year of fee payment: 5

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 5

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 6

LAPS Lapse due to unpaid annual fee
PC1903 Unpaid annual fee

St.27 status event code: A-4-4-U10-U13-oth-PC1903

Not in force date: 20181218

Payment event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

PC1903 Unpaid annual fee

St.27 status event code: N-4-6-H10-H13-oth-PC1903

Ip right cessation event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

Not in force date: 20181218

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000