{"id":318,"date":"2017-02-15T09:24:40","date_gmt":"2017-02-15T14:24:40","guid":{"rendered":"http:\/\/www.talariavr.com\/blog\/?p=318"},"modified":"2017-02-15T09:24:40","modified_gmt":"2017-02-15T14:24:40","slug":"steamvr-mug","status":"publish","type":"post","link":"http:\/\/www.talariavr.com\/blog\/steamvr-mug\/","title":{"rendered":"Initial SteamVR Tracking Experimentation"},"content":{"rendered":"<p><iframe loading=\"lazy\" title=\"SteamVR Tracked Mug Timelapse\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/Rwkeskx-FDo?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<p><span style=\"font-size: 12pt; font-family: helvetica, arial, sans-serif;\"><span style=\"font-size: 18pt;\"><strong>Motion Capturing a Mug in VR<\/strong><\/span><\/span><\/p>\n<p><span style=\"font-size: 12pt; font-family: helvetica, arial, sans-serif;\">I wanted my first through-and-through project\/experiment with SteamVR to be something practical; I tossed around the idea of motion capturing my keyboard or mouse, some headphones, etc. &#8211; the usual things that folks want to be brought in to their virtual environment from the real world. \u00a0I settled on a mug because of two reasons: 1.) There&#8217;s enough unused exterior surface on the mug that I&#8217;d have plenty of room to place sensors and the Watchman board, and 2.) It sounded pretty convenient to grab a drink in VR without removing the HMD. \u00a0This <span style=\"color: #00ccff;\"><a style=\"color: #00ccff;\" href=\"https:\/\/youtu.be\/Rwkeskx-FDo\"><span style=\"text-decoration: underline;\">timelapse<\/span><\/a><\/span> shown above was recorded on the 17th of November, 2016, and covers\u00a0approximately an 8 1\/2 hour nonstop development process. \u00a0I can shave that time down to at least 2 hours now that I&#8217;ve got this run under my belt and know what quirks can be run into. \u00a0Once familiar enough, I could see having something hand-made together in 30 minutes being a practical timeline.<br \/>\n<span style=\"font-size: 18pt;\"><br \/>\n<\/span><span style=\"font-size: 18pt;\"><strong>Modelling the .STL<\/strong><\/span><br \/>\n<\/span><\/p>\n<p><span style=\"font-size: 12pt; font-family: helvetica, arial, sans-serif;\">So I started out with modelling a replica of the real-world mug in <a href=\"https:\/\/www.blender.org\/\"><span style=\"text-decoration: underline;\"><span style=\"color: #00ccff; text-decoration: underline;\">Blender<\/span><\/span><\/a>\u00a0(free and open-source 3D modelling software). \u00a0This was my first full-on experience with Blender, so a good chunk of my time was spent learning the interface and following a basic tutorial. \u00a0I probably gave this mug way too much fidelity, but hey, I&#8217;m proud of the little guy. \u00a0Maybe one of these days I&#8217;ll look into texturing my models with something that&#8217;s more than just UV grid. \u00a0More information regarding the render model can be found in my post from <a href=\"http:\/\/www.talariavr.com\/blog\/steamvr-tracking-license-day-3\/\"><span style=\"text-decoration: underline;\"><span style=\"color: #00ccff; text-decoration: underline;\">Day 3<\/span><\/span><\/a> of Synapse&#8217;s SteamVR Tracking training.<\/span><br \/>\n<span style=\"font-size: 12pt; font-family: helvetica, arial, sans-serif;\"> <span style=\"font-size: 18pt;\"><br \/>\n<\/span><span style=\"font-size: 18pt;\"><strong>Verification Simulation<\/strong><\/span><\/span><\/p>\n<p><span style=\"font-family: helvetica, arial, sans-serif; font-size: 12pt;\">The HMD Designer simulation software is valuable tool for quantifying\u00a0the optimization of custom shapes, as well as providing inspiration and validation for sensor placement. \u00a0For reference, the Vive controllers have 24 sensors present on them. \u00a0This mug uses 14 (a number chosen through a combination of physical limitations, simplicity&#8217;s sake, and quick simulation optimization).<\/span><\/p>\n<p><span style=\"font-family: helvetica, arial, sans-serif; font-size: 12pt;\">Below is a model of the mug, along with\u00a0some occlusion models:<\/span><\/p>\n<p><span style=\"font-family: helvetica, arial, sans-serif; font-size: 12pt;\"><a href=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Occlusions.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-367 size-large aligncenter\" src=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Occlusions-1024x576.png\" width=\"640\" height=\"360\" srcset=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Occlusions-1024x576.png 1024w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Occlusions-300x169.png 300w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Occlusions-768x432.png 768w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Occlusions-480x270.png 480w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Occlusions.png 1920w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/span><\/p>\n<p><span style=\"font-family: helvetica, arial, sans-serif; font-size: 12pt;\">The reason for these occlusion models was so that the simulation wouldn&#8217;t place sensors on or near the handle, inside the mug, or under the mug, as well as to be mindful of the Watchman board&#8217;s presence (occlusion models are a separate setting in HMD Designer, yet render the same as the tracked object).<\/span><\/p>\n<p><span style=\"font-family: helvetica, arial, sans-serif; font-size: 12pt;\">All simulations were pretty similar, but this one felt most systematic and balanced from the batch that I ran:<\/span><\/p>\n<p><span style=\"font-family: helvetica, arial, sans-serif; font-size: 12pt;\"><a href=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/SimulationA.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-368 size-large aligncenter\" src=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/SimulationA-1024x576.png\" width=\"640\" height=\"360\" srcset=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/SimulationA-1024x576.png 1024w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/SimulationA-300x169.png 300w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/SimulationA-768x432.png 768w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/SimulationA-480x270.png 480w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/SimulationA.png 1920w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/span><span style=\"font-family: helvetica, arial, sans-serif; font-size: 12pt;\"><a href=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/SimulationB.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-369 size-large\" src=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/SimulationB-1024x576.png\" width=\"640\" height=\"360\" srcset=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/SimulationB-1024x576.png 1024w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/SimulationB-300x169.png 300w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/SimulationB-768x432.png 768w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/SimulationB-480x270.png 480w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/SimulationB.png 1920w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/span><span style=\"font-family: helvetica, arial, sans-serif; font-size: 12pt;\"><a href=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/SimulationC.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-370 size-large aligncenter\" src=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/SimulationC-1024x576.png\" width=\"640\" height=\"360\" srcset=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/SimulationC-1024x576.png 1024w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/SimulationC-300x169.png 300w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/SimulationC-768x432.png 768w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/SimulationC-480x270.png 480w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/SimulationC.png 1920w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/span><\/p>\n<p><span style=\"font-family: helvetica, arial, sans-serif; font-size: 12pt;\">Those graphs are pretty good! \u00a0Remember &#8211; the centre of each graph is the negative Z direction, unwrapping the other sides horizontally, and positive\/negative Y spanning the top and bottom stretches of the graph. \u00a0Feel free to refer back to my coverage of <span style=\"color: #00ccff;\"><a style=\"color: #00ccff;\" href=\"http:\/\/www.talariavr.com\/blog\/steamvr-tracking-license-day-2\/\"><span style=\"text-decoration: underline;\">Day 2<\/span><\/a><\/span> of the\u00a0training for a more thorough explanation of the graphs. \u00a0But anyway, the centre of each graph would be the mug&#8217;s handle in this context. \u00a0These results show that there is more or less manageable optical tracking from all side views of the mug. \u00a0I used this placement as a launching point, primarily taking note of the sort of 5-point &#8216;X&#8217; present on either side of the mug. \u00a0And so here&#8217;s a shot of the final sensor positions that I calculated into the JSON:<br \/>\n<\/span><span style=\"font-family: helvetica, arial, sans-serif; font-size: 12pt;\"><a href=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/FinalMugA.png\"><br \/>\n<\/a><a href=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/FinalMugA.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-355 size-large aligncenter\" src=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/FinalMugA-1024x576.png\" width=\"640\" height=\"360\" srcset=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/FinalMugA-1024x576.png 1024w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/FinalMugA-300x169.png 300w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/FinalMugA-768x432.png 768w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/FinalMugA-480x270.png 480w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/FinalMugA.png 1920w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><a href=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/FinalMugB.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-356 size-large aligncenter\" src=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/FinalMugB-1024x576.png\" width=\"640\" height=\"360\" srcset=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/FinalMugB-1024x576.png 1024w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/FinalMugB-300x169.png 300w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/FinalMugB-768x432.png 768w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/FinalMugB-480x270.png 480w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/FinalMugB.png 1920w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><a href=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/FinalMugC.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-357 size-large aligncenter\" src=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/FinalMugC-1024x576.png\" width=\"640\" height=\"360\" srcset=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/FinalMugC-1024x576.png 1024w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/FinalMugC-300x169.png 300w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/FinalMugC-768x432.png 768w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/FinalMugC-480x270.png 480w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/FinalMugC.png 1920w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/span><\/p>\n<p><span style=\"font-family: helvetica, arial, sans-serif; font-size: 12pt;\">Note the 5-point &#8216;X&#8217; being a lot more uniform. \u00a0An &#8216;X&#8217; on either side meant using 10 sensors, but also a blind spot in the front and back of the mug. \u00a0To improve tracking beyond these 10 points, I set up the minimum number of sensors needed to catch a pose on the front of the mug &#8211; 4; and hence the total sensor count being 14. \u00a0Check out <span style=\"color: #00ccff;\"><a style=\"color: #00ccff;\" href=\"http:\/\/www.talariavr.com\/blog\/steamvr-tracking-license-recap\/\"><span style=\"text-decoration: underline;\">this post<\/span><\/a><\/span> for an in-depth review into what dictates sensor count and positions.<\/span><\/p>\n<p><span style=\"font-family: helvetica, arial, sans-serif; font-size: 12pt;\">Now obviously there&#8217;s a lot of red\/orange\/yellow in the graphs. \u00a0This is 100% not at all a marketable configuration, but it has enough blue\/green zones to catch a pose from a front or either side view, and that&#8217;s satisfactory enough to move on and give this little experiment a go! \u00a0Plus SteamVR does a pretty fine job at being able to solve poses based on the IMU and just 1 or 2\u00a0sensors alone once it&#8217;s locked down to a known position. \u00a0So looking at the <em>Initial Pose Possible<\/em> graph, it&#8217;s clear that a front view or side view will catch a pose with deep blue confidence. \u00a0Then from that point, using the <em>Number of Visible Sensors<\/em> graph, tracking will be able to &#8220;survive&#8221; from most views that isn&#8217;t from above or below.<\/span><\/p>\n<p><span style=\"font-family: helvetica, arial, sans-serif; font-size: 12pt;\">Again, I&#8217;d like to reiterate that a proper prototype should be held to far higher standards than what I&#8217;m going for in this run. \u00a0This was more so a test for me to ensure that I&#8217;m familiar with the SteamVR prototyping process. \u00a0This is 10 sensors less than a Vive controller &#8211; between that and the fact this was hand-assembled in one night, I think this reliability is pretty OK.<\/span><br \/>\n<span style=\"font-size: 12pt; font-family: helvetica, arial, sans-serif;\"> <span style=\"font-size: 18pt;\"><br \/>\n<\/span><span style=\"font-size: 18pt;\"><strong>Assembly!<\/strong><\/span><\/span><\/p>\n<p><span style=\"font-family: helvetica, arial, sans-serif; font-size: 12pt;\">I am a tinkerer, and hardware is my jam. \u00a0This is always going to be the most fun part of the design process for me &#8211; hands-on development. \u00a0Here&#8217;s some shots of the final assembly:<\/span><\/p>\n<p><span style=\"font-family: helvetica, arial, sans-serif; font-size: 12pt;\"> <a href=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Front-Tilt.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-382 aligncenter\" src=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Front-Tilt-300x300.jpg\" alt=\"\" width=\"300\" height=\"300\" srcset=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Front-Tilt-300x300.jpg 300w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Front-Tilt-150x150.jpg 150w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Front-Tilt-269x270.jpg 269w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Front-Tilt.jpg 497w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><a href=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Front.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-383 aligncenter\" src=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Front-300x300.jpg\" alt=\"\" width=\"300\" height=\"300\" srcset=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Front-300x300.jpg 300w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Front-150x150.jpg 150w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Front-270x270.jpg 270w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Front.jpg 507w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><a href=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Head-on-Tilt-2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-385 aligncenter\" src=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Head-on-Tilt-2-300x300.jpg\" alt=\"\" width=\"300\" height=\"300\" srcset=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Head-on-Tilt-2-300x300.jpg 300w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Head-on-Tilt-2-150x150.jpg 150w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Head-on-Tilt-2-270x270.jpg 270w, http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Head-on-Tilt-2.jpg 478w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\nEverything is affixed to the mug with pressure sensitive adhesive tape, and for the short-term that stuff holds pretty well. \u00a0Any long-term development and you&#8217;re going to want an epoxy or something else that has a lot more stick than just a bit of tape. \u00a0For reference and scale, the Watchman board is the small square at the bottom centre of the board suite, best seen in the third picture. \u00a0The application board is the larger board with the bright light, which the Watchman is plugged\u00a0into; it also has the\u00a0USB port and battery plugged in. \u00a0Then the third board is the FPGA \/ sensor breakout, which has all those white connectors that the ribbon wires are connected to. \u00a0That board attaches with the other end of the Watchman. \u00a0And that little black rectangle sticking out to the left of the mug is the basic antenna for wireless communication.<br \/>\n<\/span><span style=\"font-family: helvetica, arial, sans-serif;\"><span style=\"font-size: 12pt;\"><span style=\"font-size: 18pt;\"><br \/>\n<\/span><span style=\"font-size: 18pt;\"><strong>Calibration and\u00a0<\/strong><\/span><\/span><span style=\"font-size: 24px;\"><b>Caveats<\/b><\/span><\/span><\/p>\n<p><span style=\"font-family: helvetica, arial, sans-serif; font-size: 12pt;\">Again bearing in mind that this was hand-measured and hand-assembled, the calibration and stability of tracking is pretty darn good! \u00a0But that&#8217;s not to say it&#8217;s without problems. \u00a0This clip shows how much error can come out of a poor calibration that only uses\u00a0a small sampling range of tracking data:<\/span><\/p>\n<div style=\"width: 640px;\" class=\"wp-video\"><!--[if lt IE 9]><script>document.createElement('video');<\/script><![endif]-->\n<video class=\"wp-video-shortcode\" id=\"video-318-1\" width=\"640\" height=\"360\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Calibration_Errors_1_Compressed.m4v?_=1\" \/><a href=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Calibration_Errors_1_Compressed.m4v\">http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Calibration_Errors_1_Compressed.m4v<\/a><\/video><\/div>\n<p><span style=\"font-family: helvetica, arial, sans-serif; font-size: 12pt;\"><br \/>\nAnd so that was a pretty unacceptable offset. \u00a0After quite a bit of troubleshooting (I think it was between the calibration and modelling the .STL that ate away most of my time during this project), thinking the error was an issue with defining the centre of the mug in the JSON file, I concluded that the calibration was the culprit. \u00a0Just think &#8211; if you want to achieve submillimeter accuracy, your sensors are going to need to be\u00a0<em>placed<\/em> with submillimeter accuracy! \u00a0Not by eye and hand as was done in this project &#8211; they should be in line with where the JSON expects them to be with minimal offset if you want a properly positioned result. \u00a0So I moved on to recalibrate using a lot more tracking samples to work with, walking around the whole room so the system had plenty of different perspectives when solving for true sensor placement. \u00a0Below is the recalibrated result:<\/span><\/p>\n<div style=\"width: 640px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-318-2\" width=\"640\" height=\"360\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Calibration_Errors_2_Compressed.m4v?_=2\" \/><a href=\"http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Calibration_Errors_2_Compressed.m4v\">http:\/\/www.talariavr.com\/blog\/wp-content\/uploads\/2017\/02\/Calibration_Errors_2_Compressed.m4v<\/a><\/video><\/div>\n<p><span style=\"font-size: 12pt;\"><span style=\"font-family: helvetica, arial, sans-serif;\"><br \/>\nThis new result certainly isn&#8217;t great, but I&#8217;d say it&#8217;s pretty acceptable considering how hastily this rig was put together. \u00a0Now let&#8217;s put it to use.<\/span><span style=\"font-family: helvetica, arial, sans-serif;\"><br \/>\n<\/span><\/span><span style=\"font-size: 12pt; font-family: helvetica, arial, sans-serif;\"> <span style=\"font-size: 18pt;\"><br \/>\n<\/span><span style=\"font-size: 18pt;\"><strong>Having a Drink in VR!<\/strong><\/span><\/span><\/p>\n<p><span style=\"font-family: helvetica, arial, sans-serif;\"><span style=\"font-size: 12pt;\">As shown in the <span style=\"color: #00ccff;\"><a style=\"color: #00ccff;\" href=\"https:\/\/youtu.be\/Rwkeskx-FDo\"><span style=\"text-decoration: underline;\">timelapse<\/span><\/a><\/span> featured at the top of this post &#8211; it works! \u00a0I was able to see the mug and its render model whenever opening the SteamVR dashboard, and could easily access it for a drink whenever I needed. \u00a0But boy, was it terrifying taking that first sip &#8211; because of the HMD, I had to angle my head back along with the mug to the point where I was seriously concerned of flooding the headset. \u00a0Haha, thankfully such an event did not occur. \u00a0But I definitely foresee bottles and straws being a far more common way to drink from within VR in the future.<\/span><\/span><\/p>\n<p><span style=\"font-family: helvetica, arial, sans-serif;\"><span style=\"font-size: 12pt;\">Oh, and it&#8217;s worth noting that the mug is wired in these videos because I made the mistake of plugging my SteamVR USB RF receiver directly into my PC (without a hub), and something they warned us about in the training is that proximity to USB 3.0 ports is a <a href=\"http:\/\/www.intel.com\/content\/www\/us\/en\/io\/universal-serial-bus\/usb3-frequency-interference-paper.html\"><span style=\"text-decoration: underline;\"><span style=\"color: #00ccff; text-decoration: underline;\">known issue<\/span><\/span><\/a> that <span style=\"text-decoration: underline; color: #00ccff;\"><a style=\"color: #00ccff; text-decoration: underline;\" href=\"https:\/\/en.wikipedia.org\/wiki\/USB_3.0#Radio_frequency_interference\">messes with RF communication<\/a><\/span>. \u00a0During the week after this prototyping marathon I was able to sustain stable wireless tracking by plugging into the headset&#8217;s extra USB connector (which oddly enough is blue, implying it&#8217;s USB 3.0&#8230;)<br \/>\n<span style=\"font-size: 18pt;\"><br \/>\n<\/span><span style=\"font-size: 18pt;\"><strong>Further Experimentation<\/strong><\/span><br \/>\n<\/span><\/span><\/p>\n<p><span style=\"font-family: helvetica, arial, sans-serif;\"><span style=\"font-size: 12pt;\">The neat thing about making custom SteamVR tracked objects is that they communicate to your PC the same way your Vive controllers (or HMDs) do, so as far\u00a0as SteamVR and its hosted experiences are concerned, my mug was just a third controller. \u00a0If I turned off one of the Vive controllers, then I was able to use my mug in place of it! \u00a0Only a few games actually bring in the render model itself (most will replace the render model with something more custom\/stylized for that experience), but it was pretty sweet punching beats and petting a robo-dog with a mug, haha.<\/span><\/span><\/p>\n<p><span style=\"font-family: helvetica, arial, sans-serif;\"><span style=\"font-size: 12pt;\">Another thing to take note of is that when the pin is floating \/ not connected, the analogue trigger believes it is pulled all the way. \u00a0You can see during the video I will grab things accidentally and not be able to let go. \u00a0Interesting!<\/span><\/span><\/p>\n<p><iframe loading=\"lazy\" title=\"SteamVR Mug Further Experimental Use\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/G8O6URVDnko?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<p><span style=\"font-family: helvetica, arial, sans-serif;\"><span style=\"font-size: 12pt;\">I kept this mug around for a little while, using it during long sessions to keep hydrated without breaking immersion; it was pretty sweet that something I made in one got so much use. \u00a0But alas, exposed electronics attached to a vessel that&#8217;s host to water probably isn&#8217;t the smartest pairing&#8230; \u00a0Bottom line, I managed to water damage one of the application boards given to us in the hardware development kit.<\/span><\/span><\/p>\n<p><span style=\"font-family: helvetica, arial, sans-serif;\"><span style=\"font-size: 12pt;\">Whoops.<\/span><\/span><\/p>\n<p><span style=\"font-family: helvetica, arial, sans-serif;\"><span style=\"font-size: 12pt;\">Thankfully it wasn&#8217;t the extremely valuable Watchman board, but still &#8211; darn. \u00a0I was able to harvest the other application board out of the the reference object \/ mushroom from the training, but needless to say I didn&#8217;t use the mug anymore after that experience.<br \/>\n<span style=\"font-size: 18pt;\"><br \/>\n<\/span><span style=\"font-size: 18pt;\"><strong>Next time&#8230;<\/strong><\/span><\/span><\/span><\/p>\n<p><span style=\"font-size: 12pt; font-family: helvetica, arial, sans-serif;\">I hope my ongoing documentation of this process is useful\/interesting to you all! \u00a0Next SteamVR post, we&#8217;ll look into exploring 3D printed parts and some early ideas on\u00a0a prototypical product :)<\/span><\/p>\n<p><span style=\"font-size: 12pt; font-family: helvetica, arial, sans-serif;\">I love hearing from the community, so I encourage you to join in the discussions down in the\u00a0<a style=\"color: #00ccff; text-decoration: underline;\" href=\"http:\/\/www.talariavr.com\/blog\/steamvr-mug\/#respond\">comments<\/a>,\u00a0or feel free to write me an email via <span style=\"text-decoration: underline;\"><span style=\"color: #00ccff;\"><a style=\"color: #00ccff; text-decoration: underline;\" href=\"mailto:blog@talariavr.com\">blog@talariavr.com<\/a><\/span><\/span>! \u00a0&#8216;Til next time.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Motion Capturing a Mug in VR I wanted my first through-and-through project\/experiment with SteamVR to be something practical; I tossed around the idea of motion capturing my keyboard or mouse, some headphones, etc. &#8211; the usual things that folks want to be brought in to their virtual environment from the real world. \u00a0I settled on a mug because of two reasons: 1.) There&#8217;s enough unused exterior surface on the mug that I&#8217;d have plenty of room to place sensors and&#8230;<\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"http:\/\/www.talariavr.com\/blog\/steamvr-mug\/\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,12,6],"tags":[],"class_list":["post-318","post","type-post","status-publish","format-standard","hentry","category-hardware","category-prototyping","category-steamvr-tracking"],"_links":{"self":[{"href":"http:\/\/www.talariavr.com\/blog\/wp-json\/wp\/v2\/posts\/318","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.talariavr.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.talariavr.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.talariavr.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.talariavr.com\/blog\/wp-json\/wp\/v2\/comments?post=318"}],"version-history":[{"count":35,"href":"http:\/\/www.talariavr.com\/blog\/wp-json\/wp\/v2\/posts\/318\/revisions"}],"predecessor-version":[{"id":411,"href":"http:\/\/www.talariavr.com\/blog\/wp-json\/wp\/v2\/posts\/318\/revisions\/411"}],"wp:attachment":[{"href":"http:\/\/www.talariavr.com\/blog\/wp-json\/wp\/v2\/media?parent=318"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.talariavr.com\/blog\/wp-json\/wp\/v2\/categories?post=318"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.talariavr.com\/blog\/wp-json\/wp\/v2\/tags?post=318"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}