브라우저 위의 페라리 — Three.js 3D 쇼룸 사이트 제작기

클라이언트의 요청: "온라인에서도 쇼룸 경험을 느끼게 해주세요"

럭셔리 자동차 브랜드의 쇼룸은 단순한 전시 공간이 아닙니다. 조명, 소재의 질감, 차량을 둘러보는 동선까지 모든 것이 브랜드 경험의 일부죠. ROSSO 프로젝트의 시작은 이 물리적 경험을 웹 브라우저 안으로 옮겨달라는 도전적인 요청이었습니다. 단순히 사진 몇 장 나열하는 페이지가 아니라, 사용자가 직접 차량을 360도 돌려보고, 원하는 색상을 입혀볼 수 있는 인터랙티브 쇼룸을 만들어야 했습니다.

기술 선택: 왜 Three.js + GLB 조합이었나

웹에서 3D를 구현하는 방법은 여러 가지가 있지만, 저희는 Three.js를 ES Module 방식으로 도입하고 3D 모델 포맷으로 GLB를 선택했습니다. GLB는 glTF의 바이너리 버전으로 텍스처, 메시, 애니메이션을 하나의 파일에 담을 수 있어 로딩 효율이 뛰어납니다. 별도의 빌드 도구 없이 브라우저의 importmap 기능을 활용해 Three.js 모듈을 로드했기 때문에 기존 Laravel + 바닐라 JS 환경과의 호환성도 완벽했습니다.

HDR 환경맵으로 완성하는 현실감

자동차 렌더링에서 가장 중요한 것은 반사입니다. 차체 도장의 광택, 유리창에 비치는 주변 환경, 크롬 파츠의 반짝임 — 이 모든 것이 환경맵 품질에 달려 있습니다. 저희는 HDR 환경맵을 적용하고 GroundedSkybox 기법으로 차량이 실제 공간 위에 놓인 것처럼 자연스러운 그림자와 반사를 구현했습니다. 이 한 단계 차이가 "3D 모델을 보여주는 페이지"와 "진짜 쇼룸 같은 경험" 사이를 가르는 핵심이었습니다.

실시간 컬러 체인저 구현기

쇼룸 경험의 하이라이트는 실시간 컬러 피커였습니다. 사용자가 색상을 선택하면 차체 머티리얼의 색상이 즉시 변경됩니다. 기술적으로는 GLB 모델의 메시를 순회하며 차체에 해당하는 머티리얼만 선별적으로 색상을 교체하는 방식입니다. 여기서 주의할 점은 metalness와 roughness 값을 색상과 함께 조정해야 한다는 것입니다. 단순히 color만 바꾸면 플라스틱 장난감처럼 보일 수 있거든요. 메탈릭 레드, 무광 블랙, 펄 화이트 등 각 컬러마다 재질 파라미터를 다르게 설정하여 현실적인 도장 느낌을 살렸습니다.

성능 최적화: 럭셔리함은 빠르게

3D 콘텐츠가 아무리 멋져도 로딩에 10초가 걸리면 사용자는 떠나버립니다. 특히 럭셔리 브랜드 사이트에서 버벅임은 브랜드 이미지에 치명적이죠. 저희는 몇 가지 최적화를 적용했습니다. GLB 모델은 Draco 압축으로 용량을 줄이고, 텍스처 해상도를 디바이스 성능에 따라 분기 처리했습니다. 로딩 중에는 브랜드 로고를 활용한 세련된 프로그레스 인디케이터로 대기 시간마저 브랜드 경험으로 전환했습니다.

프로젝트를 마치며

ROSSO 프로젝트는 "웹사이트도 공간이 될 수 있다"는 가능성을 보여준 작업이었습니다. 전통적인 이미지 기반 웹사이트가 정보를 전달하는 데 그친다면, 3D 인터랙티브 쇼룸은 사용자를 브랜드 세계관 안으로 초대합니다. 물론 모든 프로젝트에 3D가 필요한 것은 아닙니다. 하지만 제품의 물성과 디테일이 중요한 럭셔리 브랜드, 자동차, 부동산 등의 분야에서는 확실히 차별화된 경험을 만들 수 있습니다. CYAN에서는 이런 기술적 도전을 통해 클라이언트의 브랜드 가치를 디지털 공간에서도 온전히 전달하는 것을 목표로 하고 있습니다.