Home
home

동기화

sync

sync는 세션에 참여 중인 멤버들과 작업을 동기화하고 서로의 pose를 동기화하고, 음성 채팅, 스크린 쉐어링, 환경 메쉬 쉐어링 등의 기능들을 제공하는 컴포넌트이다.
작업 동기화
씬 내부의 오브젝트 중 id를 갖는 모든 오브젝트에 대한 트랜스폼, 컴포넌트, 하이어러키의 변경을 서버를 통해 중계하여 동기화한다. 이때 각 작업에 대하여 쓰기 권한 검사를 수행하고 적법한 작업들만 중계한다.
유저 pose 동기화
같은 워크스페이스 세션에 접속한 유저들의 세션명, 포지션, 로테이션이 서버를 통해 중계되어 실시간 동기화된다. 중간에 참여한 유저에게도 기존 유저들의 데이터를 보내준다.
음성 채팅(WebRTC, P2P)
같은 워크스페이스 세션에 접속한 모든 피어 쌍은 WebRTC 커넥션을 맺는다. 이를 통해 유저간 음성채팅을 지원한다. 3D모드 또는 AR모드에서 뷰포트 좌측 상단에 보이스 송출을 켜고 끌 수 있는 토글 버튼이 주어진다.
AR 유저 화면 쉐어링(WebRTC, P2P)
AR 모드에서는 다른 유저들에게 주변 환경 및 실물을 공유할 수 있다. 크게 두 가지 방식이 지원되며 그 중 하나는 AR 유저가 기기를 통해 보고 있는 화면을 캐스팅하는 것이다. 선점형 토큰을 통해 동시에 한명의 유저만 캐스팅할 권한을 갖게된다.
AR 환경 메쉬 쉐어링(WebRTC, P2P)
앞서 말한 두 가지 방식 중 나머지 하나는 뎁스 맵과 컬러 맵으로 구성한 포인트 클라우드를 스트리밍하는 방식이다. 마찬가지로 선점형 토큰을 통해 동시에 한 명의 유저만 캐스팅할 권한을 갖게되며 이 토큰은 화면 쉐어링에서의 토큰과 같은 것이다.

avatar

아바타 컴포넌트는 캐릭터 모델과 이름표를 표현하는 컴포넌트이다. sync를 통해 다른 유저를 보여줄 때 사용된다. 이름표는 바라보는 사람에게 정면으로 보이도록 자동으로 회전되며 일정 거리를 벗어나면 렌더링하지 않도록 되어있다.
{ modelPath : {type : 'string'}, name : {type : 'string'} }
JavaScript
복사
스키마는 위와 같다. modelPath는 아바타 3D 모델의 URI이고, name은 이름표에 들어갈 이름이다. sync컴포넌트에 의해 자동으로 관리되는 아바타에는 각 피어가 프로필에서 설정한 프리셋 아바타와 각 피어의 계정 이름이 들어간다.

interaction-manager

interaction-manager는 3D, VR, AR 모드에서 발생한 작업들을 일관된 포맷으로 래핑하여 sync 컴포넌트에게 전달해주는 역할을 하는 컴포넌트이다. 더불어 로컬 작업에 대한 undo, redo를 수행 할 수 있도록 작업 히스토리를 저장하기도 한다.