이창희(cagetu79@gmail.com) Billboard 이창희(cagetu79@gmail.com) copyright cagetu(cagetu79@gmail.com)
copyright cagetu(cagetu79@gmail.com) Billboard? 빌보드의 가장 큰 특징은 카메라가 어느 방향에서 바라보아도 항상 카메라의 정면을 향하고 있다는 것 이펙트의 기초가 되는 파티클(Particle)이나, 게임에서 나무나 풀, 렌즈 플레어(Lens flare)등에 사용된다. copyright cagetu(cagetu79@gmail.com)
copyright cagetu(cagetu79@gmail.com) Billboard 빌보드란 간단하게 이야기하면, 항상 카메라를 바라보는 판때기를 의미한다. 즉, 카메라의 회전하는 방향대로 판때기를 카메라를 바라보도록 회전하면 된다. 화면 정렬 빌보드 축 정렬 빌보드 copyright cagetu(cagetu79@gmail.com)
copyright cagetu(cagetu79@gmail.com) 구현 다각형의 방향을 지정하기 위해 표면 법선 벡터와 위쪽 방향(up vector)를 설정한다. 이 두 벡터만으로도 그 표면에 대해 서로 수직한 기저 벡터를 만들 수 있다. 이 두 벡터만 있으면 평면을 목표로 하는 방향으로 회전하는 회전 행렬을 구할 수 있다. 표면 벡터 n 과 상향 벡터 u는 보통 수직하지 않는다. 모든 빌보드 기법에서는 이 두 벡터 중 하나가 주어진 방향을 유지하기 위해 고정되는 벡터로서 사용되며, 이처럼 고정된 벡터에 수직한 다른 벡터를 만드는 과정은 항상 똑같다. copyright cagetu(cagetu79@gmail.com)
copyright cagetu(cagetu79@gmail.com) u 와 n을 이용해서, 평면의 우향 벡터 r을 만든다. 이 벡터를 정규화하면, 회전 행렬에 대한 서로 수직한 기저의 한 축으로 사용될 수 있다. n 이나 u 벡터 중에서 변경될 벡터는 고정된 벡터와 r을 외적한 결과에 따라 변경되는데, 이렇게 하면 양쪽 모두 수직인 벡터가 만들어진다. 특히, 법선 벡터 n이 고정되어 있을 경우, 변경할 축에 맞게, 새로운 상향 벡터 u’은 다음과 같이 구할 수 있다. copyright cagetu(cagetu79@gmail.com)
copyright cagetu(cagetu79@gmail.com) u’ = cross( n, r ) 만일, 상향 벡터가 고정되어 있다면, 새로운 법선 벡터 n’는 n’ = cross( r, u ) (풍경화에 나오는 나무들 같이 축에 정렬된 빌보드에서등…) 새로 만들어진 벡터는 정규화되고, 이 세 벡터들을 이용하여, 회전 행렬을 구한다. 이 행렬에 의해 적절하게 회전되도록, 중심을 앵커(원점) 위치로 옮겨준다. 그 다음에 평행 이동 행렬을 적용하여, 사변형의 앵커(원점)를 원하는 위치로 옮겨준다. 빌보드의 방향을 정의하기 위해 어떤 표면 법선 벡터와 상향 벡터를 사용할 것인지를 결정하는 것은 매우 중요한 일이다. copyright cagetu(cagetu79@gmail.com)
copyright cagetu(cagetu79@gmail.com) 화면 정렬 빌보드 가장 단순한 형대의 빌보드 항상 화면과 평행하며, 고정된 상향 벡터를 가진다. n 은 관측 평면 법선 벡터의 역벡터가 된다. 즉, 월드 공간에서 카메라가 바라보는 방향 벡터의 역벡터(-view)이다. u 는 카메라 자체로부터 설정된 것으로서 카메라의 상향 벡터 방향을 정의. r은 cross( n, u ) copyright cagetu(cagetu79@gmail.com)
copyright cagetu(cagetu79@gmail.com) 축 빌보드 주요 원리는 텍스쳐를 입힌 객체가 관측자와 정면으로 마주하지 않는다는 것이다. 대신에 보편 공간의 축을 중심으로 회전시킬 수 있고, 허용하는 범위 내에서 최대한 관측자쪽으로 향하도록 조정할 수 있다. 화면 정렬 빌보드가 구형으로 대칭된 물체들을 표현하는 데 적합한 것처럼 축 빌보드는 원통 모양의 대칭성을 가지는 객체를 표현하는 데 유용하다. 예를 들어, 레이저 빔의 모양을 축을 중심으로 어느 각도에서 보아도 똑같이 보이기 때문에, 레이저 빔 효과는 축 빌보드로 랜더링 할 수 있다. copyright cagetu(cagetu79@gmail.com)
copyright cagetu(cagetu79@gmail.com) 빌보드의 활용 실제로 게임을 만들다 보면 여러 가지 빌보드가 필요하다. 첫째로는 Yaw 방향으로만 회전하는 빌보드를 들 수 있겠다. 이러한 빌보들은 카메라가 위 아래로 움직였을 때 이 카메라를 바라보면 매우 우수워지는 물체에 많이 쓰이는데, 나무나 가로등 같은 것을 빌보드로 표현할 때 이런 빌보드를 사용한다. 일반적인 빌보드를 사용하면 정말 나무가 종이 한 장처럼 보이기 때문에 난감해 질 수 있기 때문이다. copyright cagetu(cagetu79@gmail.com)
copyright cagetu(cagetu79@gmail.com) 활용 두 번째는 항상 위쪽을 바라보는 즉, 땅바닥에 붙어있는 빌보드를 들 수 있다. 이러한 빌보드는 보통 효과에 많이 쓰이게 된다. 바닥 위에서 나타나는 효과들에 많이 사용된다. 빌보드는 효과에 많이 쓰이게 되는데, 이는 직접 만들어진 메시보다 조작이 쉬워서 그렇다. 그렇기 때문에 u, v좌표를 바꿔서 애니메이션을 만든다거나, 빌보드를 축 방향으로 회전시킨 다거나, 빌보드를 축 방향으로 회전시킨다거나 또는 크기를 확대, 촉소시킴으로써 좀 더 멋진 효과를 만들어 낼 수 있다. 미사일의 연기를 빌보드로 만들 경우에는 텍스쳐가 애니메이션 되는 빌보드를 만들어서 미사일이 날아가는 궤적을 따라 일정간격으로 시간마다 빌보드를 생성하여 준다. 이때 파티클의 움직임을 추가하여 천천히 위로 움직이게 한다면, 빌보드는 천천히 텍스쳐 애니메이션 되면서 위로 올라 갈텐데 여러 장의 파티클이 연속적으로 나오게 되면, 미사일의 후미에서 나오는 연기처럼 표현할 수 있다. 이처럼 빌보드는 게임에서 효과를 만들 때나 많은 물체를 나타낼 때 많이 사용되며, 여러가지 방법으로 응용되곤 한다. copyright cagetu(cagetu79@gmail.com)
copyright cagetu(cagetu79@gmail.com) 기타 임포스터(Imposter) 렌즈 플레어(Lens Flare) 입자 시스템(Particle Systems) copyright cagetu(cagetu79@gmail.com)
copyright cagetu(cagetu79@gmail.com) 참고자료 http://blog.naver.com/sexychs/150005118777 Real-Time Rendering 2판 – 정보문화사 3D 게임 프로그래밍 – 김용준 저 copyright cagetu(cagetu79@gmail.com)
copyright cagetu(cagetu79@gmail.com) Q & A copyright cagetu(cagetu79@gmail.com)