tag:blogger.com,1999:blog-60978100152736355752024-03-01T04:38:01.792-05:00Machinis Ludo Game JamMorganhttp://www.blogger.com/profile/10895207997945851010noreply@blogger.comBlogger234125tag:blogger.com,1999:blog-6097810015273635575.post-37405566650362506492017-02-01T16:24:00.000-05:002016-08-08T16:58:00.043-04:00About Machinis Ludo<b style="background-color: white; font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; line-height: 18px;"><span style="color: #990000;">Machinis Ludo </span></b><span style="background-color: white; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; line-height: 18px;">is a game jam series run by Prof. <a href="http://cs.williams.edu/~morgan">Morgan McGuire</a> at <a href="http://www.williams.edu/">Williams College</a> with a satellite location run by Michael Mara at Stanford University and participants around the world over the Internet. A game jam is an intense party at which developers set aside their regular work and <b>create new video games</b> from scratch, working individually or in small groups. </span><br />
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_JD_jW1GZA1OHnGjJ9MARUSDoEtsEa_pj86NyWX0mk7dTh1gXGvZ1DNy3PB2My5X9CBuP-TdDDRw0mz3RqsHx1XHATL06o6yHkSphiza0K7tIKnzdVk4mq87gjTn_Tge3EDwAtmjP0XU/s1600/photo.JPG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="169" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_JD_jW1GZA1OHnGjJ9MARUSDoEtsEa_pj86NyWX0mk7dTh1gXGvZ1DNy3PB2My5X9CBuP-TdDDRw0mz3RqsHx1XHATL06o6yHkSphiza0K7tIKnzdVk4mq87gjTn_Tge3EDwAtmjP0XU/s320/photo.JPG" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Working in the McGuire Graphics Lab at<br />
Williams College for Machinis Ludo 2</td></tr>
</tbody></table>
<span style="background-color: white; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; line-height: 18px;">Some game jams have a physical location and others are entirely virtual, with developers posting to a communual blog to share their work. <a href="http://www.ludumdare.com/compo/">Ludum Dare</a> and the <a href="http://globalgamejam.org/">Global Game Jam</a> are examples of two of the largest virtual jams. Machinis Ludo is a hybrid, with physical sites</span><span style="background-color: white; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; line-height: 18px;"> but half of the participants working remotely. Everyone uses this blog to share their progress. Look at the <a href="http://machinisludo.blogspot.com/2013/03/machinis-ludo-2-games.html">summary page from Machinis Ludo 2</a> to see some examples of what people create in a game jam.</span><br />
<br />
<a name='more'></a><br />
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5xlflWloHIXlBwdnhCFSprk5NRncyck2pP4wvvFNktcfcYdeF9HXmdRGnKeqQwTIIFX0RyE8RsdBa0NaH-7iXOCFJgwuS8JT9SFyDXQfX0iq25G9g_XF9c0b-PVFsGaDR8TCw-HrisOFW/s1600/2013-08-09_007_radiosity.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5xlflWloHIXlBwdnhCFSprk5NRncyck2pP4wvvFNktcfcYdeF9HXmdRGnKeqQwTIIFX0RyE8RsdBa0NaH-7iXOCFJgwuS8JT9SFyDXQfX0iq25G9g_XF9c0b-PVFsGaDR8TCw-HrisOFW/s320/2013-08-09_007_radiosity.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Sponza Atrium with radiosity by<br />
Mike Mara from Machinis Ludo 3</td></tr>
</tbody></table>
<span style="background-color: white;"><span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><span style="line-height: 18px;">Game jams have many benefits. They help those of us in the industry who work on multi-year megaprojects with large teams get back to the kind of freeform, intuitive exploration of games that brought us to the field in the first place. This rejuvinates creativity and enthusiasm, and often leads to ideas that later appear in commerical games. For students, they are a great chance to gain experience, train yourself to work to a tight schedule, and to build a portfolio of interesting and impressive projects. For hobbyists, it is a chance to meet like-minded people and build skills. Many hobby projects suffer from lack of focused time and a jam is a way to set the rest of the world aside for a few days to really dig in and make serious progress. Working side by side with other people who are equally invested in their passion projects is an exhilarating experience.</span></span></span><br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhyphenhyphensBDn54WOhUmDRANmh6qL802O6HlstIHtvEqCCKL-WFjFtPxZ7yMioBvkpG_cydKIAMsjET4Je034SPI_Bg9F13nlAoFaQ4NqDXtLEHTa1B3A-2Wy3ZQJuRpfaUnaoWM8xRVCjct_L0/s1600/2013-03-30_003_operatives.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhyphenhyphensBDn54WOhUmDRANmh6qL802O6HlstIHtvEqCCKL-WFjFtPxZ7yMioBvkpG_cydKIAMsjET4Je034SPI_Bg9F13nlAoFaQ4NqDXtLEHTa1B3A-2Wy3ZQJuRpfaUnaoWM8xRVCjct_L0/s320/2013-03-30_003_operatives.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Operatives: Hidden Agenda jam game by<br />
Morgan McGuire for Machinis Ludo 2</td></tr>
</tbody></table>
<span style="background-color: white; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; line-height: 18px;"><br /></span>
<span style="background-color: white; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; line-height: 18px;">We experiment with the format of Machinis Ludo for each jam. Jams are between 12 and 72 hours long. We usually offer a "professional" track with a time limit per day to support those with day jobs and a "hardcore" track where developers are welcome to work around the clock.</span><br />
<span style="background-color: white; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; line-height: 18px;"><br /></span>
<span style="background-color: white; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; line-height: 18px;">Like any constructive retreat or exercise, in a game jam you're only competing with the clock. We say that someone has "won" the jam if they complete a game by the end, and the goal is for <i>everyone</i> to win. </span><br />
<span style="background-color: white; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; line-height: 18px;"><br /></span>
<span style="background-color: white; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; line-height: 18px;">Our rules are:</span><br />
<br />
<ol>
<li><span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><span style="line-height: 18px;">Prototypes, libraries, assets may be created before the jam, but all main development must be during the jam period. It is easier to for most of us to participate if the jam is a limited time commitment!</span></span></li>
<li><span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><span style="line-height: 18px;">Post a design a few days before the jam begins (Examples: <a href="http://machinisludo.blogspot.com/2013/01/morgan-mcguire.html" style="font-family: Times; line-height: normal;">Bit Pirates</a><span style="font-family: "times"; line-height: normal;">, </span><a href="http://machinisludo.blogspot.com/2013/01/philippe-intro-and-game-description.html" style="font-family: Times; line-height: normal;">Crossword-Z </a><span style="font-family: "times"; line-height: normal;">, </span><a href="http://machinisludo.blogspot.com/2013/01/chris-intro.html" style="font-family: Times; line-height: normal;">Explosion Golf</a>)</span></span></li>
<li><span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><span style="line-height: 18px;">Any game engine is allowed. We encourage use of the <a href="http://g3d.sf.net/">G3D Innovation Engine</a> and <a href="http://codeheartjs.com/">codeheart.js</a>, which many of us contribute to in order to support exactly this kind of rapid and innovative development.</span></span></li>
<li><span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; line-height: 18px;">Any location. Work in lab if you can make it to Williamstown and like a communal atmosphere with pizza and dance music. Work from home or your office if you need solitude to concentrate.</span></li>
<li><span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><span style="line-height: 18px;"><b>Post screenshots</b> regularly to this blog showing your work. If the jam is on a weekend, we recommend also tweeting to #screenshotsaturday</span></span></li>
<li><span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><span style="line-height: 18px;">Have a playable game at the end of the jam to win! <i>Playable</i> and <i>game</i> don't always mean <i>good</i> or <i>fun.</i></span></span></li>
</ol>
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; line-height: 18px;"><b><span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; line-height: 18px;"><b><br /></b></span>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkptCIPZDzcCXAll1M4VGPyWTtcjOJ7NSkycDtNmikyKJ7CVG4C8MhuT7dVSeluKzHCd7cJjONbep-T6Z0deqa4SYf94jWzpRbfURNk-ss-22DwVqqPHtLe3q_Aw5-JTQb2_DQtZmTwLo/s1600/xg_post_jam_polish.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkptCIPZDzcCXAll1M4VGPyWTtcjOJ7NSkycDtNmikyKJ7CVG4C8MhuT7dVSeluKzHCd7cJjONbep-T6Z0deqa4SYf94jWzpRbfURNk-ss-22DwVqqPHtLe3q_Aw5-JTQb2_DQtZmTwLo/s320/xg_post_jam_polish.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Explosion Golf by Chris Warren from Machinis Ludo 2</td></tr>
</tbody></table>
Your creation is your own game</b>. You can share the game, the source code...or not. You can polish your game later and sell it (which we encourage!), throw it away, or anything in between. If you're working on a team, hash out ownership before you begin. You should only use assets that you have legal permission to use and we highly recommend using non-viral materials that allow commercial use so that you can later publish your game without having to recreate it.</span><br />
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; line-height: 18px;"><br /></span>
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; line-height: 18px;">We plan to run four jams per year. We're interested in cohosting with other schools or companies who would like to offer other physical sites for developers to congregate.</span><br />
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; line-height: 18px;"><br /></span>
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; line-height: 18px;">Previous Machinis Ludo events:</span><br />
<blockquote>
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; line-height: 18px;"><a href="http://machinisludo.blogspot.com/2012/12/innovate-2013.html">Machinis Ludo I: INNOVATE (January 2013)</a></span><br />
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; line-height: 18px;"><a href="http://machinisludo.blogspot.com/2013/02/announcing-machinis-ludo-ii-game-jam.html">Machinis Ludo II: March 2013</a></span><br />
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; line-height: 18px;"><a href="http://machinisludo.blogspot.com/2013/06/machinis-ludo-3.html">Machinis Ludo III: July 2013</a></span><br />
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><span style="line-height: 18px;"><a href="http://machinisludo.blogspot.com/2013/08/august-hackathon.html">Machinis Ludo IV: Algorithm Jam (August 2013)</a></span></span><br />
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><a href="http://machinisludo.blogspot.com/2014/05/machinis-ludo-v-cooperative-jam.html">Machinis Ludo V: Cooperative Jam (June 2014)</a></span>
<br />
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><a href="http://machinisludo.blogspot.com/2015/01/machinis-ludo-6-game-jam.html">Machinis Ludo VI: January 2015</a></span>
<br />
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><a href="http://machinisludo.blogspot.com/2015/07/machinis-ludo-vii-vr-jam.html">Machinis Ludo VII: Virtual Reality Jam (July 2015)</a></span>
<br />
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><a href="http://machinisludo.blogspot.com/2016/08/machinis-ludo-viii-vr-day.html">Machinis Ludo VIII: Williams + NVIDIA + Vicarious Visions VR Day (August 2016)</a></span>
</blockquote>
Morganhttp://www.blogger.com/profile/10895207997945851010noreply@blogger.comtag:blogger.com,1999:blog-6097810015273635575.post-68182332490259392812016-08-22T15:32:00.001-04:002016-08-22T15:34:37.168-04:002016 VV-Williams-NVIDIA VR Hackathon ResultsThe <a href="http://machinisludo.blogspot.com/2016/08/machinis-ludo-viii-vr-day.html">Machinis Ludo VIII game jam</a> was a very special event. We spent a 12-hour day on VR demos and VR prototyping. Due to the large amount of technology and technical knowledge required for the event, we restricted this event to invited staff and students of Vicarious Visions, Williams College, and NVIDIA. Our equipment was provided by those institutions, with additional head mounted displays donated by Oculus and Google.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAnnQY1QcUTnn22i_L4jvWjyRFe_d2eneGWbRv-Xgu_fSdtDhvkVHsvPifmYkTmIyHXfSmh3ypgNZgM-oUX1_thyY_l0CdySupWeHuk7xqUWmN1OSp58PFiuuSKmfTEX5a40LXNl5R_AU/s1600/IMG_20160819_181635.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAnnQY1QcUTnn22i_L4jvWjyRFe_d2eneGWbRv-Xgu_fSdtDhvkVHsvPifmYkTmIyHXfSmh3ypgNZgM-oUX1_thyY_l0CdySupWeHuk7xqUWmN1OSp58PFiuuSKmfTEX5a40LXNl5R_AU/s400/IMG_20160819_181635.jpg" width="400" /></a></div>
<br />
<br />
<a name='more'></a>We began the day with an impromtu IT jam: creating a pop-up lab and makerspace in an hour during breakfast provided by Williams. We extended the existing McGuire Graphics Lab facilities at Williams College with five new VR development stations and a second analog and hardware bench. We're grateful for technical support from Mary Bailey, Steve Amann, and Todd Gould at Williams College for the prep work that made this possible.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjMfr0ldGHWGulTg3B_YSPvxUbMdtQWKvcBdLF_3lqtHNJky4OYUmwPz6_vhb9Lw_dAGCl7D721Pk7eXtD9vOc5HVcfdRGh9CdH-uqz9MnJ0kbbNthFubnvN15D_FwumF3KI-ctOqHejI/s1600/IMG_20160819_112406.jpg" imageanchor="1"><img border="0" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjMfr0ldGHWGulTg3B_YSPvxUbMdtQWKvcBdLF_3lqtHNJky4OYUmwPz6_vhb9Lw_dAGCl7D721Pk7eXtD9vOc5HVcfdRGh9CdH-uqz9MnJ0kbbNthFubnvN15D_FwumF3KI-ctOqHejI/s200/IMG_20160819_112406.jpg" width="200" /></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicQqX4BrBVb12gFAX1YtOb9JkBI3iRu2xfQwEDQyGK63vsUh0gj-vHIFw6l483MCnDGbGjgLOaXo4Zbm9N0GtGmUyWRHLwK1y6065jYjwkLk3FHhJx1UXs-xvK_F0PHNiOYVa7o94JG44/s1600/IMG_20160819_113041.jpg" imageanchor="1"><img border="0" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicQqX4BrBVb12gFAX1YtOb9JkBI3iRu2xfQwEDQyGK63vsUh0gj-vHIFw6l483MCnDGbGjgLOaXo4Zbm9N0GtGmUyWRHLwK1y6065jYjwkLk3FHhJx1UXs-xvK_F0PHNiOYVa7o94JG44/s200/IMG_20160819_113041.jpg" width="200" /></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfmuQ_2wYBR_vJrY2i0c0vorb0HYnOhm8K-8KRNyjNeBVyyIyN-cgW93S7AXyvbo9ct_-ApjTvoyYdRFlRZAt6BJPfNAMeuzGBsNsyBbMwuI6O7deZzYP_QgLcQ6FcEfwJ3UjeD5SbK4I/s1600/IMG_20160819_101148.jpg" imageanchor="1" style="text-align: center;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfmuQ_2wYBR_vJrY2i0c0vorb0HYnOhm8K-8KRNyjNeBVyyIyN-cgW93S7AXyvbo9ct_-ApjTvoyYdRFlRZAt6BJPfNAMeuzGBsNsyBbMwuI6O7deZzYP_QgLcQ6FcEfwJ3UjeD5SbK4I/s200/IMG_20160819_101148.jpg" width="170" /> </a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi5XSWRwSKzMTt0Sye6WegZoNUmfhO2AN5q7O7GhPJmQjQumgrlJFOqs1LA2rsN2bkvdX-MOgVDvpNjYRJFuhnIqqNxssGD3iDBE9Q4qJymJhi8lX1kTajYUT13-axKZpSz3Zl9-Ko_f8/s1600/IMG_20160819_102226.jpg" imageanchor="1" style="text-align: center;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi5XSWRwSKzMTt0Sye6WegZoNUmfhO2AN5q7O7GhPJmQjQumgrlJFOqs1LA2rsN2bkvdX-MOgVDvpNjYRJFuhnIqqNxssGD3iDBE9Q4qJymJhi8lX1kTajYUT13-axKZpSz3Zl9-Ko_f8/s200/IMG_20160819_102226.jpg" width="150" /> </a><br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz9YtcyKMgjhtSSZyrqfo2wFizSEgX1mES2wsNIZYcFggLA92eQZ_akpu0Mkn50tpfUQpZ3HqeUtcJZpD5jrdvn_ePK7xmZiJ_KbyITudjdpPq6IVWeYwbKNqat7t0fuUCRvJhHW8BLAM/s1600/IMG_20160819_092704.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="148" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz9YtcyKMgjhtSSZyrqfo2wFizSEgX1mES2wsNIZYcFggLA92eQZ_akpu0Mkn50tpfUQpZ3HqeUtcJZpD5jrdvn_ePK7xmZiJ_KbyITudjdpPq6IVWeYwbKNqat7t0fuUCRvJhHW8BLAM/s200/IMG_20160819_092704.jpg" width="200" /></a>We then ran demos of VR experiences on Vive for attendees who hadn't tried it before and brainstormed new projects. The group quickly divided into three teams and executed on combinations of our ideas:<br />
<br />
<ol>
<li>Two-player networked tennis (VR pong!)</li>
<li>Real-world temperature feedback for virtual events</li>
<li>VR plugins for social interaction</li>
</ol>
<br />
We built these out during two development stations using the Unity engine with an <a href="http://dept.cs.williams.edu/~morgan/code/">open source custom starter project</a> I wrote using the SteamVR and VRTK asset kits, and then demoed them at the end of the day. Because Williamstown is a vacation destination during the summer, we also took advantage of the beautiful surroundings for a picnic by the river and then dinner in town sponsored by Vicarious Visions.<br />
<br />
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiv9rsHx3DjlxGSPoynvtA15Q0NFQZN45vH_6tJCsCCO1SxWU46KmA7xQZrjtaVW85cXW7wGPF58U91h8omqLQB3axsAvJJv7lt0WQIPn6rSCfTdZC4_RrDwcuVWHAILzK-BmfrgB3KFtI/s1600/IMG_20160819_113051.jpg" imageanchor="1"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiv9rsHx3DjlxGSPoynvtA15Q0NFQZN45vH_6tJCsCCO1SxWU46KmA7xQZrjtaVW85cXW7wGPF58U91h8omqLQB3axsAvJJv7lt0WQIPn6rSCfTdZC4_RrDwcuVWHAILzK-BmfrgB3KFtI/s200/IMG_20160819_113051.jpg" width="150" /> </a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhh_nssowDj4N-Zix9Qd7mjUNtc7FaWaCI0jQwV9DZczYKXmrC8LUPUiSIptwD-vDk5QO_bhu4NM0QjUemq6zo0lEmhXnvBKqx5ZwhZQkvmegcBSl2Ys0_fTVVLRSZ7Zk6k0BoJzdYkDIg/s1600/IMG_20160819_134154.jpg" imageanchor="1"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhh_nssowDj4N-Zix9Qd7mjUNtc7FaWaCI0jQwV9DZczYKXmrC8LUPUiSIptwD-vDk5QO_bhu4NM0QjUemq6zo0lEmhXnvBKqx5ZwhZQkvmegcBSl2Ys0_fTVVLRSZ7Zk6k0BoJzdYkDIg/s200/IMG_20160819_134154.jpg" width="150" /></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLYrn1RR4BkV8gV7WsiQsW2mRoUAVte7-uehpefSsLI199v5So3ufMxVDDqpGPwmrM-PYhuQmRzzlkVhXHTtIGm6WvwXn-mxMmTq60PdHWeGzH6Z9Z6n1Fa2wRZNDdz5RiZv_bPZy-LaI/s1600/IMG_20160819_133431.jpg" imageanchor="1"><img border="0" height="186" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLYrn1RR4BkV8gV7WsiQsW2mRoUAVte7-uehpefSsLI199v5So3ufMxVDDqpGPwmrM-PYhuQmRzzlkVhXHTtIGm6WvwXn-mxMmTq60PdHWeGzH6Z9Z6n1Fa2wRZNDdz5RiZv_bPZy-LaI/s200/IMG_20160819_133431.jpg" width="200" /></a></div>
<div style="text-align: center;">
Essential VR Essential Equipment</div>
<br />
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiack2lelEGur51Jqj9vW7_VnvwNJunaBm2aCKEvguBjojMtFhSBD8GpgqcEBNdnnbMBqJ-kVzmkEZh42VjfcATohP8OJWSpxfSYkCqabIJQ64W47fEdco-lJLUhbzc2gbGFLZEsWe1gew/s1600/IMG_20160819_123847.jpg" imageanchor="1"><img border="0" height="187" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiack2lelEGur51Jqj9vW7_VnvwNJunaBm2aCKEvguBjojMtFhSBD8GpgqcEBNdnnbMBqJ-kVzmkEZh42VjfcATohP8OJWSpxfSYkCqabIJQ64W47fEdco-lJLUhbzc2gbGFLZEsWe1gew/s320/IMG_20160819_123847.jpg" width="320" /></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjm-23nQ8vqrO5p0XNNy07hyCCz1ZjSbIl6cve1JtXo4E9b_wKbhl_Ef5EgsFEl10AG43pJRj-x0wITz9fpf0iy029A57WbGw7tApcOg7FjryIubNU8FhB2bJIhTDTFDnjjFRS4CbA87wU/s1600/IMG_20160819_124917.jpg" imageanchor="1"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjm-23nQ8vqrO5p0XNNy07hyCCz1ZjSbIl6cve1JtXo4E9b_wKbhl_Ef5EgsFEl10AG43pJRj-x0wITz9fpf0iy029A57WbGw7tApcOg7FjryIubNU8FhB2bJIhTDTFDnjjFRS4CbA87wU/s200/IMG_20160819_124917.jpg" width="200" /></a> </div>
The final experiences were all impressive returns on the time invested, and indicate great directions for future exploration. The networked tennis used the HMD to directly control position, so the players actually had to dodge back and forth. It showed that even the barest element of another person in VR (here, just a cylinder) creates a powerful sense of sharing a space due to telepresence. This was the first networked VR experience I've tried and it made clear how imperative multiplayer will be for future VR projects...as well as how challenging low-latency synchronization can be.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZ3Iv3DYo1X4yAVoLr_GUCA4gGdWbjl2nsanrnheO6_G5WO4wZyUqCbjJDy0Hp9J_S_NgG_xXA31Ebc8lbbx3fAOSYQY9WdBuQxwEYl5tLJyXBXsuW6kjlEIfJq81F00MQLgsYi0xGeaw/s1600/IMG_20160819_093845.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><br /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLqwkDadGbknkh1d72WgqWBQ__xaIahxUH1RqZojybkDedKLvkgvrUCOsF3bjuR_v-N5VoKj3Yox5ObNzfG18acm2DydV0ztCodrEm9R4YOI13alS2qukBHUQkvJmI39Lc1ybyr4HsoWM/s1600/IMG_20160819_113013.jpg" imageanchor="1"><img border="0" height="155" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLqwkDadGbknkh1d72WgqWBQ__xaIahxUH1RqZojybkDedKLvkgvrUCOsF3bjuR_v-N5VoKj3Yox5ObNzfG18acm2DydV0ztCodrEm9R4YOI13alS2qukBHUQkvJmI39Lc1ybyr4HsoWM/s320/IMG_20160819_113013.jpg" width="320" /></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSRSWoyifBDfHu-37Rh7kqoXCeSjoa3t4jUu-BpdDgRe-vKWdRpdgWwuyxFgXwu91VRbStluOUQ1520JK4UNLrYW92xh3wfv2LgIf4hnZGqTY_CbPimGcXE4pGoVhgOOxdR-YAJUpR0H4/s1600/IMG_20160819_113029.jpg" imageanchor="1"><img border="0" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSRSWoyifBDfHu-37Rh7kqoXCeSjoa3t4jUu-BpdDgRe-vKWdRpdgWwuyxFgXwu91VRbStluOUQ1520JK4UNLrYW92xh3wfv2LgIf4hnZGqTY_CbPimGcXE4pGoVhgOOxdR-YAJUpR0H4/s200/IMG_20160819_113029.jpg" width="200" /></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7VEjd1H3_pEOwDjZkZChafYsaSdwXzGBDwz9sI7FDug1ou8HmEdlsjXEzORT4VU_QlRbP2qipJDPYDTL9M4QLgShX33KxEJbfUC23B3SBe5XME5Nv8uVuA_VoGeDVOI9OM0wcqNIXPtM/s1600/IMG_20160819_173315.jpg" imageanchor="1"><img border="0" height="107" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7VEjd1H3_pEOwDjZkZChafYsaSdwXzGBDwz9sI7FDug1ou8HmEdlsjXEzORT4VU_QlRbP2qipJDPYDTL9M4QLgShX33KxEJbfUC23B3SBe5XME5Nv8uVuA_VoGeDVOI9OM0wcqNIXPtM/s200/IMG_20160819_173315.jpg" width="200" /></a><br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOGJI70X5QhIZNKJ1x-_QLqXffdf3q2fuF5qIJos2zt0eMTEl92C4qPglNqlpglf-EkLfYldq7L87mAMZ093ZitKxQMql_b8GwKN-EcuM34z64hKNIz6l7JEwMtM8NEhm-y8xyH4Rw_bE/s1600/IMG_20160819_173957.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="167" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOGJI70X5QhIZNKJ1x-_QLqXffdf3q2fuF5qIJos2zt0eMTEl92C4qPglNqlpglf-EkLfYldq7L87mAMZ093ZitKxQMql_b8GwKN-EcuM34z64hKNIz6l7JEwMtM8NEhm-y8xyH4Rw_bE/s200/IMG_20160819_173957.jpg" width="200" /></a>The temperature team built a cardboard weapon mockup with electronic elements controlled by their program. It could heat up or cool down significantly in about two seconds. The hot end of the spectrum felt like touching a toaster and the cold end like holding an ice cube. In VR, you saw yourself holding a flamethrower or "ice gun". Pulling the trigger would shoot fire or ice via a particle system. The combination of holding the tool, visuals, audio, and temperature made the effect surprisingly convincing. It was my favorite experience...even without any other mechanics, I still wanted to keep playing with it for an hour.<br />
<br />
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsMNYqk0TTPeNdpB9q7dm3x9esePAoBmeByHO0qRKVyMRC0uHgLFSaM664FvpA4kWd_iX9mK1viSShIIWwultr3l4-eKV1TWmpKyuCITnqnmpSqraft4FO40bjWo7qU1sAOngTEcpjAD8/s1600/IMG_20160819_174135.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsMNYqk0TTPeNdpB9q7dm3x9esePAoBmeByHO0qRKVyMRC0uHgLFSaM664FvpA4kWd_iX9mK1viSShIIWwultr3l4-eKV1TWmpKyuCITnqnmpSqraft4FO40bjWo7qU1sAOngTEcpjAD8/s200/IMG_20160819_174135.jpg" width="200" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4c5XrZghbdQ7tEKJ0MUsjqJveEEODk2X0JICq_x_Q-RFn1VGsqowqA1lehRvfYC1hTD2ZavbedJmhdrviZu-vClWvxXgJ-MNaR4OPdd5XZX-04TLYTBdkU0kZtyxySIZTmnQAdmc8yMM/s1600/IMG_20160819_142746.jpg" imageanchor="1"><img border="0" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4c5XrZghbdQ7tEKJ0MUsjqJveEEODk2X0JICq_x_Q-RFn1VGsqowqA1lehRvfYC1hTD2ZavbedJmhdrviZu-vClWvxXgJ-MNaR4OPdd5XZX-04TLYTBdkU0kZtyxySIZTmnQAdmc8yMM/s200/IMG_20160819_142746.jpg" width="200" /></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYXEIM2EN4CiZvR40JsKLAHrm5yPeOKUJwHjZlMau7lfU9NdroDMYaqKrlPThlOJWhSbhGmiEitHictZV5m7Pn4bsIIbzO9avvIddQLwwT7QNT1Q1qpeNyNCe52QDvzNCTc_v6_eymumY/s1600/IMG_20160819_174009.jpg" imageanchor="1"><img border="0" height="135" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYXEIM2EN4CiZvR40JsKLAHrm5yPeOKUJwHjZlMau7lfU9NdroDMYaqKrlPThlOJWhSbhGmiEitHictZV5m7Pn4bsIIbzO9avvIddQLwwT7QNT1Q1qpeNyNCe52QDvzNCTc_v6_eymumY/s200/IMG_20160819_174009.jpg" width="200" /></a></div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-HXHqsOLyjDaKQM1ZH62SEd8mJzQ5_3MKZlKvQeT5H9iNJWQo8uP-qQW5TSVu6st2PP0Yn42d1pX8Ce62nRR1QUf4g0oVydlgg54UN0d_KdTsSw8cKjWVWx0ywsJ1mV4kuT0nWffiC6U/s1600/IMG_20160819_174101.jpg" imageanchor="1" style="text-align: center;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-HXHqsOLyjDaKQM1ZH62SEd8mJzQ5_3MKZlKvQeT5H9iNJWQo8uP-qQW5TSVu6st2PP0Yn42d1pX8Ce62nRR1QUf4g0oVydlgg54UN0d_KdTsSw8cKjWVWx0ywsJ1mV4kuT0nWffiC6U/s200/IMG_20160819_174101.jpg" width="127" /> </a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCbpOLKDuHcUgcP-Zjmf8rCI_m8Ojacl0Ia5AHGxlvv6SWk6Ivm_sPMGV3l3scJLvavi9vTLKARykKKKUTqkTVV6hReniCYW1z6lqyCzAoNCOiurw8EJekyscohNJ7lcwJ_INwUajbSnk/s1600/IMG_20160819_174306.jpg" imageanchor="1"><img border="0" height="147" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCbpOLKDuHcUgcP-Zjmf8rCI_m8Ojacl0Ia5AHGxlvv6SWk6Ivm_sPMGV3l3scJLvavi9vTLKARykKKKUTqkTVV6hReniCYW1z6lqyCzAoNCOiurw8EJekyscohNJ7lcwJ_INwUajbSnk/s200/IMG_20160819_174306.jpg" width="200" /></a><br />
<div style="text-align: center;">
<br /></div>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_pBteZepNwSNL1igzkUR2J_v4GTvXfJd0Tjso-rLCe9kB0AS3i_fA6ZvjWR3j9Jl4166lvLbPSffbUuCb-lC2mAJyLPFqZBp-F2qDnkeiDMbSZUEwPhoJV37A3T6O_gkbXdLzljDgbT8/s1600/IMG_20160819_094400.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="114" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_pBteZepNwSNL1igzkUR2J_v4GTvXfJd0Tjso-rLCe9kB0AS3i_fA6ZvjWR3j9Jl4166lvLbPSffbUuCb-lC2mAJyLPFqZBp-F2qDnkeiDMbSZUEwPhoJV37A3T6O_gkbXdLzljDgbT8/s200/IMG_20160819_094400.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="font-size: 12.8px; text-align: center;">Alas, I knew him well.</td></tr>
</tbody></table>
The social group built out three features. The first was a system for generating random NPCs with complex relationships similar to those from a murder mystery. The second was code to generate random bodies for these NPCs, and then animate them to maintain eye contact with the player. The third was a navigation system where looking at an NPC and pressing a button would teleport the player to a comfortable conversation distance, without the need for explicit teleport lasers or feedback. Part of the great promise of VR is making games that take advantage of presence and embodied gaming to create the social mechanics lacking in most traditional games. These systems are a great start and I look forward to working more in this space.<br />
<br />
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8eDhW5EvyE4CQfAd-dhfgSF58PWEzbEXn_Fqydx26fKnhalRR3fUXXHCVjNjcz7JrGmB08NqyeteUq3zEnkD0xxgKxVVBjT24sUa3TQ49GDNprHXSKvQ5nMJ3f2g1WuLxNVKYUHMc-ec/s1600/IMG_20160819_133946.jpg" imageanchor="1"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8eDhW5EvyE4CQfAd-dhfgSF58PWEzbEXn_Fqydx26fKnhalRR3fUXXHCVjNjcz7JrGmB08NqyeteUq3zEnkD0xxgKxVVBjT24sUa3TQ49GDNprHXSKvQ5nMJ3f2g1WuLxNVKYUHMc-ec/s200/IMG_20160819_133946.jpg" width="154" /></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_AqYMZwYc85px0d0fZXqu2kcYDiPDjHX0RG0wyj9lXSk_5xLUZK9G6uahvTbK_oIsvYrlPGlepBn1kvHwXqQ8HOEkWVRA76kF3VBElXJbQiUP8SFS6bu0fgI2tYbgT_5BtOqlig8kv-4/s1600/IMG_20160819_133613.jpg" imageanchor="1"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_AqYMZwYc85px0d0fZXqu2kcYDiPDjHX0RG0wyj9lXSk_5xLUZK9G6uahvTbK_oIsvYrlPGlepBn1kvHwXqQ8HOEkWVRA76kF3VBElXJbQiUP8SFS6bu0fgI2tYbgT_5BtOqlig8kv-4/s200/IMG_20160819_133613.jpg" width="179" /></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4Swcpl_mPyGzxFUXgWsyKN-Ie1yYPrJ7tv2eJ0XndTPhBZRfAWTPAvl-otBzfnjnxYS7Qy5qgRglswR0iHAjPJ-6bRdECjtZRUFCcp_mlOlLjfgCULyjaG_g_9RwLU4EFT7L8e88pMNw/s1600/IMG_20160819_174338.jpg" imageanchor="1"><img border="0" height="176" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4Swcpl_mPyGzxFUXgWsyKN-Ie1yYPrJ7tv2eJ0XndTPhBZRfAWTPAvl-otBzfnjnxYS7Qy5qgRglswR0iHAjPJ-6bRdECjtZRUFCcp_mlOlLjfgCULyjaG_g_9RwLU4EFT7L8e88pMNw/s320/IMG_20160819_174338.jpg" width="320" /></a></div>
<br />
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZ3Iv3DYo1X4yAVoLr_GUCA4gGdWbjl2nsanrnheO6_G5WO4wZyUqCbjJDy0Hp9J_S_NgG_xXA31Ebc8lbbx3fAOSYQY9WdBuQxwEYl5tLJyXBXsuW6kjlEIfJq81F00MQLgsYi0xGeaw/s1600/IMG_20160819_093845.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZ3Iv3DYo1X4yAVoLr_GUCA4gGdWbjl2nsanrnheO6_G5WO4wZyUqCbjJDy0Hp9J_S_NgG_xXA31Ebc8lbbx3fAOSYQY9WdBuQxwEYl5tLJyXBXsuW6kjlEIfJq81F00MQLgsYi0xGeaw/s200/IMG_20160819_093845.jpg" width="171" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbeR0oiz__yYZKGmwFQmlUSwrsiVfazkSusTvQsJV6L2zjsSFxpgW_vAoTTu2HPOpKVQ5H1S-TpK2YgDjT5Qi72E3pc8up6C2Ly15i26MzHGSuTh6J4GVLjmVfxqbMW4mXWo3Yt4xUX0Q/s1600/IMG_20160819_175324.jpg" imageanchor="1"><img border="0" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbeR0oiz__yYZKGmwFQmlUSwrsiVfazkSusTvQsJV6L2zjsSFxpgW_vAoTTu2HPOpKVQ5H1S-TpK2YgDjT5Qi72E3pc8up6C2Ly15i26MzHGSuTh6J4GVLjmVfxqbMW4mXWo3Yt4xUX0Q/s320/IMG_20160819_175324.jpg" width="320" /></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSBnVrblXKZxwmfL9oSTjOMwN-Ndb1_8OfTu8h6aNGmjuBo1xsJUtrlpGECzWCwA4VyIA1ariWkUWO5fJE0MX4lUlPvGxW0dBEc1h62LVozpUV5V8j_sCGKmkGhf735mWcbU3Q6CO4_Uk/s1600/IMG_20160819_132954.jpg" imageanchor="1"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSBnVrblXKZxwmfL9oSTjOMwN-Ndb1_8OfTu8h6aNGmjuBo1xsJUtrlpGECzWCwA4VyIA1ariWkUWO5fJE0MX4lUlPvGxW0dBEc1h62LVozpUV5V8j_sCGKmkGhf735mWcbU3Q6CO4_Uk/s200/IMG_20160819_132954.jpg" width="119" /></a></div>
<div>
<br /></div>
<br />
If you'd like to participate in an event like this, check out the upcoming <a href="http://www.realityvirtuallyhack.com/#intro">VR hackathon at MIT in October 2016</a>.<br />
<br />
<br />Morganhttp://www.blogger.com/profile/10895207997945851010noreply@blogger.com1tag:blogger.com,1999:blog-6097810015273635575.post-21404913753522458882016-08-08T16:56:00.000-04:002016-08-18T12:14:17.335-04:00Machinis Ludo VIII: VR Day<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS-Amgdg1OB825cc_YVv_tVbtXez2uSZDg8HUUYvk3_MqUJqmMboicfHJOcXUOpsLrnFRJ-6CYtK1rZfC6E3WnMcJMf4GuXge5azvZeLDisLBCfPlclLwokKArYJKyOqggL3uYOSGXZ_0/s1600/title.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="191" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS-Amgdg1OB825cc_YVv_tVbtXez2uSZDg8HUUYvk3_MqUJqmMboicfHJOcXUOpsLrnFRJ-6CYtK1rZfC6E3WnMcJMf4GuXge5azvZeLDisLBCfPlclLwokKArYJKyOqggL3uYOSGXZ_0/s400/title.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<i>August 19th, 2016 at Williams College</i></div>
<br />
<a name='more'></a><br />
Machinis Ludo 8 is a day of learning about virtual reality through demos and development for invited students and staff from <a href="https://www.williams.edu/">Williams College</a>, <a href="https://research.nvidia.com/">NVIDIA Research</a>, and <a href="http://vvisions.com/">Vicarious Visions</a> (an Activision studio).<br />
<br />
We'll be working in Morgan McGuire's <a href="http://graphics.cs.williams.edu/">computational graphics research laboratory</a> at Williams College, which is supported by NVIDIA, Oculus, and Google.<br />
<br />
Due to the practical constraints of VR development and limited space, this will be a closed jam for the specific participants who have already been invited.<br />
<div>
<br /></div>
<h2>
Goals</h2>
<ul>
<li>Learn about virtual reality and VR software development</li>
<li>Gain some experience working in the Unity game engine</li>
<li>Prototype a join college-company educational and professional-development exercise</li>
<li>Prototype a simple VR experience in a small team</li>
</ul>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1DRXrq07rOS1kNk64jBjbpn45NZh8e0PMvVrw768zfBgd0gi2LfXRel8PeE1kiJbJ4sJc1tGwgOgMuzWC0TuVafjBVQkbb29DkLkGAxJYcuc34iefhpBxWIapE6RssPVxqPmTbr5ggOA/s1600/budget-cuts.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="105" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1DRXrq07rOS1kNk64jBjbpn45NZh8e0PMvVrw768zfBgd0gi2LfXRel8PeE1kiJbJ4sJc1tGwgOgMuzWC0TuVafjBVQkbb29DkLkGAxJYcuc34iefhpBxWIapE6RssPVxqPmTbr5ggOA/s200/budget-cuts.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>Budget Cuts</i> VR game demo</td></tr>
</tbody></table>
Notice that "make an awesome VR demo" is not on the list of goals. We'll be developing for only six hours, and for many of us, this will be our first experience with the platform and development tools. Set your expectations low for the quality and features of the VR experience that you produce.<br />
<br />
Your product at the end of the day isn't a program, but the new knowledge you've gained and relationships with the people you met here. Expectations should be high for these.<br />
<br />
<h2>
Preparations</h2>
<ul>
<li>Read this whole planning post.</li>
<li>Play around with <a href="http://dept.cs.williams.edu/~morgan/code/unity/tachyonVRStarter.zip">our Unity 5.4 starter project </a>to gain basic competence at adding event handlers and modifying the scene.</li>
<li>Email me if you prefer vegan meals or have a food allergy. We'll have vegetarian dishes at every meal.</li>
<li>Read about how to <a href="http://casual-effects.blogspot.com/2016/08/strategies-for-avoiding-motion-sickness.html">avoid motion sickness</a>.</li>
</ul>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6Oo8kzuQrwWD6qG8dT8ifxZd5Io-xXAunYOgjR2jh2os5SWzFDEha3CysAY4V54lhkMYhP6H2uXS2HWy3upD0JvzhJD0RfsKjYtq5WRbqSYoCLgiSCNC44qEHCeyTfdxWU-28VSLfdAo/s1600/souls-project.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="112" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6Oo8kzuQrwWD6qG8dT8ifxZd5Io-xXAunYOgjR2jh2os5SWzFDEha3CysAY4V54lhkMYhP6H2uXS2HWy3upD0JvzhJD0RfsKjYtq5WRbqSYoCLgiSCNC44qEHCeyTfdxWU-28VSLfdAo/s200/souls-project.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>Solus</i> VR game</td></tr>
</tbody></table>
<div>
If you're bringing a computer, then I recommend installing ahead of time:</div>
<div>
<ul>
<li>Unity 5.4</li>
<li><a href="http://dept.cs.williams.edu/~morgan/code/unity/tachyonVRStarter.zip">Our VR starter project</a></li>
<li>Valve Steam (includes the SteamVR driver)</li>
<li>Oculus driver/"Home" (you can't complete the installation without an HMD, but at least download it)</li>
<li>Your favorite art and revision control tools</li>
</ul>
<div>
You're welcome to start development on your project before the VR Day, but keep your scope and plans appropriate to the venue. Whatever you begin should be something that you're comfortable abandoning if it turns out to not be a good fit, or think that you can wrap up in a few hours on site while incorporating ideas and code from others.</div>
</div>
<br />
<h2>
Ideas</h2>
<div>
I recommend focusing on interaction mechanics for your prototype. While all games have controls, audio, challenges, and audio, VR has unique movement and camera opportunities. How will you:</div>
<div>
<ul>
<li>Enable player to traverse an environment larger than the tracked space? </li>
<li>Provide without a screen to put a HUD along the borders of? </li>
<li>Direct attention and prevent the player from looking through walls when they are in full control of the camera?</li>
<li>Simulate the player character's root motion due to physics?</li>
<li>Handle 3rd-person view?</li>
<li>Provide real 3D equivalents for gaming conventions such as inventory, view models?</li>
</ul>
</div>
<div>
Any one of those would be a great project to prototype, even if just to find out that an idea <i>doesn't</i> work.</div>
<div>
<br /></div>
<h2>
Schedule</h2>
Arrive by 9:00am, or a little earlier if you're bringing a computer. We'll meet in two rooms, "A" and "B", which will be announced by email to the participants as soon as they are reserved.<br />
<br />
In addition to this schedule, we'll run ad-hoc demos of various commercial VR experiences throughout the day. These will include "Henry," <i>Vanishing Realms</i>, the <i>Budget Cuts</i> demo, <i>AudioShield</i>, and the Vive demo suite.<br />
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjon31Hn_fuieTa-qsrNNGDJy9fKpjTvWFwWwUh6niHkKMTpsYPeEjTg44WgpDHxecHJtYsmUpYE9ZxN1pL7yrNy-Lsc4IgR5JJ7ZymBoJZ_Zl0lZFz_UOqnbeDHb-sLr0uJ-8qV9dx67E/s1600/williams.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="142" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjon31Hn_fuieTa-qsrNNGDJy9fKpjTvWFwWwUh6niHkKMTpsYPeEjTg44WgpDHxecHJtYsmUpYE9ZxN1pL7yrNy-Lsc4IgR5JJ7ZymBoJZ_Zl0lZFz_UOqnbeDHb-sLr0uJ-8qV9dx67E/s200/williams.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Williams College</td></tr>
</tbody></table>
<br />
8:30am-9:30am <b>Breakfast and planning (</b>Room A)<br />
<ul>
<li>Park in the public (and free) <a href="https://www.google.com/maps/place/89+Spring+St,+Williamstown,+MA+01267/@42.7097546,-73.206763,17z/data=!3m1!4b1!4m5!3m4!1s0x89e0ba132484fa15:0x611f00791e8b93eb!8m2!3d42.7097546!4d-73.2045743">Walden St. lot</a> when you arrive</li>
<li>Coffee, juice, bagels, and fruit served</li>
<li>Meet the other jammers and set up teams and plans</li>
<li>I'll help get everyone's machines set up and online during breakfast</li>
</ul>
<br />
9:30am-12:30pm <b>First VR development session </b>(Rooms A + B)<br />
<ul>
<li>In parallel with this session, brief 10-min demos of good VR telepresence on the Vive.</li>
</ul>
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg59SlrRwqGSNvnl9_NeiisopzVMn8MzWeRc687spIK51MFzhtNp0IUzxMvtIS17b58VjJ8jWwTZ05BlbaQpJwP897FhIttwXZGT3kWRXNlYj3LYE3Kfjm6z2GkyGNnkUyNkVZ23-70V5o/s1600/hot-tomatoes-neopolitan-pizza-williamstown-6997369.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg59SlrRwqGSNvnl9_NeiisopzVMn8MzWeRc687spIK51MFzhtNp0IUzxMvtIS17b58VjJ8jWwTZ05BlbaQpJwP897FhIttwXZGT3kWRXNlYj3LYE3Kfjm6z2GkyGNnkUyNkVZ23-70V5o/s200/hot-tomatoes-neopolitan-pizza-williamstown-6997369.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Hot Tomatoes river-side picnicking</td></tr>
</tbody></table>
1:00pm-2:00pm <b>Pizza picnic lunch provided</b><br />
<ul>
<li>at the Green river. Keep cool by wading while eating the best pizza in Berkshire county! </li>
</ul>
<br />
2:00pm-5:30pm <b>Second VR development session</b><br />
<br />
5:30pm-6:00pm <b>Try each other's VR programs</b><br />
<br />
6:00pm-6:30pm <b>Machine breakdown and lab cleanup</b><br />
<br />
6:30pm-8:00pm <b>Wrap and Post-Mortem Party</b><br />
<ul>
<li>Dinner provided at <a href="http://www.sushithaigarden-ma.com/williamstown-ma-xpertly-prepared-japanese-and-thai-cuisine.htm">Sushi Thai Garden</a> on Spring St.</li>
<li>Structured evaluation discussion of the day and VR software development.</li>
<li>What have we learned about Unity for prototyping, and VR development in general?</li>
<li>What have we learned for planning our next event? Successes and failures.</li>
</ul>
<br />
<br />
<h2>
What to Bring</h2>
Dress for <b>warm weather</b>. We'll go outside for lunch if it isn't too hot and there's no rain. The labs are air conditioned, but rise to about 75F when full of people and computers.<br />
<br />
Closed-top <b>water bottle or travel mug</b> for your favorite beverage. Open containers are banned from lab because they are dangerous when we're wearing VR headsets!<br />
<br />
<b>Computer</b> ("CPU + GPU"). You don't need peripherals or an HMD, just the main case. We'll have on hand many DK2s, Google Cardboard holders (without the phones), and limited Rift and Vive virtual reality head-mounted displays. I'll also provide monitors, keyboards and mice (although you may prefer your own), ethernet cables, power cables, etc. You can probably run a DK2 off a powerful laptop with HDMI output, although a desktop computer is ideal. There are three available development machines in the lab and one demo-only machine.<br />
<div>
<br /></div>
<div>
<b>Headphones</b> (ideally with a long cord). Audio is a powerful effect in VR...as is music for programming without distraction in a big room. Plus, especially if you're using in-ear buds, you don't really want to be sharing headphones with everyone at the jam. We usually play "hacker" industrial/EDM background music in the lab at low volume to set the tone for jams, and you may want to block that out as well if you prefer Bach to <i>The Matrix</i> soundtrack.</div>
<div>
<br /></div>
Motion sickness is an occupational hazard of VR development, since while you're developing you're going to put yourself into a lot of not-quite-working environments such as spinning rooms and high-latency tracking. I'll provide ginger chews (scientifically shown to be the most effective preventative for many people), Bonine, ibuprofen, aspirin, and assorted other over-the-counter <b>medicines</b>. If you have a favorite or prescription remedy, bring your own.<br />
<br />
You may want to bring a <b>gamepad</b>. I have four wired Xbox360 controllers and one wireless controller. That's enough for every team to have one, but if you end up designing a multiplayer experience or like to use a gamepad in the editor it would help to have a few more on hand.<br />
<br />
<br />
<br />
<br />
<br />Morganhttp://www.blogger.com/profile/10895207997945851010noreply@blogger.com0tag:blogger.com,1999:blog-6097810015273635575.post-25041047805660266602015-08-05T15:27:00.002-04:002015-08-07T14:13:11.488-04:00[JL] VR Ocean I now have a VR-ocean up and working with real time GPU ray tracing for Oculus Rift using G3D::VRApp. It's very soothing to watch the waves. Open source code and demo will be coming soon after code cleanup.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dxHN0BCdlaYcMeJV-dlVfHoDbz1vzgvwQZmFbjnxdZgXZTcZ9Sg6GYduAKDjl6_OaYg5Uu5Yo-PLjfmHWy6Xw' class='b-hbp-video b-uploaded' frameborder='0'></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh92TJ3bC_VQ_rq4xkkOsQcIS58W91hc4O06IMzc2Y9L11ORsK0ttIFlk0VCjgLFX3YokUcWrht2gqAE76-4HeacO_1uYWpS85u3URZGSXugBy1o6dn_NErV_dnuw-N2pFY7emSTd7OQGRE/s1600/ocean-oculus-user.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh92TJ3bC_VQ_rq4xkkOsQcIS58W91hc4O06IMzc2Y9L11ORsK0ttIFlk0VCjgLFX3YokUcWrht2gqAE76-4HeacO_1uYWpS85u3URZGSXugBy1o6dn_NErV_dnuw-N2pFY7emSTd7OQGRE/s320/ocean-oculus-user.JPG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />Anonymoushttp://www.blogger.com/profile/13757906095198337604noreply@blogger.com3tag:blogger.com,1999:blog-6097810015273635575.post-10384542743337394342015-08-04T16:23:00.003-04:002015-08-04T16:23:57.489-04:00[MM] Victory, with < hour to go<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dzZZysO8YKOspenC4_93rWvrO0hhWvQgTDmf6bEgsm-lA8_gVx1J44mUVerpDXy8sQDmA_KUXW6ws270rWggA' class='b-hbp-video b-uploaded' frameborder='0'></iframe></div>
<br />
Here we have it, shoddy fully body tracking with an extra glitch effect (an adaptation of <a href="https://www.shadertoy.com/view/4t23Rc">https://www.shadertoy.com/view/4t23Rc</a>, applied to things with an alpha channel)!<br />
<br />
You can see the calibration isn't quite right when I lean over to shut off the video at the end. Definitely need an automatic calibration method, too hard to get right (spent way too long on it today) and too easy to hit out of whack.<br />
<br />
My next steps are definitely:<br />
<br />
<ol>
<li>Integrate an automatic calibration method, for getting the relative transform between the oculus camera and the kinect.</li>
<li>Wire up my 2nd kinect</li>
<li>Try generating a mesh instead of a point cloud.</li>
</ol>
<div>
<br /></div>
<div>
This was a super fun jam, and I know how I'd approach things differently if I had to do it all over.</div>
Anonymoushttp://www.blogger.com/profile/05396727573029326850noreply@blogger.com1tag:blogger.com,1999:blog-6097810015273635575.post-83154506348360506582015-08-04T15:05:00.000-04:002015-08-04T15:05:17.888-04:00A moving light source In a Dark SceneSince my last post I have worked on a couple of small things to make the hand tracking and visualization a little neater. I also worked to set up the initial experience that led me to work with the leap motion in the first place.<div>
<br /></div>
<div>
For those that remember my original goal was to create a VR experience where the subject is placed in a dark environment and is able to control with their hands the only light source. Below is a video of what I have done so far. </div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dzoXJnOv6eGE04n8B4RGPfOU8FNwBljwSE7Nc150JMSXFBkREBahiF5Bh6st4sO2KR_UtkRfa2A6lsQF4-4Vg' class='b-hbp-video b-uploaded' frameborder='0'></iframe></div>
<div class="separator" style="clear: both; text-align: left;">
In the original example the light source takes the form of a torch that is constantly on. In my experience I made it so that the light source the player controls is in the form of an orb that can be summoned by looking at your right while it is flat and facing upwards. If you tilt your hand or close your hand past a certain amount the light source disappears.</div>
Anonymoushttp://www.blogger.com/profile/07934189293592508784noreply@blogger.com2tag:blogger.com,1999:blog-6097810015273635575.post-59162649756827894542015-08-04T14:54:00.006-04:002015-08-04T14:54:46.282-04:00Williams College VRJam Site Pictures<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJu3h2P6bSz-mbh5oB-NEI6BRcsaycfTG-4uJ0vnCsfqFSFGfrtlRZpNNj8dsQuBc8vymvEnl3E3u2yI1R4mV1rHTNTYlZPgl0x7CU7vIBz2McQ7RNhUuMlLzNrQogGAHuFXyzzLQjkbs/s1600/IMG_0672.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="239" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJu3h2P6bSz-mbh5oB-NEI6BRcsaycfTG-4uJ0vnCsfqFSFGfrtlRZpNNj8dsQuBc8vymvEnl3E3u2yI1R4mV1rHTNTYlZPgl0x7CU7vIBz2McQ7RNhUuMlLzNrQogGAHuFXyzzLQjkbs/s320/IMG_0672.JPG" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Jamie has an infinite ocean ray tracing in real time and is fixing shading bugs</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2Xwi_N_bQmGom_AElNoKTq9P3gE1x1gheQPszZNkmZAqcSBfXlFRATVh0UcP-3pJ1JjAPO7vyRmxEaPVqJowQTxH9uDTTbAmSxJqjjLKBZLKE4Co4rpZmvDj4ZtN7l_JvLHcneTo6yEQ/s1600/IMG_0673.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="239" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2Xwi_N_bQmGom_AElNoKTq9P3gE1x1gheQPszZNkmZAqcSBfXlFRATVh0UcP-3pJ1JjAPO7vyRmxEaPVqJowQTxH9uDTTbAmSxJqjjLKBZLKE4Co4rpZmvDj4ZtN7l_JvLHcneTo6yEQ/s320/IMG_0673.JPG" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Dan can now cast a light spell using a hand gesture and is improving the rendering</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF9CFimcLe_KyUc1CpuMjC8zcEsKHFOLPdHHvJ2BuA7vlk8JMDGk19F7zTOQwYageMhS1i4tkQNAtexfpRM0jyC2PTXhlqy5quuSycgwAsGctzsKs_HkVS_4XPtCV6ltqXIidoeH3olyY/s1600/IMG_0674.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="173" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF9CFimcLe_KyUc1CpuMjC8zcEsKHFOLPdHHvJ2BuA7vlk8JMDGk19F7zTOQwYageMhS1i4tkQNAtexfpRM0jyC2PTXhlqy5quuSycgwAsGctzsKs_HkVS_4XPtCV6ltqXIidoeH3olyY/s320/IMG_0674.JPG" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Morgan finished his jam project and is now adding features to G3D::VRApp</td></tr>
</tbody></table>
<br />Morganhttp://www.blogger.com/profile/10895207997945851010noreply@blogger.com0tag:blogger.com,1999:blog-6097810015273635575.post-14291779962743730172015-08-04T10:32:00.003-04:002015-08-04T11:14:56.598-04:00[MMc] Body-space HUD layer working<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrqDSyzzcmi53XpSuRr9rHv2ejJ4tVQQwrkCq-zGxhQzLnCbVIG-LR6hGJ3ahEzI-1uk9rpwZdj0t7evnyYTc0TqycSrUiw7BRveETtoTTWgBcMjLmHg1JoiW8_pUQ9DYUWfEAEbb4se4/s1600/2015-08-04_000_vrstarter_r2631_g3d_r2624.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="175" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrqDSyzzcmi53XpSuRr9rHv2ejJ4tVQQwrkCq-zGxhQzLnCbVIG-LR6hGJ3ahEzI-1uk9rpwZdj0t7evnyYTc0TqycSrUiw7BRveETtoTTWgBcMjLmHg1JoiW8_pUQ9DYUWfEAEbb4se4/s320/2015-08-04_000_vrstarter_r2631_g3d_r2624.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Iron Man-style 2.5D Body Space HUD</td></tr>
</tbody></table>
Anyone using VRApp now has access to a virtual 2.0m-wide monitor (the DK2 is so low resolution that you need the virtual monitor to be large). It is in body space, so it is always near you, but you can move your head to see various parts of the screen at higher resolution. Everything is open source and committed to <a href="http://g3d.codeplex.com/">http://g3d.codeplex.com</a>.<br />
<br />
<a name='more'></a>At this point, I've completed my goals for the jam. This is the first time I've won a jam well before the deadline. I'm very happy both with the state of the G3D development tools and my specification process this time.<br />
<br />
I'm now working on additional polish:<br />
<br />
<ol>
<li>Eliminating the one frame of latency in the tracking data, so that tracking can be sampled right before simulation</li>
<li>A better solution for dealing with body-space pitch. Currently there are inconsistent values in the camera and tracker, and the renderer just hides this</li>
<li>Deal with the cursor moving off screen (<i>update: done! I just enforce input locking when the HUD is enabled</i>)</li>
</ol>
<br />
<br />Morganhttp://www.blogger.com/profile/10895207997945851010noreply@blogger.com1tag:blogger.com,1999:blog-6097810015273635575.post-89755416322330082452015-08-04T09:37:00.000-04:002015-08-04T09:45:59.762-04:00[JL] Ocean Waves and MovementI'm Jamie Lesser, a student at Williams College and a researcher in the Williams College Graphics Lab. I will be joining for the second half of the VR Jam and hope to explore sea motion. Is the visual component of sitting on a bobbing boat on the ocean enough to feel like you are really bobbing? I find this question especially interesting because it requires no movement from the user, and so should be convincing in most settings. The main drawback would be increased motion sickness for those who are sea sensitive.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1MjzDYZ6VgpjIVR6QPqXxq_qF8CcWYqate94b5zQFVpfnybBPseG2AN5QVhZjNSLhNeJsXBFSPJ7ktLQlRjHQltWJRIuwzozPv8ZSnVcZEA3SbJ1F0Sr5Vf-JDUjTWC_y_5YTF8bhI7LD/s1600/the_old_man_and_the_sea_by_lamianqueen-d4anslb+%25281%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="227" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1MjzDYZ6VgpjIVR6QPqXxq_qF8CcWYqate94b5zQFVpfnybBPseG2AN5QVhZjNSLhNeJsXBFSPJ7ktLQlRjHQltWJRIuwzozPv8ZSnVcZEA3SbJ1F0Sr5Vf-JDUjTWC_y_5YTF8bhI7LD/s320/the_old_man_and_the_sea_by_lamianqueen-d4anslb+%25281%2529.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://img00.deviantart.net/b7dd/i/2011/266/7/0/the_old_man_and_the_sea_by_lamianqueen-d4anslb.jpg"><span style="font-size: xx-small;">source</span></a></div>
<br />
<br />
<a name='more'></a><br /><br />
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="clear: right; float: right; margin-bottom: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8zkG24R_G3b81ujv23qWANo49BHA3LgyMhb_p56mirKRDg5pcyB7Oa9rsLR1-8KT-z6zLOCZyhUeemsqKT2KtdRMKg12xv8gyMNsDpZpbh_vDqDGqk-wqqYQg4QnedKbJHEOeo6vQYnzu/s1600/Screen+Shot+2015-08-04+at+9.28.20+AM.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="125" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8zkG24R_G3b81ujv23qWANo49BHA3LgyMhb_p56mirKRDg5pcyB7Oa9rsLR1-8KT-z6zLOCZyhUeemsqKT2KtdRMKg12xv8gyMNsDpZpbh_vDqDGqk-wqqYQg4QnedKbJHEOeo6vQYnzu/s200/Screen+Shot+2015-08-04+at+9.28.20+AM.png" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><a href="https://www.shadertoy.com/view/Ms2SD1">Shadertoy</a></td></tr>
</tbody></table>
Goals:<br />
- Adapt Shadertoy ocean demo to G3D.<br />
<br />
- Have object (boat/buoy) position be appropriately displaced by the movement of the waves it rests on.<br />
<br />
- Have camera position be appropriately displaced by the movement of a solid object.<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="clear: right; float: right; margin-bottom: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcoGg8_0GlujigUfDgL5jEgYrFYX5wtTYpbNSP4r7Oc_fhaBcswHu5MN73oVzQt_KUNcu67HhnNKMt95rtzTKq_XIiAP6fpuct9ZxPk1_sS9YD2iZEoorvzzMIZBPOp_4s_AJlxSFgcA_r/s1600/3104293083_8415b3e354_o.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="195" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcoGg8_0GlujigUfDgL5jEgYrFYX5wtTYpbNSP4r7Oc_fhaBcswHu5MN73oVzQt_KUNcu67HhnNKMt95rtzTKq_XIiAP6fpuct9ZxPk1_sS9YD2iZEoorvzzMIZBPOp_4s_AJlxSFgcA_r/s200/3104293083_8415b3e354_o.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><a href="https://www.google.com/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&uact=8&ved=0CAQQjBxqFQoTCLrVsc6-j8cCFYZ3PgodieAAdQ&url=https%3A%2F%2Ffarm4.staticflickr.com%2F3037%2F3104293083_8415b3e354_o_d.jpg&ei=JLjAVbqzJIbv-QGJwYOoBw&bvm=bv.99261572,d.cWw&psig=AFQjCNGUZnMnI_8NRBtq4aDL9lUHdCVhKw&ust=1438779798480526">source</a><span style="font-size: xx-small;"> </span></td></tr>
</tbody></table>
<br />
<br />
<br />
<br />
<br />
One virtual reality application I have in mind is an immersive first person Seagull experience. The camera position would not be affected when the user is flying, but would be affected when the user lands on a buoy/boat or floats on the ocean.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
Anonymoushttp://www.blogger.com/profile/13757906095198337604noreply@blogger.com0tag:blogger.com,1999:blog-6097810015273635575.post-29035724402579869912015-08-04T09:35:00.005-04:002015-08-04T09:35:33.551-04:00[MMc] Overnight GUI improvementsI made some changes last night, working from my laptop without a DK2. This verifies that you can use VRApp without the physical hardware installed (my brand-new laptop with Apple's idea of a "fast" GPU can only render at 6 fps, so you wouldn't want a DK2 attached).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9nK4MYuaxm39CMFzEY5x1z18JckLL5hSrNwVD3jllk-023rfu5nLH7fySkuuzRtfh6agAEdZ5U3lrgg8gMquvNUE4iqlewEXhXiq0WDdyAazr52yUTAriQGHGtJ2nAmR6E4Wkii8hQVE/s1600/dk2-product.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="229" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9nK4MYuaxm39CMFzEY5x1z18JckLL5hSrNwVD3jllk-023rfu5nLH7fySkuuzRtfh6agAEdZ5U3lrgg8gMquvNUE4iqlewEXhXiq0WDdyAazr52yUTAriQGHGtJ2nAmR6E4Wkii8hQVE/s320/dk2-product.jpg" width="320" /></a></div>
<br />
<a name='more'></a><br />
I added m_vrHead as a MarkerEntity and m_vrEyeCamera[2] as Cameras to VRApp. These are in the scene--you can attach objects to them and query them as regular scene objects. This should make it easier for folks who are creating real-time body avatars (Mike and Dan).<br />
<br />
I also added a mouse cursor the the in-VR HUD and a default dim black background for the screen so that the edges are obvious. The one problem with this is that when the mouse leaves the OSWindow, it simply appears stuck at its last position on the virtual screen and that's a little jarring.<br />
<br />
The next, and potentially last (!), step: allow a virtual large monitor, so that we can have readable virtual displays with a large amount of text and controls on them. This will be the Iron Man-style body-space 2.5 display.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgL2CyNpyKZaUD6pT7PjhC01zHhk22FPXPK8-8JwyhY7h6kpvPA52T-TbbnhRX8f8Q2j04_PbYi-5LdahGveTYK6ZxXWzyI1_afq2pYmukKkfP7ANWqFf4fRBXLs-BMd9YxgG5PniJVsvY/s1600/holodeck_how_to.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgL2CyNpyKZaUD6pT7PjhC01zHhk22FPXPK8-8JwyhY7h6kpvPA52T-TbbnhRX8f8Q2j04_PbYi-5LdahGveTYK6ZxXWzyI1_afq2pYmukKkfP7ANWqFf4fRBXLs-BMd9YxgG5PniJVsvY/s320/holodeck_how_to.jpg" width="320" /></a></div>
<br />
If I finish ahead of the deadline then I'd like to abstract all of the Oculus-specific code from VRApp into a HMD class (similar to OSWindow for VR) that can then be implemented for different HMDs. I'd also like to play with dynamic depth of field a little.<br />
<br />
<br />Morganhttp://www.blogger.com/profile/10895207997945851010noreply@blogger.com0tag:blogger.com,1999:blog-6097810015273635575.post-32241420898129996532015-08-04T03:53:00.000-04:002015-08-04T03:53:36.568-04:00[MM] Self sabotageInstead of hitting "publish" on the last blog post and going to sleep, I stayed up and manually aligned the camera (by flying it around and micro adjusting, nothing even smart), to get the first video of the generated avatar. Ugly as heck (even left a debug coordinate frame in...) but really cool in-person. I can't wait to improve it, but I really do need sleep to make this jam the best it can be.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dxo1hq299g9t32jyH8UoRMu8gE4yoBuxG2RitFXrarwxOfYCcC3WjYn28Z1kye6z3dA6sO4PHhowAkddQOc_Q' class='b-hbp-video b-uploaded' frameborder='0'></iframe></div>
<br />Anonymoushttp://www.blogger.com/profile/05396727573029326850noreply@blogger.com1tag:blogger.com,1999:blog-6097810015273635575.post-50757026731898001412015-08-04T03:38:00.000-04:002015-08-04T09:36:09.643-04:00[MM] New Dev Station, and another step closer<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSqslZk0ZfYjDZWxFYykqEPnRlcpJPVwVqCSRavh7RgwEkQ2Wn01OazS2SYrAduWy8fPK3BCiitB3aRHTQn76PZ-lF4rolN6c7kPTaNVT_yWp51kJs2C4e3av12X2-zLsnfQgyBBjBno9W/s1600/IMG_1140.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSqslZk0ZfYjDZWxFYykqEPnRlcpJPVwVqCSRavh7RgwEkQ2Wn01OazS2SYrAduWy8fPK3BCiitB3aRHTQn76PZ-lF4rolN6c7kPTaNVT_yWp51kJs2C4e3av12X2-zLsnfQgyBBjBno9W/s400/IMG_1140.JPG" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Just an average living room</td></tr>
</tbody></table>
<br />
<a name='more'></a>With my standard development station setup, I couldn't move the Oculus back to an unobstructed area, and certainly couldn't make 2+ Kinects looking at the same unobstructed area. One trip to an electronics store twice as large as most supermarkets (walking the aisles made me want to do more hardware hacking projects), and an hour of rewiring later, I now have a setup that has 2 Kinects pointing at an open area, and<br />
<br />
<br />
On the software end, I've pored over the Oculus documentation and wrestled with transformations for a bit, and now have a method for getting the world-space position of the Oculus external camera. Now to project the avatar correctly, I need only specify (and perhaps automatically calibrate, before the end of the jam if everything goes perfectly (haha)) the transform between the Oculus camera and Kinect sensor, which are fixed. I'll get some sleep and see if I can't bang that out in the early morning.Anonymoushttp://www.blogger.com/profile/05396727573029326850noreply@blogger.com0tag:blogger.com,1999:blog-6097810015273635575.post-89839742416416043942015-08-03T20:25:00.001-04:002015-08-03T20:25:41.665-04:00[MM] Update, point cloudsLots of hardware issues and some software ones mean this update isn't the most exciting, but it is obviously better than before! I am rendering a point cloud generated from one kinect (which wasn't the one I started with... hardware issues...) stably in world space. Here I did a programmer dance for you:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dxzc2buZNpEvI_8-jjhyzM9xgbjhQJZGlyrmjcEPP3T-Qe4BU2mIpZf20RPS91m4e0RJb5OcwEuk3PrduJeGw' class='b-hbp-video b-uploaded' frameborder='0'></iframe></div>
<br />
Next steps:<br />
<br />
<ol>
<li>Turn off the computer</li>
<li>Instead of taking a break, do wire management and figure out a decent setup for capture in my apartment.</li>
<li>Manually align oculus frame and head position in point cloud</li>
<li>Profile and optimize so that we run at 75 Hz.</li>
<li>Make the point cloud flicker in a cooler way.</li>
<li>Claim Victory.</li>
<li>Add automatic calibration between oculus and kinect</li>
<li>Add a second kinect</li>
<li>Add a third kinect</li>
<li>Experiment with other rendering techniques.</li>
</ol>
Anonymoushttp://www.blogger.com/profile/05396727573029326850noreply@blogger.com2tag:blogger.com,1999:blog-6097810015273635575.post-3835568317192271502015-08-03T17:00:00.000-04:002015-08-03T17:00:07.883-04:00[MMc] First successful HUD rendering in VRPressing the Tab key now moves the G3D GUI (everything in onGraphics2D) from the debugging mirror display into the VR world. It appears in front of the HMD, floating about 1.5m away from the viewer. The effect is surprisingly cool even with a boring debugging GUI when you're in the HMD--it is augmented reality for a virtual reality world.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxgeg8JSnTmvyow1VD38P9tUtQOQnqn-3YJYbFEV2aNZ7Ej2LbbQWrtR92cce1vCHaqxuATKwFGIJXQOK01h4eeKGnox-DrHqgiIsr6FXhbDjGcbeZXjAz8n-5tYM3nEuIeU8DCvkVX3s/s1600/2015-08-03_002_vrstarter_r2525_g3d_r2509.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxgeg8JSnTmvyow1VD38P9tUtQOQnqn-3YJYbFEV2aNZ7Ej2LbbQWrtR92cce1vCHaqxuATKwFGIJXQOK01h4eeKGnox-DrHqgiIsr6FXhbDjGcbeZXjAz8n-5tYM3nEuIeU8DCvkVX3s/s320/2015-08-03_002_vrstarter_r2525_g3d_r2509.jpg" width="320" /></a></div>
<br />
<a name='more'></a>Just press Tab to toggle this on and off in any VRApp.<br /><br /><br />
I've succeeded in all of my planned tasks today by upgrading VRApp to give better performance and convenience and then rendering the G3D GUI into the HMD.<br />
<br />
There are some problems with the GUI view that I'll tackle tomorrow:<br />
<br />
<ol>
<li>The HUD needs to be low resolution because the DK2 itself is low resolution. This currently forces the developer to make the on-screen window low resolution as well so that everything is consistent for event delivery. That's annoying because it means that debugging mirror mode is only at 640x400, and is hard to use. I welcome suggestions for how to deal with this. Maybe I need to make a virtual desktop in body space instead of a layer in head space.</li>
<li>There is no cursor in the HMD (should be easy to handle)</li>
<li>The boundaries of the in-HMD screen aren't clear (should be easy to handle), making it confusing when a window is cropped</li>
<li>The GUI is rendered twice. Once for the HMD and once on the main screen. I should be able to just copy the HMD's texture to the main screen, but there's a bug in that code right now.</li>
</ol>
Morganhttp://www.blogger.com/profile/10895207997945851010noreply@blogger.com0tag:blogger.com,1999:blog-6097810015273635575.post-75675503989110707212015-08-03T16:46:00.000-04:002015-08-03T17:20:41.615-04:00[DE] Hacked Leap Motion + DK2At the end of my last post I said I was going to start working with the leap motion controller in a vr environment. Well I have attached it to the front of a Oculus DK2 using masking tape and have begun working.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcpOLjFxVMwOh8c7rEUJV4WxUk2WLEKAyFCU2cDPL43gusGtU3rSyBjfbHQLp8tv-OgNDp_OUyESlcYMlXEQQm4UjovqWOGtjOfiQbV1ZF3ppz6EPoyFd99Kh_8ym5H2Q9Thz6phAYWQMs/s1600/IMG_20150803_163732.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcpOLjFxVMwOh8c7rEUJV4WxUk2WLEKAyFCU2cDPL43gusGtU3rSyBjfbHQLp8tv-OgNDp_OUyESlcYMlXEQQm4UjovqWOGtjOfiQbV1ZF3ppz6EPoyFd99Kh_8ym5H2Q9Thz6phAYWQMs/s400/IMG_20150803_163732.jpg" width="400" /></a></div>
<div>
After a bit of confusion as to the relative frames of the leap motion controller and Oculus I was able to get get the controller sort of working. Below is a video showing me wiggle both hands in front of the oculus. </div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dyWxuqTi9NDXykaVVxBEKkpLLLoeoyBsZ6tSWBtnzZCXAlBJizQ92GEc61QPJ47IPKJ9oF1hg28sxCaf6VCuw' class='b-hbp-video b-uploaded' frameborder='0'></iframe></div>
Anonymoushttp://www.blogger.com/profile/07934189293592508784noreply@blogger.com0tag:blogger.com,1999:blog-6097810015273635575.post-40374156347026513632015-08-03T15:45:00.003-04:002015-08-03T15:45:39.841-04:00[MMc] First HUD layer success<div class="separator" style="clear: both; text-align: left;">
The red rectangle in the center of the view is a 2D surface directly composited onto the HMD. The key bug was that I was positioning it <i>behind</i> the head before.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHk9jyDHqnvcDyCk-LU0Y0-JKhKLjg5igzC0VEucIVYW86mt-9SIRt-fm-MVaSGzMRh-i1DbkAKEaxoufH9iRZmEtg_RZ_Sv-YM7D60EJNMVnAnN-dMl0IFASApFundBbecjCAs85MGvc/s1600/2015-08-03_001_vrstarter_r2517_g3d_r2509.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="198" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHk9jyDHqnvcDyCk-LU0Y0-JKhKLjg5igzC0VEucIVYW86mt-9SIRt-fm-MVaSGzMRh-i1DbkAKEaxoufH9iRZmEtg_RZ_Sv-YM7D60EJNMVnAnN-dMl0IFASApFundBbecjCAs85MGvc/s320/2015-08-03_001_vrstarter_r2517_g3d_r2509.jpg" width="320" /></a></div>
<br />
It appears that changing the HMD compositing quality may have been affecting the vertical axis direction the rendering rate. I'm not sure how this happened, but for the moment I disabled it to avoid the problem. Now, on to actually rendering a 2D GUI into that red square.<br />
<br />
<br />Morganhttp://www.blogger.com/profile/10895207997945851010noreply@blogger.com0tag:blogger.com,1999:blog-6097810015273635575.post-55946077821290081182015-08-03T15:23:00.000-04:002015-08-03T15:23:15.907-04:00[MMc] Starting on GUI rendering layer<div class="separator" style="clear: both; text-align: left;">
I created an ovrLayerType_QuadHeadLocked layer and initialized it. I'm just rendering it solid red for the moment. Such a layer has a 3D position. From looking at the Oculus samples, it appears that rotation is ignored on such a layer and the translation should have a negative Z value.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Right now the state is not good. Not only does the GUI layer not appear on screen correctly, about 30% of the time the 3D view flips upside down. It is <i>extremely</i> unpleasant when this happens if I'm wearing the HMD. I suspect that this may be an unintended consequence of my automatic effect disabling code based on frame rate.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The right eye also starts flashing cyan (the G3D default background color) every now and then. I think that both visual errors are separate from the GUI work that I've been doing.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbbEB2GWo4KHWuG5au6ZP74vLF_IdeHsguekVdlzL5YzYkoNZUqRIkB1z6cz2SI20E7hAKeZm-vr6QVgEFQ4rmfMRKJVzNjaSaN4lvG2rMmyTad7Nk5S7DDCDjnT0KDkcCqBknRv1Ckmo/s1600/2015-08-03_000_vrstarter_r2517_g3d_r2509.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="198" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbbEB2GWo4KHWuG5au6ZP74vLF_IdeHsguekVdlzL5YzYkoNZUqRIkB1z6cz2SI20E7hAKeZm-vr6QVgEFQ4rmfMRKJVzNjaSaN4lvG2rMmyTad7Nk5S7DDCDjnT0KDkcCqBknRv1Ckmo/s320/2015-08-03_000_vrstarter_r2517_g3d_r2509.jpg" width="320" /></a></div>
<br />Morganhttp://www.blogger.com/profile/10895207997945851010noreply@blogger.com0tag:blogger.com,1999:blog-6097810015273635575.post-35418700743262718302015-08-03T14:08:00.000-04:002015-08-03T17:22:05.274-04:00[DE] First Leap Motion ResultsBecause of the extremely helpful instructions on the leap motion site, I have been able to make good progress. I have gotten the leap motion SDK hooked up to my project and have begun experimenting with the hand tracking. While eventually I would like to include a proper hand model, for now I have just been drawing out the joint positions. Below is a photo of my current representation of a hand. The blue spheres represent the joints in the hand, while the green sphere is the center of the palm.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFvjDCPQZ6Zyc7onqxibhrWJWB6D6dkzUnZ_cwp-oZpGLXROidErIsi0RVx3ElGfVGwsnrupLFlh4E28SMPR8-CNbJhdsM59dxxdKkKc46yGLpW_Fa9vDFWUJ581P4R6qm1oN_wdob3amf/s1600/leapMotion.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFvjDCPQZ6Zyc7onqxibhrWJWB6D6dkzUnZ_cwp-oZpGLXROidErIsi0RVx3ElGfVGwsnrupLFlh4E28SMPR8-CNbJhdsM59dxxdKkKc46yGLpW_Fa9vDFWUJ581P4R6qm1oN_wdob3amf/s400/leapMotion.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<a name='more'></a><br /><br />
<div class="separator" style="clear: both; text-align: left;">
I also have a short video of what happens when I wiggle my palm over the controller.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dwrXI_t_cvDFF56QGQyPex6iKpi5WczPCUJLtT-62I1NEMvIH4HUV34Ix9acKrwy6qonqiUTmFRCDs1v19ZJg' class='b-hbp-video b-uploaded' frameborder='0'></iframe><br />
<br />
Since things have been going pretty well I am going to now move onto using this data in an actual virtual setting.Anonymoushttp://www.blogger.com/profile/07934189293592508784noreply@blogger.com0tag:blogger.com,1999:blog-6097810015273635575.post-7483316312994549242015-08-03T13:20:00.002-04:002015-08-03T13:20:33.631-04:00[MMc] Pre- and Post-distortion, motion blur working in VRApp<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNQmjTgYJQ__SaBNlPK8Pk7Fc7haEvFzxaN6B5IRxn04skdj8XkKJqRjHyey8fcgF_mlG1SkRwNse1WZ7HC8osW6Q7O6Yn_eyBYNyfkzDFp78mwuKMmebU2Rzkkaj77NanRjcrBMxLIag/s1600/2015-08-03_000_vrstarter_r2509_g3d_r2509.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNQmjTgYJQ__SaBNlPK8Pk7Fc7haEvFzxaN6B5IRxn04skdj8XkKJqRjHyey8fcgF_mlG1SkRwNse1WZ7HC8osW6Q7O6Yn_eyBYNyfkzDFp78mwuKMmebU2Rzkkaj77NanRjcrBMxLIag/s320/2015-08-03_000_vrstarter_r2509_g3d_r2509.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">DebugMirrorMode::POST_DISTORTION</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyAcphvHY_4SETJLYBESC9cFSsypaWP7q-lPZHEgzWI1yxkYBSSrv8UeiRiTSaLJ8KQ8agQDEQxTcx9aAWxUbU4o81OY5nO1wSXcUu9OROqW4_ukkJhoyzuDwvrgHG3CJZZs8JK1nfT4c/s1600/2015-08-03_001_vrstarter_r2509_g3d_r2509.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyAcphvHY_4SETJLYBESC9cFSsypaWP7q-lPZHEgzWI1yxkYBSSrv8UeiRiTSaLJ8KQ8agQDEQxTcx9aAWxUbU4o81OY5nO1wSXcUu9OROqW4_ukkJhoyzuDwvrgHG3CJZZs8JK1nfT4c/s320/2015-08-03_001_vrstarter_r2509_g3d_r2509.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: 12.8000001907349px;">DebugMirrorMode::PRE_DISTORTION</span></td></tr>
</tbody></table>
<br />
<a name='more'></a>There is now also a functioning option to override the default motion blur for a scene with values that I consider optimal (at 75 Hz).<br />
<br />
Next up, I'm adding the post-FX disablers. These will automatically turn off effects if your scene can't render at frame rate. At no point in this Jam have I yet attempted the actual GUI code that I promised, yet. But I'm having a great time building out infrastructure for everyone else's VR apps.<br />
<br />
Note that everything in VRApp actually works even if you don't have a DK2 plugged in (it does require that you have the runtime installed, though).<br />
<br />Morganhttp://www.blogger.com/profile/10895207997945851010noreply@blogger.com0tag:blogger.com,1999:blog-6097810015273635575.post-41479394594238781272015-08-03T13:11:00.001-04:002015-08-03T13:38:43.517-04:00[MM] Kinect/Oculus/G3D playing nicely togetherAfter struggling with annoying include conflicts, redefinition errors, and linkers, we have success #1!<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGOaTBL2oAqzOClhw1ubqJRs2gQUSuX0eMRUuSgKfPiwLLkc0inrGSuTPBR6WXEVxPXvWWjPmbXXYlGU2vUK9WV9g7hsrpKG-eg1jcfd-JjkJLTJ-IuFPEClGOe8ylqaQFRF5Olzjptovb/s1600/2015-08-03_000_main_r158_g3d_r2440__.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGOaTBL2oAqzOClhw1ubqJRs2gQUSuX0eMRUuSgKfPiwLLkc0inrGSuTPBR6WXEVxPXvWWjPmbXXYlGU2vUK9WV9g7hsrpKG-eg1jcfd-JjkJLTJ-IuFPEClGOe8ylqaQFRF5Olzjptovb/s400/2015-08-03_000_main_r158_g3d_r2440__.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The kinect data is being streamed live to a VR enabled G3D app. Note that the color data is already properly aligned with the depth, thank to borrowing some Kinect code from my labmates who have done extension work on 3D scene reconstruction using the Kinect and other similar RGBD sensors, some of which required highly accurate color alignment (<a href="http://www.graphics.stanford.edu/~niessner/papers/2015/5shading/zollhoefer2015shading.pdf">http://www.graphics.stanford.edu/~niessner/papers/2015/5shading/zollhoefer2015shading.pdf</a>).</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
If you are very observant, you may notice I am not reaching the target framerate for 75Hz. This is worrying, but I won't care until I get a decent point cloud first. Back to work!</div>
Anonymoushttp://www.blogger.com/profile/05396727573029326850noreply@blogger.com3tag:blogger.com,1999:blog-6097810015273635575.post-28216042573133089012015-08-03T11:41:00.004-04:002015-08-03T12:56:08.790-04:00[MMc] New VRApp Feature Spec, Motion Sickness Notes<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">
<div>
Here's my plan for the next few hours:</div>
<ol>
<li><span style="font-size: 12.8000001907349px;">Add documentation for VRApp::Settings</span></li>
<li><span style="font-size: 12.8000001907349px;">Group initial values of VR options onto VRApp::Settings</span></li>
<li><span style="font-size: 12.8000001907349px;">Add VRApp::Settings option to override motion blur</span></li>
<li><span style="font-size: 12.8000001907349px;">Add VRApp::Settings option to mirror the undistorted views, instead of the distorted one</span></li>
<li><span style="font-size: 12.8000001907349px;">Implement VRApp::DebugMirrorMode::PRE_DISTORTION</span></li>
<li><span style="font-size: 12.8000001907349px;">Add VRApp::Settings option to have G3D auto-disable post-FX if your GPU isn't meeting the DK2 frame rate for a scene. The steps will be:</span></li>
<ol>
<li><span style="font-size: 12.8000001907349px;">Profile in onAfterSceneLoad</span></li>
<li><span style="font-size: 12.8000001907349px;">Disable bloom</span></li>
<li><span style="font-size: 12.8000001907349px;">Disable AO</span></li>
<li><span style="font-size: 12.8000001907349px;">Downgrade antialiasing</span></li>
<li><span style="font-size: 12.8000001907349px;">Disable antialiasing</span></li>
</ol>
<li><span style="font-size: 12.8000001907349px;">First quick-and-dirty version of the UI that will let you see the GUI but not interact with it</span></li>
</ol>
</div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">
<br />
<a name='more'></a><br /></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">
The following DOOM 3 mod video was recommended to me on Twitter. It shows a solution to using a 2D UI in a 3D VR setting that looks pretty good:</div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/p1SuZaPdTJY/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/p1SuZaPdTJY?feature=player_embedded" width="320"></iframe></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">
<br /></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">
I also did some motion sickness research last night. That's because while a good VR experience often does not cause sickness, debugging is almost always a bad experience and recovery takes hours--not good for a jam! <span style="font-size: 12.8000001907349px;">The following is just a record of what I found. It is obviously not medical advice--do your own research and talk to your own doctor before taking medication, beware of drug interactions, children, pregnant women, and nursing women should take extra care, etc.</span></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">
<br /></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">
There are three main oral products that can be obtained over the counter. Each is taken about half an hour before the activity, although can be taken afterwards in an emergency. Different people will react differently to each. </div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;">
<br /></div>
<ul>
<li><b>Dimenhydrinate </b>(e.g., in Dramamine). Almost always causes drowsiness, may affect breathing and interact with other medications and alcohol.</li>
<li><b>Meclizine HCI</b> (e.g. in Dramamine non-Drowsy and Bonine) Still causes slight drowsiness in some people, may affect breathing and interact with other medications and alcohol.</li>
<li><b>Ginger </b>(e.g., in candy, real ginger beer, various pills, and Dramamine Natural). Candy versions have sugar and some people can't stand the taste. For many people, just as effective as the heavier medications. A study on pregnant women concluded that this was better than Meclizine</li>
</ul>
Morganhttp://www.blogger.com/profile/10895207997945851010noreply@blogger.com0tag:blogger.com,1999:blog-6097810015273635575.post-369362420142239962015-08-03T10:07:00.000-04:002015-08-03T11:30:22.621-04:00[DE] Leap Motion support<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="margin-left: 1em; margin-right: 1em;">
</div>
I am Daniel Evangelakos, a recent graduate of Williams College and a researcher at NVIDIA. For this VR jam, I was inspired by a video of a VR demo shown to me by Morgan McGuire (<a href="https://www.youtube.com/watch?v=3qEBK1p4ct8">https://www.youtube.com/watch?v=3qEBK1p4ct8</a>).<br />
<div>
<br /></div>
<div>
In the video the player is in a dark cavern with a single light source. The light source is a torch that is held out in front of player. He or she is able to illuminate different parts of the cavern by moving the torch around.<br />
<div>
<div>
<br /></div>
<div>
For this VR jam I want to create something similar to this demo. I want to have the player control the only light source. Furthermore I want the player to control this light source not with conventional inputs such as a controller or a mouse, but instead with their hands. </div>
<div>
<br /></div>
<div>
To do this, I will be working with the leap motion controller pictured below. This device is meant to track hands and other objects in real time and return 3D models of them. </div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.vicespy.com/wp-content/uploads/2013/07/Leap-Motion.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://www.vicespy.com/wp-content/uploads/2013/07/Leap-Motion.jpg" height="200" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
Since there is no current support for the Leap Motion controller in G3D I will first have to get it working. Therefore, while I will still keep in mind my eventual goal I will consider this VR jam a success if I can get the leap motion working with G3D. </div>
</div>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/07934189293592508784noreply@blogger.com0tag:blogger.com,1999:blog-6097810015273635575.post-36113471498300553562015-08-03T09:13:00.006-04:002015-08-03T09:13:43.412-04:00VR Jam Begins<div style="text-align: center;">
(US East Coast)</div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
Good luck, everyone!</div>
<div style="text-align: center;">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsmre2n9e4QWyq4H7IsVGfVr9AnfmONuerklYXQmIHdQ7ob1MHn6Gqvo-SVMP3Qkch-XxyfK8y0X433iGqRmFY8mA5eGkK7-3vLnbIQxO5BDMk8zJ4PXLUM6hYUh5cs9-QUkDaVtsJ6ck/s1600/THE+LAWNMOWER+MAN.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsmre2n9e4QWyq4H7IsVGfVr9AnfmONuerklYXQmIHdQ7ob1MHn6Gqvo-SVMP3Qkch-XxyfK8y0X433iGqRmFY8mA5eGkK7-3vLnbIQxO5BDMk8zJ4PXLUM6hYUh5cs9-QUkDaVtsJ6ck/s400/THE+LAWNMOWER+MAN.jpg" width="310" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>The Lawnmower Man</i></td></tr>
</tbody></table>
<div style="text-align: left;">
<br /></div>
<br />Morganhttp://www.blogger.com/profile/10895207997945851010noreply@blogger.com0tag:blogger.com,1999:blog-6097810015273635575.post-15093639337506966102015-08-03T02:57:00.000-04:002015-08-03T08:09:36.547-04:00[MM] Plan for Direct Body Placement in VR<span style="background-color: white; color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18.2000007629395px;">I'm <a href="http://www.illuminationcodified.com/">Michael Mara</a></span><span style="background-color: white; color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18.2000007629395px;">, graduate student at Stanford University under the advisement of <a href="https://graphics.stanford.edu/~hanrahan/">Pat Hanrahan</a> and researcher at NVIDIA. For the past week I had been waffling back and forth between a large amount of possible projects for the VR Jam. This is a partial list of what I seriously considered:</span><br />
<span style="background-color: white; color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18.2000007629395px;"><br /></span>
<br />
<ul style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px; margin-bottom: 0pt; margin-top: 0pt;">
<li style="color: #4e2800; font-family: Arial; font-size: 13.3333333333333px; list-style-type: disc; margin-left: 15px; vertical-align: baseline;"><div style="line-height: 1.63800006866456; margin-bottom: 0pt; margin-top: 0pt;">
<span data-wr_replaced="true" style="font-size: 13.3333333333333px; vertical-align: baseline; white-space: pre-wrap;">AR by scanning room with kinect beforehand and importing model into VR scene.</span></div>
</li>
<li style="color: #4e2800; font-family: Arial; font-size: 13.3333333333333px; list-style-type: disc; margin-left: 15px; vertical-align: baseline;"><div style="line-height: 1.63800006866456; margin-bottom: 0pt; margin-top: 0pt;">
<span data-wr_replaced="true" style="font-size: 13.3333333333333px; vertical-align: baseline; white-space: pre-wrap;">Music Visualization </span></div>
</li>
<li style="color: #4e2800; font-family: Arial; font-size: 13.3333333333333px; list-style-type: disc; margin-left: 15px; vertical-align: baseline;"><div style="line-height: 1.63800006866456; margin-bottom: 0pt; margin-top: 0pt;">
<span data-wr_replaced="true" style="font-size: 13.3333333333333px; vertical-align: baseline; white-space: pre-wrap;">Big screen TV in VR</span></div>
</li>
<li style="color: #4e2800; font-family: Arial; font-size: 13.3333333333333px; list-style-type: disc; margin-left: 15px; vertical-align: baseline;"><div style="line-height: 1.63800006866456; margin-bottom: 0pt; margin-top: 0pt;">
<span data-wr_replaced="true" style="font-size: 13.3333333333333px; vertical-align: baseline; white-space: pre-wrap;">Full virtual machine desktop in VR</span></div>
</li>
<li style="color: #4e2800; font-family: Arial; font-size: 13.3333333333333px; list-style-type: disc; margin-left: 15px; vertical-align: baseline;"><div style="line-height: 1.63800006866456; margin-bottom: 0pt; margin-top: 0pt;">
<span data-wr_replaced="true" style="font-size: 13.3333333333333px; vertical-align: baseline; white-space: pre-wrap;">Godzilla stomping buildings (using kinect to track legs and a VR headset for display)</span></div>
</li>
<li style="color: #4e2800; font-family: Arial; font-size: 13.3333333333333px; list-style-type: disc; margin-left: 15px; vertical-align: baseline;"><div style="line-height: 1.63800006866456; margin-bottom: 0pt; margin-top: 0pt;">
<span data-wr_replaced="true" style="font-size: 13.3333333333333px; vertical-align: baseline; white-space: pre-wrap;">Video Conferencing in VR (use a kinect or stereo camera to get color+depth, render a 3D floating head/full body with only moving head)</span></div>
</li>
<li style="color: #4e2800; font-family: Arial; font-size: 13.3333333333333px; list-style-type: disc; margin-left: 15px; vertical-align: baseline;"><div style="line-height: 1.63800006866456; margin-bottom: 0pt; margin-top: 0pt;">
<span data-wr_replaced="true" style="font-size: 13.3333333333333px; vertical-align: baseline; white-space: pre-wrap;">VR Remote Control car/drone</span></div>
</li>
<li style="color: #4e2800; font-family: Arial; font-size: 13.3333333333333px; list-style-type: disc; margin-left: 15px; vertical-align: baseline;"><div style="line-height: 1.63800006866456; margin-bottom: 0pt; margin-top: 0pt;">
<span data-wr_replaced="true" style="font-size: 13.3333333333333px; vertical-align: baseline; white-space: pre-wrap;">RTS game where you are explicitly a commander using VR to control troops (this plays into the limitations of current VR, but would require many jams worth of prereqs (screens in VR, gesture control))</span></div>
</li>
<li style="color: #4e2800; font-family: Arial; font-size: 13.3333333333333px; list-style-type: disc; margin-left: 15px; vertical-align: baseline;"><div style="line-height: 1.63800006866456; margin-bottom: 0pt; margin-top: 0pt;">
<span data-wr_replaced="true" style="font-size: 13.3333333333333px; vertical-align: baseline; white-space: pre-wrap;">Soccer Header Game</span></div>
</li>
<li style="color: #4e2800; font-family: Arial; font-size: 13.3333333333333px; list-style-type: disc; margin-left: 15px; vertical-align: baseline;"><div style="line-height: 1.63800006866456; margin-bottom: 0pt; margin-top: 0pt;">
<span data-wr_replaced="true" style="font-size: 13.3333333333333px; vertical-align: baseline; white-space: pre-wrap;">Short 3D film in VR movie theatre, with something completely coming out of the screen</span></div>
</li>
<li style="color: #4e2800; font-family: Arial; font-size: 13.3333333333333px; list-style-type: disc; margin-left: 15px; vertical-align: baseline;"><div style="line-height: 1.63800006866456; margin-bottom: 0pt; margin-top: 0pt;">
<span data-wr_replaced="true" style="font-size: 13.3333333333333px; vertical-align: baseline; white-space: pre-wrap;">Getting a barbershop haircut</span></div>
</li>
<li style="color: #4e2800; font-family: Arial; font-size: 13.3333333333333px; list-style-type: disc; margin-left: 15px; vertical-align: baseline;"><div style="line-height: 1.63800006866456; margin-bottom: 0pt; margin-top: 0pt;">
<span data-wr_replaced="true" style="font-size: 13.3333333333333px; vertical-align: baseline; white-space: pre-wrap;">VR Cards</span></div>
</li>
<li style="color: #4e2800; font-family: Arial; font-size: 13.3333333333333px; list-style-type: disc; margin-left: 15px; vertical-align: baseline;"><div style="line-height: 1.63800006866456; margin-bottom: 0pt; margin-top: 0pt;">
<span data-wr_replaced="true" style="font-size: 13.3333333333333px; vertical-align: baseline; white-space: pre-wrap;">VR Ping Pong</span></div>
</li>
<li style="color: #4e2800; font-family: Arial; font-size: 13.3333333333333px; list-style-type: disc; margin-left: 15px; vertical-align: baseline;"><div style="line-height: 1.63800006866456; margin-bottom: 3pt; margin-top: 0pt;">
<span data-wr_replaced="true" style="font-size: 13.3333333333333px; vertical-align: baseline; white-space: pre-wrap;">Cast magic spells</span></div>
</li>
<li style="color: #4e2800; font-family: Arial; font-size: 13.3333333333333px; list-style-type: disc; margin-left: 15px; vertical-align: baseline;"><span data-wr_replaced="true" style="font-size: 13.3333333333333px; vertical-align: baseline; white-space: pre-wrap;">Dodge bullets in the Matrix (Obviously would be better with bodytracking…)</span></li>
</ul>
<div>
<span style="color: #4e2800; font-family: Arial;"><span style="font-size: 13.3333330154419px; white-space: pre-wrap;"></span></span><br />
<a name='more'></a><span style="color: #4e2800; font-family: Arial;"><span style="font-size: 13.3333330154419px; white-space: pre-wrap;"><br /></span></span></div>
<div>
<span style="color: #4e2800; font-family: Arial;"><span style="font-size: 13.3333330154419px; white-space: pre-wrap;">Searching around earlier today for other projects to perhaps spur me towards one of these ideas I found this video:</span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/Ghgbycqb92c/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/Ghgbycqb92c?feature=player_embedded" width="320"></iframe></div>
<div>
<span style="color: #4e2800; font-family: Arial;"><span style="font-size: 13.3333330154419px; white-space: pre-wrap;"><br /></span></span></div>
<div>
<span style="color: #4e2800; font-family: Arial;"><span style="font-size: 13.3333330154419px; white-space: pre-wrap;"><br /></span></span></div>
<div>
<span style="color: #4e2800; font-family: Arial;"><span style="font-size: 13.3333330154419px; white-space: pre-wrap;">I encourage you to watch the video, but the gist is that this person set up three Microsoft Kinects (color+depth cameras) in an equilateral triangle around his body while using an Oculus Rift. The depth and color data is then used to reconstruct a low quality mesh of his body every frame.</span></span></div>
<div>
<span style="color: #4e2800; font-family: Arial;"><span style="font-size: 13.3333330154419px; white-space: pre-wrap;"><br /></span></span>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_PuPxYscX938wnS_SDw998gvxhT6M5eZex2qmYtbK-u1N5WFwYrpRzclpilzSNozYZK6VqTOeLJ6to7opY4RjfmULJh2BFaQ2RVa_DmsI_Qpfp0aJrxJmptmxidAizO6K5W9huKoD0s5h/s1600/Screen+Shot+2015-08-02+at+10.49.48+PM.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="177" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_PuPxYscX938wnS_SDw998gvxhT6M5eZex2qmYtbK-u1N5WFwYrpRzclpilzSNozYZK6VqTOeLJ6to7opY4RjfmULJh2BFaQ2RVa_DmsI_Qpfp0aJrxJmptmxidAizO6K5W9huKoD0s5h/s320/Screen+Shot+2015-08-02+at+10.49.48+PM.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Blurry, "glitchy", but your actual hands, in VR!</td></tr>
</tbody></table>
</div>
<div>
<span style="color: #4e2800; font-family: Arial;"><span style="font-size: 13.3333330154419px; white-space: pre-wrap;"><br /></span></span></div>
<div>
<span style="color: #4e2800; font-family: Arial;"><span style="font-size: 13.3333330154419px; white-space: pre-wrap;">What this gives you is a blurry glitchy mess of an avatar... that is your real body, fully articulated, and has very low latency (just the Kinect latency for giving a frame and a frame to process it client side).</span></span></div>
<div>
<span style="color: #4e2800; font-family: Arial;"><span style="font-size: 13.3333330154419px; white-space: pre-wrap;"><br /></span></span></div>
<div>
<span style="color: #4e2800; font-family: Arial;"><span style="font-size: 13.3333330154419px; white-space: pre-wrap;">This was amazing to me, and I decided to drop my other ideas until I have implemented a rudimentary version of this. <a href="http://graphics.stanford.edu/~mdfisher/">Matt Fisher</a>, a postdoc in my research group at Stanford will be providing some assistance. I also want to take it a bit further, and further play into the "glitchy" feel of the resulting avatar by adding rendering effects that play this up and make the experience feel like one from a movie or game. A couple examples of "glitchy" non-photorealistic rendering (NPR) below:</span></span><br />
<span style="color: #4e2800; font-family: Arial;"><span style="font-size: 13.3333330154419px; white-space: pre-wrap;"><br /></span></span></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/--TmrvFnRz3I/UWbrUF2GmDI/AAAAAAAAAOE/qo18Rr9xUoA/tumblr_mdia1joL0c1qhf31ao1_r1_500.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="289" src="https://1.bp.blogspot.com/--TmrvFnRz3I/UWbrUF2GmDI/AAAAAAAAAOE/qo18Rr9xUoA/tumblr_mdia1joL0c1qhf31ao1_r1_500.gif" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Glitch effect from the 2012 movie <i>Wreck it Ralph</i></td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://farm6.staticflickr.com/5257/5417120122_1e0f6e57ce_o.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="152" src="https://farm6.staticflickr.com/5257/5417120122_1e0f6e57ce_o.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Sample image from <a href="http://www.airtightinteractive.com/demos/js/imageglitcher/">ImageGlitcher</a><br />
<br /></td></tr>
</tbody></table>
<span style="background-color: white; color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18.2000007629395px;">There are a lot of moving parts in this project (and I will be setting up one of my dev environments from scratch concurrently with the jam, so I will be keeping my goals for the jam modest, with a very healthy list of optional goals that would keep me busy for at least a month just in case everything goes amazingly smoothly.</span><br />
<span style="background-color: white; color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18.2000007629395px;"><br /></span>
<span style="background-color: white; color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18.2000007629395px;"><b>Goal: </b>Render a properly positioned avatar of myself in real time on a DK2 with low-latency, fairly accurate tracking, and non-photorealistic rendering.</span><br />
<span style="background-color: white;"><br /></span>
<span style="background-color: white;"><br /></span>
<span style="background-color: white; color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18.2000007629395px;"><b>Tools:</b></span><br />
<ul>
<li><span style="color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"><span style="font-size: 13px; line-height: 18.2000007629395px;">Up to three Microsoft Kinects (starting with just one)</span></span></li>
<li><span style="color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"><span style="font-size: 13px; line-height: 18.2000007629395px;">A Windows 8 computer with an NVIDIA GeForce 980 and Visual Studio 2015 as my main development computer</span></span></li>
<li><span style="color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"><span style="font-size: 13px; line-height: 18.2000007629395px;">An Oculus DK2</span></span></li>
<li><span style="color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"><span style="font-size: 13px; line-height: 18.2000007629395px;">The </span></span><a data-wr_replaced="true" href="http://g3d.codeplex.com/" style="background-color: white; color: #b5653b; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18.2000007629395px; text-decoration: none;">G3D Innovation Engine</a></li>
<li><span style="color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"><span style="font-size: 13px; line-height: 18.2000007629395px;">Any and all software resources referenced on <a href="http://doc-ok.org/?p=965">Oliver Kreylos's blog post about the project I'm replicating</a></span></span></li>
<li><span style="color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"><span style="font-size: 13px; line-height: 18.2000007629395px;"><a href="http://shadertoy.com/">shadertoy.com</a>, for inspiration for the NPR effect</span></span></li>
</ul>
<div>
<span style="color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"><span style="font-size: 13px; line-height: 18.2000007629395px;"><b>Mandatory Steps:</b></span></span></div>
<div>
<ol>
<li><span style="color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"><span style="font-size: 13px; line-height: 18.2000007629395px;">Get color and depth data out of a single Kinect within a G3D VRApp.</span></span></li>
<li><span style="color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"><span style="font-size: 13px; line-height: 18.2000007629395px;">Render a point cloud based on the Kinect data</span></span></li>
<li><span style="color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"><span style="font-size: 13px; line-height: 18.2000007629395px;">Remove background points from the point cloud</span></span></li>
<li><span style="color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"><span style="font-size: 13px; line-height: 18.2000007629395px;">Calibrate the transform between the Kinect's camera space and the Oculus's</span></span></li>
<li><span style="color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"><span style="font-size: 13px; line-height: 18.2000007629395px;">Design a simple NPR shader to add "glitchiness" to the now existent avatar</span></span></li>
</ol>
</div>
<div>
<span style="color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"><span style="background-color: white; font-size: 13px; line-height: 18.2000007629395px;"><b>Optional Steps:</b></span></span></div>
<div>
<ul>
<li><span style="color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18.2000007629395px;">Add a second Kinect</span></li>
<li><span style="color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18.2000007629395px;">Add a third Kinect</span></li>
<li><span style="color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18.2000007629395px;">Investigate the method used by Oliver Kreylos to calibrate all three Kinect's and implement it</span></li>
<li><span style="color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18.2000007629395px;">Investigate the method used by Oliver Kreylos to construct a mesh from the multiview depth data, and implement it.</span></li>
<li><span style="color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18.2000007629395px;">Test using screen-space raytracing for rendering the avatar directly</span></li>
<li><span style="color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18.2000007629395px;">Use a Kinect v2 or other higher-quality sensor</span></li>
<li><span style="color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18.2000007629395px;">Improve the NPR shader</span></li>
<li><span style="color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18.2000007629395px;">Apply shadowing to the virtual scene using the rendered avatar</span></li>
<li><span style="color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18.2000007629395px;">Apply AO to the virtual scene using the rendered avatar</span></li>
<li><span style="color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"><span style="font-size: 13px; line-height: 18.2000007629395px;">Calculated Spherical Harmonic lighting for the real world, and subtract it out in the rendering, apply virtual lighting instead.</span></span></li>
</ul>
</div>
<div>
<span style="color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"><span style="background-color: white; font-size: 13px; line-height: 18.2000007629395px;"><b><br /></b></span></span></div>
<div>
<span style="background-color: white; color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18.2000007629395px;">Several potential problems:</span></div>
<br />
<ul data-wr_replaced="true" style="background-color: white; color: #4e2800; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18.2000007629395px; margin: 0.5em 0px; padding: 0px 2.5em;">
<li data-wr_replaced="true" style="border: none; margin: 0px 0px 0.25em; padding: 0.25em 0px;">I will be setting up a dev environment in parallel with the jam, at a location 15 minutes away from my current dev machine.</li>
<li data-wr_replaced="true" style="border: none; margin: 0px 0px 0.25em; padding: 0.25em 0px;">Just getting the Kinect to play nicely; I tried for a long time today to get the Kinect v2 working with my computer before giving up and going back</li>
<li data-wr_replaced="true" style="border: none; margin: 0px 0px 0.25em; padding: 0.25em 0px;">Calibration is <i>Hard</i>. Very hard to get high accuracy; I wonder how accurate you need to be for presence?</li>
<li data-wr_replaced="true" style="border: none; margin: 0px 0px 0.25em; padding: 0.25em 0px;">NPR shaders are easy to make, but not necessarily easy to make look good.</li>
</ul>
Anonymoushttp://www.blogger.com/profile/05396727573029326850noreply@blogger.com0tag:blogger.com,1999:blog-6097810015273635575.post-73315869842548893482015-08-02T09:10:00.001-04:002015-08-03T11:18:51.011-04:00[MMc] Design for an in-HMD GUII'm <a href="http://www.cs.williams.edu/~morgan">Morgan McGuire</a>, professor at Williams College and researcher at NVIDIA. For the game jam, I'm designing an adapter class that will allow using the <a href="http://g3d.codeplex.com/">G3D Innovation Engine</a> GUI inside of the HMD view. I'll work on the G3D::VRApp class directly using Oculus DK2.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0E5SKDfvX_oQNRbTr3jEOFQExOdr2Kpz7N2_cJv7iTp5xtivC3NlGRPO4yrMNeN98XvJ3Bwx0miKcLB25utLA6YirUS_WQG-gMCdxWfLuKjF2O8JOyM8BVXGK9gMhnW0Cy3IjfMBuUdU/s1600/avatar.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="169" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0E5SKDfvX_oQNRbTr3jEOFQExOdr2Kpz7N2_cJv7iTp5xtivC3NlGRPO4yrMNeN98XvJ3Bwx0miKcLB25utLA6YirUS_WQG-gMCdxWfLuKjF2O8JOyM8BVXGK9gMhnW0Cy3IjfMBuUdU/s320/avatar.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>Avatar</i> depicts world-space 3D UIs</td></tr>
</tbody></table>
<a name='more'></a>G3D developers enjoy a great in-engine debugging environment, including:<br />
<ul>
<li>Full windowed GUI</li>
<li>Profiler</li>
<li>Scene editor</li>
<li>Integrated entity manipulation widgets</li>
<li>On-screen performance HUD</li>
</ul>
<br />
However, when debugging in an HMD, we're currently reduced to the standards of ten years ago: using obscure key presses, minimal on-screen UI, looking at a separate console for text output (which requires taking off the HMD!). Rather than make ad-hoc key presses and screen overlays, I propose creating an adaptor to allow existing Widget, Surface2D, and GEvent classes to work in an HMD.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3Dbz0nHDLKO9CQ56PC6IzMbg2PFG_LVHTmWFGp60PGxetvVkrZiDOxZnN9DQNMlVkk9BtEo3W-Ezp0h0Z2RDVhMyfTUVjTNtKcxGHn-IqeTh3k__MrJj9ZZKGUU6FXWXhu5K3P0R2640/s1600/iron-man-suit-interface-hud1.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3Dbz0nHDLKO9CQ56PC6IzMbg2PFG_LVHTmWFGp60PGxetvVkrZiDOxZnN9DQNMlVkk9BtEo3W-Ezp0h0Z2RDVhMyfTUVjTNtKcxGHn-IqeTh3k__MrJj9ZZKGUU6FXWXhu5K3P0R2640/s320/iron-man-suit-interface-hud1.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>Iron Man</i> depicts body-space 2.5D UIs</td></tr>
</tbody></table>
There are several possible ways to present the user interface. These raise questions for the experience and the design:<br />
<br />
<ul>
<li>3D, or 2.5D (i.e., with perspective but no depth test so that it isn't lost "behind" near walls)?</li>
<li>Attached to the avatar's head, the avatar's body, or fixed in world space?</li>
<li>Routed through the existing onGraphics2D method, or a separate rendering pass?</li>
<li>Mirrored to the traditional display as well?</li>
<li>The OSWindow has different dimensions than the Film. This will throw off event delivery, especially for ThirdPersonManipulator. How can this be handled?</li>
<li>At what depth for fixed the avatar's head?</li>
<li>How should the cursor be rendered? 2D in texture space? 3D in body space? 3D in camera space?</li>
<li>How should focus work, so that keyboard WASD control is not locked out of movement or stolen from the GUI?</li>
</ul>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjES0AwW_gUBRTd0QQHOYdTr3K8xPHTrgeCvI1mFVmY6TUMyf3ONUnfpsKv5tBVHQew0zL3sKCLSblLfUGr0RJL0LRvqLEgZOFChJE2uuefAi_p4Vk2HCy9LIyvMZQejmU0xeUIpEPgx2Y/s1600/terminator_vision-550x235.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="136" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjES0AwW_gUBRTd0QQHOYdTr3K8xPHTrgeCvI1mFVmY6TUMyf3ONUnfpsKv5tBVHQew0zL3sKCLSblLfUGr0RJL0LRvqLEgZOFChJE2uuefAi_p4Vk2HCy9LIyvMZQejmU0xeUIpEPgx2Y/s320/terminator_vision-550x235.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>Terminator 2</i> depicts a head-space <span style="font-size: 12.8000001907349px;">2.5D </span><span style="font-size: 12.8000001907349px;">UI</span></td></tr>
</tbody></table>
Existing applications offer little guidance for using a 2D GUI in a 3D world. Oculus's demo uses the center of the head-space screen as the selection point, which is awkward even for hitting a large button. DOOM 3 has in-game computer screen UIs that take over the mouse when it crosses their borders, and then release it when it moves past. There is no standard VR mode for DOOM 3 to see how this interacts with the camera, however. SightlineVR's menu feels like having a mobile device screen pasted to your face (because it is). There's been a lot of research on VR GUIs, but most of it predates today's consumer HMD form factors and APIs, and was focused on how to make the optimal VR UI, not map an existing 2D UI into a place it could be used in an HMD.<br />
<br />
<i>Update: this <a href="https://youtu.be/p1SuZaPdTJY?t=88">Doom3 mod</a> has a pretty good looking solution. I'm going to reverse engineer it and see if that's a good model for us.</i><br />
<br />
I worked through the implications of a few designs for the G3D APIs and assumptions made by their implementations. Based on these considerations, my first implementation attempt will be a very simple <b>head-space 2.5D</b> implementation:<br />
<br />
<ol>
<li>Make VRApp::onGraphics bind a Framebuffer and render onGraphics2D to it, <i>before</i> onGraphics3D is invoked. This framebuffer will match the OSWindow's dimensions</li>
<li>For each eye</li>
<ol>
<li>Overlay the onGraphics2D image as if it were a rectangle at 1.5m from the camera just before HMD compositing</li>
<li>Render the cursor relative to this image, if it is currently visible on the OSWindow</li>
</ol>
<li>Optionally mirror the onGraphics2D image to the non-HMD display as well</li>
<li>Leave event delivery unmodified from usual G3D!</li>
</ol>
<br />
As described, this will take about an hour to implement in VRApp. I foresee several potential problems with it, which is what I'll spend most of the jam working on:<br />
<br />
<ul>
<li>The 2D event positions might end up relative to the upper-left corner of the film instead of centered.</li>
<li>The DK2 resolution won't match the on-screen windows, and will have all kinds of distortion applied. This may make text unreadable. We may need some kind of G3D "low-DPI" setting, or to adjust the OSWindow to a more practical size. Oculus now provides a UI layer that I'd like to take advantage of.</li>
<li>Timewarp may do horrible things to this, because it will be a transparent, head-space surface. The UI layer may handle this</li>
<li>This design won't allow selecting 3D objects or using ThirdPersonManipulator with them.</li>
<li>I think that body space may have some advantages over head space, including the ability to look past the UI by shifting your head when it occludes something. However, "Body space" doesn't work very well with nomad VR based on G3D's current definition of "body = camera entity". We may need another level of indirection in the G3D VR model, or some way of moving the body based on tracked data.</li>
<li>This design isn't nearly as exciting as Iron Man's</li>
</ul>
<br />
<br />Morganhttp://www.blogger.com/profile/10895207997945851010noreply@blogger.com0