게임의 특수한 비주얼씬을 연출할 때 사용되는 것으로 이펙트(Effect)라고 한다.
- 2D 게임에 쓰는 그래픽 이펙트는 하드웨어나 컴퍼넌트가 지원해 주지 않으므로 프로그래머가 직접 만들어야 한다.
3.1 반투명
2D 게임 그래픽에서 물체가 겹쳤을 때 마치 두 이미지가 섞여 보이는데 이것을 반투명이라고 한다.
==> 걍 50% 알파블렌딩이라고 생각하시면 됩니다. ^^;
구현 계산식은 아래와 같다.
R = 뒷 이미지 R / 2 + 앞 이미지 R / 2
G = 뒷 이미지 G / 2 + 앞 이미지 G / 2
B = 뒷 이미지 B / 2 + 앞 이미지 B / 2
이 방법은 계산이 쉽고 쉬운 계산식에 비해서 효과가 좋다
- 예를 들어 색상 값인 RGB( 0, 0, 0)인 검은 배경에 RGB(255, 255, 255)의 흰점이 만난다면 반투명색은 RGB(122, 122, 122)인 회색이 된다는 원리이다.
3.2 광원 효과
두 이미지가 만나면 빛이 비추는 듯한 느낌을 주는 효과를 광원 효과라고 한다. 계산 원리는 반투명과 비슷하지만 계산식은 아래와 같다
R = 뒷 이미지 R + 앞 이미지 R
G = 뒷 이미지 G + 앞 이미지 G
B = 뒷 이미지 B + 앞 이미지 B
이렇게 하면 두 이미지가 겹치면서 밝아져 버린다. 빛의 원리와 같다. 이식에서 RGB각 요소가 255를 넘을 수 없기 때문에 계산 후 RGB값이 255를 넘게 되면 255로 값을 고정시켜야 한다.
알파블렌딩 (alpha-blending)
2반투명과 비슷한 효과이다. 다른 점은 알파값을 이용하여 투명한 명한 정도의 농도를 조절할 수 있다는 점에서 그냥 반투명과는 다르다. 즉 알파블렌딩을 이용하면 완전한 색의 캐릭터에서 점차적으로 투명해지는 캐릭터를 만들 수 있고 거의 완전한 투명에 가까운 캐릭터도 만들어 낼 수 있다. 알파블렌딩의 계산식은 다음과 같다.
R = 뒷 이미지 R * (100 - Alpha) / 100 + 앞 이미지 R * Alpha / 100
G = 뒷 이미지 G * (100 - Alpha) / 100 + 앞 이미지 G * Alpha / 100
B = 뒷 이미지 B * (100 - Alpha) / 100 + 앞 이미지 B * Alpha / 100
- Alpha값은 투명화의 정도를 의미한다.
3.4. 팔레트 조작
다른 용어로는 컬러 인덱스 조절이라고도 한다.
팔레트의 주 기능은 256 게임을 만들어도 6만 가지 색을 쓰는 게임처럼 만들 수 있단 것이다.
이미 출력된 색을 바꿔주는 효과를 팔레트 애니메이션이라고 한다.
- 이미 출력되고 있는 색이 붉은 색이라면 붉은 색을 지정한 인덱스 값을 알맞게 변화해서 프레임의 변화 없이 바로 애니메이션을 만들어 낼 수 있는 그래픽 효과이다.
위 설명이 워낙 잘 나와 있어서~
두개의 이미지를 찍을때~ 예를 들어 아이템창이 있을때~ 마우스를 가져다 놓으면~
뒤에 아이템이 비취면서 관련된 설명이 나오져? 많이들 사용하는것 같습니다. ^^
덧붙쳐서~ 구현된 이펙트 효과중~ 그레이는
R G B의 색상에 대해서~ R*20 G*50 B*30색상을 적당히 섞어서 100으로 나눈 색상의 값을 그레이 색상으로 출력했습니다. ^^;
팔레트의 조작에 대해서는 가장 대표적인 게임이 디아블로나~ 스타크래프트를 보셔서 잘 이해가 될듯 합니다.
팔레트의 조작은 적은용량과 빠른 속도를 구현하기 위해서 쓰고 있습니다. 요즘은 모바일쪽에서 많이들 쓰는것 같습니다. ^^
글구 블렌딩은 효과는 계산이 무지 많아지기 때문에~ 대체적으로 검정색으로 효과를 냅니다. 일반적으로 잘 먹고여~ ^^
그럼 멋진 겜 만드시기 바랍니다. ^^;
----------------------------------------------------
출처 : Daum MobileCreater의 시간 님의 글입니다.
http://www.codesos.com
'나머지 > IT개발.잡다한것.' 카테고리의 다른 글
[C++, MFC] CWinThread (0) | 2013.02.14 |
---|---|
LVCMOS와 LVTTL (1) | 2013.02.04 |
[영상처리] Magick++ 라이브러리 visual studio에서 사용하기, 컴파일 (5) | 2013.01.08 |
LNK4098 LNK2019 관련 포스팅 (1) | 2013.01.02 |
cypress fx2 cyusb.inf driver (0) | 2012.11.20 |