'Myst' PlatoBlockchain 데이터 인텔리전스에서 손 추적의 설계 및 구현. 수직 검색. 일체 포함.

'미스트'의 핸드트래킹 설계 및 구현

사용 Presence Platform의 업그레이드된 Hand Tracking API, 가장 최근 업데이트로 손 추적을 도입했습니다. 미스트 메타 퀘스트 플랫폼에서 'Hands & More'라는 제목으로. 마침내 사람들이 게임을 할 수 있게 되어 매우 기쁩니다. 미스트 물리적 컨트롤러가 없는 퀘스트에서! 이 게시물에서 우리는 핸드 트래킹 구현의 진화와 반복에 대해 논의할 것입니다. 미스트—특히 Unreal Engine 4.27.2에서 이에 대한 지원을 추가했습니다.

'Myst' PlatoBlockchain 데이터 인텔리전스에서 손 추적의 설계 및 구현. 수직 검색. 일체 포함.Hannah Gamiel의 게스트 기사

Hannah Gamiel은 개발 이사입니다. 청록색—원작 뒤에 스튜디오 '미스트' 게임을 개발하고 새로운 '미스트 (2020)' VR 지원이 포함되어 있습니다. 원래 순전히 기술적인 배경에서 온 그녀는 현재 모든 타이틀의 프로덕션을 이끌고 Cyan에서 비즈니스 및 기술 노력을 관리합니다. 그녀는 'Myst'(2020), 'The Witness', 'Braid, Anniversary Edition', 'Obduction', 'Firmament'(출시 예정!) 등과 같은 타이틀을 작업했습니다.

설계 단계 및 고려 사항

손 추적을 위한 탐색 설계

가고 싶은 곳을 나타내는 그림. 가리키는 것을 생각했을 것입니다. 맞죠? 그래서 우리는 이동에 '포인팅' 방법을 사용하기로 결정했습니다. 미스트.

텔레포트 모드에 있을 때 가고자 하는 곳을 가리키면 목적지에 텔레포트 링이 나타납니다. '포인팅 해제'(나머지 손가락을 펴거나 포인터 손가락을 손바닥으로 다시 당겨)하면 순간 이동이 실행됩니다.

부드러운 움직임 모드에 있을 때 자유 움직임을 주로 사용하는 손(컨트롤 설정에서 구성할 수 있지만 기본적으로 왼손)으로 가리키면 가리키는 방향으로 부드럽게 움직이기 시작합니다.

포인팅으로 움직임을 테스트할 때 나머지 손에 의해 가려질 때 포인터 손가락과 중지로 손 추적을 신뢰할 수 없는 경우가 있음을 발견했습니다. 시스템은 그 손가락이 완전히 가리키고 있는지 아니면 손에 완전히 '포함'되어 있는지 확실하지 않습니다. 우리는 이 전면에서 보다 안정적인 이동 시작/실행을 설명하기 위해 코드에 약간의 '퍼지' 요소를 추가했습니다. 언리얼 엔진에서 지원합니다.

선회

'point' 방법은 모든 탐색 용도에서 작동하지 않습니다. 회전과 관련하여 처음에는 포인팅과 손목 회전을 결합했습니다. 플레이어의 손목과 카메라의 전방 벡터를 비교하면 회전 방향(그리고 회전이 얼마나 커야 하는지)을 나타낼 수 있습니다. 모든 모드 사이에서 탐색을 위한 '포인팅' 테마를 유지하는 것이 직관적인 것처럼 보였기 때문에 처음에 이것을 시도했습니다.

그러나 컴포트 테스트에서 합병증이 발생했습니다. 플레이 테스트에서 대부분의 플레이어는 손바닥이 땅을 향하도록 앞으로 가리키며, 게임 외부의 무언가를 가리키려고 할 때도 마찬가지입니다. 손바닥이 지면을 향하게 하는 동안 손목을 왼쪽과 오른쪽(손목의 위쪽 축을 중심으로)으로 회전시키는 것은 어려운 일이며 특히 가슴에서 멀어지려고 할 때 움직임 범위가 매우 제한적입니다.

이 문제는 플레이어에게 손바닥이 안쪽을 향하게 하여 앞에 있는 무언가를 가리키도록 요청한 경우에도 동일합니다. 손목을 구부릴 수 있습니다 방향 하지만 손목을 몸에서 구부리는 것과 같은 동작 범위를 얻지는 못할 것입니다.

그래서 우리는 이것을 어떻게 해결했습니까? 우리는 결국 포인터를 가리키는 제스처 대신 '엄지손가락을 위로' 제스처로 회전을 할당했습니다.

엄지손가락을 치켜든다고 상상해보세요. 이제 손목을 좌우로 돌립니다. 움직임의 범위가 넓지 않더라도 이 제스처에서 엄지손가락으로 '왼쪽'과 '오른쪽'을 가리키는 것은 여전히 ​​상당히 일관적입니다.

이것이 우리가 손 추적 모드로 전환하기로 결정한 것입니다. 엄지손가락으로 가리키는 것이 회전하는 가장 직관적인 방법처럼 보이지는 않지만 가장 편안하고 일관된 방법이 됩니다.

스냅 회전을 사용하면 엄지손가락을 위로 올린 위치에서 손목을 왼쪽이나 오른쪽으로 돌리면 단일 스냅 회전이 시작됩니다. 그런 다음 스냅을 재설정하려면 손을 '중앙'(직선) 위치로 되돌려야 하며 추가로 스냅 턴을 다시 시작하기 위해 매우 짧은 쿨다운이 발생할 때까지 기다려야 합니다.

부드러운 회전과 함께 엄지손가락을 위로 올린 위치에서 손목을 돌리면 임계값을 통과할 때까지 회전이 발생하지 않도록 하는 '데드존'을 벗어나면 왼쪽 또는 오른쪽으로 회전하기 시작합니다.

움직임 및 개체 상호 작용 포즈 간의 충돌 처리

물론, 손가락을 가리키는 것은 탐색에만 사용된다고 가정하기에는 너무 광범위한 제스처입니다. 사람들은 습관이나 자신의 기대에 따라 버튼을 누르거나 세상의 다른 것들과 상호 작용하기 위해 동일한 가리키는 제스처를 만들 것입니다. 걸어가는 것은 꽤 거슬릴 것입니다(그러나 연락해주세요 최대) 버튼을 누르고 손가락을 가리키도록 한 다음 갑자기(그리고 원치 않게) 게임 내에서 버튼에 더 가까이 이동합니다(또는 의도하지 않게 순간이동을 시작함)!

플레이어가 무언가와 상호 작용하는 동안 움직임이 발생하는 것을 방지하는 방법은 '이동' 제스처를 만드는 손이 상호 작용 가능한 개체의 특정 범위 내에 있을 때 움직임 코드가 실행되는 것을 방지하는 것입니다. 이 범위는 플레이 테스트를 기반으로 좋은 '스위트 스폿'에 도달하기 위해 여러 번 조정되었습니다.

우리는 이 스위트 스폿이 집게 손가락 끝 뼈의 세계 공간 위치에서 약 25cm 떨어져 있음을 발견했습니다. 미스트 넓은 열린 공간과 좁은 복도에 배열된 다양한 크기(작은 버튼에서 매우 큰 레버에 이르기까지 모든 것)의 대화형 개체로 가득 차 있으므로 이 숫자를 결정하는 데 상당한 테스트가 필요했습니다. 처음에는 60cm(약 25피트)를 시도했지만 플레이어가 여전히 개체에 더 가까이 다가가야 할 때 움직임이 발생하지 않도록 했습니다. 마찬가지로, XNUMXcm 미만의 모든 것은 플레이어가 물체를 잡거나 만지려고 할 때 원하지 않는 플레이어 움직임을 유발했습니다.

우리가 가장 잘 테스트한 곳 중 하나는 Myst Island의 발전기실이었습니다. 좁은 입구를 통과하면 버튼으로 가득 찬 패널이 즉시 반겨줍니다. 상호 작용 테스트 영역이 너무 크면 검지 범위 내의 버튼이 감지되어 플레이어가 항목을 통해 패널 쪽으로 이동할 수 없었습니다.

즉, 25cm가 특히 효과적이었습니다. 미스트. 다른 게임에서는 자체 기준을 염두에 두고 비슷한 것을 구현하려는 경우 이 수치를 조정해야 할 수도 있습니다.

손 추적을 위한 개체 상호 작용 설계

지금 당장 잡을 수 있는 모든 상호작용은 미스트 밸브 돌리기, 문 열기, 버튼 누르기, 책 페이지 넘기기 등 손 추적과 함께 작동하도록 제작되었습니다.

우리가 이미 설정한 것을 피기백하는 상호 작용 미스트 터치 컨트롤러로. 여기에서 그립 버튼을 누르면 손을 주먹에 넣거나(비어 있는 경우) 물체를 잡는 '잡은' 자세로 게임 내 메시 표현이 자동으로 혼합됩니다. 손 추적을 사용하면 손가락을 구부려 무언가를 '잡아' 이전에 언급한 것과 동일한 논리를 시작할 수 있을 때 적절한 추측을 할 수 있는 코드가 추가되었습니다.

예를 들어, 손 추적을 사용 중이고 잡을 수 있는 것 위로 손을 가져가면 손 색상이 주황색으로 바뀝니다. 미스트 VR도 마찬가지). 손가락으로 주먹을 쥐기 시작하여 상호 작용 가능한 개체를 잡을 때 주황색 구가 손 메쉬를 대체하고 손이 개체에 부착된 위치를 나타냅니다.

우리가 손을 위한 맞춤형 포즈 가능한 메시를 만드는 대신(또는 손/손가락이 이러한 개체의 일부와 물리적으로 상호 작용하는 것처럼 보이게 하는) 이 방법을 사용하는 이유는 상호 작용이 우리가 제공하는 것과 동등하기를 원했기 때문입니다. 지금은 터치 컨트롤러 쪽입니다.

버튼을 누르는 것은 다르게 작동합니다. 버튼은 잡을 수 있는 개체가 아니므로 추상화할 필요가 없으며 대신 포즈 가능한 손 메쉬의 각 손가락 관절 사이에 생성된 캡슐 충돌기를 사용하여 버튼을 누르기만 하면 됩니다. 이 덕분에 모든 종류의 이상하고 재미있는 일을 할 수 있습니다. 예를 들어 정말로 원할 경우 새끼손가락이나 약지의 손가락 관절만 사용하여 게임의 모든 버튼과 상호 작용하는 것과 같은 것입니다.

이 구현은 터치 컨트롤러가 게임의 버튼과 상호 작용하는 방식과 약간 다릅니다. 일반적으로 플레이어가 컨트롤러의 그립 버튼을 사용하여 정확한 게임 내 버튼을 얻기 위해 손을 포즈를 취한 '손가락 포인팅' 메시로 설정하기를 기대한다는 점입니다. 그들의 끝을 누르십시오. 손 추적을 사용하면 손으로 만들 수 있는 포즈의 유연성이 훨씬 더 높아져 동일한 수준의 정확도로 버튼을 누르는 방법이 훨씬 더 다양해집니다.

메뉴/UI 상호 작용

메뉴와 상호 작용하기 위해 우리는 Meta가 Quest Platform에 사용하는 것과 동일한 상호 작용 패러다임을 사용하게 되었습니다. 즉, 엄지와 검지 사이의 두 손가락 핀치입니다. 이것은 게임 내 메뉴를 열고 메뉴의 요소와 상호 작용하는 데 모두 사용할 수 있습니다. 플레이어가 Quest에서 처음으로 핸드 트래킹을 활성화할 때 OS 수준 메뉴에서 이 작업을 수행하도록 이미 배웠을 때 여기에서 휠을 재발명하는 것은 의미가 없습니다!

이 모든 것을 플레이어에게 전달하기

손 추적은 Quest에서 Touch 컨트롤러만큼 일반적인 입력이 아니며 게임을 하는 사람들이 있을 수 있기 때문에 미스트 우리는 처음으로(또는 그들의 첫 VR 게임을 플레이하기까지!) 핸드 트래킹에 대한 이 모든 정보를 플레이어에게 전달하는 방법에 대해 사려 깊게 노력했습니다. 우리는 핸드 트래킹 상호 작용을 설명하기 위해 특별히 조정된 "컨트롤러 다이어그램"의 다른 버전을 포함해야 했습니다. 미스트), 그리고 플레이어에게 손으로 이동하는 방법을 정확히 알려주는 특수 알림을 표시합니다.

또한, 활성화되면 플레이어에게 원활한 손 추적 경험을 제공하는 방법을 상기시키는 것이 중요하다고 생각했습니다. 플레이어는 다음에서 알림을 받습니다. 미스트의 메뉴에 따르면 손 추적 안정성은 조명이 밝은 방에 있고 시야 내에 손을 유지하면 훨씬 더 좋습니다.

Meta는 또한 플레이어에게 이것이 잘 추적된 핸드 트래킹 환경의 핵심임을 알려줍니다. 그러나 일부 플레이어는 이에 대한 Meta의 통지를 먼저 분석하지 않고 게임에 뛰어들 수 있다는 점을 알고 있으므로 사람들이 잊어버린 경우를 대비하여 상기시키기로 결정했습니다.

2페이지에서 계속: 언리얼 엔진 수정 »

타임 스탬프 :

더보기 VR로가는 길