5일차) 쿼터뷰 액션 게임 포폴


* 포폴 진행 상황
- 여전히 광원 처리를 위해 애쓰고 있다.



< 광원 처리 테스트5 : 한장의 png를 흰색 배경의 bmp로 변환 >

- 1장의 bmp를 만들어 약하게 알파값을 먹여 보았다.
- 명도를 조정하는 효과가 나와 뿌연 안개를 만들어 주는 효과가 나타났고, 이는 외곽의 검은 부분이 뚜렷하게 보이는 것 처럼 처리가 되었다.
- 그렇다면, 광원을 검게 처리하고, 멀어질 수록 희게 처리를 하면 원래 의도 했던 검은 시야 처리가 아닌, 안개 시야 처리를 할 수 있지 않을까? 테스트 해보자.




< 광원 처리 테스트6 : 한장의 png를 흰색 배경의 bmp로 변환(알파 마스크 리버스) >

- 밖으로 갈 수록 안개 처럼 흐릿하게는 되었지만... 원본 이쁜 이미지가 많이 훼손되는 모습
- 역시 사용하진 못할듯..





< 중간 결단 : 해결을 위해 선생님께 질문 >
- 선생님 솔루션은 그래픽 카드를 사용하는 수 밖에 없다. 즉, DirectX를 사용하는 방법.
- 하지만 배우지 않은 다이렉트x를 짧은 포폴 준비 기간동안에 R&D 할 수 없다고 판단
    (이미 MFC 를 써보겠다고 시간 소요를 해본 경험에 의한)
- 최후의 방법으로 출력하는 이미지 개개의 명도를 조절 하는 방법이 없는지 찾아보자.
    (없으면 bmp 이미지 픽셀 패턴으로 진행하는걸로 마무리)



< 명도 조절 R&D 후 내린 결론 : 명암과 밝기 조절 방법과 순서 >
1. 비트맵을 DIB비트맵으로 만든다.
2. DIB비트맵에서 픽셀 데이타로 직접 접근
3. 밝기 값을 변화 시켜 준다.
4. 변화시킨 DIB 비트맵을 출력 해준다.
- 이를 하려면 MFC를 사용해야 한다.
- 출력 역시 현재의 DDB 비트맵 출력 방식이 아닌, DIB 출력 방식으로 바꾸어야 한다.

* 결론 : 이를 현재 공부하고 적용할 시간은 없다. 때문에 이미지 자체의 밝기를 변화하는건 스킵 하자.

* 배운 것 : 이렇게 이미지의 각 픽셀에 접근하여 원하는 값으로 바꾸는 것을 영상처리 기법의 기초임을 알았다. 영상처리가 무엇인지 알아두는 것으로 만족하자.




< 광원 처리 테스트7 : setpixel() 함수 사용 >
- 포토샵에서 거리에 따른 픽셀 단위로 검은색을 칠해주는 작업을 수동으로 하지 않고, 코드로 만들어 자동으로 돌려 보았다.


- 지저분해 보인다...
- 점 출력을 조절 해보자...선형이 아닌 고차원 함수로 뒤로 갈수록 급격히 어두워 지게...


- 크게 많이 개선 되지는 않는 모습. 픽셀 자체 변경 시 지저분해 보이는건 어쩔 수 없다.


(결과물 : 코드로 찍은 시야 처리를 위한 도트 bmp 이미지 저장)





< 시야 처리 결론 >
- PNG 1장의 파일을 덮어주는 걸로 하자.
- 단, 프레임 최적화를 위해 인게임에서 미니맵은 출력 하지 않는다. (최적화에 신경써라)
- 아쉽지만 R&D 에 충분히 많은 시간을 소모 하였고, 최적화를 위해 레이 케스팅 알고리즘 R&D는 하지 않는다.
    (포폴 완성 후 시간이 남는다면 테스트 해보지만, 남지 않는다면 이번 포폴에서 제외)
- 내일 부터는 본격적으로 게임 제작에 진입하자(일단 BT알고리즘을 짜 나가야 한다)





댓글