210 likes | 437 Vues
조이름 : MuseOn 발표자 : 조윤혜 발표일 : 2007. 4. 30. 입자 시스템 (Particle System). 목차. 입자시스템이란 ? 입자 데이터 구조 구조에 대한 주의 가속화 기법. 1. 입자 시스템이란 ?(1/2). 굴뚝의 연기 , 불 , 무리지어 나는 새떼 , 눈송이 등 수많은 다른 현상 특징 : 동적이고 시간 의존적이다 각각 지정된 루틴을 따라서 동적으로 변화하는 입자들의 배열로 구성 작은 개별 요소들과 상당히 병렬적이다
E N D
조이름 : MuseOn 발표자 : 조윤혜 발표일 : 2007. 4. 30 입자 시스템 (Particle System)
목차 • 입자시스템이란? • 입자 데이터 구조 • 구조에 대한 주의 • 가속화 기법
1. 입자 시스템이란?(1/2) • 굴뚝의 연기, 불, 무리지어 나는 새떼, 눈송이 등 수많은 다른 현상 • 특징 : • 동적이고 시간 의존적이다 • 각각 지정된 루틴을 따라서 동적으로 변화하는 입자들의 배열로 구성 • 작은 개별 요소들과 상당히 병렬적이다 • 모든 입자들은 그 모양과 행동을 조절하는 같은 파라미터를 갖는다 • 복잡하다 • 각각은 다소 다른 진화과정을 따르고 자연적으로 추구하는 복잡성이 생겨난다
1. 입자 시스템이란?(2/2) • 지역 VS 전역 입자 시스템 • 지역시스템 : *각각의 입자가 독립적 동작 *상호간의 작용 고려되지 않음 *모든계산은 현재 입자에 지역적 • 전역 시스템 : *서로 상호작용하고 반응하는 입자 포함 *더 복잡하고 재미있는 동작생성가능 *계산비용의 많은 증가 • Ex) 바람에 의해 나무에서 떨어지는 나뭇잎들.
2. 입자 데이터 구조(1/12) • 위치(Position) 속도(Velocity-벡터적) 크기(Size) 색상(Color) 투명도(Transparency) 모양(Shape) 수명(Lifetime) 폭발섬광, 비, 물 등 하부구조는 거의 동일하다
2. 입자 데이터 구조(2/12) • 입자 행동에 관련된 파라미터 • 1. 행동 종류 분석 • 2. 적용 할 힘 분석 • 3. 마찰or 속도(방향성 속도,방사속도, 회전속도, 무작위 속도)or 가속or 중력상수등 적용 • 입자 모양에 관련된 파라미터 • 입자색상, 블렌딩모드, 크기, 텍스쳐식별자등
2. 입자 데이터 구조(3/12) • 입자 생성 • 점방사체 : 공간의 한 점에서 모든 입자를 생성(ex. 폭발) • 실제로 폭발(ex.불)은 부피와 모양을 갖기때문에 점에서가 아니라 입자 주위의 영역에서 생성 • Point pos(3,5,4); //particles are born in 3,5,4 pos.x += ((float)rand()..) pos.y += ((float)rand().. pos.z += ((float)rand()..) Explosion Fire
2. 입자 데이터 구조(4/12) • 입자 생성 • XZ평면에서 정렬된 2D다각형 : 눈 또는 비를 시뮬레이트 하기 위한 방사체 • 멀리 떨어진 빗방울은 보이지 않을 것이기 때문에 사용자가 잘 인식 할 수 있는 곳에서 생성 – 시점 바로 앞에서 생성 • Point pos(3,5,4); //particles are born in 3,5,4 pos.x += ((float)rand()..) pos.z += ((float)rand()..) Rain
2. 입자 데이터 구조(5/12) • 입자 의 나이와 생명주기 확립 • 1. 초기설정 – 0 최대 활동시간량이 될때까지 나이 증가 입자는 죽고 다른 곳에서 다시 생성
2. 입자 데이터 구조(5/12) • 입자 행동 • 실세계 현상을 흉내내도록 입자들에 임의의 역학구현 • 기본 물리학 적용 • Position = initial position + velocity*time • dPosition = Velocity*dt 미분 방정식적용 • F = m*a (velocity=주어진 • a= f/m 점에서 시간에 • a=d^2x/dt^2 따른순간속도) • v=dx/dt 속도 a=dv/dt 가속도 • F=m*g 중력 • F= -kd*(dx/dt) = -kd*v 점성저항 • F =[ -ks( |xa-xb| - r ) + kd(va-vb) * ((xa-xb)/|xa-xb|) ] 스프링 탄성
2. 입자 데이터 구조(6/12) • 물리학 기반의 입자 시스템을 계산하기 위한 전체 알고리즘 • 1. 주어진 점에서 입자와 상호 작용하는 힘의 합을 게산하라 • 2. 힘으로부터 가속도를 유도하라 • 3. 위치와 속도의 변화를 계산하기 위해 시간 미분계수를 사용하라
2. 입자 데이터 구조(7/12) • 중력과 수평방향의 힘 구현 예(바람) Total_force = gravity + wind
2. 입자 데이터 구조(8/) • 굴뚝의 연기, 폭발에 의한 버섯구름 • 양의 수직방향으로 속도를 가지고 단일 점에서 방출 • 올라감에 따라 복잡한 힘의 영향을 받음 가장 많이 쓰이는 연기 시뮬레이트 Noise() – 지표에서 휘돌아 올라가는 연기처럼 보이는 움직임 패턴 생성 (Perlin noise)
2. 입자 데이터 구조(9/12) • 입자 소멸 • 1.하나의 입자는 나이가 생존 기간을 넘어선 후에 소멸. • 2.생성루틴을 다시 호출 • 3.이전 입자를 가지던 곳에 새로운 파라미터를 가지는 새로운 입자를 갖게됨 • 입자가 소멸해감에 따른 알파값 조절 • ex1)비 입자 시스템 – 빗방울은 시간에 따라 소멸되지 않고 입자가 지표면에 닿을때마다 소멸 • ex2)연기입자시스템 – 전성기때는 불투명하고 생성되고 거의 투명한 상태로 소멸 • alpha= sin(PI*age/maxage); • 0~PI값범위의 실수값으로 0값(완전히 투명)에서 1값(불투명)까지 나타냄.
2. 입자 데이터 구조(10/12) • 입자 렌더링 • 입자 시스템의 신뢰성은 행동의 실제 시뮬레이션만큼 렌더링에 의존. • 1. 저비용 입자 계산 – 빌보드 기법 사용 • 사각형이 항상 시점을 바라보도록 만드는 것 • Right와 up벡터를 설계하고 그것에 기반하여 입자들을 카메라에 정렬 • ex) 나무메쉬를 사용하지 않고 이미지만으로 구현 Model View 행렬
2. 입자 데이터 구조(11/12) • 2. 블렌딩 모드를 적절히 사용 • 필터 블렌드 • 비와 같은 반투명 입자 모양 제공 • SRC_ALPHA, ONE_MINUS_SRC_ALPHA • 합성 블렌드 • 빛, 불, 폭발등에 사용(배경에 요소를 더한다) • SRC_ALPHA, ONE
2. 입자 데이터 구조(12/12) • 3.텍스쳐 애니메이션 • 각 입자는 타일과 같은 텍스쳐 애니메이션 프레임을 가진다 • 입자는 더욱 동적인 모양을 만들며, 생애동안 애니메이션 프레임을 통해 순환 • 4.연결/계층적 시스템 • 실세계의 다단계 복합적 환상생성 • ex) 로켓발사 – 1. 불이 배기장치 에서 뿜어져 나오고 2.많은 연기와 수증기가 발생 3. 작은얼음입자들이 다른 궤적을 따라 분리 • 5.시간 함수로서 시각적 파라미터 • ex)불 – 중심화염은 보통 파란색, 바깥쪽으로 가면서 녹색, 흰색, 그리고 천천히 소멸.
3. 구조에 대한 주의 • 게임 상에 모든 파티클 시스템은 동일한 인터페이스를 사용하여 액세스한다. 추상 클래스 (동일 인터페이스) 파생 클래스 (세부 인터페이스)
4. 가속화 기법 • 1. Malloc 과 Free 피하기 • 입자가 소멸할때마다 메모리 반환은 심각한 성능문제 유발. • 시스템 입자 정적배열로 매핑 • 죽은 입자와 같은 배열에 새로운 입자 생성 • 2. LOD(Level-of-Detail) 입자시스템 • 접근에 따라 시각적인 일치성을 보장하며성능의 상당한 향상을 얻을 수 있다 • 아주 멀리 있을때, 단지 몇 개의 입자를 가진 기본적인 입자시스템에서 가까이 다가왔을대 완전한 시스템까지 보간하는 방식
마침글 • 구름, 비, 연기까지 유기적이고 자연적인 현상을 시뮬레이트하기에 적합 • 입자 시스템(Particle System)은 잘 사용하면 게임의시각적 효율을 증가시키며, 플레이어에게 현실감을 전달하고, 표현가치를 향상시키고, 활동감을 증가시킨다