{"id":188,"date":"2017-12-16T22:47:09","date_gmt":"2017-12-16T22:47:09","guid":{"rendered":"http:\/\/www.exhaliastudios.com\/Demo\/?p=188"},"modified":"2017-12-22T16:38:49","modified_gmt":"2017-12-22T16:38:49","slug":"capstone-walk-in-place-mechanic","status":"publish","type":"post","link":"https:\/\/www.exhaliastudios.com\/Demo\/capstone-walk-in-place-mechanic\/","title":{"rendered":"Unity\/VR Capstone Walk-in-Place Mechanic"},"content":{"rendered":"<p>The major development work for my Udacity VR Developer Nanodegree capstone was in developing a walk-in-place mechanic for the HTC Vive. I have previously tried out an arm swing mechanic that I did not care for, and induced nausea in my husband. To begin I did one of the things I do best: collect data! (I will always be a scientist at heart.)\u00a0 I had decided that I did not want to require the use of controllers for the walk. This would free them up for other uses. In order to collect data on the headset, I wrote a simple reporting script:<\/p>\n<div class=\"line number1 index0 alt2\"><code class=\"csharp keyword\">using<\/code> <code class=\"csharp plain\">System.Collections;<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"csharp keyword\">using<\/code> <code class=\"csharp plain\">System.Collections.Generic;<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"csharp keyword\">using<\/code> <code class=\"csharp plain\">UnityEngine;<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"csharp keyword\">using<\/code> <code class=\"csharp plain\">System.IO;<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"csharp keyword\">public<\/code> <code class=\"csharp keyword\">class<\/code> <code class=\"csharp plain\">Reporting : MonoBehaviour {<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"csharp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"csharp keyword\">string<\/code> <code class=\"csharp plain\">path = <\/code><code class=\"csharp string\">\"Assets\/Logs.txt\"<\/code><code class=\"csharp plain\">;<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"csharp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"csharp plain\">Vector3 current;<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"csharp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"csharp plain\">Vector3 previous;<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"csharp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"csharp plain\">Vector3 delta;<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><\/div>\n<div class=\"line number11 index10 alt2\">\u00a0<code class=\"csharp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"csharp comments\">\/\/ Use this for initialization<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"csharp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"csharp keyword\">void<\/code> <code class=\"csharp plain\">Start () {<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"csharp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"csharp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"csharp plain\">StreamWriter writer = <\/code><code class=\"csharp keyword\">new<\/code> <code class=\"csharp plain\">StreamWriter(path, <\/code><code class=\"csharp keyword\">true<\/code><code class=\"csharp plain\">);<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"csharp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"csharp plain\">writer.WriteLine(<\/code><code class=\"csharp string\">\"transform x, transform y, transform z, delta x, delta y, delta z\"<\/code><code class=\"csharp plain\">);<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"csharp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"csharp plain\">writer.Close();<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"csharp spaces\">\u00a0 \u00a0 \u00a0<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"csharp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"csharp plain\">current = transform.localPosition;<\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"csharp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"csharp plain\">previous = transform.localPosition;<\/code><\/div>\n<div class=\"line number24 index23 alt1\">\u00a0<code class=\"csharp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"csharp plain\">}<\/code><\/div>\n<div class=\"line number27 index26 alt2\"><code class=\"csharp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number28 index27 alt1\"><code class=\"csharp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"csharp comments\">\/\/ Update is called once per frame<\/code><\/div>\n<div class=\"line number29 index28 alt2\"><code class=\"csharp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"csharp keyword\">void<\/code> <code class=\"csharp plain\">Update () {<\/code><\/div>\n<div class=\"line number30 index29 alt1\"><code class=\"csharp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"csharp comments\">\/\/Write some text to the test.txt file<\/code><\/div>\n<div class=\"line number31 index30 alt2\"><code class=\"csharp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"csharp plain\">StreamWriter writer = <\/code><code class=\"csharp keyword\">new<\/code> <code class=\"csharp plain\">StreamWriter(path, <\/code><code class=\"csharp keyword\">true<\/code><code class=\"csharp plain\">);<\/code><\/div>\n<div class=\"line number32 index31 alt1\"><\/div>\n<div class=\"line number34 index33 alt1\"><code class=\"csharp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"csharp plain\">current = transform.localPosition;<\/code><\/div>\n<div class=\"line number35 index34 alt2\"><code class=\"csharp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"csharp plain\">vel = (current - previous) \/ Time.deltaTime;<\/code><\/div>\n<div class=\"line number36 index35 alt1\"><code class=\"csharp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"csharp plain\">writer.WriteLine(transform.localPosition.x + <\/code><code class=\"csharp string\">\",\"<\/code><code class=\"csharp plain\">+ transform.localPosition.y+ <\/code><code class=\"csharp string\">\",\"<\/code><code class=\"csharp plain\">+ transform.localPosition.z + <\/code><code class=\"csharp string\">\",\"<\/code> <code class=\"csharp plain\">+ delta.x + <\/code><code class=\"csharp string\">\",\"<\/code> <code class=\"csharp plain\">+ delta.y + <\/code><code class=\"csharp string\">\",\"<\/code> <code class=\"csharp plain\">+ delta.z);<\/code><\/div>\n<div class=\"line number38 index37 alt1\"><code class=\"csharp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"csharp plain\">writer.Close();<\/code><\/div>\n<div class=\"line number39 index38 alt2\"><code class=\"csharp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number40 index39 alt1\"><code class=\"csharp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"csharp plain\">previous = transform.localPosition;<\/code><\/div>\n<div class=\"line number41 index40 alt2\"><code class=\"csharp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"csharp plain\">}<\/code><\/div>\n<div class=\"line number42 index41 alt1\"><code class=\"csharp plain\">}<\/code><\/div>\n<div><\/div>\n<div>This collected a ton of data. I had several people wear the head and walk in place. Then I started analyzing. I graphed movement on each axis against each other axis:<\/div>\n<div><\/div>\n<h3>X vs Y<\/h3>\n<p><a href=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/y-vs-x.png\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"197\" data-permalink=\"https:\/\/www.exhaliastudios.com\/Demo\/capstone-walk-in-place-mechanic\/y-vs-x\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/y-vs-x.png?fit=1628%2C1125&amp;ssl=1\" data-orig-size=\"1628,1125\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"y vs x\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/y-vs-x.png?fit=750%2C519&amp;ssl=1\" loading=\"lazy\" class=\" wp-image-197 aligncenter\" src=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/y-vs-x.png?resize=750%2C518\" alt=\"\" width=\"750\" height=\"518\" srcset=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/y-vs-x.png?w=1628&amp;ssl=1 1628w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/y-vs-x.png?resize=300%2C207&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/y-vs-x.png?resize=768%2C531&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/y-vs-x.png?resize=1024%2C708&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/y-vs-x.png?resize=400%2C276&amp;ssl=1 400w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/y-vs-x.png?w=1500 1500w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<h3>X vs Z<\/h3>\n<p><a href=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/x-vs-z.png\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"196\" data-permalink=\"https:\/\/www.exhaliastudios.com\/Demo\/capstone-walk-in-place-mechanic\/x-vs-z\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/x-vs-z.png?fit=992%2C1125&amp;ssl=1\" data-orig-size=\"992,1125\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"x vs z\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/x-vs-z.png?fit=750%2C850&amp;ssl=1\" loading=\"lazy\" class=\"size-full wp-image-196 aligncenter\" src=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/x-vs-z.png?resize=750%2C851\" alt=\"\" width=\"750\" height=\"851\" srcset=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/x-vs-z.png?w=992&amp;ssl=1 992w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/x-vs-z.png?resize=265%2C300&amp;ssl=1 265w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/x-vs-z.png?resize=768%2C871&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/x-vs-z.png?resize=903%2C1024&amp;ssl=1 903w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/x-vs-z.png?resize=400%2C454&amp;ssl=1 400w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<h3>Y vs Z<\/h3>\n<p><a href=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/y-vs-z.png\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"198\" data-permalink=\"https:\/\/www.exhaliastudios.com\/Demo\/capstone-walk-in-place-mechanic\/y-vs-z\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/y-vs-z.png?fit=1248%2C961&amp;ssl=1\" data-orig-size=\"1248,961\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"y vs z\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/y-vs-z.png?fit=750%2C578&amp;ssl=1\" loading=\"lazy\" class=\" wp-image-198 aligncenter\" src=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/y-vs-z.png?resize=750%2C577\" alt=\"\" width=\"750\" height=\"577\" srcset=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/y-vs-z.png?w=1248&amp;ssl=1 1248w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/y-vs-z.png?resize=300%2C231&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/y-vs-z.png?resize=768%2C591&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/y-vs-z.png?resize=1024%2C789&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/y-vs-z.png?resize=400%2C308&amp;ssl=1 400w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/a>Then I graphed each position vs time:<\/p>\n<h3>X<\/h3>\n<p><a href=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/transx.png\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"193\" data-permalink=\"https:\/\/www.exhaliastudios.com\/Demo\/capstone-walk-in-place-mechanic\/transx\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/transx.png?fit=1396%2C711&amp;ssl=1\" data-orig-size=\"1396,711\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"transx\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/transx.png?fit=750%2C382&amp;ssl=1\" loading=\"lazy\" class=\"size-full wp-image-193 aligncenter\" src=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/transx.png?resize=750%2C382\" alt=\"\" width=\"750\" height=\"382\" srcset=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/transx.png?w=1396&amp;ssl=1 1396w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/transx.png?resize=300%2C153&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/transx.png?resize=768%2C391&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/transx.png?resize=1024%2C522&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/transx.png?resize=400%2C204&amp;ssl=1 400w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<h3>Y<\/h3>\n<p><a href=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/transy.png\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"194\" data-permalink=\"https:\/\/www.exhaliastudios.com\/Demo\/capstone-walk-in-place-mechanic\/transy\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/transy.png?fit=1396%2C711&amp;ssl=1\" data-orig-size=\"1396,711\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"transy\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/transy.png?fit=750%2C382&amp;ssl=1\" loading=\"lazy\" class=\"size-full wp-image-194 aligncenter\" src=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/transy.png?resize=750%2C382\" alt=\"\" width=\"750\" height=\"382\" srcset=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/transy.png?w=1396&amp;ssl=1 1396w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/transy.png?resize=300%2C153&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/transy.png?resize=768%2C391&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/transy.png?resize=1024%2C522&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/transy.png?resize=400%2C204&amp;ssl=1 400w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<h3>Z<\/h3>\n<p><a href=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/transz.png\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"195\" data-permalink=\"https:\/\/www.exhaliastudios.com\/Demo\/capstone-walk-in-place-mechanic\/transz\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/transz.png?fit=1396%2C711&amp;ssl=1\" data-orig-size=\"1396,711\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"transz\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/transz.png?fit=750%2C382&amp;ssl=1\" loading=\"lazy\" class=\"size-full wp-image-195 aligncenter\" src=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/transz.png?resize=750%2C382\" alt=\"\" width=\"750\" height=\"382\" srcset=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/transz.png?w=1396&amp;ssl=1 1396w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/transz.png?resize=300%2C153&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/transz.png?resize=768%2C391&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/transz.png?resize=1024%2C522&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/transz.png?resize=400%2C204&amp;ssl=1 400w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>I decided that I didn&#8217;t want to use straight transform data as it was fairly volatile, especially if the player wasn&#8217;t walking exactly in place. I had also collected a change in position over subsequent frames.<\/p>\n<h3>Delta X<\/h3>\n<p><a href=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/deltax.png\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"190\" data-permalink=\"https:\/\/www.exhaliastudios.com\/Demo\/capstone-walk-in-place-mechanic\/deltax\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/deltax.png?fit=1396%2C711&amp;ssl=1\" data-orig-size=\"1396,711\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"deltax\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/deltax.png?fit=750%2C382&amp;ssl=1\" loading=\"lazy\" class=\"size-full wp-image-190 aligncenter\" src=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/deltax.png?resize=750%2C382\" alt=\"\" width=\"750\" height=\"382\" srcset=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/deltax.png?w=1396&amp;ssl=1 1396w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/deltax.png?resize=300%2C153&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/deltax.png?resize=768%2C391&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/deltax.png?resize=1024%2C522&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/deltax.png?resize=400%2C204&amp;ssl=1 400w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<h3>Delta Y<\/h3>\n<p><a href=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/deltay.png\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"191\" data-permalink=\"https:\/\/www.exhaliastudios.com\/Demo\/capstone-walk-in-place-mechanic\/deltay\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/deltay.png?fit=1396%2C711&amp;ssl=1\" data-orig-size=\"1396,711\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"deltay\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/deltay.png?fit=750%2C382&amp;ssl=1\" loading=\"lazy\" class=\"size-full wp-image-191 aligncenter\" src=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/deltay.png?resize=750%2C382\" alt=\"\" width=\"750\" height=\"382\" srcset=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/deltay.png?w=1396&amp;ssl=1 1396w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/deltay.png?resize=300%2C153&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/deltay.png?resize=768%2C391&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/deltay.png?resize=1024%2C522&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/deltay.png?resize=400%2C204&amp;ssl=1 400w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<h3>Delta Z<\/h3>\n<p><a href=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/deltaz.png\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"192\" data-permalink=\"https:\/\/www.exhaliastudios.com\/Demo\/capstone-walk-in-place-mechanic\/deltaz\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/deltaz.png?fit=1396%2C711&amp;ssl=1\" data-orig-size=\"1396,711\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"deltaz\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/deltaz.png?fit=750%2C382&amp;ssl=1\" loading=\"lazy\" class=\"size-full wp-image-192 aligncenter\" src=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/deltaz.png?resize=750%2C382\" alt=\"\" width=\"750\" height=\"382\" srcset=\"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/deltaz.png?w=1396&amp;ssl=1 1396w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/deltaz.png?resize=300%2C153&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/deltaz.png?resize=768%2C391&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/deltaz.png?resize=1024%2C522&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/deltaz.png?resize=400%2C204&amp;ssl=1 400w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<p>Based on this data it seemed like delta x would be the best measurement to base a step detection algorithm. I created an algorithm that detects the change of delta x from a negative value to a positive one. Each of these is assumed to be a step. What I actually found when I implemented this was that it worked beautifully&#8230; unless the player turned their head rapidly from side to side. Since I wanted users to be able to look around during the experience, this wasn&#8217;t going to work. Fortunately, it did work when applied the the delta y variable. This had the added advantage of allowing users to simply bob their heads if they didn&#8217;t want to actually walk, while still allowing them to look around.<\/p>\n<p>The second part of walking was to move the player each time a step was detected. I opted to use one of the controllers as a forward pointer, allowing the player to look around while walking. The movement of the player is a bit jerky, but I found that this was less likely to cause VR sickness in the users than if the movement was smoothed. In a future iteration I would both like to be able to calibrate the step detection threshold for each user and allow the user to control the degree to which movement is smoothed out.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The major development work for my Udacity VR Developer Nanodegree capstone was in developing a walk-in-place mechanic for the HTC Vive. I have previously tried out an arm swing mechanic that I did not care for, and induced nausea in my husband. To begin I did one of the things I do best: collect data!<a class=\"more-link\" href=\"https:\/\/www.exhaliastudios.com\/Demo\/capstone-walk-in-place-mechanic\/\">Continue reading <span class=\"screen-reader-text\">&#8220;Unity\/VR Capstone Walk-in-Place Mechanic&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":190,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[14,13],"tags":[],"class_list":["post-188","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-unity","category-vr-development","entry"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.exhaliastudios.com\/Demo\/wp-content\/uploads\/2017\/12\/deltax.png?fit=1396%2C711&ssl=1","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p68Qgg-32","jetpack_likes_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/www.exhaliastudios.com\/Demo\/wp-json\/wp\/v2\/posts\/188","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.exhaliastudios.com\/Demo\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.exhaliastudios.com\/Demo\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.exhaliastudios.com\/Demo\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.exhaliastudios.com\/Demo\/wp-json\/wp\/v2\/comments?post=188"}],"version-history":[{"count":5,"href":"https:\/\/www.exhaliastudios.com\/Demo\/wp-json\/wp\/v2\/posts\/188\/revisions"}],"predecessor-version":[{"id":227,"href":"https:\/\/www.exhaliastudios.com\/Demo\/wp-json\/wp\/v2\/posts\/188\/revisions\/227"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.exhaliastudios.com\/Demo\/wp-json\/wp\/v2\/media\/190"}],"wp:attachment":[{"href":"https:\/\/www.exhaliastudios.com\/Demo\/wp-json\/wp\/v2\/media?parent=188"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.exhaliastudios.com\/Demo\/wp-json\/wp\/v2\/categories?post=188"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.exhaliastudios.com\/Demo\/wp-json\/wp\/v2\/tags?post=188"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}