http://ivl.calit2.net/wiki/api.php?action=feedcontributions&user=Sal131&feedformat=atom Immersive Visualization Lab Wiki - User contributions [en] 2024-03-29T07:45:52Z User contributions MediaWiki 1.21.1 http://ivl.calit2.net/wiki/index.php/File:Discussion08F19.pdf File:Discussion08F19.pdf 2019-11-26T05:17:18Z <p>Sal131: </p> <hr /> <div></div> Sal131 http://ivl.calit2.net/wiki/index.php/ScheduleCSE167F19 ScheduleCSE167F19 2019-11-26T05:15:46Z <p>Sal131: /* CSE167 Fall 2019 Schedule */</p> <hr /> <div>=CSE167 Fall 2019 Schedule=<br /> <br /> This schedule is subject to change.<br /> <br /> {| border=&quot;1&quot; style=&quot;text-align:left;&quot;<br /> |-<br /> ! Week<br /> ! Starts<br /> ! Discussion Monday 7pm<br /> ! Lecture Tuesday 2pm<br /> ! Lecture Thursday 2pm<br /> ! Grading Friday 2pm<br /> |- <br /> | 0<br /> | Sept 23<br /> | No discussion<br /> | No class<br /> | [[Media:01_OverviewF19.pdf | Course Overview]]<br /> | No grading<br /> |-<br /> | 1<br /> | Sept 30<br /> | Discussion [[Project1F19 | Project 1]] ([[Media:Discussion1.pdf |slides]])<br /> | [[Media:02_OpenGL_F19.pdf | OpenGL]]<br /> | [[Media:03_LinearAlgebraF19.pdf | Linear Algebra Part 1]]<br /> | [[Project1F19 | Project 1]] due<br /> |-<br /> | 2<br /> | Oct 7<br /> | Discussion [[Project2F19 | Project 2]] ([[Media:Discussion02F19.pdf |slides]])<br /> | [[Media:03_LinearAlgebraF19.pdf | Linear Algebra Part 2]]<br /> | [[Media:04_CoordinateSystemsF19.pdf | Coordinate Systems]]<br /> | Late grading [[Project1F19 | Project 1]]<br /> |-<br /> | 3<br /> | Oct 14<br /> | Discussion [[Project2F19 | Project 2]] ([[Media:Discussion03F19.pdf |slides]])<br /> | [[Media:05_IlluminationF19.pdf | Illumination Part 1]]<br /> | [[Media:05_IlluminationF19.pdf | Illumination Part 2]]<br /> | [[Project2F19 | Project 2]] due<br /> |-<br /> | 4<br /> | Oct 21<br /> | Discussion Midterm exam #1<br /> | [[Media:06_SceneGraphF19.pdf | Scene Graph]], discussion of [[Project3F19 | Project 3]] <br /> | Midterm exam #1; previous exams: [[Media:CSE167F16Midterm1.pdf | Fall 2016]], [[Media:CSE167F17Midterm1.pdf | Fall 2017]],[[Media:CSE167F18Midterm1.pdf | Fall 2018]]<br /> | Late grading [[Project2F19 | Project 2]]<br /> |-<br /> | 5<br /> | Oct 28<br /> | Discussion [[Project3F19 | Project 3]] ([[Media:Discussion05F19.pdf |slides]])<br /> | [[Media:07_ProjectionAndFrustumCullingF19.pdf | Projection and Frustum Culling]]<br /> | [[Media:08_VisibilityCullingF19.pdf | Visibility Culling]]<br /> | [[Project3F19 | Project 3]] due<br /> |-<br /> | 6<br /> | Nov 4<br /> | Discussion [[Project4F19 | Project 4]] ([[Media:Discussion06F19.pdf |slides]])<br /> | [[Media:09_TextureMappingF19.pdf | Texture Mapping]], [[Media:10_EnvironmentMappingF19.pdf | Environment Mapping]]<br /> | [[Media:11_CurvesF19.pdf | Bezier Curves]]<br /> | Late grading [[Project3F19 | Project 3]]<br /> |-<br /> | 7<br /> | Nov 11<br /> | No discussion (Veterans Day) ([[Media:Discussion07F19.pdf |slides]])<br /> | Midterm answers<br /> | [[Media:12_SurfacesF19.pdf | Parametric Surfaces]], [[Media:13_AdvancedTextureMappingF19.pdf | Advanced Texture Mapping]]<br /> | [[Project4F19 | Project 4]] due<br /> |-<br /> | 8<br /> | Nov 18<br /> | Discussion Midterm #2 (no slides)<br /> | [[Media:14_ProceduralModelingF19.pdf | Procedural Modeling]] (until slide 13)<br /> | Midterm exam #2; previous exams: [[Media:CSE167F16Midterm2.pdf | Fall 2016]], [[Media:CSE167F17Midterm2.pdf | Fall 2017]], [[Media:CSE167F18Midterm2.pdf | Fall 2018]]<br /> | Late grading [[Project4F19 | Project 4]]<br /> |-<br /> | 9<br /> | Nov 25<br /> | Discussion [[Project5F19 | Final Project]] ([[Media:Discussion08F19.pdf |slides]])<br /> | [[Media:15_ToonShadingF19.pdf | Toon Shading]], [[Media:16_ShadowMappingF19.pdf | Shadow Mapping]]<br /> | No class (Thanksgiving)<br /> | No grading (Thanksgiving)<br /> |-<br /> | 10<br /> | Dec 2<br /> | Discussion [[Project5F19 | Final Project]] ([[Media:Discussion10F19.pdf |slides]])<br /> | [[Media:17_DeferredRenderingF19.pdf | Deferred Rendering, Particle Effects, Collision Detection]]<br /> | [[Media:18_BumpMappingF19.pdf | Bump Mapping]]<br /> | No grading<br /> |-<br /> | 11<br /> | Dec 9<br /> | No discussion<br /> | No class<br /> | [[Project5F19 | Final project]] presentations in CSE 1242, followed by demos in B260<br /> | Winter break!<br /> |}</div> Sal131 http://ivl.calit2.net/wiki/index.php/ScheduleCSE167F19 ScheduleCSE167F19 2019-10-15T16:23:02Z <p>Sal131: /* CSE167 Fall 2019 Schedule */</p> <hr /> <div>=CSE167 Fall 2019 Schedule=<br /> <br /> This schedule is subject to change.<br /> <br /> {| border=&quot;1&quot; style=&quot;text-align:left;&quot;<br /> |-<br /> ! Week<br /> ! Starts<br /> ! Discussion Monday 7pm<br /> ! Lecture Tuesday 2pm<br /> ! Lecture Thursday 2pm<br /> ! Grading Friday 2pm<br /> |- <br /> | 0<br /> | Sept 23<br /> | No discussion<br /> | No class<br /> | [[Media:01_OverviewF19.pdf | Course Overview]]<br /> | No grading<br /> |-<br /> | 1<br /> | Sept 30<br /> | Discussion [[Project1F19 | Project 1]] ([[Media:Discussion1.pdf |slides]])<br /> | [[Media:02_OpenGL_F19.pdf | OpenGL]]<br /> | [[Media:03_LinearAlgebraF19.pdf | Linear Algebra Part 1]]<br /> | [[Project1F19 | Project 1]] due<br /> |-<br /> | 2<br /> | Oct 7<br /> | Discussion [[Project2F19 | Project 2]] ([[Media:Discussion02F19.pdf |slides]])<br /> | [[Media:03_LinearAlgebraF19.pdf | Linear Algebra Part 2]]<br /> | [[Media:04_CoordinateSystemsF19.pdf | Coordinate Systems]]<br /> | Late grading [[Project1F19 | Project 1]]<br /> |-<br /> | 3<br /> | Oct 14<br /> | Discussion [[Project2F19 | Project 2]] ([[Media:Discussion03F19.pdf |slides]])<br /> | [[Media:05_IlluminationF19.pdf | Illumination]], [[Media:06_ProjectionF19.pdf | Projection]]<br /> | [[Media:07_TexturesF19.pdf | Textures]]<br /> | [[Project2F19 | Project 2]] due<br /> |-<br /> | 4<br /> | Oct 21<br /> | Discussion Midterm and [[Project3F19 | Project 3]] ([[Media:Discussion04F19.pdf |slides]])<br /> | [[Media:08_SceneGraphF19.pdf | Scene Graph]]<br /> | Midterm exam #1; previous exams: [[Media:CSE167F16Midterm1.pdf | Fall 2016]], [[Media:CSE167F17Midterm1.pdf | Fall 2017]],[[Media:CSE167F18Midterm1.pdf | Fall 2018]]<br /> | Late grading [[Project2F19 | Project 2]]<br /> |-<br /> | 5<br /> | Oct 28<br /> | Discussion [[Project3F19 | Project 3]] ([[Media:Discussion05F19.pdf |slides]])<br /> | [[Media:09_VisibilityF19.pdf | Visibility]]<br /> | [[Media:10_EnvironmentMappingF19.pdf | Environment Mapping]]<br /> | [[Project3F19 | Project 3]] due<br /> |-<br /> | 6<br /> | Nov 4<br /> | Discussion [[Project4F19 | Project 4]] ([[Media:Discussion06F19.pdf |slides]])<br /> | [[Media:11_CurvesF19.pdf | Parametric Curves]]<br /> | [[Media:12_BezierCurvesF19.pdf | Bezier Curves]]<br /> | Late grading [[Project3F19 | Project 3]]<br /> |-<br /> | 7<br /> | Nov 11<br /> | No discussion (Veterans Day)<br /> | [[Media:13_SurfacesF19.pdf | Parametric Surfaces]]<br /> | [[Media:14_ToonShadingF19.pdf | Toon Shading]]<br /> | [[Project4F19 | Project 4]] due<br /> |-<br /> | 8<br /> | Nov 18<br /> | Discussion Midterm ([[Media:Discussion08F19.pdf |slides]])<br /> | [[Media:15_ProceduralModelingF19.pdf | Procedural Modeling]]<br /> | Midterm exam #2; previous exams: [[Media:CSE167F16Midterm2.pdf | Fall 2016]], [[Media:CSE167F17Midterm2.pdf | Fall 2017]], [[Media:CSE167F18Midterm2.pdf | Fall 2018]]<br /> | Late grading [[Project4F19 | Project 4]]<br /> |-<br /> | 9<br /> | Nov 25<br /> | Discussion [[Project5F19 | Final Project]] <br /> | [[Media:16_ShadowMappingF19.pdf | Shadow Mapping]]<br /> | No class (Thanksgiving)<br /> | No grading (Thanksgiving)<br /> |-<br /> | 10<br /> | Dec 2<br /> | Discussion [[Project5F19 | Final Project]] ([[Media:Discussion10F19.pdf |slides]])<br /> | [[Media:17_DeferredRenderingF19.pdf | Deferred Rendering, Particle Effects, Collision Detection]]<br /> | [[Media:18_WrappingUpF19.pdf | Bump Mapping]]<br /> | No grading<br /> |-<br /> | 11<br /> | Dec 9<br /> | No discussion<br /> | No class<br /> | [[Project5F19 | Final project]] presentations in CSE 1242, followed by demos in B260<br /> | Winter break!<br /> |}</div> Sal131 http://ivl.calit2.net/wiki/index.php/File:Discussion03F19.pdf File:Discussion03F19.pdf 2019-10-15T16:21:58Z <p>Sal131: </p> <hr /> <div></div> Sal131 http://ivl.calit2.net/wiki/index.php/ScheduleCSE167F19 ScheduleCSE167F19 2019-10-01T04:19:39Z <p>Sal131: /* CSE167 Fall 2019 Schedule */</p> <hr /> <div>=CSE167 Fall 2019 Schedule=<br /> <br /> This schedule is subject to change.<br /> <br /> {| border=&quot;1&quot; style=&quot;text-align:left;&quot;<br /> |-<br /> ! Week<br /> ! Starts<br /> ! Discussion Monday 7pm<br /> ! Lecture Tuesday 2pm<br /> ! Lecture Thursday 2pm<br /> ! Grading Friday 2pm<br /> |- <br /> | 0<br /> | Sept 23<br /> | No discussion<br /> | No class<br /> | [[Media:01_OverviewF19.pdf | Course Overview]]<br /> | No grading<br /> |-<br /> | 1<br /> | Sept 30<br /> | Discussion [[Project1F19 | Project 1]] ([[Media:Discussion1.pdf |slides]])<br /> | [[Media:02_OpenGL_F19.pdf | OpenGL]]<br /> | [[Media:03_LinearAlgebraF19.pdf | Linear Algebra]]<br /> | [[Project1F19 | Project 1]] due<br /> |-<br /> | 2<br /> | Oct 7<br /> | Discussion [[Project2F19 | Project 2]] ([[Media:Discussion02F19.pdf |slides]])<br /> | [[Media:04_CoordinateSystemsF19.pdf | Coordinate Systems]]<br /> | [[Media:05_ProjectionF19.pdf | Projection]]<br /> | Late grading [[Project1F19 | Project 1]]<br /> |-<br /> | 3<br /> | Oct 14<br /> | Discussion Midterm and [[Project2F19 | Project 2]] ([[Media:Discussion03F19.pdf |slides]])<br /> | [[Media:06_IlluminationF19.pdf | Illumination]]<br /> | [[Media:07_TexturesF19.pdf | Textures]]<br /> | [[Project2F19 | Project 2]] due<br /> |-<br /> | 4<br /> | Oct 21<br /> | Discussion Midterm and [[Project3F19 | Project 3]] ([[Media:Discussion04F19.pdf |slides]])<br /> | [[Media:08_SceneGraphF19.pdf | Scene Graph]]<br /> | Midterm exam #1; previous exams: [[Media:CSE167F16Midterm1.pdf | Fall 2016]], [[Media:CSE167F17Midterm1.pdf | Fall 2017]],[[Media:CSE167F18Midterm1.pdf | Fall 2018]]<br /> | Late grading [[Project2F19 | Project 2]]<br /> |-<br /> | 5<br /> | Oct 28<br /> | Discussion [[Project3F19 | Project 3]] ([[Media:Discussion05F19.pdf |slides]])<br /> | [[Media:09_VisibilityF19.pdf | Visibility]]<br /> | [[Media:10_EnvironmentMappingF19.pdf | Environment Mapping]]<br /> | [[Project3F19 | Project 3]] due<br /> |-<br /> | 6<br /> | Nov 4<br /> | Discussion [[Project4F19 | Project 4]] ([[Media:Discussion06F19.pdf |slides]])<br /> | [[Media:11_CurvesF19.pdf | Parametric Curves]]<br /> | [[Media:12_BezierCurvesF19.pdf | Bezier Curves]]<br /> | Late grading [[Project3F19 | Project 3]]<br /> |-<br /> | 7<br /> | Nov 11<br /> | No discussion (Veterans Day)<br /> | [[Media:13_SurfacesF19.pdf | Parametric Surfaces]]<br /> | [[Media:14_ToonShadingF19.pdf | Toon Shading]]<br /> | [[Project4F19 | Project 4]] due<br /> |-<br /> | 8<br /> | Nov 18<br /> | Discussion Midterm ([[Media:Discussion08F19.pdf |slides]])<br /> | [[Media:15_ProceduralModelingF19.pdf | Procedural Modeling]]<br /> | Midterm exam #2; previous exams: [[Media:CSE167F16Midterm2.pdf | Fall 2016]], [[Media:CSE167F17Midterm2.pdf | Fall 2017]], [[Media:CSE167F18Midterm2.pdf | Fall 2018]]<br /> | Late grading [[Project4F19 | Project 4]]<br /> |-<br /> | 9<br /> | Nov 25<br /> | Discussion [[Project5F19 | Final Project]] <br /> | [[Media:16_ShadowMappingF19.pdf | Shadow Mapping]]<br /> | No class (Thanksgiving)<br /> | No grading (Thanksgiving)<br /> |-<br /> | 10<br /> | Dec 2<br /> | Discussion [[Project5F19 | Final Project]] ([[Media:Discussion10F19.pdf |slides]])<br /> | [[Media:17_DeferredRenderingF19.pdf | Deferred Rendering, Particle Effects, Collision Detection]]<br /> | [[Media:18_WrappingUpF19.pdf | Bump Mapping]]<br /> | No grading<br /> |-<br /> | 11<br /> | Dec 9<br /> | No discussion<br /> | No class<br /> | [[Project5F19 | Final project]] presentations in CSE 1242, followed by demos in B260<br /> | Winter break!<br /> |}</div> Sal131 http://ivl.calit2.net/wiki/index.php/File:Discussion1.pdf File:Discussion1.pdf 2019-10-01T04:18:30Z <p>Sal131: </p> <hr /> <div></div> Sal131 http://ivl.calit2.net/wiki/index.php/BasecodeCSE167F19 BasecodeCSE167F19 2019-09-27T05:43:36Z <p>Sal131: /* On OS X */</p> <hr /> <div>==Starter Code for Programming Projects==<br /> <br /> The purpose of this web page is to introduce OpenGL programming and set up your computer so that you can begin developing OpenGL applications.<br /> <br /> In order to display an image, you must create a drawing canvas, which is essentially a window. With OpenGL, you create a window and then create an OpenGL drawing context associated with that window, which allows you to use your video hardware to draw 3D objects directly into that window. Opening that window and creating the OpenGL context is cumbersome and varies from system to system. The purpose of GLFW is to simplify and unify this initial step.<br /> <br /> The PCs in the computer lab already have GLFW and Visual Studio installed. It is also possible to run your projects on the lab computers in the AP&amp;M basement, though you may need to go through the given setup instructions before the projects can work.<br /> <br /> For your personal computer we will show you how to download and install GLFW and configure Visual Studio/XCode to use it. <br /> <br /> The starter code is [https://github.com/CalVR/CSE167StarterCode available here].<br /> <br /> ==UPDATE YOUR SYSTEM==<br /> <br /> We're using modern OpenGL (at least 3.3+, but some systems with OpenGL 3.1 somehow have forward compatibility to 3.3) which came out in 2010, meaning most recent systems should support it by default. However, just in case, make sure your graphics drivers are updated to the latest version.<br /> <br /> * Windows: Update your graphics driver to the latest version. If your graphics card is too old, replace your graphics card or use a different computer.<br /> * OS X: Update your OS X version to at least 10.9. OpenGL is tied to your operating system version.<br /> <br /> ==On Windows==<br /> <br /> The very first thing you'll be doing is downloading and installing the [https://visualstudio.microsoft.com/downloads/ Microsoft Visual Studio 2017 Community Edition] for free.<br /> <br /> Once that is done and you have unzipped your starter code, we're ready to begin configuring our Microsoft Visual Studio solution to work with OpenGL.<br /> # Open Microsoft Visual Studio. Go to &quot;File-&gt;New-&gt;Project From Existing Code...&quot;.<br /> #:[[File:SC_Windows_1.png]]<br /> # Create a '''Visual C++''' project.<br /> #:[[File:SC_Windows_2.png]]<br /> # On the next page, enter the path to the starter code as the project file location and enter a name for the project (whatever you like).<br /> #:[[File:SC_Windows_3.png]]<br /> # On the next page, create a console application project and click '''Finish'''.<br /> #:[[File:SC_Windows_4.png]]<br /> # Open the '''NuGet Package Manager''' by right-clicking your project on the left and select '''Manage NuGet Packages...'''<br /> #:[[File:SC_Windows_5.png]]<br /> # Make sure you're in the Browse tab. Search for nupengl and install the '''nupengl.core''' package (NOT nupengl.core.redist). Alternatively, if you feel that this is too overkill (since nupengl contains 5 or 6 different commonly used libraries in OpenGL applications), download the glew and glfw packages (NOT the .redist packages).<br /> #:[[File:SC_Windows_6.png|800px]]<br /> # Similarly, install the '''glm''' package.<br /> #: [[File:SC_Windows_7.png|800px]]<br /> # Now that we have all our packages, we just need to [https://en.wikipedia.org/wiki/Linker_(computing) Link] against the OpenGL libraries.<br /> # We can do that by going to our project's(note: NOT solution) Properties. Right-click your project in the '''Solution Explorer''' and select '''Properties'''<br /> #: [[File:SC_Windows_8.png]]<br /> # Once in project properties, go to Configuration dropdown to change it to All Configurations. This will ensure we edit both the debug/release configuration at the same time, and don't have to repeat the step.<br /> #: [[File:VS_All_Configuration.png|800px]]<br /> # Navigate to Linker-&gt;Input to prepend '''opengl32.lib''' to Additional Dependencies.<br /> #: [[File:SC_Windows_9.png|800px]]<br /> # Change the active configuration to '''release''' for faster execution! If you want to do breakpoint debugging, remember that you'll have to change this back to '''debug''' to make sure you can see the variables.<br /> #: [[File:SC_Windows_10.png]]<br /> # Once this is done, build and run the program(CTRL+F5) to see a spinning cube!<br /> <br /> ==On OS X==<br /> First, let's make sure we have all of the starter code downloaded (linked above).<br /> <br /> Once you have unzipped the project, open XCode and create a new project.<br /> <br /> # Select Command Line Tool as the template for the new project.<br /> #: [[File:OSX_XCode11_Setup_Command_Line_Tool.png|800px]]<br /> # Name your project any name of your choosing.<br /> # Upon completion, you should be presented with something like this:<br /> #: [[File:OSX_XCode11_Setup_Project_Created.png|800px]]<br /> # Let's open the directory enclosing our newly created XCode project alongside the unzipped starter code directory. Drag and drop the files as shown below.<br /> #: [[File:OSX_XCode_Setup_Moving_Files.png|800px]]<br /> # If presented with the option, replace the already existing files (main.cpp in this case)<br /> <br /> All is good for now. We will come back to this later.<br /> <br /> ====Install GLFW and GLM====<br /> <br /> <br /> # Begin by installing homebrew following this [https://brew.sh/ link], or type the following in your command line:<br /> #* &lt;code&gt;/usr/bin/ruby -e &quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)&quot;&lt;/code&gt;<br /> # Install glfw and glm with homebrew by typing the following in your command line:<br /> #* &lt;code&gt;brew install glfw glm&lt;/code&gt;<br /> #: [[File:OSX_XCode_Setup_install_libraries.jpg|800px]]<br /> <br /> ====XCode Setup====<br /> <br /> The last step is to set up XCode to find where we put all of our code, libraries and headers<br /> # Open up the XCode project<br /> # In the far left panel of the Xcode window, you will see a folder matching the project name.<br /> #* Right click this folder and click &quot;Add files to &lt;project name&gt;&quot;.<br /> #* Choose the files as shown below and press &quot;Add&quot;<br /> #: [[File:OSX_XCode11_Setup_Adding_Files.png|800px]]<br /> # Above this folder, you will see the top level which shares the same name as your project.<br /> #* Click this and choose the binary with the same name under TARGETS, then in the &quot;Build Settings&quot; option at the top.<br /> #* Type &quot;Search Paths&quot; in the search bar.<br /> #* Add the following paths as shown below so XCode knows where to find all of the glfw and glm headers in our code. <br /> #** &lt;code&gt;/usr/local/include&lt;/code&gt;<br /> #** &lt;code&gt;/usr/local/lib&lt;/code&gt;<br /> #: [[File:OSX_XCode_Setup_Adding_Header_Paths.jpg|800px]]<br /> # At the top of this window, click &quot;Build Phases&quot;<br /> #* Open up the &quot;Link Binary with Libraries&quot; pull down<br /> #* Press the little &quot;+&quot; sign and type &quot;OpenGL&quot;<br /> #* Choose &quot;OpenGL.framework&quot; and press &quot;Add&quot;<br /> #: [[File:OSX_XCode_Setup_Adding_OpenGL_Library.png|800px]]<br /> #* Press the &quot;+&quot; sign again and choose &quot;Add Other...&quot;<br /> #* Navigate to /usr/local/lib, choose &quot;libglfw.dylib&quot; and press &quot;Open&quot;<br /> #: [[File:OSX_XCode_Setup_Adding_GLFW_Library.png|800px]]<br /> #* Open up the &quot;Copy Files (0 items)&quot; pull down<br /> #* Select &quot;Products Directory&quot; as the Destination<br /> #* Clear subpath field and uncheck the &quot;Copy only when installing&quot; box.<br /> #* Click on the little &quot;+&quot; sign and choose shaders.<br /> #: [[File:OSX_XCode_Setup_Add_Shaders.png|600px]]<br /> # Optional: We like to see a good frame rate, so we prefer you run in Release (at least during the grading demo).<br /> #* Open Product &gt; Scheme &gt; Edit Scheme, and choose &quot;Release&quot;<br /> #: [[File:OSX_XCode_Setup_Release_Mode.png|800px]]<br /> # Run that baby (press the play button at the top left or press Command + r). Note that the default color of the cube may change depending on what quarter it is (we like being different).<br /> #: [[File:OSX_XCode11_Setup_Running.png|800px]]<br /> ==On Linux==<br /> The staff don't officially support Linux, but the ingredients you'll need are GLFW3.x.x, GLM 0.9.x.x, and GLEW 1.10+.x. You might be able to find these libraries in your favorite package managers, but make sure the versions are sufficient/compatible.</div> Sal131 http://ivl.calit2.net/wiki/index.php/File:OSX_XCode11_Setup_Running.png File:OSX XCode11 Setup Running.png 2019-09-27T05:39:17Z <p>Sal131: </p> <hr /> <div></div> Sal131 http://ivl.calit2.net/wiki/index.php/File:OSX_XCode_Setup_Running.png File:OSX XCode Setup Running.png 2019-09-27T05:39:02Z <p>Sal131: Sal131 uploaded a new version of &amp;quot;File:OSX XCode Setup Running.png&amp;quot;: Reverted to version as of 18:25, 29 March 2016</p> <hr /> <div></div> Sal131 http://ivl.calit2.net/wiki/index.php/File:OSX_XCode_Setup_Running.png File:OSX XCode Setup Running.png 2019-09-27T05:38:31Z <p>Sal131: Sal131 uploaded a new version of &amp;quot;File:OSX XCode Setup Running.png&amp;quot;</p> <hr /> <div></div> Sal131 http://ivl.calit2.net/wiki/index.php/File:OSX_XCode11_Setup_Adding_Files.png File:OSX XCode11 Setup Adding Files.png 2019-09-27T05:34:21Z <p>Sal131: Sal131 uploaded a new version of &amp;quot;File:OSX XCode11 Setup Adding Files.png&amp;quot;</p> <hr /> <div></div> Sal131 http://ivl.calit2.net/wiki/index.php/File:OSX_XCode_Setup_Adding_Files.jpg File:OSX XCode Setup Adding Files.jpg 2019-09-27T05:33:45Z <p>Sal131: Sal131 uploaded a new version of &amp;quot;File:OSX XCode Setup Adding Files.jpg&amp;quot;</p> <hr /> <div></div> Sal131 http://ivl.calit2.net/wiki/index.php/File:OSX_XCode_Setup_Add_Shaders.png File:OSX XCode Setup Add Shaders.png 2019-09-27T05:30:01Z <p>Sal131: Sal131 uploaded a new version of &amp;quot;File:OSX XCode Setup Add Shaders.png&amp;quot;</p> <hr /> <div></div> Sal131 http://ivl.calit2.net/wiki/index.php/File:OSX_XCode_Setup_Add_Shaders.png File:OSX XCode Setup Add Shaders.png 2019-09-27T05:27:51Z <p>Sal131: </p> <hr /> <div></div> Sal131 http://ivl.calit2.net/wiki/index.php/File:OSX_XCode11_Setup_Adding_Files.png File:OSX XCode11 Setup Adding Files.png 2019-09-27T05:10:28Z <p>Sal131: Sal131 uploaded a new version of &amp;quot;File:OSX XCode11 Setup Adding Files.png&amp;quot;</p> <hr /> <div></div> Sal131 http://ivl.calit2.net/wiki/index.php/File:OSX_XCode11_Setup_Adding_Files.png File:OSX XCode11 Setup Adding Files.png 2019-09-27T04:43:40Z <p>Sal131: </p> <hr /> <div></div> Sal131 http://ivl.calit2.net/wiki/index.php/File:OSX_XCode11_Setup_Project_Created.png File:OSX XCode11 Setup Project Created.png 2019-09-27T04:42:54Z <p>Sal131: </p> <hr /> <div></div> Sal131 http://ivl.calit2.net/wiki/index.php/File:OSX_XCode11_Setup_Command_Line_Tool.png File:OSX XCode11 Setup Command Line Tool.png 2019-09-27T04:42:09Z <p>Sal131: </p> <hr /> <div></div> Sal131 http://ivl.calit2.net/wiki/index.php/File:OSX_XCode_Setup_install_libraries.jpg File:OSX XCode Setup install libraries.jpg 2019-09-27T04:37:05Z <p>Sal131: Sal131 uploaded a new version of &amp;quot;File:OSX XCode Setup install libraries.jpg&amp;quot;</p> <hr /> <div></div> Sal131 http://ivl.calit2.net/wiki/index.php/File:OSX_XCode_Setup_install_libraries.jpg File:OSX XCode Setup install libraries.jpg 2019-09-27T04:31:16Z <p>Sal131: </p> <hr /> <div></div> Sal131 http://ivl.calit2.net/wiki/index.php/File:OSX_XCode_Setup_Adding_Header_Paths.jpg File:OSX XCode Setup Adding Header Paths.jpg 2019-09-27T04:30:12Z <p>Sal131: </p> <hr /> <div></div> Sal131 http://ivl.calit2.net/wiki/index.php/File:OSX_XCode_Setup_Adding_Files.jpg File:OSX XCode Setup Adding Files.jpg 2019-09-26T23:18:56Z <p>Sal131: </p> <hr /> <div></div> Sal131 http://ivl.calit2.net/wiki/index.php/BasecodeCSE167F19 BasecodeCSE167F19 2019-09-26T21:40:48Z <p>Sal131: /* Starter Code for Programming Projects */</p> <hr /> <div>==Starter Code for Programming Projects==<br /> <br /> The purpose of this web page is to introduce OpenGL programming and set up your computer so that you can begin developing OpenGL applications.<br /> <br /> In order to display an image, you must create a drawing canvas, which is essentially a window. With OpenGL, you create a window and then create an OpenGL drawing context associated with that window, which allows you to use your video hardware to draw 3D objects directly into that window. Opening that window and creating the OpenGL context is cumbersome and varies from system to system. The purpose of GLFW is to simplify and unify this initial step.<br /> <br /> The PCs in the computer lab already have GLFW and Visual Studio installed. It is also possible to run your projects on the lab computers in the AP&amp;M basement, though you may need to go through the given setup instructions before the projects can work.<br /> <br /> For your personal computer we will show you how to download and install GLFW and configure Visual Studio/XCode to use it. <br /> <br /> The starter code is [https://github.com/CalVR/CSE167StarterCode available here].<br /> <br /> ==UPDATE YOUR SYSTEM==<br /> <br /> We're using modern OpenGL (at least 3.3+, but some systems with OpenGL 3.1 somehow have forward compatibility to 3.3) which came out in 2010, meaning most recent systems should support it by default. However, just in case, make sure your graphics drivers are updated to the latest version.<br /> <br /> * Windows: Update your graphics driver to the latest version. If your graphics card is too old, replace your graphics card or use a different computer.<br /> * OS X: Update your OS X version to at least 10.9. OpenGL is tied to your operating system version.<br /> <br /> ==On Windows==<br /> <br /> The very first thing you'll be doing is downloading and installing the [https://visualstudio.microsoft.com/downloads/ Microsoft Visual Studio 2017 Community Edition] for free.<br /> <br /> Once that is done and you have unzipped your starter code, we're ready to begin configuring our Microsoft Visual Studio solution to work with OpenGL.<br /> # Open the solution GLFWStarterProject.sln with Microsoft Visual Studio.<br /> # Open the '''NuGet Package Manager''' by selecting Tools-&gt;NuGet Package Manager-&gt;Manage NuGet Packages for Solution...<br /> #:[[File:Nugetpackagemanger.png]]<br /> # Make sure you're in the Browse tab. Search for nupengl and install the '''nupengl.core''' package (NOT nupengl.core.redist). Alternatively, if you feel that this is too overkill (since nupengl contains 5 or 6 different commonly used libraries in OpenGL applications), download the glew and glfw packages (NOT the .redist packages).<br /> #* If the install button is greyed out, make sure the GLFWStarterProject checkbox is on. <br /> #: [[File:nupengl.png|800px]]<br /> # Similarly, install the '''glm''' package.<br /> #: [[File:glm.png|800px]]<br /> # Now that we have all our packages, we just need to [https://en.wikipedia.org/wiki/Linker_(computing) Link] against the OpenGL libraries.<br /> # We can do that by going to our project's(note: NOT solution) Properties. Right-click on '''GLFWStarterProject''' project in the '''Solution Explorer'''.<br /> #: [[File:project_properties.png]]<br /> # Once in project properties, go to Configuration dropdown to change it to All Configurations. This will ensure we edit both the debug/release configuration at the same time, and don't have to repeat the step.<br /> #: [[File:VS_All_Configuration.png|800px]]<br /> # Navigate to Linker-&gt;Input to prepend '''opengl32.lib;glu32.lib;''' to Additional Dependencies.<br /> #: [[File:opengl_lib_linker.png|800px]]<br /> # Change the active configuration to '''release''' for faster execution! If you want to do breakpoint debugging, remember that you'll have to change this back to '''debug''' to make sure you can see the variables.<br /> #: [[File:vs_release_build.png]]<br /> # Once this is done, build and run the program(CTRL+F5) to see a spinning cube!<br /> <br /> ==On OS X==<br /> First, let's make sure we have all of the starter code downloaded (linked above).<br /> <br /> Once you have unzipped the project, open XCode and create a new project.<br /> <br /> # Select Command Line Tool as the template for the new project.<br /> #: [[File:OSX_XCode_Setup_Command_Line_Tool.png|800px]]<br /> # Name your project any name of your choosing.<br /> # Upon completion, you should be presented with something like this:<br /> #: [[File:OSX_XCode_Setup_Project_Created.png|800px]]<br /> # Let's open the directory enclosing our newly created XCode project alongside the unzipped starter code directory. Drag and drop the files as shown below.<br /> #: [[File:OSX_XCode_Setup_Moving_Files.png|800px]]<br /> # If presented with the option, replace the already existing files (main.cpp in this case)<br /> <br /> All is good for now. We will come back to this later.<br /> <br /> Next, make sure you have a recent version of CMake. You can download CMake from here: https://cmake.org/<br /> <br /> You may not already have the /Developer folder. If so, you'll have to make the directory. To do this, open a terminal and type:<br /> * &lt;code&gt;ls /Developer&lt;/code&gt;<br /> ** If you get an error message that /Developer does not exist we have to create the developer folder.<br /> *: &lt;code&gt;sudo mkdir /Developer&lt;/code&gt;<br /> ** You may be prompted to enter your password.<br /> <br /> From now on, when you're running commands inside /Developer, you'll need to prepend them with sudo<br /> <br /> <br /> ====Install GLFW====<br /> <br /> Begin by downloading GLFW: http://www.glfw.org/<br /> <br /> #Unzip the downloaded folder<br /> #Drag and drop the glfw folder in its entirety into your /Developer folder. Authenticate accordingly.<br /> #: [[File:OSX_XCode_Setup_Moving_GLFW.png|800px]]<br /> # Open a terminal. Replace 3.1.2 with the version you downloaded.<br /> #* &lt;code&gt;cd /Developer/glfw-3.1.2&lt;/code&gt;<br /> #* &lt;code&gt;sudo cmake -DBUILD_SHARED_LIBS=ON .&lt;/code&gt;<br /> #* &lt;code&gt;sudo make&lt;/code&gt;<br /> <br /> ====Install GLM====<br /> <br /> Begin by downloading GLM: http://glm.g-truc.net<br /> <br /> #Unzip the downloaded folder<br /> #Drag and drop the glm folder in its entirety into your /Developer folder. Authenticate accordingly.<br /> # Open a terminal<br /> #* &lt;code&gt;cd /Developer/glm&lt;/code&gt;<br /> #* &lt;code&gt;sudo cmake . #(Don't miss the dot!)&lt;/code&gt;<br /> #* &lt;code&gt;sudo make&lt;/code&gt;<br /> <br /> ====XCode Setup====<br /> <br /> The last step is to set up XCode to find where we put all of our code, libraries and headers<br /> # Open up the XCode project<br /> # In the far left panel of the Xcode window, you will see a folder matching the project name.<br /> #* Right click this folder and click &quot;Add files to &lt;project name&gt;&quot;.<br /> #* Choose the files as shown below and press &quot;Add&quot;<br /> #: [[File:OSX_XCode_Setup_Adding_Files.png|800px]]<br /> # Above this folder, you will see the top level which shares the same name as your project.<br /> #* Click this and choose the &quot;Build Settings&quot; option at the top.<br /> #* Scroll down to &quot;Search Paths&quot;.<br /> #* Add the following paths as shown below so XCode knows where to find all of the glfw and glm headers in our code. Replace 3.1.2 with the glfw version you downloaded. Select &quot;non-recursive&quot; from the dropdown after adding the path.<br /> #** &lt;code&gt;/Developer/glfw-3.1.2/include&lt;/code&gt;<br /> #** &lt;code&gt;/Developer/glm&lt;/code&gt;<br /> #: [[File:OSX_XCode_Setup_Adding_Header_Paths.png|800px]]<br /> # Do the same for the library paths, adding the following path. Again, replace 3.1.2 with the version you downloaded.<br /> #* &lt;code&gt;/Developer/glfw-3.1.2/src&lt;/code&gt;<br /> #: [[File:OSX_XCode_Setup_Adding_Library_Paths.png|800px]]<br /> # At the top of this window, click &quot;Build Phases&quot;<br /> #* Open up the &quot;Link Binary with Libraries&quot; pull down<br /> #* Press the little &quot;+&quot; sign and type &quot;OpenGL&quot;<br /> #* Choose &quot;OpenGL.framework&quot; and press &quot;Add&quot;<br /> #: [[File:OSX_XCode_Setup_Adding_OpenGL_Library.png|800px]]<br /> #* Press the &quot;+&quot; sign again and choose &quot;Add Other...&quot;<br /> #* Navigate to /Developer/glfw-3.1.2/src (replace 3.1.2 with the version you downloaded), choose &quot;libglfw.dylib&quot; and press &quot;Open&quot;<br /> #: [[File:OSX_XCode_Setup_Adding_GLFW_Library.png|800px]]<br /> # Optional: We like to see a good frame rate, so we prefer you run in Release (at least during the grading demo).<br /> #* Open Product &gt; Scheme &gt; Edit Scheme, and choose &quot;Release&quot;<br /> #: [[File:OSX_XCode_Setup_Release_Mode.png|800px]]<br /> # Run that baby (press the play button at the top left or press Command + r). Note that the default color of the cube may change depending on what quarter it is (we like being different).<br /> #: [[File:OSX_XCode_Setup_Running.png|800px]]<br /> <br /> ==On Linux==<br /> The staff don't officially support Linux, but the ingredients you'll need are GLFW3.x.x, GLM 0.9.x.x, and GLEW 1.10+.x. You might be able to find these libraries in your favorite package managers, but make sure the versions are sufficient/compatible.</div> Sal131 http://ivl.calit2.net/wiki/index.php/BasecodeCSE167F19 BasecodeCSE167F19 2019-09-26T21:39:42Z <p>Sal131: /* Starter Code for Programming Projects */</p> <hr /> <div>==Starter Code for Programming Projects==<br /> <br /> The purpose of this web page is to introduce OpenGL programming and set up your computer so that you can begin developing OpenGL applications.<br /> <br /> In order to display an image, you must create a drawing canvas, which is essentially a window. With OpenGL, you create a window and then create an OpenGL drawing context associated with that window, which allows you to use your video hardware to draw 3D objects directly into that window. Opening that window and creating the OpenGL context is cumbersome and varies from system to system. The purpose of GLFW is to simplify and unify this initial step.<br /> <br /> The PCs in the computer lab already have GLFW and Visual Studio installed. It is also possible to run your projects on the lab computers in the AP&amp;M basement, though you may need to go through the given setup instructions before the projects can work.<br /> <br /> For your personal computer we will show you how to download and install GLFW and configure Visual Studio/XCode to use it. <br /> <br /> The starter code is [https://github.com/CalVR/CSE167StarterCode].<br /> <br /> ==UPDATE YOUR SYSTEM==<br /> <br /> We're using modern OpenGL (at least 3.3+, but some systems with OpenGL 3.1 somehow have forward compatibility to 3.3) which came out in 2010, meaning most recent systems should support it by default. However, just in case, make sure your graphics drivers are updated to the latest version.<br /> <br /> * Windows: Update your graphics driver to the latest version. If your graphics card is too old, replace your graphics card or use a different computer.<br /> * OS X: Update your OS X version to at least 10.9. OpenGL is tied to your operating system version.<br /> <br /> ==On Windows==<br /> <br /> The very first thing you'll be doing is downloading and installing the [https://visualstudio.microsoft.com/downloads/ Microsoft Visual Studio 2017 Community Edition] for free.<br /> <br /> Once that is done and you have unzipped your starter code, we're ready to begin configuring our Microsoft Visual Studio solution to work with OpenGL.<br /> # Open the solution GLFWStarterProject.sln with Microsoft Visual Studio.<br /> # Open the '''NuGet Package Manager''' by selecting Tools-&gt;NuGet Package Manager-&gt;Manage NuGet Packages for Solution...<br /> #:[[File:Nugetpackagemanger.png]]<br /> # Make sure you're in the Browse tab. Search for nupengl and install the '''nupengl.core''' package (NOT nupengl.core.redist). Alternatively, if you feel that this is too overkill (since nupengl contains 5 or 6 different commonly used libraries in OpenGL applications), download the glew and glfw packages (NOT the .redist packages).<br /> #* If the install button is greyed out, make sure the GLFWStarterProject checkbox is on. <br /> #: [[File:nupengl.png|800px]]<br /> # Similarly, install the '''glm''' package.<br /> #: [[File:glm.png|800px]]<br /> # Now that we have all our packages, we just need to [https://en.wikipedia.org/wiki/Linker_(computing) Link] against the OpenGL libraries.<br /> # We can do that by going to our project's(note: NOT solution) Properties. Right-click on '''GLFWStarterProject''' project in the '''Solution Explorer'''.<br /> #: [[File:project_properties.png]]<br /> # Once in project properties, go to Configuration dropdown to change it to All Configurations. This will ensure we edit both the debug/release configuration at the same time, and don't have to repeat the step.<br /> #: [[File:VS_All_Configuration.png|800px]]<br /> # Navigate to Linker-&gt;Input to prepend '''opengl32.lib;glu32.lib;''' to Additional Dependencies.<br /> #: [[File:opengl_lib_linker.png|800px]]<br /> # Change the active configuration to '''release''' for faster execution! If you want to do breakpoint debugging, remember that you'll have to change this back to '''debug''' to make sure you can see the variables.<br /> #: [[File:vs_release_build.png]]<br /> # Once this is done, build and run the program(CTRL+F5) to see a spinning cube!<br /> <br /> ==On OS X==<br /> First, let's make sure we have all of the starter code downloaded (linked above).<br /> <br /> Once you have unzipped the project, open XCode and create a new project.<br /> <br /> # Select Command Line Tool as the template for the new project.<br /> #: [[File:OSX_XCode_Setup_Command_Line_Tool.png|800px]]<br /> # Name your project any name of your choosing.<br /> # Upon completion, you should be presented with something like this:<br /> #: [[File:OSX_XCode_Setup_Project_Created.png|800px]]<br /> # Let's open the directory enclosing our newly created XCode project alongside the unzipped starter code directory. Drag and drop the files as shown below.<br /> #: [[File:OSX_XCode_Setup_Moving_Files.png|800px]]<br /> # If presented with the option, replace the already existing files (main.cpp in this case)<br /> <br /> All is good for now. We will come back to this later.<br /> <br /> Next, make sure you have a recent version of CMake. You can download CMake from here: https://cmake.org/<br /> <br /> You may not already have the /Developer folder. If so, you'll have to make the directory. To do this, open a terminal and type:<br /> * &lt;code&gt;ls /Developer&lt;/code&gt;<br /> ** If you get an error message that /Developer does not exist we have to create the developer folder.<br /> *: &lt;code&gt;sudo mkdir /Developer&lt;/code&gt;<br /> ** You may be prompted to enter your password.<br /> <br /> From now on, when you're running commands inside /Developer, you'll need to prepend them with sudo<br /> <br /> <br /> ====Install GLFW====<br /> <br /> Begin by downloading GLFW: http://www.glfw.org/<br /> <br /> #Unzip the downloaded folder<br /> #Drag and drop the glfw folder in its entirety into your /Developer folder. Authenticate accordingly.<br /> #: [[File:OSX_XCode_Setup_Moving_GLFW.png|800px]]<br /> # Open a terminal. Replace 3.1.2 with the version you downloaded.<br /> #* &lt;code&gt;cd /Developer/glfw-3.1.2&lt;/code&gt;<br /> #* &lt;code&gt;sudo cmake -DBUILD_SHARED_LIBS=ON .&lt;/code&gt;<br /> #* &lt;code&gt;sudo make&lt;/code&gt;<br /> <br /> ====Install GLM====<br /> <br /> Begin by downloading GLM: http://glm.g-truc.net<br /> <br /> #Unzip the downloaded folder<br /> #Drag and drop the glm folder in its entirety into your /Developer folder. Authenticate accordingly.<br /> # Open a terminal<br /> #* &lt;code&gt;cd /Developer/glm&lt;/code&gt;<br /> #* &lt;code&gt;sudo cmake . #(Don't miss the dot!)&lt;/code&gt;<br /> #* &lt;code&gt;sudo make&lt;/code&gt;<br /> <br /> ====XCode Setup====<br /> <br /> The last step is to set up XCode to find where we put all of our code, libraries and headers<br /> # Open up the XCode project<br /> # In the far left panel of the Xcode window, you will see a folder matching the project name.<br /> #* Right click this folder and click &quot;Add files to &lt;project name&gt;&quot;.<br /> #* Choose the files as shown below and press &quot;Add&quot;<br /> #: [[File:OSX_XCode_Setup_Adding_Files.png|800px]]<br /> # Above this folder, you will see the top level which shares the same name as your project.<br /> #* Click this and choose the &quot;Build Settings&quot; option at the top.<br /> #* Scroll down to &quot;Search Paths&quot;.<br /> #* Add the following paths as shown below so XCode knows where to find all of the glfw and glm headers in our code. Replace 3.1.2 with the glfw version you downloaded. Select &quot;non-recursive&quot; from the dropdown after adding the path.<br /> #** &lt;code&gt;/Developer/glfw-3.1.2/include&lt;/code&gt;<br /> #** &lt;code&gt;/Developer/glm&lt;/code&gt;<br /> #: [[File:OSX_XCode_Setup_Adding_Header_Paths.png|800px]]<br /> # Do the same for the library paths, adding the following path. Again, replace 3.1.2 with the version you downloaded.<br /> #* &lt;code&gt;/Developer/glfw-3.1.2/src&lt;/code&gt;<br /> #: [[File:OSX_XCode_Setup_Adding_Library_Paths.png|800px]]<br /> # At the top of this window, click &quot;Build Phases&quot;<br /> #* Open up the &quot;Link Binary with Libraries&quot; pull down<br /> #* Press the little &quot;+&quot; sign and type &quot;OpenGL&quot;<br /> #* Choose &quot;OpenGL.framework&quot; and press &quot;Add&quot;<br /> #: [[File:OSX_XCode_Setup_Adding_OpenGL_Library.png|800px]]<br /> #* Press the &quot;+&quot; sign again and choose &quot;Add Other...&quot;<br /> #* Navigate to /Developer/glfw-3.1.2/src (replace 3.1.2 with the version you downloaded), choose &quot;libglfw.dylib&quot; and press &quot;Open&quot;<br /> #: [[File:OSX_XCode_Setup_Adding_GLFW_Library.png|800px]]<br /> # Optional: We like to see a good frame rate, so we prefer you run in Release (at least during the grading demo).<br /> #* Open Product &gt; Scheme &gt; Edit Scheme, and choose &quot;Release&quot;<br /> #: [[File:OSX_XCode_Setup_Release_Mode.png|800px]]<br /> # Run that baby (press the play button at the top left or press Command + r). Note that the default color of the cube may change depending on what quarter it is (we like being different).<br /> #: [[File:OSX_XCode_Setup_Running.png|800px]]<br /> <br /> ==On Linux==<br /> The staff don't officially support Linux, but the ingredients you'll need are GLFW3.x.x, GLM 0.9.x.x, and GLEW 1.10+.x. You might be able to find these libraries in your favorite package managers, but make sure the versions are sufficient/compatible.</div> Sal131 http://ivl.calit2.net/wiki/index.php/Project4S17 Project4S17 2017-05-30T22:55:13Z <p>Sal131: /* Homework Assignment 4: Social VR */</p> <hr /> <div>=Homework Assignment 4: Social VR=<br /> <br /> For this project you need to implement a two user VR application. Since we don't have two HMDs and computers for each team, one user is going to use the Oculus Rift with the Touch controllers, the other user is going to use the Leap Motion and the monitor. For inspiration for this project you can use the [https://www.youtube.com/watch?v=iFEMiyGMa58 Oculus Toy Box application], although in it both users have a full set of Oculus Rift equipment.<br /> <br /> For this assignment you can obtain 100 points, plus up to 10 points for extra credit. <br /> <br /> This homework assignment is due on '''Tuesday, June 13th at 3:00pm'''.<br /> <br /> The project is designed to be a team project for two people, just like the other projects this quarter. <br /> <br /> The goal of this project is to create a dual user 3D VR application for the Oculus Rift with the Touch controllers and the Leap Motion gesture tracker. The following rules apply:<br /> <br /> * The application can't be an extension of homework project 1.<br /> * The Oculus Rift user is only allowed to use the Touch controllers for input. <br /> * The Leap Motion user can use mouse or keyboard for secondary interactions, such as moving the user around the space. The primary interaction must be done through the Leap.<br /> * The application has to have the following components:<br /> ** Dual user: one uses the Oculus Rift with Touch controllers, the other uses the Leap Motion with a graphics window on the monitor.<br /> ** The graphics window on the monitor needs to be [http://paulbourke.net/stereographics/anaglyph/ rendered with anaglyph stereo]. (Each team will get a pair of anaglyph glasses in class on Thursday June 1.)<br /> ** There needs to be at least one piece of stationary geometry in the space, such as a table or a tennis net. This object needs to be a 3D model file with at least one texture.<br /> ** There needs to be at least one piece of moving geometry, such as a building block or a tennis ball. This object also needs to be a 3D model file with at least one texture.<br /> ** There needs to be a floor nothing can fall through.<br /> ** The two users need to interact with objects and each other in some way. Examples: hand an object to the other user, throw a ball back and forth, use rackets to hit a ball back and forth, etc.<br /> ** Collision detection needs to be part of the interaction algorithm. Can be simply done by proximity, or bounding box collisions.<br /> ** Each user needs to use at least one of their hands in the application.<br /> ** The position of the interacting hand of each user (or both if both are used) needs to be indicated with at least a simple piece of geometry.<br /> ** The application needs to operate in 3D - it is not acceptable if it's just a 2D application.<br /> ** More criteria may follow if needed.<br /> <br /> As in the other homework projects this quarter, you are allowed to use GLFW (or GLUT) with OpenGL, C++ and the Oculus and Leap Motion SDKs, as well as any networking code or services to write your application. Any libraries like SOIL that load in pictures or 3D models are allowed. Also, audio libraries are allowed. Not allowed are libraries which help with interaction programming or physics simulation. Other libraries may be allowable on request.<br /> <br /> You are allowed to use any source for 3D models and textures.<br /> <br /> To communicate between the two users (Oculus and Leap), you will need to implement network communication. You can keep this very simple. You can use any network communication library, including cloud services, data bases, or anything related. The simplest approach is to use direct socket communication, [https://www.codeproject.com/Articles/412511/Simple-client-server-network-using-Cplusplus-and-W as described in this example], and the code can be downloaded [[Media:simple_network.zip |here]]; or you can use a [http://rpclib.net/ remote procedure call (RPC) library such as this one].<br /> <br /> You are welcome to use the TA/tutors' office hours to brainstorm ideas with them, as well as for help during your work on the project, like for the other homework projects.<br /> <br /> ==Grading==<br /> <br /> Your final project score consists of three parts: <br /> <br /> * Documentation (10 points)<br /> * Application (90 points)<br /> * Extra Credit (10 points)<br /> <br /> ==Documentation (10 Points)==<br /> <br /> You need to create a blog to report on the progress you're making on your project. You need to make at least two blog entries to get the full score. The first is due on '''Monday, June 5th at 11:59pm''', the second is due on '''Monday, June 12th at 11:59pm'''. <br /> <br /> You also need to make two slides on the results of your project and present them during our lightning talks session on June 13th from 3-4pm. The slides need to be made with Google Slides and they need to be added to a Google Slides deck everyone shares. The link to it has been sent to you via email.<br /> <br /> The first blog entry needs to contain (at a minimum) the following pieces of information:<br /> <br /> * The name of your project (you need to come up with one).<br /> * The names of your team members.<br /> * A short description of the project.<br /> * Two screen shots of your application in its current state, one for the Oculus and one for the Leap user.<br /> <br /> In week 2 you need to write about the progress you made and update on any changes you made to team or team name. You also need to post another two screen shots.<br /> <br /> You are free to create the blog on any web based blog site, such as [http://www.blogger.com Blogger] or [http://wordpress.com WordPress]. You should use the same blog each time and just add new blog entries. You are free to add more entries than the required ones. <br /> <br /> The points are distributed like this:<br /> * Blog entry #1: 3 points<br /> * Blog entry #2: 3 points<br /> * Slide presentation: 4 points<br /> <br /> ==The Application (90 Points)==<br /> <br /> The final project has to be presented to the course staff during our final exam slot on '''Tuesday, June 13th starting at 4pm.'''. We will have two groups: even hour teams start at 4pm, odd hour teams start at 5pm. The slide presentations start at 3pm.<br /> <br /> The points for your project demonstration will be distributed as follows:<br /> <br /> * Technical quality: 60% (strictly based on your programming)<br /> * UI Usability: 20% (subjective score for how easy to learn and use your UI is)<br /> * Creativity: 20% (subjective score factoring in your project idea, 3D models, textures, aesthetics)<br /> <br /> The scores will be determined by the course staff (instructor, TAs, tutors). You need to let a course staff member try your application so that we can determine the UI usability score. <br /> <br /> ==Extra Credit (10 Points)==<br /> <br /> We want to reward projects that go beyond what we ask for. Please contact the course staff with ideas for things you think should qualify for extra credit. We will give you guidance, but the final decision on the extra credit will be made by all graders after the final presentations. <br /> <br /> Even without prior conversations with the course staff, we may decide that you deserve extra credit for your project.<br /> <br /> Areas we will particularly consider for extra credit are: innovative interaction concepts, overall aesthetics, UI design, creativity, exceptional execution of technical features, well thought out usability, entertainment factor.</div> Sal131 http://ivl.calit2.net/wiki/index.php/Project4S17 Project4S17 2017-05-30T22:54:34Z <p>Sal131: /* Homework Assignment 4: Social VR */</p> <hr /> <div>=Homework Assignment 4: Social VR=<br /> <br /> For this project you need to implement a two user VR application. Since we don't have two HMDs and computers for each team, one user is going to use the Oculus Rift with the Touch controllers, the other user is going to use the Leap Motion and the monitor. For inspiration for this project you can use the [https://www.youtube.com/watch?v=iFEMiyGMa58 Oculus Toy Box application], although in it both users have a full set of Oculus Rift equipment.<br /> <br /> For this assignment you can obtain 100 points, plus up to 10 points for extra credit. <br /> <br /> This homework assignment is due on '''Tuesday, June 13th at 3:00pm'''.<br /> <br /> The project is designed to be a team project for two people, just like the other projects this quarter. <br /> <br /> The goal of this project is to create a dual user 3D VR application for the Oculus Rift with the Touch controllers and the Leap Motion gesture tracker. The following rules apply:<br /> <br /> * The application can't be an extension of homework project 1.<br /> * The Oculus Rift user is only allowed to use the Touch controllers for input. <br /> * The Leap Motion user can use mouse or keyboard for secondary interactions, such as moving the user around the space. The primary interaction must be done through the Leap.<br /> * The application has to have the following components:<br /> ** Dual user: one uses the Oculus Rift with Touch controllers, the other uses the Leap Motion with a graphics window on the monitor.<br /> ** The graphics window on the monitor needs to be [http://paulbourke.net/stereographics/anaglyph/ rendered with anaglyph stereo]. (Each team will get a pair of anaglyph glasses in class on Thursday June 1.)<br /> ** There needs to be at least one piece of stationary geometry in the space, such as a table or a tennis net. This object needs to be a 3D model file with at least one texture.<br /> ** There needs to be at least one piece of moving geometry, such as a building block or a tennis ball. This object also needs to be a 3D model file with at least one texture.<br /> ** There needs to be a floor nothing can fall through.<br /> ** The two users need to interact with objects and each other in some way. Examples: hand an object to the other user, throw a ball back and forth, use rackets to hit a ball back and forth, etc.<br /> ** Collision detection needs to be part of the interaction algorithm. Can be simply done by proximity, or bounding box collisions.<br /> ** Each user needs to use at least one of their hands in the application.<br /> ** The position of the interacting hand of each user (or both if both are used) needs to be indicated with at least a simple piece of geometry.<br /> ** The application needs to operate in 3D - it is not acceptable if it's just a 2D application.<br /> ** More criteria may follow if needed.<br /> <br /> As in the other homework projects this quarter, you are allowed to use GLFW (or GLUT) with OpenGL, C++ and the Oculus and Leap Motion SDKs, as well as any networking code or services to write your application. Any libraries like SOIL that load in pictures or 3D models are allowed. Also, audio libraries are allowed. Not allowed are libraries which help with interaction programming or physics simulation. Other libraries may be allowable on request.<br /> <br /> You are allowed to use any source for 3D models and textures.<br /> <br /> To communicate between the two users (Oculus and Leap), you will need to implement network communication. You can keep this very simple. You can use any network communication library, including cloud services, data bases, or anything related. The simplest approach is to use direct socket communication, [https://www.codeproject.com/Articles/412511/Simple-client-server-network-using-Cplusplus-and-W as described in this example]; the code can be downloaded [[Media:simple_network.zip |here]], or you can use a [http://rpclib.net/ remote procedure call (RPC) library such as this one].<br /> <br /> You are welcome to use the TA/tutors' office hours to brainstorm ideas with them, as well as for help during your work on the project, like for the other homework projects.<br /> <br /> ==Grading==<br /> <br /> Your final project score consists of three parts: <br /> <br /> * Documentation (10 points)<br /> * Application (90 points)<br /> * Extra Credit (10 points)<br /> <br /> ==Documentation (10 Points)==<br /> <br /> You need to create a blog to report on the progress you're making on your project. You need to make at least two blog entries to get the full score. The first is due on '''Monday, June 5th at 11:59pm''', the second is due on '''Monday, June 12th at 11:59pm'''. <br /> <br /> You also need to make two slides on the results of your project and present them during our lightning talks session on June 13th from 3-4pm. The slides need to be made with Google Slides and they need to be added to a Google Slides deck everyone shares. The link to it has been sent to you via email.<br /> <br /> The first blog entry needs to contain (at a minimum) the following pieces of information:<br /> <br /> * The name of your project (you need to come up with one).<br /> * The names of your team members.<br /> * A short description of the project.<br /> * Two screen shots of your application in its current state, one for the Oculus and one for the Leap user.<br /> <br /> In week 2 you need to write about the progress you made and update on any changes you made to team or team name. You also need to post another two screen shots.<br /> <br /> You are free to create the blog on any web based blog site, such as [http://www.blogger.com Blogger] or [http://wordpress.com WordPress]. You should use the same blog each time and just add new blog entries. You are free to add more entries than the required ones. <br /> <br /> The points are distributed like this:<br /> * Blog entry #1: 3 points<br /> * Blog entry #2: 3 points<br /> * Slide presentation: 4 points<br /> <br /> ==The Application (90 Points)==<br /> <br /> The final project has to be presented to the course staff during our final exam slot on '''Tuesday, June 13th starting at 4pm.'''. We will have two groups: even hour teams start at 4pm, odd hour teams start at 5pm. The slide presentations start at 3pm.<br /> <br /> The points for your project demonstration will be distributed as follows:<br /> <br /> * Technical quality: 60% (strictly based on your programming)<br /> * UI Usability: 20% (subjective score for how easy to learn and use your UI is)<br /> * Creativity: 20% (subjective score factoring in your project idea, 3D models, textures, aesthetics)<br /> <br /> The scores will be determined by the course staff (instructor, TAs, tutors). You need to let a course staff member try your application so that we can determine the UI usability score. <br /> <br /> ==Extra Credit (10 Points)==<br /> <br /> We want to reward projects that go beyond what we ask for. Please contact the course staff with ideas for things you think should qualify for extra credit. We will give you guidance, but the final decision on the extra credit will be made by all graders after the final presentations. <br /> <br /> Even without prior conversations with the course staff, we may decide that you deserve extra credit for your project.<br /> <br /> Areas we will particularly consider for extra credit are: innovative interaction concepts, overall aesthetics, UI design, creativity, exceptional execution of technical features, well thought out usability, entertainment factor.</div> Sal131 http://ivl.calit2.net/wiki/index.php/File:Simple_network.zip File:Simple network.zip 2017-05-30T22:54:03Z <p>Sal131: </p> <hr /> <div></div> Sal131 http://ivl.calit2.net/wiki/index.php/Project4S17 Project4S17 2017-05-30T22:53:04Z <p>Sal131: /* Homework Assignment 4: Social VR */</p> <hr /> <div>=Homework Assignment 4: Social VR=<br /> <br /> For this project you need to implement a two user VR application. Since we don't have two HMDs and computers for each team, one user is going to use the Oculus Rift with the Touch controllers, the other user is going to use the Leap Motion and the monitor. For inspiration for this project you can use the [https://www.youtube.com/watch?v=iFEMiyGMa58 Oculus Toy Box application], although in it both users have a full set of Oculus Rift equipment.<br /> <br /> For this assignment you can obtain 100 points, plus up to 10 points for extra credit. <br /> <br /> This homework assignment is due on '''Tuesday, June 13th at 3:00pm'''.<br /> <br /> The project is designed to be a team project for two people, just like the other projects this quarter. <br /> <br /> The goal of this project is to create a dual user 3D VR application for the Oculus Rift with the Touch controllers and the Leap Motion gesture tracker. The following rules apply:<br /> <br /> * The application can't be an extension of homework project 1.<br /> * The Oculus Rift user is only allowed to use the Touch controllers for input. <br /> * The Leap Motion user can use mouse or keyboard for secondary interactions, such as moving the user around the space. The primary interaction must be done through the Leap.<br /> * The application has to have the following components:<br /> ** Dual user: one uses the Oculus Rift with Touch controllers, the other uses the Leap Motion with a graphics window on the monitor.<br /> ** The graphics window on the monitor needs to be [http://paulbourke.net/stereographics/anaglyph/ rendered with anaglyph stereo]. (Each team will get a pair of anaglyph glasses in class on Thursday June 1.)<br /> ** There needs to be at least one piece of stationary geometry in the space, such as a table or a tennis net. This object needs to be a 3D model file with at least one texture.<br /> ** There needs to be at least one piece of moving geometry, such as a building block or a tennis ball. This object also needs to be a 3D model file with at least one texture.<br /> ** There needs to be a floor nothing can fall through.<br /> ** The two users need to interact with objects and each other in some way. Examples: hand an object to the other user, throw a ball back and forth, use rackets to hit a ball back and forth, etc.<br /> ** Collision detection needs to be part of the interaction algorithm. Can be simply done by proximity, or bounding box collisions.<br /> ** Each user needs to use at least one of their hands in the application.<br /> ** The position of the interacting hand of each user (or both if both are used) needs to be indicated with at least a simple piece of geometry.<br /> ** The application needs to operate in 3D - it is not acceptable if it's just a 2D application.<br /> ** More criteria may follow if needed.<br /> <br /> As in the other homework projects this quarter, you are allowed to use GLFW (or GLUT) with OpenGL, C++ and the Oculus and Leap Motion SDKs, as well as any networking code or services to write your application. Any libraries like SOIL that load in pictures or 3D models are allowed. Also, audio libraries are allowed. Not allowed are libraries which help with interaction programming or physics simulation. Other libraries may be allowable on request.<br /> <br /> You are allowed to use any source for 3D models and textures.<br /> <br /> To communicate between the two users (Oculus and Leap), you will need to implement network communication. You can keep this very simple. You can use any network communication library, including cloud services, data bases, or anything related. The simplest approach is to use direct socket communication, [https://www.codeproject.com/Articles/412511/Simple-client-server-network-using-Cplusplus-and-W as described in this example]. The code can be downloaded [[Media:simple_network.zip |here]], or you can use a [http://rpclib.net/ remote procedure call (RPC) library such as this one].<br /> <br /> You are welcome to use the TA/tutors' office hours to brainstorm ideas with them, as well as for help during your work on the project, like for the other homework projects.<br /> <br /> ==Grading==<br /> <br /> Your final project score consists of three parts: <br /> <br /> * Documentation (10 points)<br /> * Application (90 points)<br /> * Extra Credit (10 points)<br /> <br /> ==Documentation (10 Points)==<br /> <br /> You need to create a blog to report on the progress you're making on your project. You need to make at least two blog entries to get the full score. The first is due on '''Monday, June 5th at 11:59pm''', the second is due on '''Monday, June 12th at 11:59pm'''. <br /> <br /> You also need to make two slides on the results of your project and present them during our lightning talks session on June 13th from 3-4pm. The slides need to be made with Google Slides and they need to be added to a Google Slides deck everyone shares. The link to it has been sent to you via email.<br /> <br /> The first blog entry needs to contain (at a minimum) the following pieces of information:<br /> <br /> * The name of your project (you need to come up with one).<br /> * The names of your team members.<br /> * A short description of the project.<br /> * Two screen shots of your application in its current state, one for the Oculus and one for the Leap user.<br /> <br /> In week 2 you need to write about the progress you made and update on any changes you made to team or team name. You also need to post another two screen shots.<br /> <br /> You are free to create the blog on any web based blog site, such as [http://www.blogger.com Blogger] or [http://wordpress.com WordPress]. You should use the same blog each time and just add new blog entries. You are free to add more entries than the required ones. <br /> <br /> The points are distributed like this:<br /> * Blog entry #1: 3 points<br /> * Blog entry #2: 3 points<br /> * Slide presentation: 4 points<br /> <br /> ==The Application (90 Points)==<br /> <br /> The final project has to be presented to the course staff during our final exam slot on '''Tuesday, June 13th starting at 4pm.'''. We will have two groups: even hour teams start at 4pm, odd hour teams start at 5pm. The slide presentations start at 3pm.<br /> <br /> The points for your project demonstration will be distributed as follows:<br /> <br /> * Technical quality: 60% (strictly based on your programming)<br /> * UI Usability: 20% (subjective score for how easy to learn and use your UI is)<br /> * Creativity: 20% (subjective score factoring in your project idea, 3D models, textures, aesthetics)<br /> <br /> The scores will be determined by the course staff (instructor, TAs, tutors). You need to let a course staff member try your application so that we can determine the UI usability score. <br /> <br /> ==Extra Credit (10 Points)==<br /> <br /> We want to reward projects that go beyond what we ask for. Please contact the course staff with ideas for things you think should qualify for extra credit. We will give you guidance, but the final decision on the extra credit will be made by all graders after the final presentations. <br /> <br /> Even without prior conversations with the course staff, we may decide that you deserve extra credit for your project.<br /> <br /> Areas we will particularly consider for extra credit are: innovative interaction concepts, overall aesthetics, UI design, creativity, exceptional execution of technical features, well thought out usability, entertainment factor.</div> Sal131 http://ivl.calit2.net/wiki/index.php/Project4S17 Project4S17 2017-05-30T22:52:32Z <p>Sal131: /* Homework Assignment 4: Social VR */</p> <hr /> <div>=Homework Assignment 4: Social VR=<br /> <br /> For this project you need to implement a two user VR application. Since we don't have two HMDs and computers for each team, one user is going to use the Oculus Rift with the Touch controllers, the other user is going to use the Leap Motion and the monitor. For inspiration for this project you can use the [https://www.youtube.com/watch?v=iFEMiyGMa58 Oculus Toy Box application], although in it both users have a full set of Oculus Rift equipment.<br /> <br /> For this assignment you can obtain 100 points, plus up to 10 points for extra credit. <br /> <br /> This homework assignment is due on '''Tuesday, June 13th at 3:00pm'''.<br /> <br /> The project is designed to be a team project for two people, just like the other projects this quarter. <br /> <br /> The goal of this project is to create a dual user 3D VR application for the Oculus Rift with the Touch controllers and the Leap Motion gesture tracker. The following rules apply:<br /> <br /> * The application can't be an extension of homework project 1.<br /> * The Oculus Rift user is only allowed to use the Touch controllers for input. <br /> * The Leap Motion user can use mouse or keyboard for secondary interactions, such as moving the user around the space. The primary interaction must be done through the Leap.<br /> * The application has to have the following components:<br /> ** Dual user: one uses the Oculus Rift with Touch controllers, the other uses the Leap Motion with a graphics window on the monitor.<br /> ** The graphics window on the monitor needs to be [http://paulbourke.net/stereographics/anaglyph/ rendered with anaglyph stereo]. (Each team will get a pair of anaglyph glasses in class on Thursday June 1.)<br /> ** There needs to be at least one piece of stationary geometry in the space, such as a table or a tennis net. This object needs to be a 3D model file with at least one texture.<br /> ** There needs to be at least one piece of moving geometry, such as a building block or a tennis ball. This object also needs to be a 3D model file with at least one texture.<br /> ** There needs to be a floor nothing can fall through.<br /> ** The two users need to interact with objects and each other in some way. Examples: hand an object to the other user, throw a ball back and forth, use rackets to hit a ball back and forth, etc.<br /> ** Collision detection needs to be part of the interaction algorithm. Can be simply done by proximity, or bounding box collisions.<br /> ** Each user needs to use at least one of their hands in the application.<br /> ** The position of the interacting hand of each user (or both if both are used) needs to be indicated with at least a simple piece of geometry.<br /> ** The application needs to operate in 3D - it is not acceptable if it's just a 2D application.<br /> ** More criteria may follow if needed.<br /> <br /> As in the other homework projects this quarter, you are allowed to use GLFW (or GLUT) with OpenGL, C++ and the Oculus and Leap Motion SDKs, as well as any networking code or services to write your application. Any libraries like SOIL that load in pictures or 3D models are allowed. Also, audio libraries are allowed. Not allowed are libraries which help with interaction programming or physics simulation. Other libraries may be allowable on request.<br /> <br /> You are allowed to use any source for 3D models and textures.<br /> <br /> To communicate between the two users (Oculus and Leap), you will need to implement network communication. You can keep this very simple. You can use any network communication library, including cloud services, data bases, or anything related. The simplest approach is to use direct socket communication, [https://www.codeproject.com/Articles/412511/Simple-client-server-network-using-Cplusplus-and-W as described in this example]. The code can be downloaded here[[Media:simple_network.zip |code]], or you can use a [http://rpclib.net/ remote procedure call (RPC) library such as this one].<br /> <br /> You are welcome to use the TA/tutors' office hours to brainstorm ideas with them, as well as for help during your work on the project, like for the other homework projects.<br /> <br /> ==Grading==<br /> <br /> Your final project score consists of three parts: <br /> <br /> * Documentation (10 points)<br /> * Application (90 points)<br /> * Extra Credit (10 points)<br /> <br /> ==Documentation (10 Points)==<br /> <br /> You need to create a blog to report on the progress you're making on your project. You need to make at least two blog entries to get the full score. The first is due on '''Monday, June 5th at 11:59pm''', the second is due on '''Monday, June 12th at 11:59pm'''. <br /> <br /> You also need to make two slides on the results of your project and present them during our lightning talks session on June 13th from 3-4pm. The slides need to be made with Google Slides and they need to be added to a Google Slides deck everyone shares. The link to it has been sent to you via email.<br /> <br /> The first blog entry needs to contain (at a minimum) the following pieces of information:<br /> <br /> * The name of your project (you need to come up with one).<br /> * The names of your team members.<br /> * A short description of the project.<br /> * Two screen shots of your application in its current state, one for the Oculus and one for the Leap user.<br /> <br /> In week 2 you need to write about the progress you made and update on any changes you made to team or team name. You also need to post another two screen shots.<br /> <br /> You are free to create the blog on any web based blog site, such as [http://www.blogger.com Blogger] or [http://wordpress.com WordPress]. You should use the same blog each time and just add new blog entries. You are free to add more entries than the required ones. <br /> <br /> The points are distributed like this:<br /> * Blog entry #1: 3 points<br /> * Blog entry #2: 3 points<br /> * Slide presentation: 4 points<br /> <br /> ==The Application (90 Points)==<br /> <br /> The final project has to be presented to the course staff during our final exam slot on '''Tuesday, June 13th starting at 4pm.'''. We will have two groups: even hour teams start at 4pm, odd hour teams start at 5pm. The slide presentations start at 3pm.<br /> <br /> The points for your project demonstration will be distributed as follows:<br /> <br /> * Technical quality: 60% (strictly based on your programming)<br /> * UI Usability: 20% (subjective score for how easy to learn and use your UI is)<br /> * Creativity: 20% (subjective score factoring in your project idea, 3D models, textures, aesthetics)<br /> <br /> The scores will be determined by the course staff (instructor, TAs, tutors). You need to let a course staff member try your application so that we can determine the UI usability score. <br /> <br /> ==Extra Credit (10 Points)==<br /> <br /> We want to reward projects that go beyond what we ask for. Please contact the course staff with ideas for things you think should qualify for extra credit. We will give you guidance, but the final decision on the extra credit will be made by all graders after the final presentations. <br /> <br /> Even without prior conversations with the course staff, we may decide that you deserve extra credit for your project.<br /> <br /> Areas we will particularly consider for extra credit are: innovative interaction concepts, overall aesthetics, UI design, creativity, exceptional execution of technical features, well thought out usability, entertainment factor.</div> Sal131 http://ivl.calit2.net/wiki/index.php/File:Discussion6S17.pdf File:Discussion6S17.pdf 2017-05-23T23:12:53Z <p>Sal131: </p> <hr /> <div></div> Sal131 http://ivl.calit2.net/wiki/index.php/CSE190S2017Schedule CSE190S2017Schedule 2017-05-23T23:08:27Z <p>Sal131: /* CSE 190 (VR Technology) Spring 2017 Schedule */</p> <hr /> <div>=CSE 190 (VR Technology) Spring 2017 Schedule=<br /> <br /> The lecture titles are links to the slides once they have been uploaded.<br /> <br /> This schedule is subject to change.<br /> <br /> {| border=&quot;1&quot; style=&quot;text-align:left;&quot;<br /> |-<br /> ! Week<br /> ! Begins on Date<br /> ! Discussion Tuesday 3:30-4:30pm<br /> ! Lecture Tuesday 2:00-3:20pm<br /> ! Lecture Thursday 2:00-3:20pm<br /> ! Grading Friday 2pm<br /> |- <br /> | 1<br /> | April 3<br /> | No discussion<br /> | [[Media:01-OverviewS17.pdf | Overview]]<br /> | [[Media:02-HistoryS17.pdf | VR History]]<br /> | No grading<br /> |-<br /> | 2<br /> | April 10<br /> | Discussion [[Project1S17 | Project 1]] ([[Media:Discussion1S17.pdf |slides]])<br /> | [[Media:03-MonoVisionS17.pdf | Monocular Vision]]<br /> | [[Media:04-StereoVisionS17.pdf | Stereo Vision]]<br /> | No grading<br /> |-<br /> | 3<br /> | April 17<br /> | Discussion [[Project1S17 | Project 1]] ([[Media:Discussion2S17.pdf |slides]])<br /> | [[Media:05-ColorVisionS17.pdf | Color Vision]]<br /> | [[Media:06-HumanVisionS17.pdf | Human Vision]]<br /> | Grading Project 1<br /> |-<br /> | 4<br /> | April 24<br /> | Discussion [[Project2S17 | Project 2]] ([[Media:Discussion_3.pdf |slides]])<br /> | [[Media:07-StereoS17.pdf | 3D Stereo]]<br /> | [[Media:07-StereoS17.pdf | 3D Stereo]]<br /> | No grading<br /> |-<br /> | 5<br /> | May 1<br /> | Discussion [[Project2S17 | Project 2]]<br /> | [[Media:09-OpenHouseS17.pdf | VR Lab Open House]]<br /> | [[Media:10-DisplaysS17.pdf | VR Displays]]<br /> | Grading Project 2<br /> |-<br /> | 6<br /> | May 8<br /> | Discussion [[Project3S17 | Project 3]] ([[Media:Discussion4S17.pdf |slides]])<br /> | Homework project 3 introduction<br /> | [[Media:10-DisplaysS17.pdf | VR Displays]]<br /> | No grading<br /> |-<br /> | 7<br /> | May 15<br /> | Discussion [[Project3S17 | Project 3]] ([[Media:Discussion5S17.pdf |slides]])<br /> | [[Media:13-HMDsS17.pdf | Head-Mounted Displays]]<br /> | [[Media:14-HMDsS17.pdf | Head-Mounted Displays Part 2]]<br /> | Grading Project 3<br /> |-<br /> | 8<br /> | May 22<br /> | Midterm Discussion ([[Media:Discussion6S17.pdf | slides]])<br /> | [[Media:15-HMDsS17.pdf | Head-Mounted Displays Part 3]]<br /> | Midterm Exam<br /> | No grading<br /> |-<br /> | 9<br /> | May 29<br /> | Memorial Day (no discussion)<br /> | <br /> | <br /> | No grading<br /> |-<br /> | 10<br /> | June 5<br /> | Discussion [[Project4S17 | Final Project]]<br /> | <br /> | <br /> | No grading<br /> |-<br /> | 11<br /> | June 12<br /> | No discussion<br /> | [[Project4S17 | Final Project]]: Video screening in CSE 1202 3-4pm; then demonstrations in CSE B210<br /> | No lecture<br /> | No grading<br /> |<br /> |}</div> Sal131 http://ivl.calit2.net/wiki/index.php/File:Discussion5S17.pdf File:Discussion5S17.pdf 2017-05-16T23:01:41Z <p>Sal131: </p> <hr /> <div></div> Sal131 http://ivl.calit2.net/wiki/index.php/File:Discussion4S17.pdf File:Discussion4S17.pdf 2017-05-09T22:54:24Z <p>Sal131: </p> <hr /> <div></div> Sal131 http://ivl.calit2.net/wiki/index.php/CSE190S2017Schedule CSE190S2017Schedule 2017-05-09T22:53:44Z <p>Sal131: /* CSE 190 (VR Technology) Spring 2017 Schedule */</p> <hr /> <div>=CSE 190 (VR Technology) Spring 2017 Schedule=<br /> <br /> The lecture titles are links to the slides once they have been uploaded.<br /> <br /> This schedule is subject to change.<br /> <br /> {| border=&quot;1&quot; style=&quot;text-align:left;&quot;<br /> |-<br /> ! Week<br /> ! Begins on Date<br /> ! Discussion Tuesday 3:30-4:30pm<br /> ! Lecture Tuesday 2:00-3:20pm<br /> ! Lecture Thursday 2:00-3:20pm<br /> ! Grading Friday 2pm<br /> |- <br /> | 1<br /> | April 3<br /> | No discussion<br /> | [[Media:01-OverviewS17.pdf | Overview]]<br /> | [[Media:02-HistoryS17.pdf | VR History]]<br /> | No grading<br /> |-<br /> | 2<br /> | April 10<br /> | Discussion [[Project1S17 | Project 1]] ([[Media:Discussion1S17.pdf |slides]])<br /> | [[Media:03-MonoVisionS17.pdf | Monocular Vision]]<br /> | [[Media:04-StereoVisionS17.pdf | Stereo Vision]]<br /> | No grading<br /> |-<br /> | 3<br /> | April 17<br /> | Discussion [[Project1S17 | Project 1]] ([[Media:Discussion2S17.pdf |slides]])<br /> | [[Media:05-ColorVisionS17.pdf | Color Vision]]<br /> | [[Media:06-HumanVisionS17.pdf | Human Vision]]<br /> | Grading Project 1<br /> |-<br /> | 4<br /> | April 24<br /> | Discussion [[Project2S17 | Project 2]] ([[Media:Discussion_3.pdf |slides]])<br /> | [[Media:07-StereoS17.pdf | 3D Stereo]]<br /> | [[Media:07-StereoS17.pdf | 3D Stereo]]<br /> | No grading<br /> |-<br /> | 5<br /> | May 1<br /> | Discussion [[Project2S17 | Project 2]]<br /> | [[Media:09-OpenHouseS17.pdf | VR Lab Open House]]<br /> | [[Media:10-DisplaysS17.pdf | VR Displays]]<br /> | Grading Project 2<br /> |-<br /> | 6<br /> | May 8<br /> | Discussion [[Project3S17 | Project 3]]([[Media:Discussion4S17.pdf |slides]])<br /> | <br /> | <br /> | No grading<br /> |-<br /> | 7<br /> | May 15<br /> | Discussion [[Project3S17 | Project 3]]<br /> | <br /> | <br /> | Grading Project 3<br /> |-<br /> | 8<br /> | May 22<br /> | Midterm Discussion<br /> | <br /> | Midterm Exam<br /> | No grading<br /> |-<br /> | 9<br /> | May 29<br /> | Memorial Day (no discussion)<br /> | <br /> | <br /> | No grading<br /> |-<br /> | 10<br /> | June 5<br /> | Discussion [[Project4S17 | Final Project]]<br /> | <br /> | <br /> | No grading<br /> |-<br /> | 11<br /> | June 12<br /> | No discussion<br /> | [[Project4S17 | Final Project]]: Video screening in CSE 1202 3-4pm; then demonstrations in CSE B210<br /> | No lecture<br /> | No grading<br /> |<br /> |}</div> Sal131 http://ivl.calit2.net/wiki/index.php/CSE190S2017Schedule CSE190S2017Schedule 2017-04-27T23:07:31Z <p>Sal131: /* CSE 190 (VR Technology) Spring 2017 Schedule */</p> <hr /> <div>=CSE 190 (VR Technology) Spring 2017 Schedule=<br /> <br /> The lecture titles are links to the slides once they have been uploaded.<br /> <br /> This schedule is subject to change.<br /> <br /> {| border=&quot;1&quot; style=&quot;text-align:left;&quot;<br /> |-<br /> ! Week<br /> ! Begins on Date<br /> ! Discussion Tuesday 3:30-4:30pm<br /> ! Lecture Tuesday 2:00-3:20pm<br /> ! Lecture Thursday 2:00-3:20pm<br /> ! Grading Friday 2pm<br /> |- <br /> | 1<br /> | April 3<br /> | No discussion<br /> | [[Media:01-OverviewS17.pdf | Overview]]<br /> | [[Media:02-HistoryS17.pdf | VR History]]<br /> | No grading<br /> |-<br /> | 2<br /> | April 10<br /> | Discussion [[Project1S17 | Project 1]] ([[Media:Discussion1S17.pdf |slides]])<br /> | [[Media:03-MonoVisionS17.pdf | Monocular Vision]]<br /> | [[Media:04-StereoVisionS17.pdf | Stereo Vision]]<br /> | No grading<br /> |-<br /> | 3<br /> | April 17<br /> | Discussion [[Project1S17 | Project 1]] ([[Media:Discussion2S17.pdf |slides]])<br /> | [[Media:05-ColorVisionS17.pdf | Color Vision]]<br /> | [[Media:06-HumanVisionS17.pdf | Human Vision]]<br /> | Grading Project 1<br /> |-<br /> | 4<br /> | April 24<br /> | Discussion [[Project2S17 | Project 2]] ([[Media:Discussion_3.pdf |slides]])<br /> | [[Media:07-StereoS17.pdf | 3D Stereo]]<br /> | [[Media:08-DisplaysS17.pdf | VR Displays]]<br /> | No grading<br /> |-<br /> | 5<br /> | May 1<br /> | Discussion [[Project2S17 | Project 2]]<br /> | <br /> | <br /> | Grading Project 2<br /> |-<br /> | 6<br /> | May 8<br /> | Discussion [[Project3S17 | Project 3]]<br /> | <br /> | <br /> | No grading<br /> |-<br /> | 7<br /> | May 15<br /> | Discussion [[Project3S17 | Project 3]]<br /> | <br /> | <br /> | Grading Project 3<br /> |-<br /> | 8<br /> | May 22<br /> | Midterm Discussion<br /> | <br /> | Midterm Exam<br /> | No grading<br /> |-<br /> | 9<br /> | May 29<br /> | Memorial Day (no discussion)<br /> | <br /> | <br /> | No grading<br /> |-<br /> | 10<br /> | June 5<br /> | Discussion [[Project4S17 | Final Project]]<br /> | <br /> | <br /> | No grading<br /> |-<br /> | 11<br /> | June 12<br /> | No discussion<br /> | [[Project4S17 | Final Project]]: Video screening in CSE 1202 3-4pm; then demonstrations in CSE B210<br /> | No lecture<br /> | No grading<br /> |<br /> |}</div> Sal131 http://ivl.calit2.net/wiki/index.php/CSE190S2017Schedule CSE190S2017Schedule 2017-04-27T23:07:12Z <p>Sal131: /* CSE 190 (VR Technology) Spring 2017 Schedule */</p> <hr /> <div>=CSE 190 (VR Technology) Spring 2017 Schedule=<br /> <br /> The lecture titles are links to the slides once they have been uploaded.<br /> <br /> This schedule is subject to change.<br /> <br /> {| border=&quot;1&quot; style=&quot;text-align:left;&quot;<br /> |-<br /> ! Week<br /> ! Begins on Date<br /> ! Discussion Tuesday 3:30-4:30pm<br /> ! Lecture Tuesday 2:00-3:20pm<br /> ! Lecture Thursday 2:00-3:20pm<br /> ! Grading Friday 2pm<br /> |- <br /> | 1<br /> | April 3<br /> | No discussion<br /> | [[Media:01-OverviewS17.pdf | Overview]]<br /> | [[Media:02-HistoryS17.pdf | VR History]]<br /> | No grading<br /> |-<br /> | 2<br /> | April 10<br /> | Discussion [[Project1S17 | Project 1]] ([[Media:Discussion1S17.pdf |slides]])<br /> | [[Media:03-MonoVisionS17.pdf | Monocular Vision]]<br /> | [[Media:04-StereoVisionS17.pdf | Stereo Vision]]<br /> | No grading<br /> |-<br /> | 3<br /> | April 17<br /> | Discussion [[Project1S17 | Project 1]] ([[Media:Discussion2S17.pdf |slides]])<br /> | [[Media:05-ColorVisionS17.pdf | Color Vision]]<br /> | [[Media:06-HumanVisionS17.pdf | Human Vision]]<br /> | Grading Project 1<br /> |-<br /> | 4<br /> | April 24<br /> | Discussion [[Project2S17 | Project 2]] ([[Media:Discussion3.pdf |slides]])<br /> | [[Media:07-StereoS17.pdf | 3D Stereo]]<br /> | [[Media:08-DisplaysS17.pdf | VR Displays]]<br /> | No grading<br /> |-<br /> | 5<br /> | May 1<br /> | Discussion [[Project2S17 | Project 2]]<br /> | <br /> | <br /> | Grading Project 2<br /> |-<br /> | 6<br /> | May 8<br /> | Discussion [[Project3S17 | Project 3]]<br /> | <br /> | <br /> | No grading<br /> |-<br /> | 7<br /> | May 15<br /> | Discussion [[Project3S17 | Project 3]]<br /> | <br /> | <br /> | Grading Project 3<br /> |-<br /> | 8<br /> | May 22<br /> | Midterm Discussion<br /> | <br /> | Midterm Exam<br /> | No grading<br /> |-<br /> | 9<br /> | May 29<br /> | Memorial Day (no discussion)<br /> | <br /> | <br /> | No grading<br /> |-<br /> | 10<br /> | June 5<br /> | Discussion [[Project4S17 | Final Project]]<br /> | <br /> | <br /> | No grading<br /> |-<br /> | 11<br /> | June 12<br /> | No discussion<br /> | [[Project4S17 | Final Project]]: Video screening in CSE 1202 3-4pm; then demonstrations in CSE B210<br /> | No lecture<br /> | No grading<br /> |<br /> |}</div> Sal131 http://ivl.calit2.net/wiki/index.php/File:Discussion_3.pdf File:Discussion 3.pdf 2017-04-27T23:06:10Z <p>Sal131: </p> <hr /> <div></div> Sal131 http://ivl.calit2.net/wiki/index.php/Project1S17 Project1S17 2017-04-18T23:36:51Z <p>Sal131: /* Project Description (100 Points) */</p> <hr /> <div>=Carbon Dioxide Removal Trainer=<br /> <br /> It appears that everybody can agree that our planet's climate is changing and we're [http://www.climate-lab-book.ac.uk/2016/spiralling-global-temperatures/ observing global warming]. What we can't all agree on is why it is happening, and what role CO2 plays in it. And whether or not humans are contributing to it. Regardless, we need to be prepared to do something about it once the truth comes out. Or else our beloved Pacific Beach turns into Atlantis. And the glider port turns into kite surf port. <br /> <br /> If it does turn out that CO2 is the bad guy, we need to learn how to eliminate it. That's what the Carbon Dioxide Removal Trainer is for. And you are going to have to build it.<br /> <br /> Everyone knows that a CO2 molecule can be turned into oxygen (O2) by eliminating the C. The way to eliminate the C is to aim two lasers at it, each of which alone can't harm the C or the Os, but in combination they turn it into dust (which has not been found guilty for global warming yet).<br /> <br /> ==Starter Code==<br /> <br /> We recommend using the [https://github.com/jherico/OculusMinimalExample/blob/master/OculusMinimalExample.cpp Oculus Minimal Example] code from GitHub to start with. It's very compact but yet uses most of the API functions you will need. The code is slightly outdated though and will require some updating. [https://github.com/wangtim1996/MinimalVR Fixed version here so you don't need to deal with Visual Studio as much]<br /> <br /> To better understand how the Oculus API works, we recommend [https://developer3.oculus.com/documentation/pcsdk/latest/concepts/dg-sensor/ this example from Oculus]. It is up to date for the current version of the Oculus SDK and can be very useful.<br /> <br /> ==Project Description (100 Points)==<br /> <br /> Download the starter code and get it to work with the Oculus Rift. (5 points)<br /> <br /> Based on the starter code, write a VR application for the Oculus Rift and the Touch controllers with the '''Oculus SDK in C++ and OpenGL''' (no Unity etc). Here are step by step instructions for it:<br /> <br /> * Make the background color of the application a dark blue (for a dark blue sky). (5 points)<br /> * Pick out a factory model from the list below (or a different one of your choice) and load it into memory. A good way to load it is with the [http://www.assimp.org/ Assimp library] as described on the discussion slides. (10 points)<br /> * Place the factory model as a miniature model (~1 foot wide) in front of the user and just below table height. (5 points)<br /> * Have the factory emit a CO2 molecule every ~1 second. Start the game with 5 CO2 molecules floating in the air. The CO2 molecules each need to have independent initial (upwards) velocity and spin. Their initial velocity and spin should be randomized. For a 3D model of CO2 see below. Scale the molecule so that each atom is about the size of a tennis ball. (20 points)<br /> * Define an invisible box (about 3 foot cubed) in front of the user which keeps the CO2 molecules contained and makes them bounce off the walls. The bouncing can be done very simply by negating the coordinate axis which would make the molecule escape the bounding box. (5 points)<br /> * Add support for the Oculus Touch controllers. Display a green laser beam as an OpenGL line or a thin cylinder, emanating from the location of each touch controller. (20 points)<br /> * When the user pulls the index finger trigger, change the color of the laser of that Touch controller to red. (5 points)<br /> * When both triggers are pulled, and the user points both laser beams at a C atom so that they both intersect the atom's bounding sphere, the C atom should disappear and an O2 molecule remains. For a 3D model of O2 see below. (10 points)<br /> * Once more than 10 molecules are in the environment, the trainee loses. To visually indicate the loss you should draw 100 or more CO2 molecules in random locations in the environment. (5 points)<br /> * Once all molecules have been eliminated, the trainee wins and the factory stops producing CO2. Change the background color to light blue in this case to indicate the victory. (5 points)<br /> * After the game ends, show win or lose state until the user presses any one of the controller buttons (not triggers), then restart the game. (5 points)<br /> <br /> ==3D Assets==<br /> <br /> We provide the following 3D models for you to use in your application, in [[Media:project1-assets.zip | this zip file]]:<br /> <br /> * CO2 molecule<br /> * O2 molecule<br /> * 4 factory models to choose from. The pictures below are in order, factory1..factory4.<br /> <br /> [[File:factory1_360.png | x200px]][[File:factory2_360.png | x200px]][[File:factory3_360.png | x200px]][[File:factory4_360.png | x200px]]<br /> <br /> To import these OBJ files, we suggest using the [http://www.assimp.org/ Assimp library].<br /> <br /> ==Extra Credit (Max. 10 Points)==<br /> <br /> Options for extra credit are:<br /> <br /> * Audio: use the Oculus Audio SDK to play sounds for eliminating C molecules, generating new ones in the factory, and a sound for when the game is won. (10 points)<br /> * Haptic feedback: the Oculus Touch controllers have built in vibration generators. Add support for vibration feedback for when a C molecule is eliminated, and potentially other events. (5 points)<br /> * Draw hands: use the Oculus Avatar SDK to show stylized touch controllers in their correct locations (where the user's hands are). (10 points)</div> Sal131 http://ivl.calit2.net/wiki/index.php/File:Discussion2S17.pdf File:Discussion2S17.pdf 2017-04-18T23:27:01Z <p>Sal131: </p> <hr /> <div></div> Sal131 http://ivl.calit2.net/wiki/index.php/CSE190S2017Schedule CSE190S2017Schedule 2017-04-18T23:26:13Z <p>Sal131: /* CSE 190 (VR Technology) Spring 2017 Schedule */</p> <hr /> <div>=CSE 190 (VR Technology) Spring 2017 Schedule=<br /> <br /> The lecture titles are links to the slides once they have been uploaded.<br /> <br /> This schedule is subject to change.<br /> <br /> {| border=&quot;1&quot; style=&quot;text-align:left;&quot;<br /> |-<br /> ! Week<br /> ! Begins on Date<br /> ! Discussion Tuesday 3:30-4:30pm<br /> ! Lecture Tuesday 2:00-3:20pm<br /> ! Lecture Thursday 2:00-3:20pm<br /> ! Grading Friday 2pm<br /> |- <br /> | 1<br /> | April 3<br /> | No discussion<br /> | [[Media:01-OverviewS17.pdf | Overview]]<br /> | [[Media:02-HistoryS17.pdf | VR History]]<br /> | No grading<br /> |-<br /> | 2<br /> | April 10<br /> | Discussion [[Project1S17 | Project 1]] ([[Media:Discussion1S17.pdf |slides]])<br /> | [[Media:03-MonoVisionS17.pdf | Monocular Vision]]<br /> | [[Media:04-StereoVisionS17.pdf | Stereo Vision]]<br /> | No grading<br /> |-<br /> | 3<br /> | April 17<br /> | Discussion [[Project1S17 | Project 1]]([[Media:Discussion2S17.pdf |slides]])<br /> | [[Media:05-ColorVisionS17.pdf | Color Vision]]<br /> | <br /> | Grading Project 1<br /> |-<br /> | 4<br /> | April 24<br /> | Discussion [[Project2S17 | Project 2]]<br /> | <br /> | <br /> | No grading<br /> |-<br /> | 5<br /> | May 1<br /> | Discussion [[Project2S17 | Project 2]]<br /> | <br /> | <br /> | Grading Project 2<br /> |-<br /> | 6<br /> | May 8<br /> | Discussion [[Project3S17 | Project 3]]<br /> | <br /> | <br /> | No grading<br /> |-<br /> | 7<br /> | May 15<br /> | Discussion [[Project3S17 | Project 3]]<br /> | <br /> | <br /> | Grading Project 3<br /> |-<br /> | 8<br /> | May 22<br /> | Midterm Discussion<br /> | <br /> | Midterm Exam<br /> | No grading<br /> |-<br /> | 9<br /> | May 29<br /> | Memorial Day (no discussion)<br /> | <br /> | <br /> | No grading<br /> |-<br /> | 10<br /> | June 5<br /> | Discussion [[Project4S17 | Final Project]]<br /> | <br /> | <br /> | No grading<br /> |-<br /> | 11<br /> | June 12<br /> | No discussion<br /> | [[Project4S17 | Final Project]]: Video screening in CSE 1202 3-4pm; then demonstrations in CSE B210<br /> | No lecture<br /> | No grading<br /> |<br /> |}</div> Sal131 http://ivl.calit2.net/wiki/index.php/File:Project1-assets.zip File:Project1-assets.zip 2017-04-14T22:08:33Z <p>Sal131: Sal131 uploaded a new version of &amp;quot;File:Project1-assets.zip&amp;quot;: new mtls.</p> <hr /> <div></div> Sal131 http://ivl.calit2.net/wiki/index.php/Project1S17 Project1S17 2017-04-14T21:13:41Z <p>Sal131: /* Extra Credit (10 Points) */</p> <hr /> <div>=Carbon Dioxide Removal Trainer=<br /> <br /> It appears that everybody can agree that our planet's climate is changing and we're [http://www.climate-lab-book.ac.uk/2016/spiralling-global-temperatures/ observing global warming]. What we can't all agree on is why it is happening, and what role CO2 plays in it. And whether or not humans are contributing to it. Regardless, we need to be prepared to do something about it once the truth comes out. Or else our beloved Pacific Beach turns into Atlantis. And the glider port turns into kite surf port. <br /> <br /> If it does turn out that CO2 is the bad guy, we need to learn how to eliminate it. That's what the Carbon Dioxide Removal Trainer is for. And you are going to have to build it.<br /> <br /> Everyone knows that a CO2 molecule can be turned into oxygen (O2) by eliminating the C. The way to eliminate the C is to aim two lasers at it, each of which alone can't harm the C or the Os, but in combination they turn it into dust (which has not been found guilty for global warming yet).<br /> <br /> ==Starter Code==<br /> <br /> We recommend using the [https://github.com/jherico/OculusMinimalExample/blob/master/OculusMinimalExample.cpp Oculus Minimal Example] code from GitHub to start with. It's very compact but yet uses most of the API functions you will need. The code is slightly outdated though and will require some updating.<br /> <br /> To better understand how the Oculus API works, we recommend [https://developer3.oculus.com/documentation/pcsdk/latest/concepts/dg-sensor/ this example from Oculus]. It is up to date for the current version of the Oculus SDK and can be very useful.<br /> <br /> ==Project Description (100 Points)==<br /> <br /> Download the starter code and get it to work with the Oculus Rift. (5 points)<br /> <br /> Based on the starter code, write a VR application for the Oculus Rift and the Touch controllers with the '''Oculus SDK in C++ and OpenGL''' (no Unity etc). Here are step by step instructions for it:<br /> <br /> * Make the background color of the application a dark blue (for a dark blue sky). (5 points)<br /> * Pick out a factory model from the list below (or a different one of your choice) and load it into memory. A good way to load it is with the [http://www.assimp.org/ Assimp library] as described on the discussion slides. (10 points)<br /> * Place the factory model as a miniature model (~1 foot wide) in front of the user and just below table height. (5 points)<br /> * Have the factory emit a CO2 molecule every ~2 seconds. The CO2 molecules each need to have independent initial (upwards) velocity and spin. Their initial velocity and spin should be randomized. For a 3D model of CO2 see below. Scale the molecule so that each atom is about the size of a tennis ball. (20 points)<br /> * Define an invisible box (about 3 foot cubed) in front of the user which keeps the CO2 molecules contained and makes them bounce off the walls. The bouncing can be done very simply by negating the coordinate axis which would make the molecule escape the bounding box. (5 points)<br /> * Add support for the Oculus Touch controllers. Display a green laser beam as an OpenGL line or a thin cylinder, emanating from the location of each touch controller. (20 points)<br /> * When the user pulls the index finger trigger, change the color of the laser of that Touch controller to red. (5 points)<br /> * When both triggers are pulled, and the user points both laser beams at a C atom so that they both intersect the atom's bounding sphere, the C atom should disappear and an O2 molecule remains. For a 3D model of O2 see below. (10 points)<br /> * Once more than 10 molecules are in the environment, the trainee loses. To visually indicate the loss you should draw 100 or more CO2 molecules in random locations in the environment. (5 points)<br /> * Once all molecules have been eliminated, the trainee wins and the factory stops producing CO2. Change the background color to light blue in this case to indicate the victory. (5 points)<br /> * After the game ends, show win or lose state until the user presses any one of the controller buttons (not triggers), then restart the game. (5 points)<br /> <br /> ==3D Assets==<br /> <br /> We provide the following 3D models for you to use in your application, in [[Media:project1-assets.zip | this zip file]]:<br /> <br /> * CO2 molecule<br /> * O2 molecule<br /> * 4 factory models to choose from. The pictures below are in order, factory1..factory4.<br /> <br /> [[File:factory1_360.png | x200px]][[File:factory2_360.png | x200px]][[File:factory3_360.png | x200px]][[File:factory4_360.png | x200px]]<br /> <br /> To import these OBJ files, we suggest using the [http://www.assimp.org/ Assimp library].<br /> <br /> ==Extra Credit (Max. 10 Points)==<br /> <br /> Options for extra credit are:<br /> <br /> * Audio: use the Oculus Audio SDK to play sounds for eliminating C molecules, generating new ones in the factory, and a sound for when the game is won. (10 points)<br /> * Haptic feedback: the Oculus Touch controllers have built in vibration generators. Add support for vibration feedback for when a C molecule is eliminated, and potentially other events. (5 points)<br /> * Draw hands: use the Oculus Avatar SDK to show stylized touch controllers in their correct locations (where the user's hands are). (10 points)</div> Sal131