KR100999384B1 - 근방 입자 탐색에 사용하는 데이터 구조의 구축 방법, 그프로그램, 및 그 프로그램을 저장한 기억 매체 - Google Patents

근방 입자 탐색에 사용하는 데이터 구조의 구축 방법, 그프로그램, 및 그 프로그램을 저장한 기억 매체 Download PDF

Info

Publication number
KR100999384B1
KR100999384B1 KR1020080069515A KR20080069515A KR100999384B1 KR 100999384 B1 KR100999384 B1 KR 100999384B1 KR 1020080069515 A KR1020080069515 A KR 1020080069515A KR 20080069515 A KR20080069515 A KR 20080069515A KR 100999384 B1 KR100999384 B1 KR 100999384B1
Authority
KR
South Korea
Prior art keywords
particle
particles
writing
memory
data structure
Prior art date
Application number
KR1020080069515A
Other languages
English (en)
Other versions
KR20090008159A (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 KR20090008159A publication Critical patent/KR20090008159A/ko
Application granted granted Critical
Publication of KR100999384B1 publication Critical patent/KR100999384B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/56Particle system, point based geometry or rendering

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computer Graphics (AREA)
  • Computing Systems (AREA)
  • Geometry (AREA)
  • Algebra (AREA)
  • Evolutionary Computation (AREA)
  • Databases & Information Systems (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)

Abstract

본 발명은 근방 입자 탐색에 사용하는 데이터 구조의 구축 방법, 그 프로그램, 및 그 프로그램을 저장한 기억 매체에 관한 것으로서, 근방 입자 탐색의 데이터 구조의 구축 방법은, GPU 등의 스트리밍 프로세서로 실행되고, 3차원 디지털 화상 데이터를 2차원 디지털 화상 데이터로 변환함으로써 물리적 대상물의 시뮬레이션을 연산한다. GPU를 사용하는 경우에는 버킷 텍스처를 사용하고, 이 버킷 텍스처는, 물리적 대상물이 생기는 공간에 대응하여 만들어진 메모리 공간을 분할하는 버킷에 의해 구성된다. GPU의 경우에는, 버텍스 셰이더(vertex shader)를 사용하여, 버킷에 저장되는 입자의 입자 번호와 입자 좌표를 판독하고, 2차원 화상 공간에 기입하는 기입 단계를 가진다.

Description

근방 입자 탐색에 사용하는 데이터 구조의 구축 방법, 그 프로그램, 및 그 프로그램을 저장한 기억 매체{METHOD FOR CONSTRUCTING DATA STRUCTURE USED FOR PROXIMATE PARTICLE SERCH, PROGRAM FOR THE SAME, AND STORAGE MEDIUM FOR STORING PROGRAM}
본 발명은, 입자법 시뮬레이션을 GPU 등의 스트리밍 프로세서(Streaming processor)로 완결적으로 실행함으로써 근방 입자 탐색을 고속화하는 방법을 실현하고, 예를 들면 다수의 강체(剛體)의 충돌 계산 등을 실시간으로 계산 가능하도록 한 근방 입자 탐색에 사용하는 데이터 구조의 구축 방법, 그 프로그램, 및 그 프로그램을 저장한 기억 매체에 관한 것이다.
「입자법 시뮬레이션」은, 대상으로 하는 물체를 다수의 입자의 모임(집합)으로서 간주하고, 다수의 입자의 각각의 거동(擧動)에 주목하여 계산을 행하는 시뮬레이션 수법이다. 컴퓨터에서의 계산 상, 상기 입자에는, 통상, 직경이 일정한 「구(球)」가 사용된다. 물체의 형상을 구의 집합체에 의해 표현할 때, 상기 구의 크기(직경)의 결정 방법에 의존하여 물체의 형상의 근사도 또는 공간 해상도가 변화한다. 또한, 구의 직경을 변화시키고, 공간 해상도를 변화시킴으로써, 컴퓨터에 의한 시뮬레이션 계산에서의 계산 정밀도와 계산 속도를 제어하는 것이 가능하게 된다.
최근, 전술한 입자법 시뮬레이션을 이용하여, 다수의 강체의 충돌 계산, 유체(流體)나 분체(粉體) 등의 거동 계산이 행해지고, 컴퓨터의 표시 장치의 화면 상에서 충돌이나 유동 등의 시뮬레이션의 연구가 행해지고 있다. 이 연구 결과는, 예를 들면, 다나카 마사유키 등, 「입자법을 이용한 강체 계산 방법의 개발과 컴퓨터·그래픽스에의 적용」, 일본 기계 학회, 제19회 계산 역학 강연회 강연 논문집, 701-702페이지, 2006에 기재되어 있다. 이들 시뮬레이션 기술의 연구는, 컴퓨터 그래픽스 CG의 기초가 되는 기술로서 중요하다.
전술한 입자법 시뮬레이션의 연구에서는, 종래, CPU(Central Processing Unit)를 이용하여 계산 알고리즘을 만드는 방법은 많이 행해지고 있다. 그러나, GPU(Graphics Processing Unit) 등의 스트리밍 프로세서(Streaming processor)를 적극적으로 이용한 입자법 시뮬레이션의 연구는 그다지 행해지지 않고 있다. 예를 들면 GPU를 이용한 종래의 어떤 연구에 의하면, 근방 입자 탐색을 CPU에서 실행하고, CPU에서 얻은 탐색 데이터를 GPU에 전송하여 화상 처리하도록 하고 있다. 이 기술에 의하면, CPU를 주된 계산 실행부로서 사용하여 상기 CPU에서 근방 입자 탐색의 계산 알고리즘을 실행시키고, GPU는 부수적인 계산 실행부로서 화상 표시 처리의 계산 알고리즘만을 실행시키도록 구성되어 있었다. 따라서, 종래의 계산 기술에 의하면, 입자법 시뮬레이션에서의 근방 입자 탐색 및 화상 처리의 계산 알고리즘을, GPU의 내부만으로 완결시켜 실행시키도록 구성되어 있지는 않다.
종래의 입자법 시뮬레이션의 계산에서는 모든 계산(근방 입자 탐색에 사용하는 데이터 구조의 구축, 화상 처리 등)이 GPU 상에서만 완결되도록 구성되어 있지 않으므로, 계산 효율이 양호하지 않고, GPU가 본래 가지고 있는 화상 처리 능력을 충분히 발휘할 수 없으며, 다수의 강체의 충돌 계산 등의 실시간의 강체 시뮬레이션이나, 유체 시뮬레이션 등을 행할 수 없었다. 그래서, GPU나 그 외의 스트리밍 프로세서를 완결적으로 이용하여, GPU 등의 상에서 근방 입자 탐색에 사용하는 데이터 구조의 구축을 실행하고, 그 화상 처리 능력을 최대한 발휘하게 하는 방법의 개발이 요구되고 있다.
본 발명의 목적은, 전술한 과제를 감안하여, GPU 등의 스트리밍 프로세서 상에서 입자법 시뮬레이션의 근방 입자 탐색에 사용하는 데이터 구조의 구축을 완결시키고, GPU 등을 효율적으로 이용하며, 그 최대한의 (화상) 처리 능력을 발휘시켜서, 고속 계산을 가능하게 하고, 예를 들면 실시간의 강체 시뮬레이션이나 유체 시뮬레이션 등의 계산 처리/표시 처리를 실현할 수 있는 근방 입자 탐색에 사용하는 데이터 구조의 구축 방법, 그 프로그램, 및 그 프로그램을 저장한 기억 매체를 제공하는 것에 있다.
본 발명에 따른 근방 입자 탐색에 사용하는 데이터 구조의 구축 방법, 그 프로그램, 및 그 프로그램을 저장한 기억 매체는, 전술한 목적을 달성하기 위하여, 다음과 같이 구성된다.
데이터 구조의 구축 방법은, GPU 등과 같은 그래픽스 연산 프로세서로 실행되고, 비디오 메모리의 내부에서 만들어진 화상 데이터로부터 구축되는 3차원 디지털 화상 데이터를 2차원 디지털 화상 데이터로 변환함으로써 물리적 대상물의 시뮬레이션을 연산하는 방법으로 사용되고, 물리적 대상물을 다수의 입자로 표현하고, 비디오 메모리 내에서의 3차원 화상 데이터 구조에서의 다수의 입자의 상호의 저장 위치 관계에 기초하여 물리적 대상물의 존재 상태를 결정하는 방법이 사용된다. 3차원 화상 데이터 구조에 포함되는 버킷 텍스처(bucket texutre)는, 물리적 대상물 이 생기는 공간에 대응하여 만들어진 메모리 공간을 분할하는 버킷에 의해 구성되며, 다수의 입자에 할당된 입자 번호를 다수의 버킷 각각에 저장하는 것이며, 그래픽스 연산 프로세서로, 버텍스 셰이더(vertex shader)를 사용하여, 버킷에 저장되는 입자의 상기 입자 번호와 입자 좌표를 판독하고, 2차원 화상 공간에 기입하는 기입 단계를 포함한다. 이 기입 단계에서는, 버킷에 복수개의 입자가 존재할 때, 시뮬레이션의 1타임 단계에서, 복수개의 입자의 각각의 입자 번호와 입자 좌표를, 복수회의 기입(처리를 위한 렌더링(rendering))으로 나누어서 하나씩 기입하는 것을 특징으로 한다.
전술한 데이터 구조의 구축 방법에서, 그래픽스 연산 프로세서로서 GPU를 사용하는 경우에는, 복수회의 처리를 위한 렌더링 각각에서 기입하는 입자의 입자 번호와 입자 좌표의 선택, 및 기입되는 픽셀에서의 채널의 선택은, GPU에 준비된 깊이 테스트, 컬러 마스크, 스텐실(stencil) 테스트의 각 기능을 사용하여 행해진다.
또한, GPU 등을 포함하는 스트리밍 프로세서를 사용하는 경우에는, 복수회의 처리 사이클의 각 단계에서 기입하는 입자의 입자 번호와 메모리 개소(Memory Location)의 선택, 및 복셀(Voxel)을 위해 할당된 메모리에서의 메모리 개소의 선택은, 스트리밍 프로세서에 준비된 복수개의 카운터의 각 기능을 사용하여 행할 수도 있다.
즉, 스트리밍 프로세서로 실행되고, 메모리의 내부에서 만들어진 데이터 어레이로부터 구축되는 3차원 디지털 화상 데이터를 2차원 디지털 화상 데이터로 변환함으로써 물리적 대상물의 시뮬레이션을 연산하는 방법에서 사용되는, 근방 입자 탐색에 사용하는 데이터 구조의 구축 방법이다. 물리적 대상물을 다수의 입자로 표현하고, 메모리 내에서의 3차원 화상 데이터 구조에서의 다수의 입자의 상호의 저장 위치 관계에 기초하여 물리적 대상물의 존재 상태를 결정하는 방법이 사용되고, 3차원 화상 데이터 구조에 포함되는 버킷 어레이는, 물리적 대상물이 생기는 공간에 대응하여 만들어진 메모리 공간을 분할하는 버킷에 의해 구성되며, 다수의 입자에 할당된 입자 번호를 다수의 상기 버킷 각각에 저장한다. 스트리밍 프로세서에서, 버킷에 저장된 입자의 입자 번호와 입자 좌표를 판독하고, 스트리밍 프로세서의 분산 오퍼레이션(scattering operation)을 사용하여, 메모리에서의 어레이에 기입하는 기입 단계를 가지고, 기입 단계에서, 버킷에 복수개의 입자가 존재할 때, 시뮬레이션의 1타임 단계에서, 복수개의 입자 각각의 입자 번호와 입자 좌표를, 복수회의 처리를 위한 커넬(a kernel)로 나누어서 하나씩 기입한다.
데이터 구조의 구축 방법은, 전술한 방법에서, 버킷에 최대 4개의 입자가 존재할 때, 입자 번호가 기입되는 픽셀 등의 RGBA로 이루어지는 4개의 채널 등의 각각에 개별적으로 오름차순 또는 내림차순에 따르는 입자 번호의 입자로부터 그 입자 번호가 차례로 저장된다.
전술한 데이터 구조의 구축 방법에서, 그래픽스 연산 프로세서로서 GPU를 사용하는 경우에는, 보다 구체적으로 다음의 단계를 포함한다.
4개의 입자의 입자 번호를 ib0, ib1, ib2, ib3(오름차순의 경우에는 ib0<ib1<ib2<ib3, 내림차순의 경우에는 ib0>ib1>ib2>ib3)라고 할 때,
1패스째에서의 픽셀로의 기입에서는, 깊이 버퍼를 최대값으로 초기화하고, 깊이 테스트를 사용하여 작은 값을 가지는 것을 합격시킴으로써, R 채널에 입자 번호 ib0를 기입하여 1회째의 처리를 위한 렌더링을 행하는 단계와,
2패스째에서의 픽셀 등으로의 기입에서는, 컬러 마스크를 사용하여 R 채널로의 기입을 금지하면서 스텐실 테스트 등을 사용함으로써, G 채널에 입자 번호 ib1을 기입하여 2회째의 처리를 위한 렌더링을 행하는 단계와,
3패스째에서의 픽셀로의 기입에서는, 컬러 마스크를 사용하여 R 채널과 G 채널로의 기입을 금지하면서 스텐실 테스트를 사용함으로써, B 채널에 입자 번호 ib2를 기입하여 3회째의 처리를 위한 렌더링을 행하는 단계와,
4패스째에서의 픽셀로의 기입에서는, 컬러 마스크를 사용하여 R 채널과 G 채널와 B 채널로의 기입을 금지하면서 스텐실 테스트를 사용함으로써, A 채널에 입자 번호 ib3를 기입하여 4회째의 처리를 위한 렌더링을 행하는 단계
를 포함한다.
일반적으로 스트리밍 프로세서를 사용하는 경우에는, 전술한 픽셀(written pixel) 대신 복셀(voxel)에 할당된 메모리를 사용하고, 전술한 채널 대신 복셀(Voxel)을 위해 할당된 메모리에서의 메모리 개소(Memory Location)를 사용하고, 또한 GPU에 준비된 전술한 깊이 테스트, 컬러 마스크, 스텐실 테스트의 각 기능 대신, 각각에 대응하는 카운터의 기능을 사용한다.
즉, 4개의 상기 입자의 입자 번호를 ib0, ib1, ib2, ib3(오름차순의 경우에는 ib0<ib1<ib2<ib3, 내림차순의 경우에는 ib0>ib1>ib2>ib3)라고 할 때,
1패스째에서의 복셀(voxel)을 위해 할당된 메모리로의 기입에서는, 카운터가 0(영)이 되도록 초기화하면서 제1 메모리 개소로의 최초의 기입을 받아들임으로써, 제1 메모리 개소에 입자 번호 ib0를 기입하여 1회째의 루틴을 위한 커넬을 실행하는 단계와,
2패스째에서의 복셀(voxel)을 위해 할당된 메모리로의 기입에서는, 카운터를 사용함으로써, 제1 메모리 개소로의 기입을 금지하면서 제2 메모리 개소에 다음 값을 기입함으로써, 제2 메모리 개소에 입자 번호 ib1을 기입해 2회째의 루틴을 위한 커넬을 실행하는 단계와,
3패스째에서의 복셀(voxel)을 위해 할당된 메모리로의 기입에서는, 카운터를 사용함으로써, 제1 메모기 개소와 제2 메모리 개소로의 기입을 금지하면서 제3 메모리 개소에 다음 값을 기입함으로써, 제3 메모리 개소에 입자 번호 ib2를 기입하여 3회째의 루틴을 위한 커넬을 실행하는 단계와,
4패스째에서의 복셀(voxel)을 위해 할당된 메모리로의 기입에서는, 카운터를 사용함으로써, 제1 메모리 개소와 제2 메모리 개소와 제3 메모리 개소로의 기입을 금지하면서 제4 메모리 개소에 다음 값을 기입함으로써, 제4 메모리 개소에 입자 번호 ib3를 기입하여 4회째의 루틴을 위한 커넬을 실행하는 단계를 포함한다.
데이터 구조의 구축 방법은, 전술한 방법에서, 바람직하게는, 상기 물리 대상물은 다수의 강체이며, 물리 대상물의 시뮬레이션 화상은 다수의 강체의 충돌 계산에 따른 시뮬레이션 화상이다.
데이터 구조의 구축 방법에 관하여, 스트리밍 프로세서의 일례인 상기 GPU는 그래픽스 연산 프로세서이다.
또한, 본 발명에 따른 전술한 근방 입자 탐색에 사용하는 데이터 구조의 구축 프로그램은, GPU 등을 포함하는 스트리밍 프로세서에서, 전술한 근방 입자 탐색 방법을 구성하는 각 단계 등을 실행하도록 하기 위한 프로그램이다.
본 발명에 의하면 다음의 효과를 얻을 수 있다.
입자법 시뮬레이션을 적용하여 강체, 유체, 분체 등을 근사시키고, 근방 입자 탐색에 사용하는 데이터 구조의 구축 방법을 행함으로써 물리적 현상을 컴퓨터 상에서 시뮬레이션으로서 행하는 방법에서, 근방 입자 탐색에 사용하는 데이터 구조의 구축 계산을 실행하기 위한 각 단계를 GPU 등의 스트리밍 프로세서 상에서 완결시키도록 구성하고, GPU 등을 효율적으로 이용하고, 그 최대한의 화상 연산 처리 능력을 발휘하게 할 수 있으며, 고속 계산을 행할 수 있고, 이에 따라, 예를 들면 실시간의 강체 시뮬레이션이나 유체 시뮬레이션 등을 실현할 수 있다.
또한, 강체 시뮬레이션이나 유체 시뮬레이션 등을 시뮬레이션 CG로 하여 화상 표시에 이용함으로써 물의 흐름 등의 자연물의 표현에 최적인 게임 등의 중요 요소 기술로서 이용할 수 있다.
이하에, 본 발명의 바람직한 실시예를 첨부 도면을 참조하여 설명한다. 도 1은, 입자법 시뮬레이션으로 근방 입자 탐색에 사용하는 데이터 구조의 구축 방법이 실시되는 컴퓨터 시스템의 기본적인 구성을 나타낸다.
본 실시예의 설명에서는, 주요한 실시예로서, 그래픽스 연산 프로세서로서, 예를 들면 GPU를 사용하는 예를 설명한다.
컴퓨터 시스템(10)은, 예를 들면 PC(Personal Computer)를 이용하여 구성되며, 연산 처리부로서의 CPU(11)와 GPU(12)를 구비한다. 또한, 컴퓨터 시스템(10)은, 기억 장치로서 메인 메모리(13A)와 비디오 메모리 VRAM(13B)을 구비하고, 주변 장치로서 적어도 입력 장치(14) 및 표시 장치(15)를 구비하고 있다. CPU(11), GPU(12), 메인 메모리(13A), 입력 장치(14) 및 표시 장치(15)는 버스(16)를 통하여 서로 접속되어 있다. 입력 장치(14)는 입력 인터페이스(17)를 통하여 버스(16)에 접속되고, 표시 장치(15)는 출력 인터페이스(18)를 통하여 버스(16)에 접속되어 있다. 또한, 비디오 메모리(13B)는 GPU(12)에 직접 접속되어 있다. 비디오 메모리(13B)에 대해서는 GPU(12)를 통하여 데이터의 입출력이 행해진다.
CPU(중앙 연산 처리 장치)(11)는, 예를 들면 PC 등에 장비되는 통상적인 연산 처리부이다. 또한, GPU(12)는 「Graphics Processing Unit(그래픽스 연산 프로세서)」이며, 화상 연산 처리를 실행한다. GPU(12)는, 복수개의 프로세서를 내장하여 완성되며, 병렬 계산기로서 사용된다. GPU(12)로서는, 예를 들면 NVIDIA사제의 「GeForce 7900GTX」가 사용된다. 그리고, GPU(12)로서 사용되는 제품은 이에 한정되지 않고, 유사한 구조·기능을 가지는 화상 처리용의 프로세서 또는 그 외의 스트리밍 프로세서를 사용할 수 있다. 이 GPU(12)는, 메인 메모리(13A)에 저장된 근방 입자 탐색 프로그램(13A-1)을 실행하고, 입자법 시뮬레이션에서의 근방 입자 탐색 연산을 실시한다. 근방 입자 탐색 프로그램(13A-1)은, 근방 입자 탐색에 사용되는 데이터 구조의 구축을 실행한다. 또한, GPU(12)는, 메인 메모리(13A)에 저장된 통상적인 화상 처리 프로그램(13A-2)을 실행하고, 근방 입자 탐색의 계산으로 얻어지면서 픽셀에 저장된 화상 데이터를 사용하여 화상 처리를 실시하고, 작성된 화상 데이터를 사용하여 표시 장치(15)의 화면에 묘화(표시를 위한 렌더링)한다. 표시 장치(15)의 화면에는, 입자법 시뮬레이션의 계산에 기초하여, CG화상이 표시된다.
본 실시예의 이하의 설명에서는, 입자법 시뮬레이션에 따른 다수의 강체의 충돌 계산을 실행하는 것에 기초한 실시간의 강체 시뮬레이션의 연산이 설명된다. 이 시뮬레이션의 연산에서는, GPU(12)만으로, 근방 입자 탐색에 사용하기 위한 데이터 구조의 구축 방법이 실행된다.
다음에, 전술한 GPU(12) 내의 주요부의 기본 구성을 모식적으로 도 2에 나타낸다. GPU(12)는, 병렬적으로 배치된 복수개의 프로세서(21)를 구비하고, 이들 프로세서에 의한 병렬 계산 처리에 기초하여, 표시(묘화)를 위한 렌더링이 실행된다. 특히 본 실시예에 따른 근방 입자 탐색에 사용되는 데이터 구조의 구축(버킷 구축)방법에 의하면, 후술하는 바와 같이, 1개의 버킷에 예를 들면 4개의 입자가 존재할 때, 4개의 입자의 입자 번호와 입자 좌표를, 처리를 위한 렌더링을 4회 반복하여 1 개의 픽셀의 RGBA 채널 각각에 기입한다. GPU(12)에서의 상기 버킷 구축의 처리에 의해 화상 연산 처리의 고속화가 실현된다. 보다 구체적으로, GPU(12)는, 「GeForce 7900GTX」인 경우, 전단에 병렬적으로 배치된 8개의 버텍스(정점) 셰이더 VS(22)와 후단에서 병렬적으로 배치된 24개의 프래그먼트 셰이더(fragment shader) FS(23)를 가지고 있다. 버텍스(정점) 프로세서(21)로 실행되는 프로그램이 버텍스 셰이더(22)이며, 프래그먼트 프로세서(21)로 실행되는 것이 프래그먼트 셰이더(23)이다.
전술한 바와 같이, 버텍스 프로세서는, 병렬적으로 배치된 프로세서이며, 다수의 정점의 좌표 변환(입력된 정점 좌표를, 렌더링되는 화상의 공간에서의 좌표로 변환하는 것)을 일제히 처리하는 것으로 특화된 프로세서이다. GPU(12)는, 정점의 좌표 변환을, CPU와 비교하여 고속으로 계산할 수 있다. 버텍스 프로세서의 동작을 지정하는 것이 버텍스 셰이더이다.
또한 GPU(12)에는, 깊이 테스트 기능부(24), 컬러 마스크 기능부(25), 스텐실 테스트 기능부(26)가 구비되어 있다. 또한, 블록(27)은 셰이더 지령 분배부이다.
본 발명에 따른 근방 입자 탐색에 사용하는 데이터 구조의 구축 방법을 실현하기 위한 근방 입자 탐색 프로그램(13A-1)은, GPU(12)의 내부 구조를 이용하여 GPU(12)만으로 완결적으로 실행된다.
다음에, 다수의 강체가 충돌하는 강체 시뮬레이션의 실시예를 설명한다. 이 강체 시뮬레이션의 설명을 통해 근방 입자 탐색 프로그램(13A-1)의 실행에 따라 실 시되는 근방 입자 탐색에 사용하는 데이터 구조의 구축 방법의 내용을 명백하게 한다.
다수의 강체의 예로서는, 예를 들면, 다수의 원환체(torus) 부재, 또는 다수의 체스의 말이다. 본 실시예에 따른 강체 시뮬레이션의 결과로서 얻어진 CG의 예를 도 3과 도 4에 나타낸다. 도 3은, 예를 들면 10922개의 원환체를 낙하·충돌시킨 물리 현상에 관한 강체 시뮬레이션의 충돌 계산에 기초한 결과 화상 CG를 나타내고, 도 4는 예를 들면 16384개의 체스의 말을 낙하·충돌시킨 물리 현상에 관한 강체 시뮬레이션의 충돌 계산에 기초한 결과 화상 CG를 나타내고 있다.
전술한 다수의 강체의 충돌 계산에서, 다수의 강체의 각각의 형상은, 모두, 입자적 방법(입자법 시뮬레이션)을 적용함으로써, 동일한 크기의 구(입자)의 집합체로서 근사적으로 표현되어 취급된다. 구에 기초한 강체의 형상의 근사는, 상기 강체의 다각형 모델에 따라 행해지고, 예를 들면 본 발명자 등에 의해 제안된 GPU를 사용한 복셀화 방법(「Fast solid voxelization using graphics hardware」, Transactions of JSCES, page No.20060023, 2006)을 사용하여 생성된다. 그리고, 사용하는 구의 크기(공간 해상도)는 계산 정밀도와 계산 속도를 고려하여 적절하게 결정된다.
각각의 강체가 구의 집합체로서 근사적으로 표현되어 이루어지는 다수의 강체의 충돌 계산에서는, (1) 각각의 강체의 계산, (2) 강체 사이의 충돌의 검출 처리(강체를 구성하는 구 사이의 거리의 계산), 및 (3) 충돌에 따른 응답 처리(구에 작용하는 힘과 토크의 계산)가 실행된다. 이하, 이들 계산의 컨셉(concept)에 대 하여 나누어 설명한다.
(1) 강체의 계산:
강체의 계산에 필요한 물리량은, 하기(下記)에 나타낸 바와 같이, 중심의 좌표, 병진 속도, 회전량을 나타내는 4원수(quaternion), 각속도, 관성 텐서(inertia tensor)이다.
삭제
x: 중심의 좌표
v: 병진 운동
q: 회전량을 나타내는 4원수
w: 각속도
I: 관성 텐서
강체의 운동의 계산은, 병진 운동과 회전 운동으로 나누어 계산한다. 병진 운동의 계산의 내용은 (1), (2), (3)식으로 표시되고, 회전 운동의 계산의 내용은 (4)-(9)식으로 나타낸다.
삭제
강체에 작용하는 힘 F는 (1)식에 나타내는 바와 같이 충돌에 의해 생기는 Fc와 그 이외의 외력 Fe로 분해된다.
F = Fc + Fe (1)
강체의 병진 운동량 P의 시간 미분은 강체에 작용하는 힘 F를 사용하여 (2)식으로 나타내는 바와 같이 계산된다.
dP/dt = F (2)
병진 운동량 P를 사용하여, P = Mv(M: 강체의 질량)에 의해 중심의 속도 v를 계산한다. 중심의 속도 v를 사용하면, 강체의 중심 위치 x의 시간 미분은 (3)식으로 나타낸다.
dx/dt = v (3)
삭제
강체에 작용하는 힘 F는 강체의 회전 운동을 낳고, 각운동량 L을 변화시킨다. 각운동량 L의 시간 미분은 (4)식으로 표현된다. F는 강체의 중심으로부터 힘의 작용점까지의 벡터이다.
dL/dt = r × F (4)
상기 각운동량 L을 사용하여 각속도 w는 (5)식으로 계산된다.
w = I(t)-1 L (5)
(5)식으로 I(t)-1은 시각 t에서의 관성 텐서의 역행렬이다.
I(t)-1은 초기 상태에서의 강체의 관성 텐서 I(0)의 역행렬 I(0)-1을 사용하여 (6)식으로 계산된다.
I(t)-1 =R(t)I(0)-1 R(t)T (6)
(6)식에서 R(t)와 R(t)T는 시각 t에서의 회전 행렬과 그 전치 행렬이다.
(5)식에서 계산된 각속도 w를 사용하여 4원수 q를 갱신한다.
각속도 w로부터 4원수의 변화량 dq는 (7)식으로 계산된다.
dq = [cos(θ/2), a·sin(θ/2)] (7)
여기서, 회전축 a와 회전각 θ는 (8)식과 (9)식으로 계산된다.
a = w/|w| (8)
θ = |wdt| (9)
(7)식의 dq와 시각 t에서의 q(t)를 사용하여 dt 후의 4원수 q(t + dt)는 (10)식으로 계산된다.
q(t + dt) = dq × q(t) (10)
(2) 충돌의 검출 처리:
강체의 충돌을 검출하기 위해 강체를 구성하는 구 사이의 거리를 계산한다. 구 사이의 거리가 구의 직경보다 작으면, 2개의 구은 충돌하고 있는 것으로 간주한다. 다수의 강체의 충돌의 검출에서는, 모든 강체 각각을 구성하는 구에 관하여 전술한 거리 계산을 행할 필요가 있다. 계산량은 구의 개수의 제곱에 비례하고, 강체의 개수가 많아지면 구의 개수도 많아져서, 계산량도 방대하게 된다. 그래서, 본 실시예에 의한 충돌 검출 처리의 구성에서는, 계산량을 줄이기 위하여, 다수의 강체가 존재하게 되는 가상적 공간(메모리에서의 3차원 데이터 저장 공간)을 「버킷(또는 그리드라고도 함)」으로 불리우는 격자(3차원 공간 격자)로 분할하여, 다수의 강체 각각을 표현하는 다수의 구를 버킷에 저장한다. 1개의 버킷은 1개의 입방체를 이루고, 만약 버킷의 한 변의 길이를 구의 직경과 같은 길이인 3차원 데이터 구조를 사용하는 경우에는, 어떤 구 i와 충돌하고 있을 가능성이 있는 구는, 구 i가 저장되어 있는 버킷과 인접하고 있는 33개의 각 버킷의 내부에 저장되어 있는 구로 한정되게 된다. 전술한 바와 같이 버킷을 구축하는 것에 기초하여, 충돌 검출을 행함으로써, 계산량을 줄여서, 계산 코스트를 대폭 저감시킬 수 있다. 본 실시예에 따른 버킷 구축의 상세한 것에 대하여는, 후술한다.
(3) 충돌에 따른 응답:
충돌 응답에서는 1개의 강체를 구성하는 구에 가해지는 힘을 계산한다. 충돌력의 계산에서는, 접촉하는 2개의 구에 관하여, 개별 요소법에서 사용되는 선형 스프링과 대시 포트(dash pot)를 사용한다. 전술한 충돌력의 계산의 내용에 대해서는 하기(下記)에 나타낸다.
삭제
스프링 정수를 κ로 하고 감쇄 정수를 η로 하여, 충돌하고 있는 구에 함몰량에 비례한 반발력과 상대 속도에 비례한 감쇄력을 작용시킨다. 2개의 구 i와 구 j가 있고, 이들의 직경을 d라 하면, 2개의 구의 거리 |rij|가 d보다 작을 때 충돌하고 있고, (11)식에 의한 스프링에 의한 힘 fs와 (12)식에 의한 댐퍼(damper)에 의한 감쇄력 fd를 작용시킨다.
fs = -κ(d - |rij|)(rij/|rij|) (11)
fd = -η(vj - vi) (12)
(11)식과 (12)식에서 rij = rj - ri이며, ri와 rj는 각각 구 i와 구 i의 위치 벡터이다.
또한, 전단(剪斷) 방향의 마찰력 ft는 전단 방향의 속도 vt에 비례한 힘으로서 (13)식으로 계산된다.
ft = κtvt (13)
구 i에 작용하는 힘 fi는 (14)식으로 계산된다.
fi = fs + fd + ft (14)
구 i에 작용하는 fi를 사용하여, 충돌에 의해 강체에 작용하는 힘 Fc와 토크 Tc는 각각 (15)식과 (16)식으로 계산된다.
Figure 112008051424097-pat00001
(16)식에서 r'i는 강체의 중심에 대한 구의 상대 위치 벡터이다.
다음에, GPU(12)만을 사용하는 것에 기초한 근방 입자 탐색에 사용하기 위한 데이터 구조의 구축 방법의 고속화에 대하여 설명한다. 본 실시예에 따르면, 다수의 강체의 충돌에 관한 전술한 각 계산은, 모두, GPU(12) 상에서 실장된다. 이에 따라 전술한 계산의 고속화를 달성할 수 있다. GPU(12)에서의 근방 입자 탐색 프로그램(13A-1)에 따른 계산 알고리즘을 설명한다.
최초에, 전술한 계산 알고리즘을 위해 준비되는 데이터 구조를 설명한다.
전술한 각 계산을 GPU(12)로 행할 때, 전술한 각 물리량은, 비디오 메모리(13B)에 포함되는 복수개의 텍스처(13B-1)(도 1에 나타냄)로서 저장되고, 유지된다.
구체적으로, 강체 계산을 행하기 위하여, 각 강체의 중심 좌표, 4원수, 병진 운동량, 각운동량에 대해서는, 각각, 비디오 메모리(13B)에 저장된 2개의 텍스처(13B-1)를 사용한다. 충돌 계산을 행하기 위하여, 각 구의 중심 좌표, 속도, 버킷, 각 구에 작용하는 힘, 각 구에 작용하는 토크에 대해서는, 각각, 비디오 메모리(13B)에 저장된 1개의 텍스처(13B-1)를 사용한다.
본 실시예의 경우, 입자법 시뮬레이션에 따른 다수의 강체의 충돌 계산에서는, 3차원 공간을 상정하고, 또한 전술한 바와 같이 상기 3차원 공간을 분할하는 3차원 공간 격자, 즉 버킷을 준비한다. 그러나, 현재 사용 가능한 GPU(12)에서는 3차원 텍스처로의 기입을 행할 수 없다. 그래서, 본 실시예에서는, (L×L×L)개의 격자 수로 이루어지는 3차원 버킷을, 소요 매수의 2차원 격자를 (D×D)매 깔아서 구성되는 1개의 2차원 텍스처를 이용하여 표현하도록 했다. 이 경우, 3차원 버킷 상에서의 인덱스를 (i, j, k)로 하고, 또한 2차원 텍스처 상의 인덱스를 (s, t)로 할 때, 이들 2개의 인덱스의 사이에는, 다음의 (17)식과 (18)식으로 나타낸 바와 같은 관계가 있다.
s = i + L(k - D[k/D]) (17)
t = j + Lf[k/D] (18)
그리고 i, j, k와 s, t는, 각각, [0, L-1]과 [0, D×L - 1]의 범위에 포함되는 값을 취한다.
다음에, 도 5에 나타낸 흐름도를 참조하여, GPU(12)를 사용한 고속화의 계산 알고리즘을 설명한다.
표시 장치(15)의 표시 화면에서 묘화를 행하기 위한 1회의 계산(시뮬레이션) 을 행하는 단위 시간을 1타임 단계로 할 때, 상기 1타임 단계에서의 계산은 이하의 8단계로 계산된다.
단계 1: 구의 물리량의 계산 ···(단계 S11)
단계 2: 버킷 구축 ···(단계 S12)
단계 3: 충돌 검출 ···(단계 S13)
단계 4: 충돌 응답(구에 작용하는 힘과 토크의 계산) ···(단계 S14)
단계 5: 강체 병진 운동량의 계산 ···(단계 S15)
단계 6: 강체 각운동량의 계산 ···(단계 S16)
단계 7: 강체 중심 좌표의 계산 ···(단계 S17)
단계 8: 강체 4원수의 계산 ···(단계 S18)
전술한 계산(시뮬레이션)으로 최종적으로 얻어진 강체의 중심 좌표와 4원수를 사용하여 표시를 위한 렌더링 처리가 행해지고, 시뮬레이션의 결과 화상의 묘화가 행해진다(단계 S19). 다음의 판단 단계 S20에서는 시뮬레이션을 계속할지의 여부를 판단하고, “YES”의 경우에는 상기 단계 S11로 되돌아와 단계 S11∼S19를 반복하고, “NO”의 경우에는 시뮬레이션을 종료한다. 전술한 바와 같이, 1회의 표시를 위한 렌더링 처리(단계 S19)에 대하여, 전술한 8단계의 계산 단계 S11∼S18이 1타임 단계의 시간 내에서 실행된다.
전술한 바와 같이, 단계 S12에서 실행되는 「버킷 구축」의 계산에서, 근방 탐색의 처리 계산이 행해진다. 이 계산은 GPU(12)만으로 완결적으로 행해지고, 이에 따라 계산의 고속화가 도모된다. 버킷 구축의 계산의 상세한 내용에 대해서는 이하에서 설명된다.
이하, 상기 단계 S11 내지 상기 S19의 계산 내용을 설명한다.
단계 S11: 구의 물리량의 계산
다수의 강체의 충돌 계산을 입자법으로 하는 계산에서는, 각 강체를 구성하는 구의 중심 좌표와 속도를 계산한다. 구의 중심 좌표와 속도에 관한 계산의 내용은 하기(下記)에 나타낸 바와 같다.
삭제
강체 j의 중심 좌표, 4원수, 속도, 각속도를 각각 Xj, Qj, Vj, Wj라고 한다.
회전하고 있지 않은 상태에서의 강체의 중심에 대한 구 i의 중심의 상대 위치 벡터를 ri라고 하면, 4원수 Qj로 회전하고 있는 상태에서의 상대 위치 벡터 r'i는 (19)식으로 계산된다.
r'i = QjriQjT (19)
강체 j를 구성하는 구 i의 중심 좌표와 속도를 각각 xi,vi라고 하면,
(20)식과 (21)식으로 계산된다.
xi = Xj + r'i (20)
vi = Vj + Wj × r'i (21)
단계 S12: 버킷 구축
「버킷의 구축」은, 다수의 강체의 각각을 표현하기 위해 준비된 다수의 구(입자)의 모든 번호를, 전술한 바와 같이, 비디오 메모리(13B)의 내부의 데이터 구 조로서, 공간을 분할하는 요소로서 준비된 3차원 공간 격자, 즉 버킷에 저장하는 처리를 의미한다. 구체적으로는, 다수의 구 각각에 할당된 번호를, 다수의 버킷의 각각의 내부에 저장하는 처리이며, 다수의 구 각각에 관한 데이터를 분산시키는(scattering) 처리이다.
버킷의 구축에 대한 전술한 처리에서는, 버텍스(정점) 셰이더에 의한 기입 기능(처리를 위한 렌더링)을 사용한다. 상기 기입 기능은, 입력으로 되는 좌표에 정점을 기입 가능한 기능이다. 환언하면, 버텍스 셰이더에서는, 비디오 메모리(13B)의 텍스처에 액세스하기 위한 버텍스 텍스처 페치 VTF라는 기능을 가지고 있고, 버텍스 셰이더의 상기 기능을 사용함으로써, 구의 좌표를 참조할 수 있다. 그 구의 좌표에 대응하는 버킷의 좌표에 정점을 배치함으로써, GPU(12)에서 전술한 데이터 분산 처리를 행할 수 있다.
구의 개수를 n(i0, i1, … in -1)으로 할 때, 전술한 정점은 구의 개수와 같은 수 n(p0, p1, … pn -1)만큼 준비된다. 이들 정점의 각각에 대해서는 1개의 구가 대응되어 있다. 정점 p0, p1, … pn -1의 각각에 대응하는 구의 번호를 i0, i1, … in -1이라 한다. 구의 번호는, 예를 들면 i0<i1<…<in -1의 순서(오름차순)로 배열되어 있는 것으로 한다. 그리고 구의 배열 방법은 내림차순이라도 상관없다.
전술한 대응 관계를 전제로 하여, 버텍스 셰이더는, 전술한 버텍스 텍스처 페치 VTF를 사용하여, 전회(前回)의 타임 단계에서의 모든 구의 좌표를 참조하고, 상기 좌표에 따라 버킷 텍스처 상에서의 좌표를 계산하고, 그 좌표에 구의 번호를 출력함으로써, 버킷 텍스처에 구의 번호를 기입하는 것이 가능하게 된다.
그런데, 전술한 처리의 경우에는, 버킷의 내부에 1개의 구가 존재하고 있을 때에만 정확하게 버킷을 구축할 수 있으며, 1개의 버킷의 내부에 복수개의 구가 존재하고 있을 때는 버킷을 정확하게 구축할 수 없다. 1개의 버킷의 내부에 복수개의 구가 존재할 가능성이 있을 때, 정확한 버킷 구축을 실현하기 위해서는, 그 버킷에 저장된 구의 개수의 번호를 참조하면서, 구 하나 하나를 차례로 버킷에 저장해야만 한다. GPU(12)에 사용되는 병렬 처리에 의하면, 1회의 처리를 위한 렌더링에서는 기입된 구의 번호를 참조할 수 없으므로, 상기 병렬 처리 후에는 각 버킷에는 1개의 번호 밖에 기입되지 않는다. 예를 들면, 1개의 버킷에 4개의 구가 존재할 때는, 4개의 정점이 동일한 픽셀에 기입되므로, 최종적으로는 그 픽셀에는 1개의 구에 대한 번호가 기입되게 된다.
그래서, 본 실시예에 의한 버킷 구축에서는, 1개의 버킷 bj의 내부에는, 복수개의 구를 저장할 수 있도록 구성한다. 이 방법을 도 6의 흐름도를 참조하여 설명한다.
여기서, 버킷 bj에 최대 4개의 구가 들어가는 경우를 고려한다. 이들 4개의 구의 번호를 ib0, ib1, ib2, ib3로서 1픽셀의 RGBA 채널의 각각의 값을 기입한다. 이들 4개의 구의 번호는 ib0<ib1<ib2<ib3의 순서(오름차순)로 배열되어 있는 것으로 한다. 그리고 4개의 구의 번호의 배열 방법은 내림차순이라도 된다. 그리고, 버킷 구축에서는, 1개의 픽셀에 대한 기입을 4회의 구 번호의 기입으로 나눔으로써, 1개의 버킷의 내부에 최대 4개의 구가 존재하는 경우에도, GPU(12)를 사용하여 행할 수 있다. 환언하면, 버킷 bj에 4개의 구가 존재하고 있는 경우에는, 1타임 단계에서 4회의 기입(처리를 위한 렌더링)으로 나눔으로써, GPU(12)에 기초한 버킷 구축을 행한다.
전술한 버텍스 셰이더 VS(22)에서는, 정점에 대응하는 구의 좌표를 사용하여, 그 좌표의 버킷 내에서의 좌표를 계산하고, 구의 번호를 프래그먼트 셰이더 FS(23)에 전달한다. 프래그먼트 셰이더 FS(23)에서는, 구의 번호를 「색」과「깊이」로서 기록한다.
도 6을 참조하여, 버킷 구축 S12의 처리 내용을 구체적으로 설명한다. 버킷 구축 S12의 단계는, 차례로 행해지는 4개의 패스(pass)의 단계 S101∼S104로 되어 있다.
1패스째에서의 1개의 픽셀로의 최초의 기입(단계 S101)은, R 채널에 구 번호 ib0를 기입하는 단계이다. 구 번호 ib0는 4개의 구 중 가장 작은 번호를 가지는 것이다. 즉, 최소의 깊이를 가지는 픽셀로서 기입되고, 최초의 처리를 위한 렌더링이 행해진다. 이 구 번호 ib0의 기입의 경우에는, 먼저 R 채널을 선택하기 위한 컬러 마스크를 설정하고(단계 S31), 깊이 테스트를 설정하고(단계 S32), 이어서 깊이 버퍼를 최대값으로 초기화하고(단계 S33), 설정된 상기 깊이 테스트를 사용하여 작은 값을 가지는 것을 합격시키도록 하고, 상기 기입(정점의 렌더링 S34)을 가능하게 하고 있다.
2패스째에서의 상기 동일 픽셀로의 기입(단계 S102)은, R 채널에 기입된 값을 겹쳐쓰지(overwrite) 않도록, G 채널에 구 번호 ib1을 기입하는 단계이다. 이 기입에서는, G 채널을 선택하기 위한 컬러 마스크를 사용함으로써(단계 S41), RBA의 각 채널로의 기입을 금지한다. 깊이 버퍼는, 1패스째에서 사용한 것을 그대로 사용하면서, 또한 깊이 테스트는 큰 값을 가지는 것을 합격시키도록 설정한다(단계 S42). 그러나 이것으로는, 상기 픽셀의 G 채널에는 최대의 구 번호 ib3가 기입되게 되므로, 이것을 금지하기 위해 스텐실 테스트를 사용한다(단계 S43). 스텐실 테스트에서는, 스텐실 버퍼를 0(영)으로 초기화하고(단계 S44), 스텐실 테스트에서는 값을 증가시키도록 설정한다. 또한 스텐실 테스트에서는 값이 1 이상일 때는 기입을 실패하도록 설정한다(단계 S43). 이에 따라, 픽셀에 1회 기입 처리를 행한 후에 기입 실패된 구 번호를 기입하지 않도록 할 수 있다. 이와 같이 하여, 동일 픽셀에의 2패스째의 기입에서, G 채널에 구 번호 ib1을 기입한다(단계 S45).
그 후, 동일 픽셀에서의 3패스째의 B 채널로의 구 번호 ib2의 기입(단계 S103), 4패스째의 구 번호 ib3의 기입(단계 S104)의 경우에도, 전술한 바와 마찬가지의 처리가 행해지고, 구 번호 ib2 및 구 번호 ib3를 각각 B 채널 및 A 채널에 기입한다. 3패스째의 단계 S103은, B 채널을 선택하기 위한 컬러 마스크의 설정, 스텐실 버퍼의 클리어, 정점의 렌더링(기입)의 단계 S51∼S53를 가지고, 4패스째의 단계 S104는, A 채널을 선택하기 위한 컬러 마스크의 설정, 스텐실 버퍼의 클리어, 정점의 렌더링(기입)의 단계 S61∼S63을 가지고 있다.
이상과 같이, GPU(12)를 사용한 근방 입자 탐색에 사용되는 데이터 구조의 구축, 즉 버킷 구축에서는, 버킷에 복수개(예를 들면, 4개)의 구가 존재하는 경우에, 이들 구의 번호를 1개의 버킷에 저장하고 또한 픽셀에 대응시킬 때, 버킷에의 저장 처리(픽셀의 RGBA 채널로의 구 번호의 기입 처리)를 복수회(예를 들면 4회)의 처리를 위한 렌더링으로 나누어 행한다. 1회의 처리를 위한 렌더링에서는, 전술한 룰에 따라, 1개의 구의 번호를 픽셀의 하나의 채널에 기입한다. 각 렌더링에서의 구 번호의 기입 순서와 기입 채널의 선택에 관한 전술한 룰은, GPU(12)가 가지는 기능인 깊이 테스트, 컬러 마스크, 스텐실 테스트를 이용하여 결정된다.
단계 S13: 충돌 계산
이 충돌 계산에서는, 어떤 구i와 충돌하고 있을 가능성이 있는 근방에 존재하는 구의 탐색을 행한다. 이 탐색에서는, 구의 좌표 텍스처로서 생성한 버킷 텍스처를 입력으로 하고, 프래그먼트 셰이더를 사용하여 처리를 행한다. 이 처리에 의하여, 버킷을 참조함으로써, 어떤 구i가 저장되어 있는 버킷을 에워싸는 33개의 버킷 내에 저장되어 있는 구의 번호를 얻어서, 그 번호를 사용하여 구의 좌표가 저장되어 있는 텍스처를 참조함으로써 그 구 좌표(구의 중심 좌표)를 얻는다. 각 구의 구 좌표를 사용하여 이들 구와 구 i 사이의 거리 계산을 행하고, 충돌 계산을 행한다.
단계 S14: 충돌 응답(구에 작용하는 힘과 토크의 계산)
충돌하고 있는 것으로 판단된 2개의 구에 관해서는, 2개의 구의 좌표(위치 벡터)와 이들 속도(속도 벡터)와 강체의 중심에 대한 상대 위치 벡터를 사용하여, 전술한 (12)식으로부터, 구에 작용하는 힘과 그 힘에 의해 강체에 생기는 토크를 계산할 수 있다.
단계 S15, 단계 S16: 강체의 병진 운동량과 각운동량의 계산
단계 S14에서, 구에 작용하는 힘과 그 힘에 의해 강체에 생기는 토크를 계산 했으므로, 전술한 (15)식과 (16)식을 이용하여 이들을 합하여, 다수의 강체의 각각에 작용하는 힘을 계산한다. 이어서, 전술한 (2)식과 (4)식을 이용하여 강체의 병진 운동량과 각운동량을 갱신한다.
단계 S17, 단계 S18: 강체의 중심 좌표와 4원수의 계산
강체의 중심 좌표는 전술한 (3)식을 이용하여 계산한다. 본 실시예에서는, 강체의 중심 좌표와 중심 속도 텍스처를 입력으로 하여, 다른 1개의 강체의 중심 좌표 텍스처에 출력을 행한다. 또한, 강체의 4원수의 갱신은 전술한 (10)식을 이용하여 계산된다. 본 실시예에서는, 또한 강체의 4원수와 각속도 텍스처를 입력으로 하여 다른 1개의 강체의 4원수 텍스처로 갱신된 값을 기록한다.
단계 S19: 렌더링 처리(표시를 위한 렌더링)
전술한 바와 같이 하여 계산된 강체의 중심 좌표와 4원수를 사용하여, 하기(下記)에 나타내는 계산 내용에 기초하여 표시 장치(15)의 화면에 묘화를 행하는 표시를 위한 렌더링이 행해진다.
삭제
정점 i가 회전하고 있지 않을 때의 강체의 중심으로부터의 상대 위치 벡터 ri를, 최초에 4원수 Q를 사용하여 현재의 강체의 회전량만큼 회전시키고, 계속하여 강체의 중심 좌표 X만큼 이동시키면, 정점 i의 현재의 상대 좌표 벡터 r'는 (22)식으로 계산된다.
r'i = X + QriQ T (22)
다음에 모델뷰프로젝션 행렬 M을 사용하여 현재 렌더링되고 있는 좌표계에서의 좌표 r"로 (23)식에 기초하여 변환한다.
r"i = Mr'i (23)
GPU(12)에서의 계산에서는, 기본적으로 전술한 8단계의 알고리즘을 반복함으로써, 표시 장치(15)의 표시 화면에, 다수의 강체의 충돌 시뮬레이션의 화상을 실시간으로 표시하는 것이 가능하게 된다.
그리고, 도 5에 나타낸 강체 시뮬레이션의 고속화의 계산 알고리즘의 변형예를 도 7에 나타낸다. 도 7의 처리의 흐름에서, 도 5에서 설명한 단계와 실질적으로 동일한 단계에는 동일한 부호를 부여하고 있다. 도 7에 나타낸 계산 알고리즘에 의하면, 강체 병진 운동량의 계산 S15 및 강체 중심 좌표의 계산 S16과, 강체 각운동량의 계산 S17 및 강체의 4원수의 계산 S18가 병렬적인 처리에 의해 동시에 실행되도록 구성할 수 있다. 이것은 GPU(12)에서의 병렬 처리를 이용한 것이다. 그 외의 처리의 흐름은 도 5에서 설명한 내용과 같다. 이에 따르면, 강체 시뮬레이션의 계산 알고리즘에서의 1타임 단계의 시간을 더욱 단축할 수 있고, 더 한층 고속화를 달성할 수 있다.
도 3에 나타낸 10922개의 원환체의 낙하·충돌의 강체 시뮬레이션 화상에서는 1타임 단계에 필요한 시간은 16.6㎳이며, 렌더링시의 프레임 레이트는 23FPS였다. 또한, 도 4에 나타낸 16384개의 체스의 말의 낙하·충돌의 강체 시뮬레이션 화상에서는 1타임 단계에 필요한 계산 시간은 12.8㎳이며, 렌더링 시의 프레임 레이트는 21.2FPS였다
전술한 실시예의 설명에서는 강체의 방향에 대하여 「4원수」라는 물리량을 사용하였지만, 계산 상으로는 이 대신 「회전 행렬」을 사용할 수도 있다. 「4원수」도 「회전 행렬」도 「물체의 자세」를 나타내는 물리량이다.
전술한 실시예에서의 입자법 시뮬레이션의 근방 입자 탐색에 사용하는 데이터 구조의 구축 방법은 다수의 강체의 충돌에 관한 강체 시뮬레이션에 적용되지만, 본 발명에 의한 상기 데이터 구조의 구축 방법은, 이에 한정되지 않고, 예를 들면 도 8과 도 9에 나타낸 바와 같이 유체나 분체의 유동적인 움직임 등의 자연물 표현에 대해서도 적용될 수 있다.
도 8은 물 등의 유체에 복수개의 구체 형상의 유체(액적(液滴))가 낙하할 때의 유체의 변화 상태를 나타낸 시뮬레이션의 결과 화상을 나타낸다. 도 9는 로트형 용기에 수용된 분체가 아래쪽으로 유동하고, 용기의 하단 개구부로부터 외측으로 낙하하여, 아래쪽에 배치되는 용기에 수용되는 변화 상태를 나타낸 시뮬레이션의 결과 화상을 나타내고 있다.
전술한 근방 입자 탐색에 사용하는 데이터 구조의 구축 방법은, 도 1에 나타 낸 근방 입자 탐색 프로그램(13A-1)이 GPU(12)에서 실행되는 것에 의해 실현된다. 근방 입자 탐색에 사용하는 데이터 구조의 구축 방법에 관한 근방 입자 탐색 프로그램(13A-1)은, 그 자체가 CD-ROM 등의 기억 매체에 저장되고, 독립된 프로그램 제품으로서 구성될 수 있다.
전술한 실시예의 설명에서는, GPU에서의 프로그램의 실장으로 세어더(Shader)를 사용하는 예를 설명하였다. 이것은 GPU의 그래픽스 기능으로 특화된 프로그램 모델을 사용한 예이다. 그러나, 본 발명은 이에 한정되지 않는다. 그래픽스 연산 프로세서로서, 상기 GPU를 포함하는 일반적인 스트리밍 프로세서를 사용할 수 있고, 나아가서는 프로그래밍 모델로서 일반적인 프로그래밍 모델을 사용하여 실장할 수 있다.
전술한 GPU(12)를 포함하는 스트리밍 프로세서(Streaming Processor)에서는, 일반적으로, 상기 셰이더(Shader) 외에, CUDA, CTM, Brook 등의 프로그래밍 모델을 사용하여 실장할 수 있다. 전술한 실시예에 의한 GPU에서의 셰이더(Shader)의 실장에서는, 계산 공간에서의 슬라이스, 복셀, 및 입자에 관한 데이터를 텍스처(13B-1)로서 비디오 메모리(13B)에 저장하였다. 프로그램 실장으로서 CUDA 등을 사용하는 경우에는 텍스처 대신 일반적인 「배열(Array)」이 사용된다.
전술한 바와 같이, 데이터 구조의 구축 방법으로 그래픽스 연산 프로세서로서 GPU를 사용하는 경우에는, 복수회의 처리를 위한 렌더링의 각각에서 기입하는 입자의 입자 번호와 입자 좌표의 선택, 및 기입되는 픽셀에서의 채널의 선택은, GPU에 준비된 깊이 테스트, 컬러 마스크, 스텐실 테스트의 각 기능을 사용하여 행 해진다.
한편, 그래픽스 연산 프로세서로서, 스트리밍 프로세서를 사용하는 경우에는, 일반적으로, 상기 픽셀(written pixel) 대신 메모리 위치(Memory Location)를 사용하고, 상기 채널 대신, 복셀(voxel)을 위한 메모리에서의 메모리 위치를 사용하고, 또한 GPU에 준비된 상기 깊이 테스트, 컬러 마스크, 스텐실 테스트의 각 기능 대신, 스트리밍 프로세서에 준비된 카운터의 기능을 사용한다. 이 카운터는, 상기 깊이 테스트, 컬러 마스크, 스텐실 테스트 대신 기능한다.
따라서, 그래픽스 연산 프로세서로서, 스트리밍 프로세서를 사용하는 경우에는, 복수회의 처리 사이클의 각 단계에서 기입하는 입자의 입자 번호와 메모리 위치(Memory Location)의 선택, 및 복셀(voxel)을 위한 메모리에서의 메모리 위치의 선택은, 스트리밍 프로세서에 준비된 카운터의 기능을 사용하여 행해진다.
전술한 바와 같이, 데이터 구조의 구축 방법, 즉 도 6에 나타낸 버킷 구축 S12의 단계는, 그래픽스 연산 프로세서로서 GPU(12)를 사용하여 프로그램 실장을 행하는 경우에는,
4개의 입자의 입자 번호를 ib0, ib1, ib2, ib3(ib0<ib1<ib2<ib3)라고 할 때,
1패스째에서의 픽셀로의 기입에서는, 깊이 버퍼를 최대값으로 초기화하고, 깊이 테스트를 사용하여 작은 값을 가지는 것을 합격시킴으로써, R 채널에 입자 번호 ib0를 기입하여 1회째의 처리를 위한 렌더링을 행하는 단계(S101)와,
2패스째에서의 픽셀 등으로의 기입에서는, 컬러 마스크를 사용하여 R 채널로 의 기입을 금지하면서 스텐실 테스트 등을 사용함으로써, G 채널에 입자 번호 ib1을 기입하여 2회째의 처리를 위한 렌더링을 행하는 단계(S102)와,
3패스째에서의 픽셀로의 기입에서는, 컬러 마스크를 사용하여 R와 G의 각 채널로의 기입을 금지하면서 스텐실 테스트를 사용함으로써, B 채널에 입자 번호 ib2를 기입하여 3회째의 처리를 위한 렌더링을 행하는 단계(S103)와,
4패스째에서의 픽셀로의 기입에서는, 컬러 마스크를 사용하여 R와 G와 B의 각 채널로의 기입을 금지하면서 스텐실 테스트를 사용함으로써, A 채널에 입자 번호 ib3를 기입하여 4회째의 처리를 위한 렌더링을 행하는 단계(S104)
를 가지고 있다.
상기 버킷 구축 S12의 단계에 관한 처리의 의미는, 일반화적으로 설명하면, 최대 4개의 값을 스트리밍 프로세서로 기입 시에는, 4회의 단계(S101∼S104)로 나누어 기입을 행한다는 의미이다. 4회의 단계의 각각에서, 그 때까지 기입되어 있지 않은 값이 1개 기입된다. GPU(12)를 사용한 프로그램 실장의 경우에는, GPU(12)의 그래픽스 특유의 기능인 「깊이 테스트」, 「컬러 마스크」, 「스텐실 테스트」가 사용된다.
「깊이 테스트」의 기능은, 「지금까지 기입한 값을 제외한다」라는 처리를 행한다. 「컬러 마스크」의 기능은, 「기입할 곳을 선택한다」라는 처리를 행한다. 「스텐실 테스트」의 기능은, 「1단계에서 1개의 값만의 기입을 허락한다」라는 처리를 행한다.
그리고, 「1단계에서 데이터를 기입할 곳의 메모리에 입자 번호를 기입한다」는 처리 이외에도, 「깊이 버퍼」와「스텐실 버퍼」도 갱신된다.
GPU(12)를 포함하는 스트리밍 프로세서를 사용하는 경우에, 일반적으로, 프로그램 실장으로, CUDA라는 프로그램 모델을 사용할 수 있다. CUDA를 사용하는 경우에는, GPU(12)의 그래픽스 기능인 「깊이 테스트」, 「컬러 마스크」, 「스텐실 테스트」를 사용할 수 없다. 그래서, CUDA를 사용하는 경우에는, 이들 그래픽 기능과 동등한 기능을 만들기 위하여, 기입할 곳의 메모리와, 카운터를 준비한다.
상기 카운터에 의하면, 카운터에 의해 「지금까지 기입한 값을 제외한다」라는 처리(「깊이 테스트」의 기능)를 행하고, 또한 「기입할 곳을 선택한다」라는 처리(「컬러 마스크」의 기능)와 「1단계에서 1개의 값만의 기입을 허락한다」라는 처리(「스텐실 테스트」의 기능)를 행하도록 구성한다.
또한 「1단계에서 데이터를 기입할 곳의 메모리에 입자 번호를 기입한다」라는 처리 이외에도, 상기 「카운터」도 갱신된다. 여기서, 「카운터의 갱신」은, 카운터를 1만큼 증가시키는 것을 의미한다.
전술한 바와 같이, GPU 등의 스트리밍 프로세서를 이용하면서, 프로그래밍 모델로서 CUDA를 실장할 때, 텍스처 대신 비디오 메모리에 작성된 배열을 사용한다. 그리고, 텍스처는, 「비디오 메모리에 작성된 배열」에 포함되는 개념이다. 「비디오 메모리에 작성된 배열」은, 일반적으로 「전용 메모리에 작성된 배열」로 해석될 수 있다.
GPU 등의 스트리밍 프로세서에서, 프로그래밍 모델로서 세어더 대신 CUDA를 사용하여 실장하는 경우, 픽셀(written pixel) 대신 메모리 위치(Memory Location)를 사용하고, 채널 대신 복셀(voxel)을 위한 메모리에서의 메모리 위치를 사용하고, 나아가서는 깊이 테스트, 컬러 마스크, 스텐실 테스트의 각 기능 대신, 각각에 대응하는 카운터의 기능을 사용한다.
도 1은, 본 발명에 따른 근방 입자 탐색에 사용하는 데이터 구조의 구축 방법이 실시되는 컴퓨터 시스템의 기본적인 구성을 나타낸 시스템 구성도이다.
도 2는 컴퓨터 시스템에 실장된 GPU의 내부의 기본적 구성을 나타낸 블록도이다.
도 3은 10922개의 원환체(torus)를 낙하·충돌시킨 물리 현상에 관한 강체 시뮬레이션에 따른 결과 화상 CG의 도면이다.
도 4는 16384개의 체스의 말을 낙하·충돌시킨 물리 현상에 관한 강체 시뮬레이션에 따른 결과 화상 CG의 도면이다.
도 5는 GPU를 사용한 강체 시뮬레이션의 고속화의 계산 알고리즘을 나타내는 흐름도이다.
도 6은 버킷 구축의 처리 단계의 상세 내용을 나타내는 흐름도이다.
도 7은 GPU를 사용한 강체 시뮬레이션의 고속화의 계산 알고리즘의 변형예를 나타내는 흐름도이다.
도 8은 유체에 복수개의 구체 형상의 유체가 낙하할 때의 물리 현상에 관한 유체 시뮬레이션에 따른 결과 화상 CG의 도면이다.
도 9는 로트형 용기에 수용된 분체가 아래쪽으로 유동하고, 용기의 하단 개구부로부터 외측으로 낙하하여, 아래쪽에 배치되는 용기에 수용될 때의 분체 시뮬레이션에 따른 결과 화상 CG의 도면이다.

Claims (22)

  1. GPU(Graphics Processing Unit)에서 실행되고, 비디오 메모리의 내부에서 만들어진 화상 데이터로부터 구축되는 3차원 디지털 화상 데이터를 2차원 디지털 화상 데이터로 변환함으로써 다수의 강체의 충돌 또는 유체나 분체(粉體)의 유동적 움직임의 시뮬레이션을 연산하는 방법으로 사용되는, 근방 입자 탐색에 사용하는 데이터 구조의 구축 방법이며,
    상기 다수의 강체의 충돌 또는 유체나 분체의 유동적 움직임을 다수의 입자로 표현하고, 상기 비디오 메모리 내에서의 3차원 화상 데이터 구조에서의 상기 다수의 입자의 상호의 저장 위치 관계에 기초하여 상기 다수의 강체의 충돌 또는 유체나 분체의 유동적 움직임에 관한 변화의 상태를 연산하여 표현하는 수법을 이용하되,
    상기 3차원 화상 데이터 구조에 포함되는 버킷 텍스처(bucket texture)는, 상기 다수의 강체의 충돌 또는 유체나 분체의 유동적 움직임이 생기는 공간에 대응하여 만들어진 메모리 공간을 분할하는 버킷에 의해 구성되며, 상기 다수의 입자에 할당된 입자 번호를 다수의 상기 버킷 각각에 저장하는 단계와,
    상기 GPU에서, 상기 GPU의 버텍스 셰이더(vertex shader)를 사용하여, 상기 버킷에 저장되는 상기 입자의 상기 입자 번호와 입자 좌표를 판독하고, 2차원 화상 공간에 기입하는 기입 단계
    를 포함하고,
    상기 기입 단계에서, 상기 버킷에 복수개의 상기 입자가 존재할 때, 시뮬레이션의 1타임 단계에서, 상기 복수개의 입자 각각의 입자 번호와 입자 좌표를, 복수회의 처리를 위한 렌더링(rendering)으로 나누어 1개씩 기입하는, 근방 입자 탐색에 사용하는 데이터 구조의 구축 방법.
  2. 제1항에 있어서,
    상기 복수회의 처리를 위한 렌더링의 각각에서 기입하는 상기 입자의 입자 번호와 기입하는 픽셀의 선택, 및 기입되는 픽셀에서의 채널의 선택은, 상기 GPU에 준비된 깊이 테스트, 컬러 마스크, 스텐실(stencil) 테스트의 각 기능을 사용하여 행해지는, 근방 입자 탐색에 사용하는 데이터 구조의 구축 방법.
  3. 제2항에 있어서,
    상기 버킷에 4개의 상기 입자가 존재할 때, 입자 번호가 기입되는 픽셀의 RGBA로 이루어지는 4개의 채널 각각에 개별적으로 오름차순 또는 내림차순에 따르는 입자 번호의 입자로부터 상기 입자 번호가 차례로 저장되는, 근방 입자 탐색에 사용하는 데이터 구조의 구축 방법.
  4. 제3항에 있어서,
    4개의 상기 입자의 입자 번호를 ib0, ib1, ib2, ib3(오름차순의 경우에는 ib0<ib1<ib2<ib3, 내림차순의 경우에는 ib0>ib1>ib2>ib3)라고 할 때,
    1패스째에서의 상기 픽셀로의 기입에서는, 깊이 버퍼를 최대값으로 초기화하여, 깊이 테스트를 사용하여 작은 값을 가지는 것을 합격시킴으로써, R 채널에 입자 번호 ib0를 기입하여 1회째의 처리를 위한 렌더링을 행하는 단계와,
    2패스째에서의 상기 픽셀로의 기입에서는, 컬러 마스크를 사용하여 상기 R 채널로의 기입을 금지하면서 스텐실 테스트를 사용함으로써, G 채널에 입자 번호 ib1을 기입하여 2회째의 처리를 위한 렌더링을 행하는 단계와,
    3패스째에서의 상기 픽셀로의 기입에서는, 컬러 마스크를 사용하여 상기 R 채널과 상기 G 채널로의 기입을 금지하면서 스텐실 테스트를 사용함으로써, B 채널에 입자 번호 ib2를 기입하여 3회째의 처리를 위한 렌더링을 행하는 단계와,
    4패스째에서의 상기 픽셀로의 기입에서는, 컬러 마스크를 사용하여 상기 R 채널과 상기 G 채널과 상기 B 채널로의 기입을 금지하면서 스텐실 테스트를 사용함으로써, A 채널에 입자 번호 ib3를 기입하여 4회째의 처리를 위한 렌더링을 행하는 단계
    를 포함하는, 근방 입자 탐색에 사용하는 데이터 구조의 구축 방법.
  5. 삭제
  6. GPU(Graphics Processing Unit)에서 실행되고, 비디오 메모리의 내부에서 만들어진 화상 데이터로부터 구축되는 3차원 디지털 화상 데이터를 2차원 디지털 화상 데이터로 변환함으로써 다수의 강체의 충돌 또는 유체나 분체의 유동적 움직임의 시뮬레이션을 연산하는 프로그램에서 사용되는, 근방 입자 탐색에 사용하는 데이터 구조의 구축 프로그램이 기록된 컴퓨터 판독가능한 기록매체로서,
    상기 근방 입자 탐색에 사용하는 데이터 구조의 구축 프로그램은, 상기 GPU로 하여금,
    상기 다수의 강체의 충돌 또는 유체나 분체의 유동적 움직임을 다수의 입자로 표현하고, 상기 비디오 메모리 내에서의 3차원 화상 데이터 구조에서의 상기 다수의 입자의 상호의 저장 위치 관계에 기초하여 상기 다수의 강체의 충돌 또는 유체나 분체의 유동적 움직임에 관한 변화의 상태를 연산하여 표현하는 수법을 이용하되,
    상기 3차원 화상 데이터 구조에 포함되는 버킷 텍스처는, 상기 다수의 강체의 충돌 또는 유체나 분체의 유동적 움직임이 생기는 공간에 대응하여 만들어진 메모리 공간을 분할하는 버킷에 의해 구성되며, 상기 다수의 입자에 할당된 입자 번호를 다수의 상기 버킷 각각에 저장하는 단계와,
    버텍스 셰이더를 사용하여, 상기 버킷에 저장되는 상기 입자의 입자 번호와 입자 좌표를 판독하고, 2차원 화상 공간에 기입하는 기입 단계
    를 실행시키고,
    상기 기입 단계에서, 상기 버킷에 복수개의 상기 입자가 존재할 때, 시뮬레이션의 1타임 단계에서, 상기 복수개의 입자의 각각의 입자 번호와 입자 좌표를, 복수회의 처리를 위한 렌더링으로 나누어서 1개씩 기입하는 단계를 실행시키는,
    컴퓨터 판독가능한 기록매체.
  7. 제6항에 있어서,
    상기 복수회의 처리를 위한 렌더링 각각에서 기입하는 상기 입자의 입자 번호와 기입하는 픽셀의 선택, 및 기입되는 픽셀에서의 채널의 선택은, 상기 GPU에 준비된 깊이 테스트, 컬러 마스크, 스텐실 테스트의 각 기능을 사용하여 행해지는, 컴퓨터 판독가능한 기록매체.
  8. 제7항에 있어서,
    상기 근방 입자 탐색에 사용하는 데이터 구조의 구축 프로그램은 또한,
    상기 GPU로 하여금,
    상기 버킷에 4개의 상기 입자가 존재할 때, 입자 번호가 기입되는 픽셀의 RGBA로 이루어지는 4개의 채널 각각에 개별적으로 오름차순 또는 내림차순에 따르는 입자 번호의 입자로부터 상기 입자 번호가 차례로 저장되는 단계를 실행시키는, 컴퓨터 판독가능한 기록매체.
  9. 제8항에 있어서,
    상기 근방 입자 탐색에 사용하는 데이터 구조의 구축 프로그램은 또한,
    상기 GPU로 하여금,
    4개의 상기 입자의 입자 번호를 ib0, ib1, ib2, ib3(오름차순의 경우에는 ib0<ib1<ib2<ib3, 내림차순의 경우에는 ib0>ib1>ib2>ib3)라고 할 때,
    1패스째에서의 상기 픽셀로의 기입에서는, 깊이 버퍼를 최대값으로 초기화하고, 깊이 테스트를 사용하여 작은 값을 가지는 것을 합격시킴으로써, R 채널에 입자 번호 ib0를 기입하여 1회째의 처리를 위한 렌더링을 행하는 단계와,
    2패스째에서의 상기 픽셀로의 기입에서는, 컬러 마스크를 사용하여 상기 R 채널로의 기입을 금지하면서 스텐실 테스트를 사용함으로써, G 채널에 입자 번호 ib1을 기입하여 2회째의 처리를 위한 렌더링을 행하는 단계와,
    3패스째에서의 상기 픽셀로의 기입에서는, 컬러 마스크를 사용하여 상기 R 채널과 상기 G 채널로의 기입을 금지하면서 스텐실 테스트를 사용함으로써, B 채널에 입자 번호 ib2를 기입하여 3회째의 처리를 위한 렌더링을 행하는 단계와,
    4패스째에서의 상기 픽셀로의 기입에서는, 컬러 마스크를 사용하여 상기 R 채널과 상기 G 채널과 상기 B 채널로의 기입을 금지하면서 스텐실 테스트를 사용함으로써, A 채널에 입자 번호 ib3를 기입하여 4회째의 처리를 위한 렌더링을 행하는 단계를 실행시키는, 컴퓨터 판독가능한 기록매체.
  10. 삭제
  11. 삭제
  12. 스트리밍 프로세서에서 실행되고, 메모리의 내부에서 만들어진 데이터 어레이로부터 구축되는 3차원 디지털 화상 데이터를 2차원 디지털 화상 데이터로 변환함으로써 다수의 강체의 충돌 또는 유체나 분체의 유동적 움직임의 시뮬레이션을 연산하는 방법에서 사용되는, 근방 입자 탐색에 사용하는 데이터 구조의 구축 방법이며,
    상기 다수의 강체의 충돌 또는 유체나 분체의 유동적 움직임을 다수의 입자로 표현하고, 상기 메모리 내에서의 3차원 화상 데이터 구조에서의 상기 다수의 입자의 상호의 저장 위치 관계에 기초하여 상기 다수의 강체의 충돌 또는 유체나 분체의 유동적 움직임에 관한 변화의 상태를 연산하여 표현하는 수법을 이용하되,
    상기 3차원 화상 데이터 구조에 포함되는 버킷 어레이는, 상기 다수의 강체의 충돌 또는 유체나 분체의 유동적 움직임이 생기는 공간에 대응하여 만들어진 메모리 공간을 분할하는 버킷에 의해 구성되며, 상기 다수의 입자에 할당된 입자 번호를 다수의 상기 버킷의 각각에 저장하는 단계와,
    상기 스트리밍 프로세서에서, 상기 스트리밍 프로세서의 분산 오퍼레이션(scattering operation)을 사용하여, 상기 버킷에 저장되는 상기 입자의 상기 입자 번호와 입자 좌표를 판독하고, 상기 메모리에서의 어레이에 기입하는 기입 단계
    를 포함하고,
    상기 기입 단계에서, 상기 버킷에 복수개의 상기 입자가 존재할 때, 시뮬레이션의 1타임 단계에서, 상기 복수개의 입자의 각각의 입자 번호와 입자 좌표를, 복수회의 처리를 위한 커넬(a kernel)로 나누어서 1개씩 기입하는, 근방 입자 탐색에 사용하는 데이터 구조의 구축 방법.
  13. 제12항에 있어서,
    상기 복수회의 처리를 위한 각 단계에서 기입하는 상기 입자의 입자 번호와 기입할 데이터의 선택, 및 복셀(voxel)을 위해 할당된 메모리에서의 복수개의 메모리 개소의 선택은, 상기 스트리밍 프로세서에 준비된 카운터의 기능을 사용하여 행해지는, 근방 입자 탐색에 사용하는 데이터 구조의 구축 방법.
  14. 제13항에 있어서,
    상기 버킷에 4개의 상기 입자가 존재할 때, 입자 번호가 기입되는 제1 메모리 개소 내지 제4 메모리 개소의 각각에 개별적으로 오름차순 또는 내림차순에 따르는 입자 번호의 입자로부터 상기 입자 번호가 차례로 저장되는, 근방 입자 탐색에 사용하는 데이터 구조의 구축 방법.
  15. 제13항에 있어서,
    4개의 상기 입자의 입자 번호를 ib0, ib1, ib2, ib3(오름차순의 경우에에는 ib0<ib1<ib2<ib3, 내림차순의 경우에는 ib0>ib1>ib2>ib3)라고 할 때,
    1패스째에서의 상기 복셀(voxel)을 위해 할당된 상기 메모리로의 기입에서는, 상기 카운터가 0(영)이 되도록 초기화하면서 상기 제1 메모리 개소로의 최초의 기입을 받아들임으로써, 상기 제1 메모리 개소에 입자 번호 ib0를 기입하여 1회째의 루틴을 위한 커넬을 실행하는 단계와,
    2패스째에서의 상기 복셀(voxel)을 위해 할당된 상기 메모리로의 기입에서는, 상기 카운터를 사용함으로써, 상기 제1 메모리 개소로의 기입을 금지하면서 제2 메모리 개소에 다음 값을 기입함으로써, 상기 제2 메모리 개소에 입자 번호 ib1을 기입하여 2회째의 루틴을 위한 커넬을 실행하는 단계와,
    3패스째에서의 상기 복셀(voxel)을 위해 할당된 상기 메모리로의 기입에서는, 상기 카운터를 사용함으로써, 상기 제1 메모리와 상기 제2 메모리 개소로의 기입을 금지하면서 제3 메모리 개소에 다음 값을 기입함으로써, 상기 제3 메모리 개소에 입자 번호 ib2를 기입하여 3회째의 루틴을 위한 커넬을 실행하는 단계와,
    4패스째에서의 상기 복셀(voxel)을 위해 할당된 상기 메모리로의 기입에서는, 상기 카운터를 사용함으로써, 상기 제1 메모리 개소와 상기 제2 메모리 개소와 상기 제3 메모리 개소로의 기입을 금지하면서 제4 메모리 개소에 다음 값을 기입함으로써, 상기 제4 메모리 개소에 입자 번호 ib3를 기입하여 4회째의 루틴을 위한 커넬을 실행하는 단계
    를 포함하는 근방 입자 탐색에 사용하는 데이터 구조의 구축 방법.
  16. 삭제
  17. 스트리밍 프로세서에서 실행되고, 메모리의 내부에서 만들어진 데이터 어레이로부터 구축되는 3차원 디지털 화상 데이터를 2차원 디지털 화상 데이터로 변환함으로써 다수의 강체의 충돌 또는 유체나 분체의 유동적 움직임의 시뮬레이션을 연산하는 프로그램에서 사용되는, 근방 입자 탐색에 사용하는 데이터 구조의 구축 프로그램이 기록된 컴퓨터 판독 가능한 기록매체로서,
    상기 근방 입자 탐색에 사용하는 데이터 구조의 구축 프로그램은,
    상기 스트리밍 프로세서로 하여금,
    상기 다수의 강체의 충돌 또는 유체나 분체의 유동적 움직임을 다수의 입자로 표현하고, 상기 메모리 내에서의 3차원 화상 데이터 구조에서의 상기 다수의 입자의 상호의 저장 위치 관계에 기초하여 상기 다수의 강체의 충돌 또는 유체나 분체의 유동적 움직임에 관한 변화의 상태를 연산하여 표현하는 방법을 이용하되,
    상기 3차원 화상 데이터 구조에 포함되는 버킷 어레이는, 상기 다수의 강체의 충돌 또는 유체나 분체의 유동적 움직임이 생기는 공간에 대응하여 만들어진 메모리 공간을 분할하는 버킷에 의해 구성되며, 상기 다수의 입자에 할당된 입자 번호를 다수의 상기 버킷의 각각에 저장하는 단계와,
    상기 스트리밍 프로세서에서, 상기 스트리밍 프로세서의 분산 오퍼레이션(scattering operation)을 사용하여, 상기 버킷에 저장되는 상기 입자의 상기 입자 번호와 입자 좌표를 판독하고, 상기 메모리에서의 어레이에 기입하는 기입 단계
    를 실행시키고,
    상기 기입 단계에서, 상기 버킷에 복수개의 상기 입자가 존재할 때, 시뮬레이션의 1타임 단계에서, 상기 복수개의 입자 각각의 입자 번호와 입자 좌표를, 복수회의 처리를 위한 커넬(a kernel)로 나누어서 1개씩 기입하는 단계를 실행시키는, 컴퓨터 판독가능한 기록매체.
  18. 제17항에 있어서,
    상기 복수회의 처리를 위한 각 단계에서 기입하는 상기 입자의 입자 번호와 기입할 데이터의 선택, 및 복셀(voxel)을 위해 할당된 메모리에서의 복수개의 메모리 개소의 선택은, 상기 스트리밍 프로세서에 준비된 카운터의 기능을 사용하여 행해지는, 컴퓨터 판독가능한 기록매체.
  19. 제18항에 있어서,
    상기 버킷에 4개의 상기 입자가 존재할 때, 입자 번호가 기입되는 제1 내지 제4 메모리 개소 각각에 개별적으로 오름차순 또는 내림차순에 따르는 입자 번호의 입자로부터 상기 입자 번호가 차례로 저장되는, 컴퓨터 판독가능한 기록매체.
  20. 제19항에 있어서,
    상기 근방 입자 탐색에 사용하는 데이터 구조의 구축 프로그램은 또한,
    상기 스트리밍 프로세서로 하여금,
    4개의 상기 입자의 입자 번호를 ib0, ib1, ib2, ib3(오름차순의 경우에에는 ib0<ib1<ib2<ib3, 내림차순의 경우에는 ib0>ib1>ib2>ib3)라고 할 때,
    1패스째에서의 상기 복셀(voxel)을 위해 할당된 상기 메모리로의 기입에서는, 상기 카운터가 0이 되도록 초기화하면서 상기 제1 메모리 개소로의 최초의 기입을 받아들임으로써, 상기 제1 메모리 개소에 입자 번호 ib0를 기입하여 1회째의 루틴을 위한 커넬을 실행하는 단계와,
    2패스째에서의 상기 복셀(voxel)을 위해 할당된 상기 메모리로의 기입에서는, 상기 카운터를 사용함으로써, 상기 제1 메모리 개소로의 기입을 금지하면서 제2 메모리 개소에 다음 값을 기입함으로써, 상기 제2 메모리 개소에 입자 번호 ib1을 기입하여 2회째의 루틴을 위한 커넬을 실행하는 단계와,
    3패스째에서의 상기 복셀(voxel)을 위해 할당된 상기 메모리로의 기입에서는, 상기 카운터를 사용함으로써, 상기 제1 메모리 개소와 상기 제2 메모리 개소로의 기입을 금지하면서 제3 메모리 개소에 다음 값을 기입함으로써, 상기 제3 메모리 개소에 입자 번호 ib2를 기입하여 3회째의 루틴을 위한 커넬을 실행하는 단계와,
    4패스째에서의 상기 복셀(voxel)을 위해 할당된 상기 메모리로의 기입에서는, 상기 카운터를 사용함으로써, 상기 제1 메모리 개소와 상기 제2 메모리 개소와 상기 제3 메모리 개소로의 기입을 금지하면서 제4 메모리 개소에 다음 값을 기입함으로써, 상기 제4 메모리 개소에 입자 번호 ib3를 기입하여 4회째의 루틴을 위한 커넬을 실행하는 단계
    를 실행시키는, 컴퓨터 판독가능한 기록매체.
  21. 삭제
  22. 삭제
KR1020080069515A 2007-07-17 2008-07-17 근방 입자 탐색에 사용하는 데이터 구조의 구축 방법, 그프로그램, 및 그 프로그램을 저장한 기억 매체 KR100999384B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2007-00185978 2007-07-17
JP2007185978 2007-07-17

Publications (2)

Publication Number Publication Date
KR20090008159A KR20090008159A (ko) 2009-01-21
KR100999384B1 true KR100999384B1 (ko) 2010-12-09

Family

ID=39737244

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080069515A KR100999384B1 (ko) 2007-07-17 2008-07-17 근방 입자 탐색에 사용하는 데이터 구조의 구축 방법, 그프로그램, 및 그 프로그램을 저장한 기억 매체

Country Status (7)

Country Link
US (1) US8089485B2 (ko)
JP (1) JP5227103B2 (ko)
KR (1) KR100999384B1 (ko)
CN (1) CN101350106B (ko)
DE (2) DE102008031526A1 (ko)
FR (1) FR2919087A1 (ko)
GB (1) GB2452127B (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011078724A1 (en) * 2009-12-25 2011-06-30 Intel Corporation Graphical simulation of objects in a virtual environment
JP5183698B2 (ja) * 2010-01-22 2013-04-17 キヤノン株式会社 粒子挙動解析方法、粒子挙動解析装置、及び解析プログラム
US20110202327A1 (en) * 2010-02-18 2011-08-18 Jiun-Der Yu Finite Difference Particulate Fluid Flow Algorithm Based on the Level Set Projection Framework
US9954718B1 (en) 2012-01-11 2018-04-24 Amazon Technologies, Inc. Remote execution of applications over a dispersed network
US8924515B1 (en) 2012-02-29 2014-12-30 Amazon Technologies, Inc. Distribution of applications over a dispersed network
CN102663149B (zh) * 2012-03-01 2015-06-24 浪潮(北京)电子信息产业有限公司 一种确定微、纳电子结构的方法及装置
NL2008632C2 (nl) * 2012-04-12 2013-10-16 Consultatie Implementatie Tech Beheer B V Mobiele inrichting en werkwijze voor het analyseren van ademmonsters.
CN103679780B (zh) * 2013-08-22 2016-06-22 中国人民解放军信息工程大学 一种空间目标实时模拟方法
KR102114245B1 (ko) 2014-04-10 2020-06-05 삼성전자 주식회사 그래픽스 상태 관리 장치 및 방법
CN105468545B (zh) * 2014-09-05 2019-04-26 联想(北京)有限公司 一种图像数据处理方法及电子设备
CN104240285A (zh) * 2014-09-16 2014-12-24 无锡梵天信息技术股份有限公司 利用vtf技术处理cpu大批量数据传入gpu的方法
US10386410B2 (en) 2016-12-12 2019-08-20 Samsung Electronics Co., Ltd. Highly flexible performance counter and system debug module
DE102017101567A1 (de) 2017-01-26 2018-07-26 Bundesrepublik Deutschland, Vertreten Durch Den Bundesminister Für Wirtschaft Und Energie, Dieser Vertreten Durch Den Präsidenten Der Bundesanstalt Für Materialforschung Und -Prüfung (Bam) Verfahren zum simulieren eines auftreffens von partikeln oder strahlung auf einem objekt, computerprogramm dafür, computersystem zur ausführung des computerprogramms, und verwendung eines computers
US10645357B2 (en) * 2018-03-01 2020-05-05 Motorola Mobility Llc Selectively applying color to an image
CN109711525A (zh) * 2018-12-12 2019-05-03 湖北航天技术研究院总体设计所 一种用于sph算法的邻近粒子搜索方法及系统
CN112887699B (zh) * 2021-01-11 2023-04-18 京东方科技集团股份有限公司 图像显示方法和装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3358169B2 (ja) 1996-08-30 2002-12-16 インターナショナル・ビジネス・マシーンズ・コーポレーション 鏡面レンダリング方法及び装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000357481A (ja) * 1999-06-14 2000-12-26 Jeol Ltd 走査型荷電粒子ビーム装置における試料像観察方法
US20040004612A1 (en) * 2002-07-08 2004-01-08 Lockheed Martin Corporation Method and system for processing graphics simulation data
US7215340B2 (en) * 2002-07-19 2007-05-08 Mitsubishi Electric Research Laboratories, Inc. Object space EWA splatting of point-based 3D models
KR100568563B1 (ko) 2003-11-04 2006-04-07 강문구 입자동역학 해석기법과 볼륨렌더링 기법을 이용한 실시간 유체유동 시뮬레이션 및 렌더링 방법
KR100634534B1 (ko) 2005-01-22 2006-10-13 삼성전자주식회사 3차원 그래픽스 환경 상에서의 충돌 처리 방법 및 장치
US20060177122A1 (en) * 2005-02-07 2006-08-10 Sony Computer Entertainment Inc. Method and apparatus for particle manipulation using graphics processing
JP4740610B2 (ja) * 2005-02-28 2011-08-03 独立行政法人理化学研究所 数値計算処理装置
US7973789B2 (en) * 2005-06-03 2011-07-05 Pixar Dynamic model generation methods and apparatus
CN100354894C (zh) * 2005-11-10 2007-12-12 北京航空航天大学 基于图形处理单元gpu的粒子系统实现方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3358169B2 (ja) 1996-08-30 2002-12-16 インターナショナル・ビジネス・マシーンズ・コーポレーション 鏡面レンダリング方法及び装置

Also Published As

Publication number Publication date
US20090021518A1 (en) 2009-01-22
FR2919087A1 (fr) 2009-01-23
US8089485B2 (en) 2012-01-03
JP5227103B2 (ja) 2013-07-03
GB2452127B (en) 2012-09-19
JP2009043245A (ja) 2009-02-26
CN101350106B (zh) 2011-06-08
CN101350106A (zh) 2009-01-21
DE202008018183U1 (de) 2012-04-18
GB2452127A (en) 2009-02-25
GB0813147D0 (en) 2008-08-27
DE102008031526A1 (de) 2009-04-16
KR20090008159A (ko) 2009-01-21

Similar Documents

Publication Publication Date Title
KR100999384B1 (ko) 근방 입자 탐색에 사용하는 데이터 구조의 구축 방법, 그프로그램, 및 그 프로그램을 저장한 기억 매체
JP4364409B2 (ja) リンクされたサーフェスエレメントおよびリンクされていないサーフェスエレメントを使用してインタラクティブにグラフィックオブジェクトをモデリングする方法
JP5629705B2 (ja) グラフィックスプロセッサ上の物理シミュレーション
Cohen et al. Interactive fluid-particle simulation using translating Eulerian grids
Schalkwijk et al. High-performance simulations of turbulent clouds on a desktop PC: Exploiting the GPU
JP3285563B2 (ja) グラフィックオブジェクトの生成方法及び生成システム
CN112034730A (zh) 使用机器学习的自主车辆仿真
Cai et al. Collision detection using axis aligned bounding boxes
CN113822788B (zh) 光线追踪硬件中对资源的早期释放
Wang et al. GPU-based out-of-core many-lights rendering
CN111788608A (zh) 用于建模光反射的混合射线跟踪方法
EP1024460A2 (en) Graphical objects represented as surface elements
JP2005243034A (ja) 織物組織アニメーション表現のためのデータ構造、これを用いた3次元グラフィックデータのレンダリング装置及び方法
Ghali Introduction to geometric computing
TW201447813A (zh) 產生防鋸齒體素資料
Knowles et al. GPGPU based particle system simulation
US11745347B2 (en) Method for assessing the quality of a robotic grasp on 3D deformable objects
Bayer et al. Impulse-based dynamic simulation on the GPU
Feng Visualization and Inspection of the Geometry of Particle Packings
Hrůša Interaktivní eroze
Tananuchittikul Particle-Based Simulation of Granular Materials on GPUs
Madera et al. Particle Simulation with GPUs Shading Languages
Garre et al. A simple mass-spring system for character animation
Uğurca Improvement and analysis of TressFX real-time hair simulation framework
KR100571838B1 (ko) 직물 조직 애니메이션 표현을 위한 데이터 구조의 정의방법, 및 이를 이용한 3차원 그래픽 데이터의 렌더링 장치 및 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130925

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee