입자 시스템 (Particle System)

Download Report

Transcript 입자 시스템 (Particle System)

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