2025 . 오은

repo

VR 전시장

2023.06.01 ~ 2023.07.01

개인Next.jsThree.js
detail image
detail image
detail image

🗝️ 주요 기능 및 특징

  • - Three.js VR 공간
  • - VR 공간에 GLB 삽입
  • - 편리한 둘러보기

🤔 기술적 의사결정

  • 디바이스별 사용자 이동방식 구현
  • 데스크탑에서는 화살표와 WSAD 키로 이동할 수 있고, 모바일에서는 nipple.js를 사용하여 조이스틱 기반의 이동 기능을 추가했습니다. 이를 통해 직관적인 터치 조작이 가능하게 하여 디바이스 환경에서 일관된 사용자 경험을 제공하고자 하였습니다.

  • 다형성을 활용한 Three.js 클래스 상속
  • VR 전시장 내부의 다양한 오브젝트와 인터랙션 구현 시 Three.js의 부모 클래스를 상속하여 다형성을 적용했습니다. 이를 통해 코드 재사용성을 높이고, 각 오브젝트가 고유한 기능을 유지하면서도 공통된 부모 클래스의 기능을 공유할 수 있도록 설계했습니다.

💥 트러블 슈팅

  • 1인칭 컨트롤 구현
  • 1인칭 슈터(FPS)와 같은 사용자 조작을 지원하기 위해 Three.js의 PointerLockControls를 활용했습니다. 초기에는 사용자 움직임과 시점 변경 간의 독립적 컨트롤이 어려움을 겪었습니다. PointerLockControls의 상위 클래스인 EventDispatcher를 상속하여 각 컨트롤을 세부적으로 조작할 수 있도록 커스터마이징했습니다. 이 과정에서 특정 이벤트를 개별적으로 통제하여, 움직임과 시점 변화가 자연스럽게 연결되도록 조정하였습니다.