프로그래밍

오랫만에 이미지 프로그래밍

히노히에 2019. 9. 19. 00:03

회사에서 문서 만들다가 뭔가 맘에드는 동그라미/엑스 그림이 없길래

직접 그리기로 결정했다ㅋㅋㅋ

그리고 그 결과..

입력으로 그린 그림

 

출력물

보다시피 약간의 3D 비스무리한 효과도 주면서

겉에 흰색깔 테두리로 감싸주는..그런 모습이다.

 

회사에서 일할땐 거의 2~3시간동간 튜닝했었는데

막상 집에 와서는 한 3~40분만에 짜버림ㅋㅋㅋ

 

이미지 읽고 쓰는건 stb_image.h 를 사용했다. https://github.com/nothings/stb 여기 이친구인데.. 내 기억으론 상업적인 이용이 아닌 이상 그냥 막 갔다써도 되는걸로 알고있음.. 토이프로젝트만 운용하는 나같은 친구에겐 딱임...

 

코드는 파일로 첨부한다. 첨부 되려나..?

image_boom_main.cpp
0.00MB

 

방식은 간단하다. 쉽게 말해 radius의 크기를 가진 구체가 모든 픽셀 돌면서 radius범위 안에 있는 모든 색있는 녀석들 정보를 다 끍어모은 뒤 그 평균을 칠한 것이다.

색을 칠하는 픽셀과, input색상까지의 위치 차이의 평균을 잘 구한 뒤, 그 거리를 radius로 나누면

구체의 높이(?) 가 계산될거고, 이를 이용하면 해당 픽셀의 normal vector가 결정된다.

이거랑 임의로 설정한 빛의 방향이랑 dot product 해서 색을 결정.

 

해당 코드에서는 음수인 경우도 어느정도 허용해줬는데, 이렇게 되면 약간 그림자진 효과를 줄 수도 있다는 장점이 있지만, 어두운 색상에서는 그 효과가 잘 안보인다는 단점이 있을 것이다...

이런건 튜닝의 영역이니까 알아서 잘 해보슈.ㅋㅋㅋ