https://youtu.be/TcQ5v4u68g0?si=4rh0q0bS5dt_Qe6v



어떤 유튜버가 비전 프로에 있는 퀘스트 피아노 비전 비슷한 앱 비교하는 영상 올려서 한번 봤는데







일단 캘리브레이션을 해도 머리를 살짝 움직이면 바로 키랑 실제 건반 위치가 계속 틀어진다는 내용


미세한 조정이 안 되서 그런거일 수도 있는데, 특이점은 처음에 맞는가 싶다가도 머리를 움직이면 위치가 틀어진다는 점이었음




옛날에 비전 프로 스케일 매칭 관련 알고리즘 유무에 대한 의문점 얘기한 적이 있는데,

(아래 글 참조)

https://arca.live/b/vrshits/98177128







▲ 비전 프로의 패스스루 카메라는 메타 퀘스트 3의 카메라보다 덜 자연스러운 위치에 있습니다.

(실제 눈 위치랑 너무 어긋나있다는 뜻)



퀘스트의 패스쓰루와 다르게 일렁이는 왜곡이 없다는 것은 매우 신선하고 숭고하게 느껴질 수 있으며, 

대부분의 사람들이 비전 프로의 패스스루를 칭찬할 때 말하는 의미일 것입니다. 

가까이 보이는 물체가 손밖에 없는 소파에 앉아있다면 현재 보고 있는 화면이 깊이감이 맞지 않는다는 사실조차 느끼지 못할 것입니다. 



하지만 책상에 앉아 있다면 고개를 돌릴 때 눈앞의 테이블과 모니터가 가상 물체와는 다르게 이상하게 틀어진다는 것을 확실히 느낄 수 있을 것입니다. 

또한 이렇게 가까운 거리에서는 고개를 움직일 때 가상 물체와 실제 물체의 정렬이 약간 어긋나는 것을 알 수 있습니다. 

이는 트래킹 오류 때문이 아니라 비전 프로의 패스쓰루의 뎁스 매핑이 정확하지 않기 때문입니다. 



퀘스트 3을 얼굴에 썼다가 곧바로 치워버리면 현실 세계의 물체의 크기가 헤드셋을 착용했을 때 패스쓰루로 보이는 위치와 축척으로 그대로 유지되는 것을 볼 수 있습니다. 

비전 프로를 얼굴에서 들어 올리면 모든 것이 약간 오프셋된 것을 볼 수 있습니다. 

애플은 깊이와 스케일이 부정확해지는 대가로 일렁이는 왜곡 효과가 안 보이게 만든 반면, 메타는 깊이와 스케일을 우선시하는 대신 버블 왜곡이 심하게 발생하는 대가를 치렀습니다. 



(출처: UploadVR 비전 프로 리뷰)

https://www.uploadvr.com/apple-vision-pro-review/





https://youtu.be/3V__SEPobM4?si=Qtptx9taX0Mc3_ok





메타 퀘스트의 경우 패스쓰루 영상이 단순 비디오 피드가 아닌, 합성(synthetic - 뭔가를 합쳤다는게 아니라, '합성 섬유'처럼 인공적으로 만들어졌다는 의미) 이미지 뷰임


카메라로 들어온 이미지를 자체 알고리즘을 거쳐 아예 재구축을 거친 다음 눈으로 쏴주는거


이 처리 과정 때문에 추가 레이턴시가 발생하지만, 덕분에 VR 헤드셋을 썼다 벗었다 반복해보며 패스쓰루랑 현실을 비교해보면 기기에서 스케일과 뎁스가 거의 현실과 동일한 수준으로 만들어지고 있다는 것을 알아차릴 수 있음





패스쓰루+ 알고리즘 관련 내용은 아래 참조

(저전력 모바일 칩셋에서 합성 과정을 최대한 빠르게 처리하도록 최적화 하는것이 관건)

https://research.facebook.com/publications/passthrough-real-time-stereoscopic-view-synthesis-for-mobile-mixed-reality/





https://arca.live/b/vrshits/99046535



이 때문에 카메라로 들어오는 정보가 바뀔때의 대응시간/레이턴시는 퀘스트가 비전 프로보다 떨어짐


이미지를 받아서 한번 재처리 하는 과정을 거쳐야 하거든

(바이브 XR 엘리트는 3D도 아닌 단순 2D 단안 이미지만 보여주는데도 소프트웨어가 그냥 쓰레기라서 느린거고)




반면 비전 프로는 R1 이라는 전용칩 내에 리얼타임 운영체제가 패스쓰루만 전문으로 처리해서 무조건 12ms 안에 한 프레임을 끝내서 쏴주는 형식으로 되어있고, 딱히 합성 재처리 과정도 없어서 빛 자체가 카메라로 들어와서 처리하는 레이턴시가 짧음




추가적으로 패스쓰루를 위해 별개로 구동되는 리얼타임 운영체제 덕분에, 앱을 구동하는 메인 시스템이 크래시가 나도 패스쓰루는 항상 별개로 정상 작동하게 되어있음. M2 칩이랑 R1 칩 듀얼로 전기를 2배 먹어가며 시스템을 2개 돌리는거라고 봐도 무방





https://arca.live/b/vrshits/99185038

(여전히 HTC는 병신인걸 알 수 있다)



다만 카메라에 들어오는 빛을 처리하는 레이턴시가 아닌, 머리의 움직임이 반영되는 모션 레이턴시는 오히려 퀘스트가 더 뛰어난 괴상한 상황이 발생함



"엥? 카메라 처리 속도가 느린데, 왜 머리를 돌릴때 화면에 표시되는 이미지는 퀘스트가 더 빠르게 반응하지???"



이는 Asynchronous Reprojection 같은 기술을 적절히 응용하는 덕분






https://youtu.be/VvFyOFacljg?si=DbZmVASsqRYf8Zzk




위의 영상이 리프로젝션 기술의 원리 시연


렌더링 된 프레임 (혹은 패스쓰루 카메라로 들어온 이미지)는 한정되어 있음


초당 60프레임, 90프레임 등등





하지만 머리의 움직임 (위의 시연 영상에서는 마우스를 이용한 시점 이동)은 이보다 더 빠르게 움직이고, 프레임 생성률 (혹은 제한된 카메라 캡쳐 빈도)는 이를 따라오는데 한계가 있음



이 때문에 프레임이 부족해도 시점의 움직임에 맞춰 이 전 프레임 렌더링 정보를 이용해 살짝 이동시킨 시점을 생성해내 프레임 보간을 달성하는 것이 Asynchronous Reprojection 기술






단일 프레임만 이용해서 시점 이동을 하는 리프로젝션 시연


단순히 프레임 위치만 바꾸는게 아니라, 이 전에 렌더링 된 프레임의 뎁스 정보도 이용하기 때문에, 마치 얼어붙은 시점의 씬 안에서 이동하는 듯한 느낌


렌더링 되지 못 한 저 어두운 공백 부분은 실제 적용시 가장자리 정보를 스트래치 해서 매꾼다


일명 보더 스트래치





실제 프레임을 정지 시켜서 자세히 살펴본다면 스트래치 된 영역이 튀겠지만, 실제로는 매우 빠르게 지나가는 프레임의 가장자리에 불과하므로 거의 눈에 보이지 않음






퀘스트는 카메라와 눈의 물리적인 시점 차이 (중간에 디스플레이 패널을 반드시 넣어야 하기 때문에 카메라는 절대로 착용자의 눈의 정확한 XYZ 좌표상에 있을 수 없음) 극복을 위해 패스쓰루+ 알고리즘을 사용하는 것이고,


이는 실시간 뎁스 매핑 정보를 이용해 카메라가 실제 사용자의 눈의 위치에 있었으면 보였을 정확한 이미지를 시뮬레이팅 하는 것





처리된 씬 자체에 뎁스 정보도 있기 때문에 위에서 보여준 리프로젝션 타임워프 기술도 동일하게 적용 가능함


이 덕분에 퀘스트를 쓰고 머리를 빠르게 움직여도 패스쓰루 영상에 레이턴시가 너무 길게 느껴지거나 모션블러가 생기지 않는 것





https://twitter.com/fewerwrong/status/1759753963841507443



기본적으로 2012년경에 마이클 애브라시와 존 카맥은 머리 움직임과 디스플레이 움직임 표시의 지연, 즉 "모션-광자" 지연을 20ms 미만으로 유지해야 대부분의 사람이 멀미를 예방할 수 있다고 했습니다.



가장 중요한 것은 다음과 같습니다. 모션 추정 (즉, 예측) 2. 리프로젝션 (예: 비동기식 타임워프(ATW))



머리 움직임 반영 레이턴시를 최대한 낮게 유지해야 했던 가장 큰 이유는 인간이 머리 회전 레이턴시에만 극도로 민감하게 반응하기 때문입니다. 리프로젝션은 기본적으로 완벽한 방식으로 머리 회전 레이턴시에 대한 내성을 크게 증가시킵니다.


(번역은 아래 글 참조)

https://arca.live/b/vrshits/99430746







어떻게 보면 퀘스트는 씬에 대한 뎁스 정보를 이용해서


1. 현실과 1:1 스케일의 정확한 패스쓰루 이미지 재구축

2. 뎁스 정보를 활용한 빠른 머리 움직임 리프로젝션으로 낮은 모션 레이턴시 달성



...이 있지만, 최대한 빠른 뎁스 재구축을 위해 뎁스맵이 굉장히 러프하며, 이로 인해 카메라와 눈의 시점차가 가장 극대화되는 근거리 물체에 대해 울렁거리는 왜곡이 발생







비전 프로는 고해상도 카메라에, 재처리 없이 그냥 빠르게 카메라 피드만 보내줘서 저지연에 울렁임은 없는 패스쓰루 달성




하지만,


1. 재처리가 없어서, 머리를 움직이면 카메라와 눈 사이의 거리에서 발생하는 parallax 차이 때문에 상이 이상하게 움직임

(위의 짭 피아노 비전 짤에서 가상 건반이 머리를 움직일 때 마다 계속 틀어지면서 현실 건반에 매칭이 안 되는 이유)


2. 현실의 뎁스 정보와 카메라로 보이는 뎁스 정보가 달라서, 헤드셋을 쓰고 벗으면 스케일감 괴리감이 이상하게 느껴짐


3. 리프로젝션이 제대로 없이 단순 카메라 피드만 이용해 머리 움직임에 대응하다보니 레이턴시로 인해 머리를 돌릴때의 모션 블러가 매우 심각해짐






https://youtu.be/obmeuUjW-iQ?si=ASDyUTB0VjuS4UHf&t=182



실제로도 특정 리뷰에서, 3:00 부터,


"뎁스 인식이 정확하지 않았다"

"테이블에 있는 폰을 잡을때, 마치 물 속에 있는 폰을 보고 잡는것 처럼 실제 위치가 이상하게 느껴졌다"

"일단 카메라로 보이는 손을 움직여가며 잡을수 있기야 하지만, 뭔가 실제와 맞지 않는다는 느낌이 든다"


...라고 하는 증언이 있음





일단 카메라로 뭐가 보이니 거기에 반응 자체는 할 수 있는데,


뎁스가 현실과 완전 어긋나 있다보니 괴리감이 드는 것


이 때문에 현실을 투영하는 '트루 패스쓰루'라고 부르기 어렵게 됨


이는 앞서 따로 인용했던 레딧 후기랑 업로드VR 리뷰 내용이랑 일치함







...참고로 퀘스트3도 전면 하단 흑백 카메라 중 하나를 막으면 카메라를 이용한 뎁스 추정이 불가능하게 됨


이를 이용해 뎁스 맵 생성이 아예 불가능하게 만들어서, 패스쓰루+ 알고리즘이 적용이 안 되게 무력화가 가능





이 방법을 이용하면 사람들이 불평하는 "울렁거림"이 없는 패스쓰루를 체험 가능


이를 이용하면 비전 프로로 보이는 패스 쓰루가 어떨지, 뎁스 보정이 제대로 안 된 패스쓰루의 단점을 간접 체험 가능


단, 비전 프로도 아마 아이트래킹 이용해서 단순 이미지 쉬프팅을 통한 어느정도의 parallax 보정은 들어갔을 수 있어서 완벽하게 동일하진 않을수도


(물론 그렇게 해도 미봉책에 불과하지만)









궁금한건,

애플이 WWDC에서 visionOS 2.0 버전을 내면서 이거를 과연 고칠까? 하는 의문


일단

1. 패스쓰루 레이턴시가 재구축 과정에서 증가하면서, 자신들이 홍보하던 12ms 레이턴시를 타협해야 할 수도

2. 뎁스 보정 과정에서 근거리 오브젝트 주변에 많든 적든 일렁이거나 떨리는 아티팩트가 발생할 수 있음



이런 문제가 있어서, 그냥 패스쓰루 자체가 깔끔하게 보이기만 해서 '완벽함'이라는 착시를 주려면 아예 포기할 수도 있음





다만 위의 짭 피아노 비전 짤에서도 볼 수 있다시피, 실제 현실과 제대로 1:1 매칭이 되는 AR/MR 구현을 위해서는 장기적으로 해결해야 할 필연적 문제









메타의 CTO: "퀘스트 3 패스스루는 소프트웨어 업데이트를 통해 시간이 지남에 따라 '완만하게' 개선될 것입니다."

https://arca.live/b/vrshits/89605014



메타 퀘스트의 경우에는 알고리즘 최적화를 통해 뎁스맵 생성을 좀 더 빠르고 정확하게 만들면 가능하긴 한데, 성능 한계도 있고 해서 이런 방법으로는 극적으로 개선하는 것 자체는 어렵긴 함



퀘스트 프로는 뎁스 매핑 포인트가 프레임당 10000개 밖에 안 되고, 퀘스트3는 거기서 좀 더 늘었을진 몰라도 아직 완벽한 뎁스 맵핑이 안 됨


이 때문에 인공 신경만 이용하는 뉴럴 패스쓰루나, 라이트필드 캡쳐 이용하는 플라메라 등등도 연구하는 것








퀘스트 같은 경우 핸드 오클루전 및 다이나믹 오클루전에 이 이미지 재구축에 사용되는 러프한 뎁스맵을 이용함


이를 통해 손 주변에 형성된 저해상도 뎁스맵의 대략적 형태를 엿볼 수 있음



재구축 된 이미지 (카메라로 보이는 근거리의 손 이미지) 자체가 재구축을 거쳐 울렁거리는 형태가 되기 때문에, 이미지와 뎁스맵이 완벽하게 일치가 될 정도의 수준까지 가려면 상당한 연산력이 필요








반면 비전 프로는 애초에 뎁스맵이나 이미지 재구축 자체가 필요하지 않다보니,


막말로 포토샵에서 누끼따는 것 처럼 손 이미지만 인식해서 사진에서 손만 누끼따는 것 과 같은 작업만 하는 것으로 핸드 오클루전을 퉁치는 것으로 보임








즉, 어떻게 보면 Nvidia Broadcast에 있는, 그린 스크린 없이 특정 사물 윤곽선 누끼만 따는 이미지 인식에만 의존하는 방식일 것이라는 추측



(어디까지나 개인적인 추측이긴 하지만, R1 칩의 리얼타임 OS를 거쳐 지연 없이 패스쓰루로 들어온 이미지를 이후 메인 OS단에서 ARkit 이용해서 이미지 인식만 통해 누끼를 따는게 아닌가 싶은. 이 때문에 빠른 움직임에서 누끼 따는 부분에서 패스쓰루는 계속해서 다음 프레임을 지연 없이 쏴주고 있는데, 메인 OS단에서는 한박자 늦게 누끼를 따다보니 지연이 발생하는거고)




웃기게도 이 때문인지 비전 프로는 손에 다른 사물을 들고 있으면, 사물은 오클루전이 안 되고 진짜로 '손이 보이는 부분'만 오클루전이 되는 괴랄한 현상이 발생


뎁스맵 기반이 아닌 단순 '손이라는 이미지 인식'만 하기 때문이라는 추측이 맞다면 이해가 감








비전 프로의 저열한 핸드 트래킹 성능 보여주면 꼭


"아니, 손 오클루전을 이렇게 잘 따는데, 이건 거짓이다! 비전 프로는 핸드 트래킹을 기가막히게 하고 있는거다!"

이러는데,


모든 추측을 종합해보면, 비전 프로의 핸드 오클루전은 그냥 이미지 세그멘테이션이라는 영역일 뿐이지, 진짜 핸드 트래킹이라는 관련이 없음





솔직히 이럴거면 메타도 뎁스맵이랑 1:1 매칭 전부 포기하고 Sement Anything Model 같은 자사 이미지 세그멘테이션 AI 모델 이용해서 카메라 이미지에 손 윤곽선 누끼만 따는 간단한 방식으로 만드는, 애플과 동일한 꼼수 쓰는것도 가능함


근데 퀘스트는 현재 1:1 패스쓰루 구현하느라 이미지 자체에 일렁임이 있어서 지금으로는 세그멘테이션 적용 자체가 넌센스인거고


물론 특정 방향으로 개선하면 어떻게든 둘 다 중간 지점에서 만나게 되긴 할듯