달착륙선Lunar Module

참고

이 문서에서는 혼합 현실 앱 개발에 대 한 학습 정보 및 제안을 공유 하는 위치를 혼합 현실 디자인 랩에서만든 예비 샘플에 대해 설명 합니다.This article discusses an exploratory sample we’ve created in the Mixed Reality Design Labs, a place where we share our learnings about and suggestions for mixed reality app development. 디자인 관련 문서와 코드는 새로운 검색을 수행할 때 개선 됩니다.Our design-related articles and code will evolve as we make new discoveries.

음력 모듈 은 Microsoft의 혼합 현실 디자인 랩에서 오픈 소스 샘플 앱입니다.Lunar Module is an open-source sample app from Microsoft's Mixed Reality Design Labs. 양손 추적 및 Xbox 컨트롤러 입력을 사용 하 여 HoloLens의 기본 제스처를 확장 하 고, 표면 매핑 및 평면 찾기에 반응 하는 개체를 만들고, 간단한 메뉴 시스템을 구현 하는 방법을 알아봅니다.Learn how to extend HoloLens' base gestures with two-handed tracking and Xbox controller input, create objects that are reactive to surface mapping and plane finding, and implement simple menu systems. 모든 프로젝트의 구성 요소는 혼합 현실 앱 환경에서 사용할 수 있습니다.All of the project's components are available for use in your own mixed reality app experiences.

데모 동영상Demo video

혼합 현실 캡처를 사용 하 여 HoloLens 2로 기록 됨Recorded with HoloLens 2 using Mixed Reality Capture

Windows Mixed Reality의 클래식 환경 재고Rethinking classic experiences for Windows Mixed Reality

높은 대기 중에는 아래에서 연상 된 아폴로 모듈의 작은 배송을 위한 작은 배송이 있습니다.High up in the atmosphere, a small ship reminiscent of the Apollo module methodically surveys jagged terrain below. Fearless 파일럿은 적절 한 방문 영역을 말합니다.Our fearless pilot spots a suitable landing area. 이는 단절 하지만 다행히 이전에는 여러 번 수행 되었습니다.The descent is arduous but thankfully, this journey has been made many times before...

Atari의 1979 음력 Lander 원본 인터페이스Original interface from Atari’s 1979 Lunar Lander
Atari의 1979 음력 Lander 원본 인터페이스Original interface from Atari’s 1979 Lunar Lander

음력 Lander 는 플레이어가 초승달 Lander을 평평한 지형을 위한 조종사를 시도 하는 아케이드 클래식입니다.Lunar Lander is an arcade classic where players attempt to pilot a moon lander onto a flat spot of lunar terrain. 1970 년대에 태어난 모든 사용자는 plummeting에서이 벡터 선박에 붙은 눈 들과 함께 아케이드에서 많은 시간에 소요 될 가능성이 높습니다.Anyone born in the 1970s has most likely spent hours in an arcade with their eyes glued to this vector ship plummeting from the sky. 플레이어는 랜딩 영역에 대 한 배송을 탐색할 때 점점 더 자세히 표시 되도록 지형 크기를 조정 합니다.As a player navigates their ship toward a landing area, the terrain scales to reveal progressively more detail. 성공은 가로 및 세로 속도의 안전 임계값 내에서 시작 됨을 의미 합니다.Success means landing within the safe threshold of horizontal and vertical speed. 지점은 방문 영역 크기에 따라 승수를 사용 하 여 착륙 하는 데 걸린 시간 및 남아 있는 연료에 대해 획득 됩니다.Points are awarded for time spent landing and remaining fuel, with a multiplier based on the size of the landing area.

게임 플레이와는 별도로 게임의 아케이드 연대는 컨트롤 체계의 지속적인 혁신을 가져왔습니다.Aside from the gameplay, the arcade era of games brought constant innovation of control schemes. 가장 간단한 4 방향 조이스틱 및 단추 구성 (아이콘 Pac에서 볼 수 있음)에서 늦은 90 s 및 분 00 초 (golf 시뮬레이터 및 레일 shooters의 경우)에 표시 되는 매우 구체적이 고 복잡 한 스키마를 확인 합니다.From the simplest four-way joystick and button configurations (seen in the iconic Pac-Man) to the highly specific and complicated schemes seen in the late 90 s and 00s (like those in golf simulators and rail shooters). 음력 Lander 컴퓨터에서 사용 되는 입력 체계는 두 가지 이유 (연석, intriguing, 집중 교육)입니다.The input scheme used in the Lunar Lander machine is intriguing for two reasons: curb appeal and immersion.

Atari의 음력 Lander의 아케이드 콘솔Atari’s Lunar Lander’s arcade console
Atari의 음력 Lander 아케이드 콘솔Atari's Lunar Lander arcade console

Atari와 기타 많은 게임 회사에서 입력을 계속 하는 이유는 무엇 인가요?Why did Atari and so many other game companies decide to rethink input?

아케이드를 통한 어린이는 자연스럽 게 최신의 flasintrigued est 컴퓨터를 통해 자연스럽 게 발생 합니다.A kid walking through an arcade will naturally be intrigued by the newest, flashiest machine. 하지만 음력 Lander는 novel 입력 정비공를 제공 합니다.But Lunar Lander features a novel input mechanic that stood out from the crowd.

음력 Lander는 운송지 왼쪽과 오른쪽 및 위한 것 레버 를 회전 하는 두 가지 단추를 사용 하 여 배송이 생성 하는 위한 것의 양을 제어 합니다.Lunar Lander uses two buttons for rotating the ship left and right and a thrust lever to control the amount of thrust the ship produces. 이 레버는 일반 조이스틱이 제공할 수 없는 특정 수준의 finesse를 사용자에 게 제공 합니다.This lever gives users a certain level of finesse a regular joystick can’t provide. 또한 현대 aviation routine cockpits에 공통적인 구성 요소 이기도 합니다.It also happens to be a component common to modern aviation cockpits. Atari를 사용 하는 것은 음력 Lander에서 사용자를 컨퍼런스 하는 것이 사실입니다.Atari wanted Lunar Lander to immerse the user in the feeling that they were in fact piloting a lunar module. 이 개념을 tactile 집중 교육 이라고 합니다.This concept is known as tactile immersion.

Tactile 집중 교육는 반복적인 작업을 수행할 수 있는 토대로 피드백의 경험입니다.Tactile immersion is the experience of sensory feedback from doing repetitive actions. 이 경우 눈에 표시 되는 제한 레버와 회전을 조정 하는 반복적인 작업을 통해 플레이어를 초승달의 표면에 선으로 연결 하는 작업에 연결할 수 있습니다.In this case, the repetitive action of adjusting the throttle lever and rotation, which our eyes see and our ears hear, helps connect the player to the act of landing a ship on the moon’s surface. 이 개념은 "flow"의 심리학 개념에 연결 될 수 있습니다.This concept can be tied to the psychological concept of "flow." 사용자가 과제와 보상의 적절 한 조합이 있는 작업에 완전히 흡수 되거나 보다 간단 하 게 배치 되는 경우 "영역에" 있습니다.Where a user is fully absorbed in a task that has the right mixture of challenge and reward, or put more simply, they’re “in the zone.”

혼합 현실에서 가장 두드러진 형식의 집중 교육는 공간 집중 교육입니다.Arguably, the most prominent type of immersion in mixed reality is spatial immersion. 혼합 현실의 전체 지점은 이러한 디지털 개체가 실제 세계에 믿는 것 하는 것입니다.The whole point of mixed reality is to fool ourselves into believing these digital objects exist in the real world. Microsoft는 환경에서 synthesizing holograms, 전체 환경 및 환경에서 공간적으로 사용 하 고 있습니다.We’re synthesizing holograms in our surroundings, spatially immersed in entire environments and experiences. 이는 Atari가 음력 Lander의 tactile 집중 교육를 사용 하는 것 처럼 microsoft 환경에서 다른 유형의 집중 교육을 계속 사용할 수 있다는 의미는 아닙니다.This doesn’t mean we can’t still employ other types of immersion in our experiences just as Atari did with tactile immersion in Lunar Lander.

집중 교육를 사용 하 여 디자인Designing with immersion

Tactile 집중 교육를 Atari 클래식에 업데이트 된 대규모 sequel에 적용 하려면 어떻게 해야 하나요?How might we apply tactile immersion to an updated, volumetric sequel to the Atari classic? 입력 체계를 주요 당면 하기 전에 3 차원 공간에 대 한 게임 생성을 처리 해야 합니다.Before tackling the input scheme, the game construct for three-dimensional space needs to be addressed.

HoloLens에서 화면 매핑 시각화Visualizing surface mapping in HoloLens
HoloLens의 공간 매핑 시각화Visualizing spatial mapping in HoloLens

사용자의 환경을 활용 하 여 음력 모듈을 사용 하기 위한 무한 지형 옵션을 효과적으로 사용할 수 있습니다.By leveraging a user’s surroundings, we effectively have infinite terrain options for landing our lunar module. 게임을 원래 제목과 비슷하게 만들려면 사용자가 잠재적으로 환경에서 다양 한 문제에 대 한 랜딩 패드를 조작 하 고 저장할 수 있습니다.To make the game most like the original title, a user could potentially manipulate and place landing pads of varying difficulties in their environment.

음력 모듈 비행Flying the Lunar Module
음력 모듈 비행Flying the Lunar Module

사용자가 입력 체계를 학습 하 고, 배송을 제어 하 고, 소규모 대상이 배치 될 것을 요구 하는 경우가 많습니다.Requiring the user to learn the input scheme, control the ship, and have a small target to land on is a lot to ask. 성공적인 게임 환경에는 과제와 보상의 올바른 조합이 있습니다.A successful game experience features the right mix of challenge and reward. 사용자는 HoloLens에서 검색 된 표면의 사용자 정의 영역에 성공적으로 연결할 수 있는 가장 쉬운 모드를 사용 하 여 난이도 수준을 선택할 수 있습니다.The user can choose a level of difficulty, with the easiest mode simply requiring the user to successfully land in a user-defined area on a surface scanned by the HoloLens. 사용자가 게임 중단을 크랭크 면 적절 하다는 것을 알 수 있습니다.Once a user gets the hang of the game, they can then crank up the difficulty as they see fit.

핸드 제스처에 대 한 입력 추가Adding input for hand gestures

HoloLens 기본 입력은 두 개의 제스처 인 공기 탭과 블 룸있습니다.HoloLens base input has only two gestures - Air Tap and Bloom. 사용자는 상황별 미묘한 차이을 기억할 필요가 없으며 플랫폼의 인터페이스를 다양 하 고 쉽게 배울 수 있도록 하는 특정 제스처의 laundry 목록이 필요 하지 않습니다.Users don’t need to remember contextual nuances or a laundry list of specific gestures that makes the platform’s interface both versatile and easy to learn. 시스템은 이러한 두 가지 제스처만 노출할 수 있지만, 장치에서 한 번에 두 개의 손을 추적할 수 있습니다.While the system may only expose these two gestures, HoloLens as a device is can track two hands at once. 음력 Lander는 [모던 앱]입니다 .이는 제스처의 기본 집합을 확장 하 여 두 손을 활용 하 고 음력 모듈 탐색을 위한 고유한 즐거운 tactile 방법을 추가할 수 있음을 의미 합니다.Our ode to Lunar Lander is an [immersive app, which means we can extend the base set of gestures to leverage two hands and add our own delightfully tactile means for lunar module navigation.

원래 컨트롤 구성표를 다시 살펴보면 위한 것 및 회전을 해결 해야 했습니다.Looking back at the original control scheme, we needed to solve for thrust and rotation. 주의할 점은 새 컨텍스트에서 회전이 추가 축을 추가 하는 것입니다 (기술적으로는 2 이지만 Y 축은 계단에는 더 중요 하지 않음).The caveat is rotation in the new context adds an additional axis (technically two, but the Y axis is less important for landing). 두 가지 고유한 배송 이동은 자신에 게 직접 매핑됩니다.The two distinct ship movements naturally lend themselves to be mapped to each hand:

제스처를 탭 하 고 끌어서 세 축 모두에서 lander 회전Tap and drag gesture to rotate lander on all three axes
제스처를 탭 하 고 끌어서 세 축 모두에서 lander 회전Tap and drag gesture to rotate lander on all three axes

위한 것Thrust

원래 아케이드 컴퓨터의 레버가 값의 눈금에 매핑되고, 레버가 더 높은 위한 것 배송에 적용 되었습니다.The lever on the original arcade machine mapped to a scale of values, the higher the lever was moved the more thrust was applied to the ship. 여기서 nuance 중요 한 점은 사용자가 컨트롤의 손을 벗어나 원하는 값을 유지 하는 방법입니다.An important nuance to point out here is how the user can take their hand off of the control and maintain a desired value. 탭 및 끌기 동작을 효과적으로 사용 하 여 같은 결과를 얻을 수 있습니다.We can effectively use tap-and-drag behavior to achieve the same result. 위한 것 값은 0부터 시작 합니다.The thrust value starts at zero. 사용자가 값을 늘리기 위해 탭 하 고 끕니다.The user taps and drags to increase the value. 그러면 유지 관리로 전환할 수 있습니다.At that point they could let go to maintain it. 모든 탭 및 끌기 제스처 값 변경은 원래 값에서 델타입니다.Any tap-and-drag gesture value change would be the delta from the original value.

회전Rotation

좀 더 복잡 합니다.This is a little more tricky. Holographic "회전" 단추를 누르면 더욱 끔찍한 환경을 사용할 수 있습니다.Having holographic “rotate” buttons to tap makes for a terrible experience. 실제 컨트롤은 활용할 수 없으므로 lander를 나타내는 개체를 조작 하거나 lander 자체를 사용 하 여 동작을 가져와야 합니다.There isn’t a physical control to leverage, so the behavior must come from manipulation of an object representing the lander, or with the lander itself. 사용자가 얼굴을 원하는 방향으로 "푸시 및 풀" 할 수 있도록 하는 탭 및 끌기를 사용 하는 메서드를 제공 합니다.We came up with a method using tap-and-drag, which enables a user to effectively “push and pull” it in the direction they want it to face. 사용자가 탭 하 고 저장할 때마다 제스처가 시작 된 지점이 회전의 원본이 됩니다.Anytime a user taps and holds, the point in space where the gesture was initiated becomes the origin for rotation. 원점에서 끌어서 오면 (X, Y, Z) 손 모양 변환의 델타 (X, Y, Z)가 변환 되어 lander의 회전 값의 델타에 적용 됩니다.Dragging from the origin converts the delta of the hand's translation (X,Y,Z) and applies it to the delta of the lander's rotation values. 간단히 말해서 왼쪽 <-> 오른쪽 아래로 끌어서 < > 아래로 이동 < 공백으로 다시 이동 하면 배송이 적절 하 게 회전 합니다.Or more simply, dragging left <-> right, up <-> down, forward <-> back in spaces rotates the ship accordingly.

HoloLens는 두 손을 추적할 수 있으므로 위한 것가 왼쪽에 의해 제어 되는 동안 회전을 오른쪽에 할당할 수 있습니다.Since the HoloLens can track two hands, rotation can be assigned to the right hand while thrust is controlled by the left. Finesse는이 게임의 성공을 위한 주행 요소입니다.Finesse is the driving factor for success in this game. 이러한 상호 작용의 느낌 은 절대 우선 순위가 가장 높습니다.The feel of these interactions is the absolute highest priority. 특히 tactile 집중 교육의 컨텍스트입니다.Especially in context of tactile immersion. 너무 빠르게 반응 하는 배송일은 너무 빠르게 반응 하는 것은 쉽지 않지만, 너무 느리면 awkwardly 긴 시간 동안 제공 된에서 사용자에 게 "푸시 및 끌어오기"를 수행 해야 합니다.A ship that reacts too quickly would be difficult to steer, while one too slow would require the user to “push and pull” on the ship for an awkwardly long amount of time.

게임 컨트롤러에 대 한 입력 추가Adding input for game controllers

HoloLens의 제스처는 세밀 한 제어를 제공 하는 novel 메서드를 제공 하지만, 아날로그 컨트롤에서 얻을 수 있는 ' true ' tactile 피드백은 아직 없습니다.While hand gestures on the HoloLens provide a novel method of fine-grain control, There's still a certain lack of 'true' tactile feedback that you get from analog controls. Xbox 게임 컨트롤러를 연결 하면 컨트롤을 활용 하 여 세밀 한 제어를 유지 하면서이 physicality을 다시 가져올 수 있습니다.Connecting an Xbox game controller allows us to bring back this sense of physicality while leveraging the control sticks to keep fine-grain control.

Xbox 컨트롤러에 비교적 간단 하 게 전달 되는 컨트롤 구성표를 적용 하는 방법에는 여러 가지가 있습니다.There are multiple ways to apply the relatively straight-forward control scheme to the Xbox controller. 가능한 한 원래 아케이드 설정에 가깝게 유지 하려고 하기 때문에 위한 것 는 트리거 단추에 가장 잘 매핑됩니다.Since we're trying to stay as close to the original arcade set up as possible, Thrust maps best to the trigger button. 이러한 단추는 아날로그 컨트롤이 며,이는 간단한 설정 및 해제 상태를 포함 하는 것입니다. 즉, 실제로 배치 수준에 응답 합니다.These buttons are analog controls, meaning they have more than simple on and off states, they actually respond to the degree of pressure put on them. 이렇게 하면 위한 것 레버 와 비슷한 구문을 제공 합니다.This gives us a similar construct as the thrust lever. 원래 게임 및 손 제스처와는 달리이 컨트롤은 사용자가 트리거에 대 한 압력 배치를 중지 한 후 배송일의 위한 것을 자릅니다.Unlike the original game and the hand gesture, this control will cut the ship's thrust once a user stops putting pressure on the trigger. 원래 아케이드 게임과 동일한 수준의 finesse을 계속 제공 합니다.It still gives the user the same degree of finesse as the original arcade game did.

왼쪽 엄지 스틱은 요 및 롤에 매핑되고 오른쪽 엄지 스틱은 피치와 롤에 매핑됩니다.Left thumbstick is mapped to Yaw and Roll, Right thumbstick is mapped to Pitch and Roll
왼쪽 엄지 스틱은 요 및 roll에 매핑됩니다. 오른쪽 엄지 스틱을 피치 및 롤에 매핑됨Left thumbstick is mapped to yaw and roll; right thumbstick is mapped to pitch and roll

이중 thumbsticks는 자연스럽 게 배송 회전을 제어 하는 것입니다.The dual thumbsticks naturally lend themselves to controlling ship rotation. 불행 하 게는 두 축을 지 원하는 두 개의 축이 제공 됩니다.Unfortunately, there are three axes on which the ship can rotate and two thumbsticks which both support two axes. 이러한 불일치는 하나의 엄지 스틱 컨트롤 하나를 의미 합니다. 또는 thumbsticks에 대 한 축이 겹칩니다.This mismatch means either one thumbstick controls one axis; or there's overlap of axes for the thumbsticks. Thumbsticks는 기본적으로 로컬 X 및 Y 값을 혼합 하므로 이전 솔루션이 "중단" 된 느낌을 종료 했습니다.The former solution ended up feeling "broken" since thumbsticks inherently blend their local X and Y values. 후자 솔루션은 어떤 중복 축을 가장 자연스럽 게 파악 하는 테스트를 필요로 했습니다.The latter solution required some testing to find which redundant axes feel the most natural. 최종 샘플에서는 왼쪽 엄지 스틱에 roll (Y 및 x 축)를 사용 하 고 오른쪽 엄지 스틱에 피치 (Z 및 x 축)을 사용 합니다.The final sample uses yaw and roll (Y and X axes) for the left thumbstick, and pitch and roll (Z and X axes) for the right thumbstick. 이는 피치 와 독립적으로 쌍으로 연결 되는 것 처럼 보이지만 가장 자연스럽 게 생각 합니다 .This felt the most natural as roll seems to independently pair well with yaw and pitch. 참고로, thumbsticks에 대 한 두 가지 모두를 사용 하 여 회전 값을 두 배로 만듭니다. lander do 루프를 사용할 때 매우 재미 있습니다.As a side note, using both thumbsticks for roll also happens to double the rotation value; it's pretty fun to have the lander do loops.

이 샘플 앱은 공간 인식 및 tactile 집중 교육 Windows Mixed Reality의 확장 가능 입력 소프트웨어나 덕분에 환경을 크게 변경 하는 방법을 보여 줍니다.This sample app demonstrates how spatial recognition and tactile immersion can significantly change an experience thanks to Windows Mixed Reality's extensible input modalities. 음력은 Lander에 40 년 동안 사용할 수 있지만 작은 팔각형를 사용 하 여 노출 되는 개념은 영원히 지속 됩니다.While Lunar Lander may be nearing 40 years in age, the concepts exposed with that little octagon-with-legs will live on forever. 미래를 발견 때 과거를 확인 하지 않는 이유는 무엇 인가요?When imagining the future, why not look at the past?

기술 세부 정보Technical details

Mixed Reality 디자인 실험 GitHub에서 음력 모듈 샘플 앱에 대 한 스크립트 및 prefabs를 찾을 수 있습니다.You can find scripts and prefabs for the Lunar Module sample app on the Mixed Reality Design Labs GitHub.

작성자 정보About the author

Picture of Addison Linville Addison LinvilleAddison Linville
UX 디자이너 @MicrosoftUX Designer @Microsoft

참조See also