구글의 움직임, O3D.

102025년 08월 07일4

블라디미르의 'Canvas 3D' 프로토타입은 모질라 내부에서 조용히, 하지만 꾸준히 진화하고 있었다. 파란색 사각형은 이제 시작에 불과했다. 그는 좌표 데이터를 담는 버퍼(Buffer)를 생성하고, 그 점들을 연결해 3차원 공간에 삼각형 하나를 그려내는 데 성공했다.

아직은 투박하고 볼품없는 삼각형. 하지만 그것은 웹의 언어만으로 GPU의 힘을 빌려 그려낸, 명백한 입체 도형이었다. 그의 작은 성공에 힘입어 스튜어트를 비롯한 몇몇 동료들이 프로젝트에 관심을 보이며 기술적인 조언을 보태기 시작했다. 희망이 보였다.

그러던 어느 날 오후, 스튜어트가 다급한 표정으로 블라디미르에게 다가와 메신저 링크 하나를 보냈다.

“블라디미르, 이것 좀 봐. 구글에서… 뭔가를 발표했어.”

링크를 클릭하자, 구글의 공식 기술 블로그 페이지가 열렸다. 페이지 상단에는 굵은 글씨로 새겨진 프로젝트의 이름이 박혀 있었다.

O3D: An Open-Source 3D Graphics API for the Web

블라디미르의 심장이 내려앉았다.
‘웹을 위한 3D 그래픽스 API.’
그가 지금껏 매달려온 목표와 정확히 일치하는 문구였다.

그는 스크롤을 내려 데모 영상을 재생했다. 화면에는 그의 초라한 삼각형과는 비교도 되지 않는, 화려하고 복잡한 3D 모델이 렌더링되고 있었다. 부드러운 금속 질감의 로봇 팔이 역동적으로 움직였고, 실시간으로 드리워지는 그림자와 반사 효과는 웬만한 데스크톱 게임에 버금가는 수준이었다.

충격이었다. 그가 이제 막 다리를 놓기 시작했을 때, 저편에서는 이미 고속도로를 개통한 것만 같은 압도적인 격차.

“역시 구글이군…”
스튜어트의 나지막한 탄성이 들려왔다.

블라디미르는 침묵 속에서 O3D의 기술 문서를 파고들기 시작했다. O3D는 개발자에게 매우 친화적인 구조를 가지고 있었다. 점과 선을 다루는 저수준(low-level) 접근 방식이 아니라, ‘장면 그래프(Scene Graph)’라는 고수준(high-level)의 개념을 도입했다. 개발자는 ‘장면을 만들고, 그 안에 구체를 추가하고, 조명을 설치한다’는 식으로 마치 영화감독처럼 3D 공간을 구성할 수 있었다. 복잡한 수학과 렌더링 파이프라인의 상당 부분을 O3D가 알아서 처리해 주는 방식이었다.

빠르고, 강력하며, 개발하기 편리했다. 블라디미르는 순간적으로 패배감을 느꼈다. 어쩌면 자신이 선택한 길이 처음부터 잘못된 것이었을지도 모른다는 의심이 고개를 들었다.

바로 그때, 그의 눈에 결정적인 단어가 들어왔다.

‘…as a browser plug-in.’
‘브라우저 플러그인으로서 동작한다.’

그 순간, 블라디미르의 머릿속을 채웠던 혼란이 안개처럼 걷혔다.
O3D는 결국 ‘용병’이었다. 지금까지 존재했던 플래시나 자바 애플릿과 본질적으로 다르지 않은 길을 선택한 것이다. 물론 이전의 용병들보다 훨씬 더 세련되고 강력했지만, 별도의 설치가 필요하고 브라우저와 완벽히 통합되지 않는다는 근본적인 한계는 그대로였다.

구글은 ‘빠른 결과’를 선택했다. 당장 개발자들이 사용할 수 있는 강력한 도구를 제공하는 실용적인 노선을 택한 것이다.

하지만 블라디미르가 추구하는 것은 달랐다.
그는 당장의 편리함보다 웹의 근본적인 철학을 지키는 것이 더 중요하다고 믿었다. 플러그인이라는 외부의 힘을 빌리지 않는 것. HTML 태그처럼, CSS 스타일처럼, 웹의 일부로서 자연스럽게 동작하는 것. 느리고 어렵더라도, 그것이 ‘옳은 길’이라고 그는 확신했다.

O3D의 등장은 그에게 좌절이 아닌, 오히려 확신을 주었다.

첫째, 웹 3D에 대한 수요가 거대 기업 구글이 직접 나설 만큼 거대하다는 것을 증명했다.
둘째, 자신과 구글이 추구하는 철학적 차이를 명확하게 보여주었다.

이것은 더 이상 한 개발자의 외로운 실험이 아니었다. 웹의 미래를 건, 거대한 두 가지 길의 경쟁이 시작된 것이다.

블라디미르는 자신의 모니터에 떠 있는 작은 삼각형을 바라보았다. 초라해 보였지만, 그는 그 안에 O3D는 가지지 못한 순수한 ‘웹의 혈통’이 흐르고 있음을 알았다.

“아직 끝나지 않았어.”

그가 나지막이 읊조렸다. 레이스는 이제 막 시작되었을 뿐이었다.