본문 바로가기

OGRE 엔진활용

OGRE 엔진에서의 물속효과 구현


물속효과를 구현하기 위해서 여러가지 방법을 사용해 봤습니다.
영상에서 보이는 mesh 들은 오우거 머리, 물고기, 그리고 물속을 둘러싸고 있는 기둥과 바닥 그리고 벽면이 모두 mesh 입니다
하늘은 스카이박스중 skyplane을 이용하였습니다.

오우거에서 제공하는 SDK 에 보면 fresnel 이라는 예제가 있는데, 이 예제는 보이는 화면에서 오우거 머리를 기준으로 아래쪽에 물이 있고, 그 물속을 물고기가 헤엄치는 예제였습니다.
물은 텍스처에 여러가지 효과가 들어간것으로 물의 위쪽의 화면이 물표면에 비추어지게 되어 있었죠.
단, 카메라를 물속으로 옮기면 물의 표면은 더이상 보이지 않게됩니다(위쪽에서 보이게 컬링되어 있었기 때문이죠..)

물속 효과를 구현하기위해 저는 아래와 같은 작업들을 해봤습니다.
물 표면의 위치를 기둥의 가장 최상단으로 옮겨서 Up vector(위쪽 방향)를 NEGATIVE_Y 로 설정하였습니다. 이러면 물 위에서는 물표면이 보이진 않지만, 물속에서는 물표면의 출렁이는 효과를 볼수 있습니다.

빛이 물표면에 의해 산란되어 보여지는 효과는 텍스쳐 애니메이션을 활용하였습니다.
mesh에 적용되는 meterial 정보에 기존텍스쳐와 알파값으로 처리된 효과 텍스쳐를 블랜딩 시켜서 31장의 애니메이션을 계속 그려주게끔 만든것입니다. 이러면 물의 출렁임에 의해 물속에 빛이 산란된것같이 보여지더군요.

마지막으로 해준 작업은 물속에 안개효과를 줘서 물속기분같은 연출을 시도해봤습니다. 실제로 물속에서는 거리에 의해 시야가 달라지게 되는데,  안개가 없을때는 물속 어느곳이라도 투명하게 보입니다. 이러면 안되겠죠.. 안개를 주고 거리를 적당히 조절해주니 결과물과 같이 보여집니다. 어떤가요.. 좀 괜찮은가요?

안개효과를 적용하기 위해서 여러분이 유의하여야 할점이 하나 있는데요, skybox와 skydome 으로 하늘을 표현했을경우 안개를 적용하게 되면 하늘의 효과는 안개에 가려서 볼수 없게 됩니다.
때문에 기존의 skybox를 skyplane 으로 바꾼것도 그 때문입니다.

물론 물속을 표현하기 위해서는 많은 방법과 기술들이 있겠습니다만, 저는 이러한것들을 통해 물속의 효과를 나름대로 연출해봤습니다.


실행파일 다운로드는 아래에 있습니다.