
시작하며
오랬동안 PC의 프로그램에서만 존재해 왔던 3D가 최근 출시되고 있는 고성능의 GPU가 탑제된 스마트폰에 힘입어 이젠 모바일 화면에서도 3D를 볼 수 있게 되었습니다.
일반적으로 3D는 주로 게임이나 고급 UI에서만 사용되었습니다. 특히 UI에서의 3D는 WPF나 실버라이트에서 컴포넌트에 3D효과를 주기 전까지는 효과적이지 않은 방법이라고 여겨져 왔습니다. 모든 컨트롤을 3D화 하는것은 어려운 일이기 때문입니다.
2009년 3월, CSS 3D Transform 모델의 초안이 발표되었습니다. 여기서 개발자들에게 보다 더 흥미로운 웹 제작을 만들기 위해 DOM 요소들에 3D 원근법(perspective transformations)을 허용하였습니다.
CSS 를 통한 3D Transform의 초안 작업은 CSS 2D Transform 모델에서 이론적으로만 소개된 원근(perspective) , 회전(rotate) , 그리고 3DTransform의 변형 같은 특이한 속성들의 확장입니다. 예전에는 그렇게 쉽게 3D 로 인터페이스를 만들 수 없었지만, CSS 3D 초안 작업에서는 3D로의 진입 장벽을 낮춰왔습니다. 이로써 더 이상 3D 요소들을 만드는 데에 머리 터지는 수학적인 연산을 사용하지 않아도 되게 되었습니다.
주목할 부분은 CSS 3D 는 “개발자”들을 위해 만들어졌습니다. 이 말은 웹 어플리케이션에 초점을 두고 3D 시각효과를 도입하는데 도움을 주기 위해 만들어졌다는 것입니다. 즉 게임같은 전반적인 3D 세상을 위해서 만들어 진 것은 아니라는 것입니다.
브라우저 호환 및 하드웨어 가속
2010년 9월, 사파리와 크롬은 CSS 3D 를 지원하기 시작했습니다. 하지만 이는 단지 지원일 뿐, 3D 랜더링이 가능하다는 것을 의미하지는 않습니다. DOM 요소에 기초한 3D는 매우 많은 연산이 필요하므로 브라우저 제공 업체들은 브라우저가 느려지게 하자니 GPU의 가속을 받는 편이 좋겠다는 결정을 내렸습니다. 참고로 GPU는 아직 모든 플렛폼에 적용되지 않았습니다.
3D 기능 감지
웹 페이지에서 3D 지원이 가능한지를 바로 먼저 확인하지 않는 편이 좋습니다. 개발자들은 modernizr같은 툴을 통해 브라우저의 특징과 능력을 감지하는데 사용합니다만 3D 지원을 감지하는 동안엔 하드웨어 가속을 검출할 수 없으며, 사실 하드웨어 가속 검출이 우리에게는 가장 중요한 키 포인트입니다.
간단한 예제
일단 다른 설명은 제쳐두고 예제를 통해 CSS 3D를 배워보겠습니다. 아래의
