합성 하는 이미지




선형 합성
 이미 그려진 색과 지금부터 렌더링 하려고 하는 폴리곤의
색을 다음과 같은 비율로 합성
최종색 = (1 - α) * 바닥색 * α * 덮일색.

α(opacity)
0 ~ 0xff 까지 0x7f 이면 50% : 50% 로 표현됨
 정점의 α 값에 따라서 합성되는 강도가 바뀜





덧셈 합성

 최종색 = 바닥색 + α * 덮일색
 α 의 값이 커지는 것 만큼 , 위에 그려지는 폴리곤을 강하게 합성됨
 폴리곤을 여러 번 합치면 백색화면이 됨
 게임에서 빛의 눈부심을 표현하기 위하여 많이 사용
SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);


뺄셈 합성

최종색 = 바닥색 - α * 덮일색
폴리곤을 여러 번 합치면 검은화면이 됨
SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_REVSUBTRACT);
SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
그림자 표현에 많이 쓰임


곱셈합성

최종색 = 바닥색 * 덮일색
SetRenderState (D3DRS_DESTBLEND, D3DBLEND_SRCCOLOR);
SetRenderState (D3DRS_SRCBLEND, D3DBLEND_ZERO);




제곱 합성

어두운 곳은 더 어둡게 하고 밝은 곳은 더 밝게 !
최종색 = 바닥색 * 바닥색
바닥색을 제곱해서 색의 채도를 강조.
제곱 합성은 렌더링 하는 폴리곤의 색이나 알파값에 영향을 받지 않음
폴리곤을 입혀 렌더링해도 텍스쳐는 효과를 미치지 않음
SetRenderState(D3DRS_DESTBLEND, D3DBLEND_DESTCOLOR);
SetRenderState (D3DRS_SRCBLEND, D3DBLEND_ZERO);


네거티브 포지티브 반전

흰 폴리곤을 렌더링하면, 검은 부분은 희게, 흰 부분은 검게
최종색 = 바닥색 * 바닥색
게임에서 충격을 받은 표정 등에 사용됨
SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ZERO);
SetRenderState (D3DRS_SRCBLEND, D3DBLEND_INVDESTCOLOR);




위 그림들은 이미지 하나를 반투명 상태로 합성시켰기때문에 반투명 상태를 하지 않고 했을때는 조금 틀린결과가

나타날수 있어요~

위의 모든  설정은 RestoreDeviceObjects() 함수 안에서 실행되요.

,

1. 위의 파일을 다운 받는다.

2. 3DMAX7.0 폴더 안에 있는 플러그 인에 저장한다.

3. 3DMAX7.0을 실행시키고 임포트를 누른뒤 파일 익스포트 시킬 파일 확장자를 찾고 x파일로 임포트 시킨다.

,

학기준 이번수업에 directx9.0을 이용하여 프로젝트를 한다.

이번 프로젝트 계획은 directx9.0 와 3DMAX 그리고 MCU(LM3s8962)를 사용해서 양궁 시물레이션을 제작하려고 생각중에 있다. 
다른 사람들과 차별을 주기위해서 조이스틱을 제작해볼려고 한다. 그래서 MCU사용.

MCU를 사용해  조이스틱 제작.

가속도센서, 버튼 or 압력센서, 진동모터 

1. 가속도센서  : 가속도 센서를 사용하여 기울기를 체크한뒤 양궁을 쏘는 각도를 조절

2. 버튼 or 압력센서 : 버튼누르는 시간이나 압력센서를 누르는세기를 체크해서 화살이 날라가는 힘을 생각

3. 진동모터 : 진동모터를 사용해서 화살이 날라가 표적에 적중시 진동감을 준다.
,



,



마지막으로 중요한것은 마지막 옵션에서 디렉토리 설정을 맨위 상위 파일로 올려줘야되는것이다.~~

설정해준게 맨위로 해주지 않으면 다이렉트x는 실행되지 않는다.
,