旧暦モジュールLunar Module


この資料で説明した調査用のサンプル、混合現実デザイン Labs、について学習したことを共有の場所とに関する推奨事項は、現実アプリ開発を混在させます。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. このプロジェクトでは、Hololens の基本のジェスチャ両手の追跡を拡張する方法を学習でき、Xbox コント ローラーは、入力、サーフェスのマッピングと平面の検索を事後対応型であるオブジェクトを作成し、単純なメニュー システムを実装します。With this project, you can 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.

Windows Mixed Reality をクラシックのエクスペリエンスについての再考Rethinking classic experiences for Windows Mixed Reality

大気で上位に Apollo モジュールの小規模の出荷はジャグ地形の下系統的に調査します。High up in the atmosphere, a small ship reminiscent of the Apollo module methodically surveys jagged terrain below. これほど大胆なパイロットは spots 着陸に適した領域です。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. 接着 plummeting 空からこのベクトル船をその目で、アーケード ゲームで時間を費やして、1970 年代に生まれた人がほとんどの場合。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 desired landing area the terrain scales to reveal progressively more detail. 成功した場合は、水平および垂直の速度の安全なしきい値の範囲内のランディングを意味します。Success means landing within the safe threshold of horizontal and vertical speed. ランディングと残りの fuel, ランディング領域のサイズに基づく乗数で費やされた時間のポイントが授与されます。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 ウェイのジョイスティックとボタンの構成から (、アイコンで表示されるパックマン)、90 年代と 00 秒 (ゴルフ シミュレーターとレール連発銃など) に非常に複雑な特定のスキームにします。From the simplest 4-way joystick and button configurations (seen in the iconic Pac-Man) to the highly specific and complicated schemes seen in the late 90s and 00s (like those in golf simulators and rail shooters). 2 つの理由、太陰暦 Lander マシンで使用される入力のスキームは特に興味深い: 魅力と immersion を援助します。The input scheme used in the Lunar Lander machine is particularly 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?

最新、flashiest マシンで、アーケード ゲームで子供をそそら自然されます。A kid walking through an arcade will naturally be intrigued by the newest, flashiest machine. ただし、太陰暦 Lander 抜きん出るきませんを整備士斬新な入力の機能します。But Lunar Lander features a novel input mechanic that stood out from the crowd.

太陰暦 Lander 左と右の出荷を回転させる 2 つのボタンを使用して、スロットル レバー宇宙船の生成のスロットルの量を制御します。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. このレバーが使用するユーザー、一定レベルの見栄えが正規のジョイスティックを提供できません。This lever gives users a certain level of finesse a regular joystick can’t provide. またに最新の航空コックピットに共通のコンポーネントになります。It is 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. この概念と呼ばれる触る immersionします。This concept is known as tactile immersion.

触る immersion は、繰り返し実行するアクションの実行からの感覚フィードバックのエクスペリエンスです。Tactile immersion is the experience of sensory feedback from performing repetitious 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. この概念は「フロー」という心理的な概念に関係していることができます。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.”

おそらく、immersion 複合現実での最も顕著な型では、空間 immersion です。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. 環境全体でエクスペリエンスが空間的に専念した状態、自分の周りホログラムを合成しています。We’re synthesizing holograms in our surroundings, spatially immersed in entire environments and experiences. これは、ことはできませんが採用しています immersion の他の種類、経験に Atari 太陰暦 Lander に触る immersion のと同様は限りません。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.

Immersion の設計Designing with immersion

クラシック Atari に、更新、帯域幅消費型続編に触る immersion を適用しますにはどう可能性がありますでしょうか。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 3-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 should be able to 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. ユーザーは、ゲームのハングを取得、合ったの難しさをし crank ができます。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 の基本入力が 2 つのジェスチャのエア タップとブルームします。HoloLens base input has only two gestures - Air Tap and Bloom. ユーザーは、コンテキストの微妙な差異や習得しやすいと汎用性の高いプラットフォームのインターフェイスを特定のジェスチャの洗濯物の一覧を覚える必要はありません。Users don’t need to remember contextual nuances or a laundry list of specific gestures which makes the platform’s interface both versatile and easy to learn. システムでは、これら 2 つのジェスチャが公開される可能性がのみ、HoloLens デバイスとしては、一度に 2 つの手を追跡できます。While the system may only expose these two gestures, HoloLens as a device is capable of tracking two hands at once. 太陰暦 Lander に、コードは、イマーシブ アプリを 2 つの手を活用し、適切に触る独自旧暦モジュール ナビゲーション手段を追加するジェスチャの基本セットを拡張する機能があることを意味します。Our ode to Lunar Lander is an immersive app which means we have the ability to 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). 2 つの個別の出荷の動作では、各手の形にマップする自然適しています。The two distinct ship movements naturally lend themselves to be mapped to each hand:

タップし、3 つすべての軸で lander を回転するジェスチャをドラッグしますTap and drag gesture to rotate lander on all three axes
タップし、3 つすべての軸で lander を回転するジェスチャをドラッグしますTap and drag gesture to rotate lander on all three axes


元のアーケード マシン上のレバー、値の小数点以下桁数にマップが大きいほど、レバー移動された複数のスロットルが配送先に適用されました。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. ここで指摘して重要なに微妙な違いは、ユーザーはコントロールからその手の形を取得し、目的の値を維持します。An important nuance to point out here is 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.


これは、少し注意が必要です。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. いつでも、ユーザーがタップし、保持、ジェスチャが開始された空間内の点の回転を基準となります。Any time a user taps and holds, the point in space where the gesture was initiated becomes the origin for rotation. 配信元からドラッグすることでは、手の形の変換 (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 が 2 つの手を追跡するため、スロットルが左によって制御されるときに回転は、右側に割り当てることができます。Since the HoloLens can track two hands, rotation can be assigned to the right hand while thrust is controlled by the left. 見栄えは、このゲームで成功の推進要因です。Finesse is the driving factor for success in this game. 感じ絶対の最も高い優先順位は、これらの相互作用の。The feel of these interactions is the absolute highest priority. 特にで触る immersion のコンテキスト。Especially in context of tactile immersion. 反応が早すぎる宇宙船を進めるために、遅すぎるの 1 つは、ユーザーを「プッシュとプル」が必要ですが、船転びに長い時間が不必要に困難になります。A ship that reacts too quickly would be unnecessarily 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 の手のジェスチャがありますアナログ コントロールから取得した触るフィードバックを 'true' の特定の欠如。While hand gestures on the HoloLens provide a novel method of fine-grain control, there is still a certain lack of 'true' tactile feedback that you get from analog controls. 粒度が細かい制御を保持するコントロール スティックを活用しながら、この意味突き詰めるを戻すには、Xbox ゲーム コント ローラーを接続できます。Connecting an Xbox game controller allows to bring back this sense of physicality while leveraging the control sticks to retain 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. それでも、ユーザー同程度に見栄えは元のアーケード ゲームと同様です。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
左のサムスティックがヨーし、; をロールにマップされます。右スティックがピッチし、ロールにマップされます。Left thumbstick is mapped to yaw and roll; right thumbstick is mapped to pitch and roll

デュアル サムスティック自然を起こす出荷回転を制御します。The dual thumbsticks naturally lend themselves to controlling ship rotation. 残念ながら、上にある 3 つの軸回転させることが、出荷と 2 つのサムスティック両方をサポートする 2 つの軸。Unfortunately, there are 3 axes on which the ship can rotate and two thumbsticks which both support two axes. この不一致はいずれか 1 つのサムスティック コントロール 1 つの軸。または、サムスティックの軸のオーバー ラップがあります。This mismatch means either one thumbstick controls one axis; or there is overlap of axes for the thumbsticks. 前者の方法が得られるため、本質的に blend 自分のローカルのサムスティック"破損を示す"感じて 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. 最終的なサンプルを使用してヨーロール(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. なお、使用の両方のサムスティックロール回転の値を 2 倍にも行われますが非常に楽しく do ループ lander があります。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.

このサンプル アプリはどのように空間認識を示し、触る immersion から 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 デザイン Labs GitHubします。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 リンビルAddison Linville
UX デザイナー @MicrosoftUX Designer @Microsoft

関連項目See also