{"id":55,"date":"2023-04-10T13:57:06","date_gmt":"2023-04-10T17:57:06","guid":{"rendered":"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/?post_type=chapter&#038;p=55"},"modified":"2023-06-08T16:13:45","modified_gmt":"2023-06-08T20:13:45","slug":"55","status":"publish","type":"chapter","link":"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/chapter\/55\/","title":{"raw":"VR Projects In Unreal","rendered":"VR Projects In Unreal"},"content":{"raw":"The Unreal Engine was developed by Epic Games and acts in a similar fashion to Unity, but relies more on a visual scripting language called Blueprints. Instead of using C# scripts found in Unity, Unreal uses its node based blueprint visual scripting system to create interactions. It is also important to note that the blueprint coding system in Unreal is based off of a C++ scripting language. This is important in case you decide to use custom scripts that are not available in the existing Unreal packages.\r\n\r\nThe main advantage of using Unreal to Unity is the visual quality of the rendering engine. Unreal and Unity have very different rendering engines for their 3D environments, which is especially notable with lighting. In almost all cases, Unreal tends to look better in terms of visual aesthetics compared to what you would see in Unity.\r\n<h3>Resources:<\/h3>\r\n<a href=\"https:\/\/www.unrealengine.com\/en-US\/\">Unreal Game Engine<\/a>\r\n\r\n<a href=\"https:\/\/docs.unrealengine.com\/4.26\/en-US\/SharingAndReleasing\/XRDevelopment\/VR\/SteamVR\/\">Unreal SteamVR Documentation<\/a>\r\n\r\n<a href=\"https:\/\/youtu.be\/DiGh6MxDFds\">Unreal VR Development Tutorial<\/a>\r\n\r\n<a href=\"https:\/\/drive.google.com\/file\/d\/1Kp3oGRn9yFkhYCrPCFKa7RdWqQz9mB5m\/view\">Immersion Studio Unreal VR Temple Project<\/a>\r\n<h3>Working With The Unreal VR Template Project<\/h3>\r\nThe Unreal VR template project can be downloaded from the resources link, and contains everything you need to create a VR experience for either a VR headset or for the Immersion Studio. More specifically it contains 3D royalty free assets, an interactable 3D environment, and the plugins required for SteamVR interactions and for the Immersion Studio. You can use the resources provided in the project folder as you wish, and add your own assets to the template project. It should be noted that if a VR project was created in Unreal using the Open XR plugin or Oculus plugins, these will need to be disabled in order to use the VR controllers that are compatible for the Immersion Studio.\r\n<h3>VR Navigation &amp; Interactions<\/h3>\r\nSimilar to the navigation in Unity, locomotion will be handled through teleportation instead of omnidirectional arrow key movement. The teleportation works exactly the same way as it does in Unreal to how it works in Unity, with only slight visual differences. However, there are different ways of setting up the navigation in Unreal as opposed to Unity, which we will go into. The steps below will allow navigation and interaction with your own Unreal project by focusing on two main components that can be applied to your 3D objects.\r\n\r\nIf you are starting with your own Unreal project, you will need to follow the steps below to allow VR navigation. Please note that the VR controllers will not work if the proper plugin is not enabled. The Immersion Studio always uses SteamVR for VR interaction, so this plugin must always be enabled, with every other XR plugin (such as Open XR) be disabled.\r\n<h3>VR Navigation<\/h3>\r\n<ol>\r\n \t<li>In your open Unreal project, make sure the \u201cPlace Actors\u201d panel is open by enabling in the Window tab at the top of the editor<\/li>\r\n \t<li>Once your place actors panel is open, find the \u201cNav Mesh Bounds Volume\u201d using the search bar<\/li>\r\n \t<li>Drag the Nav Mesh Bounds Volume into your open map. You will notice the object appears as a box outline. Anything within this box will be enabled for navigation.<\/li>\r\n \t<li>After the component has been added to your map, you can enlarge and move the Nav Mesh Bounds Volume to fit the size of your 3D environment.<\/li>\r\n \t<li>Your map should be enabled for VR controllers navigation, which can be tested by using the VR Preview play button at the top of the editor. If done correctly your map will look similar to the image below, and have the NavMeshBoundsVolume component in the World Outliner panel on the right side.<\/li>\r\n<\/ol>\r\n<a href=\"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture6.png\"><img src=\"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture6-300x145.png\" alt=\"\" width=\"660\" height=\"319\" class=\"aligncenter wp-image-64\" \/><\/a>\r\n\r\n&nbsp;\r\n<h3>VR Grab Interaction<\/h3>\r\n1. In the Place Actors panel, click and drag in an empty actor into your map\r\n\r\n2. With the empty actor selected, click on the blueprints button at the top as seen in the image below\r\n\r\n<a href=\"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture7.png\"><img src=\"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture7-300x181.png\" alt=\"\" width=\"640\" height=\"386\" class=\"aligncenter wp-image-63\" \/><\/a>\r\n\r\n3. Click \u201cConvert Selection To Blueprint Class\u201d\r\n\r\n4. In the popup window, search for the \u201cGrabbable_SmallCube\u201d and click select\r\n\r\n5. Next, navigate to the Details panel and change your static mesh and your material to the new object you would like to be interactable.\r\n\r\n<a href=\"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture8.png\"><img src=\"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture8-300x136.png\" alt=\"\" width=\"642\" height=\"291\" class=\"aligncenter wp-image-62\" \/><\/a>6. Click the compile button at the top of the window as seen in the image below\r\n\r\n<a href=\"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture9.png\"><img src=\"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture9-300x154.png\" alt=\"\" width=\"637\" height=\"327\" class=\"aligncenter wp-image-61\" \/><\/a>7. Your object should now be grabbable. You can test this by clicking VR Preview in the drop down of the play button see in the image below<a href=\"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture10.png\"><img src=\"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture10-300x182.png\" alt=\"\" width=\"640\" height=\"388\" class=\"aligncenter wp-image-60\" \/><\/a>","rendered":"<p>The Unreal Engine was developed by Epic Games and acts in a similar fashion to Unity, but relies more on a visual scripting language called Blueprints. Instead of using C# scripts found in Unity, Unreal uses its node based blueprint visual scripting system to create interactions. It is also important to note that the blueprint coding system in Unreal is based off of a C++ scripting language. This is important in case you decide to use custom scripts that are not available in the existing Unreal packages.<\/p>\n<p>The main advantage of using Unreal to Unity is the visual quality of the rendering engine. Unreal and Unity have very different rendering engines for their 3D environments, which is especially notable with lighting. In almost all cases, Unreal tends to look better in terms of visual aesthetics compared to what you would see in Unity.<\/p>\n<h3>Resources:<\/h3>\n<p><a href=\"https:\/\/www.unrealengine.com\/en-US\/\">Unreal Game Engine<\/a><\/p>\n<p><a href=\"https:\/\/docs.unrealengine.com\/4.26\/en-US\/SharingAndReleasing\/XRDevelopment\/VR\/SteamVR\/\">Unreal SteamVR Documentation<\/a><\/p>\n<p><a href=\"https:\/\/youtu.be\/DiGh6MxDFds\">Unreal VR Development Tutorial<\/a><\/p>\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1Kp3oGRn9yFkhYCrPCFKa7RdWqQz9mB5m\/view\">Immersion Studio Unreal VR Temple Project<\/a><\/p>\n<h3>Working With The Unreal VR Template Project<\/h3>\n<p>The Unreal VR template project can be downloaded from the resources link, and contains everything you need to create a VR experience for either a VR headset or for the Immersion Studio. More specifically it contains 3D royalty free assets, an interactable 3D environment, and the plugins required for SteamVR interactions and for the Immersion Studio. You can use the resources provided in the project folder as you wish, and add your own assets to the template project. It should be noted that if a VR project was created in Unreal using the Open XR plugin or Oculus plugins, these will need to be disabled in order to use the VR controllers that are compatible for the Immersion Studio.<\/p>\n<h3>VR Navigation &amp; Interactions<\/h3>\n<p>Similar to the navigation in Unity, locomotion will be handled through teleportation instead of omnidirectional arrow key movement. The teleportation works exactly the same way as it does in Unreal to how it works in Unity, with only slight visual differences. However, there are different ways of setting up the navigation in Unreal as opposed to Unity, which we will go into. The steps below will allow navigation and interaction with your own Unreal project by focusing on two main components that can be applied to your 3D objects.<\/p>\n<p>If you are starting with your own Unreal project, you will need to follow the steps below to allow VR navigation. Please note that the VR controllers will not work if the proper plugin is not enabled. The Immersion Studio always uses SteamVR for VR interaction, so this plugin must always be enabled, with every other XR plugin (such as Open XR) be disabled.<\/p>\n<h3>VR Navigation<\/h3>\n<ol>\n<li>In your open Unreal project, make sure the \u201cPlace Actors\u201d panel is open by enabling in the Window tab at the top of the editor<\/li>\n<li>Once your place actors panel is open, find the \u201cNav Mesh Bounds Volume\u201d using the search bar<\/li>\n<li>Drag the Nav Mesh Bounds Volume into your open map. You will notice the object appears as a box outline. Anything within this box will be enabled for navigation.<\/li>\n<li>After the component has been added to your map, you can enlarge and move the Nav Mesh Bounds Volume to fit the size of your 3D environment.<\/li>\n<li>Your map should be enabled for VR controllers navigation, which can be tested by using the VR Preview play button at the top of the editor. If done correctly your map will look similar to the image below, and have the NavMeshBoundsVolume component in the World Outliner panel on the right side.<\/li>\n<\/ol>\n<p><a href=\"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture6.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture6-300x145.png\" alt=\"\" width=\"660\" height=\"319\" class=\"aligncenter wp-image-64\" srcset=\"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture6-300x145.png 300w, https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture6-65x31.png 65w, https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture6-225x109.png 225w, https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture6-350x169.png 350w, https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture6.png 628w\" sizes=\"auto, (max-width: 660px) 100vw, 660px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h3>VR Grab Interaction<\/h3>\n<p>1. In the Place Actors panel, click and drag in an empty actor into your map<\/p>\n<p>2. With the empty actor selected, click on the blueprints button at the top as seen in the image below<\/p>\n<p><a href=\"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture7.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture7-300x181.png\" alt=\"\" width=\"640\" height=\"386\" class=\"aligncenter wp-image-63\" srcset=\"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture7-300x181.png 300w, https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture7-65x39.png 65w, https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture7-225x136.png 225w, https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture7-350x211.png 350w, https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture7.png 624w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p>3. Click \u201cConvert Selection To Blueprint Class\u201d<\/p>\n<p>4. In the popup window, search for the \u201cGrabbable_SmallCube\u201d and click select<\/p>\n<p>5. Next, navigate to the Details panel and change your static mesh and your material to the new object you would like to be interactable.<\/p>\n<p><a href=\"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture8.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture8-300x136.png\" alt=\"\" width=\"642\" height=\"291\" class=\"aligncenter wp-image-62\" srcset=\"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture8-300x136.png 300w, https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture8-65x29.png 65w, https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture8-225x102.png 225w, https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture8-350x159.png 350w, https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture8.png 624w\" sizes=\"auto, (max-width: 642px) 100vw, 642px\" \/><\/a>6. Click the compile button at the top of the window as seen in the image below<\/p>\n<p><a href=\"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture9.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture9-300x154.png\" alt=\"\" width=\"637\" height=\"327\" class=\"aligncenter wp-image-61\" srcset=\"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture9-300x154.png 300w, https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture9-65x33.png 65w, https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture9-225x115.png 225w, https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture9-350x179.png 350w, https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture9.png 624w\" sizes=\"auto, (max-width: 637px) 100vw, 637px\" \/><\/a>7. Your object should now be grabbable. You can test this by clicking VR Preview in the drop down of the play button see in the image below<a href=\"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture10.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture10-300x182.png\" alt=\"\" width=\"640\" height=\"388\" class=\"aligncenter wp-image-60\" srcset=\"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture10-300x182.png 300w, https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture10-65x40.png 65w, https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture10-225x137.png 225w, https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture10-350x213.png 350w, https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-content\/uploads\/sites\/387\/2023\/04\/Picture10.png 620w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n","protected":false},"author":476,"menu_order":3,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"class_list":["post-55","chapter","type-chapter","status-publish","hentry"],"part":158,"_links":{"self":[{"href":"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-json\/pressbooks\/v2\/chapters\/55","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-json\/wp\/v2\/users\/476"}],"version-history":[{"count":11,"href":"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-json\/pressbooks\/v2\/chapters\/55\/revisions"}],"predecessor-version":[{"id":229,"href":"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-json\/pressbooks\/v2\/chapters\/55\/revisions\/229"}],"part":[{"href":"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-json\/pressbooks\/v2\/parts\/158"}],"metadata":[{"href":"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-json\/pressbooks\/v2\/chapters\/55\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-json\/wp\/v2\/media?parent=55"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-json\/pressbooks\/v2\/chapter-type?post=55"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-json\/wp\/v2\/contributor?post=55"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/pressbooks.library.torontomu.ca\/immersionstudioguide\/wp-json\/wp\/v2\/license?post=55"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}