{"id":605,"date":"2015-12-21T11:57:19","date_gmt":"2015-12-21T17:57:19","guid":{"rendered":"http:\/\/blogs.discovery.wisc.edu\/vr2015\/?p=605"},"modified":"2015-12-21T11:58:32","modified_gmt":"2015-12-21T17:58:32","slug":"team-exploring-interfaces-final-post","status":"publish","type":"post","link":"https:\/\/blogs.discovery.wisc.edu\/vr2015\/2015\/12\/21\/team-exploring-interfaces-final-post\/","title":{"rendered":"Team Exploring Interfaces &#8211; Final Post"},"content":{"rendered":"<p><a href=\"http:\/\/blogs.discovery.wisc.edu\/vr2015\/files\/2015\/12\/DS501-project-poster-half-size.png\"><img loading=\"lazy\" class=\"alignnone wp-image-608 size-full\" src=\"http:\/\/blogs.discovery.wisc.edu\/vr2015\/files\/2015\/12\/DS501-project-poster-half-size.png\" alt=\"DS501 - team interfaces poster -half size\" width=\"633\" height=\"472\" srcset=\"https:\/\/blogs.discovery.wisc.edu\/vr2015\/files\/2015\/12\/DS501-project-poster-half-size.png 633w, https:\/\/blogs.discovery.wisc.edu\/vr2015\/files\/2015\/12\/DS501-project-poster-half-size-300x224.png 300w\" sizes=\"(max-width: 633px) 100vw, 633px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><b>What does your project do, and how does it work?<\/b><\/p>\n<p>We&#8217;ve built a an experiment-in-a-game, allowing people to test different input devices by playing 4-second minigames displayed in the Oculus Rift.\u00a0 The minigames require participants to complete four atomic tasks: selecting, moving, and rotation objects in the virtual world, and simple spatial navigation.\u00a0 The current form of the project is designed to be run as four stations, each with one of four input devices: a conventional mouse, an Xbox 360 controller, a Wiimote pointing device, and hand tracking via Leap Motion.\u00a0 Participants rotate through the four stations, trying each device in turn; we record the success or failure of minigame trials, as well as time elapsed in each.<\/p>\n<p>Unity 5 was used as the base of our project, and for mouse and Xbox controller input.\u00a0 The official Unity integration package for Leap Motion provides hand tracking; the open source <a href=\"https:\/\/github.com\/Flafla2\/Unity-Wiimote\">Unity-Wiimote<\/a> library provides Wiimote tracking.\u00a0 All input methods control a screen-space cursor, mapped to: the pointing direction of the Wiimote; the Xbox controller&#8217;s left joystick; and on the Leap, the position of the right palm.<\/p>\n<p>&nbsp;<\/p>\n<p><b>What did each team member contribute?<\/b><\/p>\n<p>In the beginning phases of the project, we all explored different tasks, as well as input methods and interfaces.<\/p>\n<p><b>Alex<\/b> built base code, and was in charge of Leap input and overall mop-up.<\/p>\n<p><b>Dave<\/b> built the final rotation and avoid tasks, Xbox controller integration, and the initial exploration of showing a cursor in VR.<\/p>\n<p><b>Ryan<\/b> built the final sorting task, early Wiimote integration code, built the VR-visible timer, and explored ways to get VR and input devices onto Linux.<\/p>\n<p><b>Nicky<\/b> explored ways to get VR and input devices onto Linux.<\/p>\n<p>&nbsp;<\/p>\n<p><b>How does the team feel about the project?<\/b><\/p>\n<p>It could use more polish.\u00a0 The minigames are playable on a normal monitor, but too hard in VR.\u00a0 Some of these difficulties are illustrative of the differences between the two display modalities, which is the point of the project; some, however, are just bugs or rough edges, which may confuse the sometimes subtle issues we want to highlight.<\/p>\n<p>People still had fun trying out the different input devices and pointed out some interesting differences, so overall it was a success.<\/p>\n<p>&nbsp;<\/p>\n<p><b>What were your largest hurdles in the project?<\/b><\/p>\n<p>&nbsp;<\/p>\n<p><i>Getting Data from Input Devices<\/i><\/p>\n<p>There are lots of open source projects online that attempt to connect exotic input devices to specific programs (like Unity), or specific OSes.\u00a0 Or to specific combinations of programs, OS, and Bluetooth stack.\u00a0 And maybe specific versions of each piece of software and hardware, as well.\u00a0 Sorting through to find libraries that provided the input data we wanted in a way we could use was nontrivial.\u00a0 Many claimed to be able to do what we needed but either hadn&#8217;t yet implemented the feature, or introduced some incompatibility.\u00a0 The only real solution was lots of trial and error.<\/p>\n<p>&nbsp;<\/p>\n<p><i>Unity<\/i><\/p>\n<p>Unity didn&#8217;t do enough to bridge the gap from no knowledge of real-time interactive graphics to also doing same in VR.\u00a0 For every problem it solved, it introduced at least one more bug or weird system to run afoul of.\u00a0 Looking things up online yields solutions for a mix of different versions, with\u00a0 inconsistent compatibility; UI was a particular problem.\u00a0 Leap integration further conflated things, as it seems to be tuned to an older Unity version and involves some unknown version of the Oculus Unity integration, but still depends on the new VR checkbox in Unity \u2026 it&#8217;s a weird Frankenstein mess.\u00a0 Unity packages for other input methods worked similarly, in that it was unclear what version of Unity they were designed for.\u00a0 Unity also released at least three upgrades during the course of the project, each fixing old bugs and introducing new ones.\u00a0 This made things generally unstable &#8212; restarting Unity or rebooting the machine were often one of the first steps in debugging, which is not a good way to work.<\/p>\n<p>&nbsp;<\/p>\n<p><i>Git + Unity<\/i><\/p>\n<p>Some files in Unity don&#8217;t play nice with Git.\u00a0 Scene files were binary (though Ryan found a setting at the end that probably made them a merge-able XML; we didn&#8217;t have time to investigate).\u00a0 We sidestepped this by doing as much as possible programmatically, and working in separate scenes and doing an in-unity merge when absolutely necessary.\u00a0 Some other things (controller settings, the VR checkbox) would mysteriously change; it&#8217;s unclear when this was due to Unity rebuilding defaults, or to something accidentally sneaking into the repo, or to cross-platform Unity differences.<\/p>\n<p>&nbsp;<\/p>\n<p><b>How well did your project meet your original description and goals?<\/b><\/p>\n<p>We met our original baseline goal of presenting atomic tasks and gathering data, and we went a little further in wrapping things up as minigames to make the final presentation a bit more fun.<\/p>\n<p>&nbsp;<\/p>\n<p><b>If you had more time, what would you do next on your project?<\/b><\/p>\n<p>We could add more minigames, more input methods, and more measures &#8212; and, of course, a bit more polish.\u00a0 Also, we&#8217;ve only explored interfaces that use\u00a0 2D screenspace cursors; VR allows for interesting 3D interfaces, and with more time (and more 3D-oriented input devices) we could explore those as well.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; &nbsp; What does your project do, and how does it work? We&#8217;ve built a an experiment-in-a-game, allowing people to test different input devices by playing 4-second minigames displayed in the Oculus Rift.\u00a0 The minigames require participants to complete four atomic tasks: selecting, moving, and rotation objects in the virtual world, and simple spatial navigation.\u00a0 [&hellip;]<\/p>\n","protected":false},"author":89,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[5,11],"tags":[],"_links":{"self":[{"href":"https:\/\/blogs.discovery.wisc.edu\/vr2015\/wp-json\/wp\/v2\/posts\/605"}],"collection":[{"href":"https:\/\/blogs.discovery.wisc.edu\/vr2015\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.discovery.wisc.edu\/vr2015\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.discovery.wisc.edu\/vr2015\/wp-json\/wp\/v2\/users\/89"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.discovery.wisc.edu\/vr2015\/wp-json\/wp\/v2\/comments?post=605"}],"version-history":[{"count":2,"href":"https:\/\/blogs.discovery.wisc.edu\/vr2015\/wp-json\/wp\/v2\/posts\/605\/revisions"}],"predecessor-version":[{"id":609,"href":"https:\/\/blogs.discovery.wisc.edu\/vr2015\/wp-json\/wp\/v2\/posts\/605\/revisions\/609"}],"wp:attachment":[{"href":"https:\/\/blogs.discovery.wisc.edu\/vr2015\/wp-json\/wp\/v2\/media?parent=605"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.discovery.wisc.edu\/vr2015\/wp-json\/wp\/v2\/categories?post=605"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.discovery.wisc.edu\/vr2015\/wp-json\/wp\/v2\/tags?post=605"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}