{"id":647,"date":"2016-11-02T10:00:00","date_gmt":"2016-11-02T10:00:00","guid":{"rendered":"https:\/\/tagowill.com\/Portfolio\/?post_type=portfolio_xion&#038;p=647"},"modified":"2021-03-27T23:25:35","modified_gmt":"2021-03-27T23:25:35","slug":"creating-a-basic-vr-demo-using-unreal","status":"publish","type":"portfolio_xion","link":"https:\/\/tagowill.com\/portfolio\/title\/creating-a-basic-vr-demo-using-unreal\/","title":{"rendered":"Creating a basic VR demo using Unreal"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"647\" class=\"elementor elementor-647\">\n\t\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-40a5bd74 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"40a5bd74\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-350e63a1\" data-id=\"350e63a1\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-18dbdca elementor-widget elementor-widget-image\" data-id=\"18dbdca\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"383\" src=\"https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_1-1024x383.jpeg\" class=\"attachment-large size-large\" alt=\"\" srcset=\"https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_1-1024x383.jpeg 1024w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_1-300x112.jpeg 300w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_1-768x287.jpeg 768w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_1-600x224.jpeg 600w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_1.jpeg 1500w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-74805b54 elementor-widget elementor-widget-text-editor\" data-id=\"74805b54\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>With virtual reality (VR) going mainstream, through products like the HTC Vive and Oculus Rift, many game developers have become interested in creating new content for these devices. To develop VR content there are two game engines that stand out: Unreal Engine and Unity3D.<\/p><p>For the purpose of this article, I will develop a small VR demonstration (demo) using Unreal Engine. The goal is to implement a level, where the player can move freely and interact with objects by grabbing them or destroying them.<\/p><h2>What is the Unreal Engine?<\/h2><p>The Unreal Engine is a game engine created by Epic Games in 1998. It was first used to create the Unreal game and since then has been successfully used in a variety of other huge games (including Unreal Tournament, Bioshock, Mortal Kombat X, among others). This game engine provides two toolsets for programmers: the traditional C++ and a visual scripting system known as Blueprints that allows for rapid development of the game logic.<\/p><p>VR support was added in the 4th version, launched in 2012. The first supported device was Oculus Rift DK1. Currently, all major VR devices are supported.<\/p><p>Before March 2015, to develop games with this engine, it was necessary to buy a licence, but it subsequently became free of charge. The only condition is that all the profits generated from a game developed with Unreal, above $3,000 must pay a 5% royalty. [1]<\/p><h2>Alternative<\/h2><p>One alternative for creating VR games is Unity3D. Unity3D is a newer game engine and its primary focus is on mobile games thus presenting a very strong 2D component. Furthermore, given its popularity and versatility, the engine expanded to the desktop and VR content.<\/p><p>To create games in unity3D we can use C#, JavaScript or Boo. This game engine is also free to use as with Unreal.<\/p><p>For the purpose of this article, I chose to develop in Unreal Engine because the goal is to create a desktop game and make use of the most advance VR devices on the market. Also, Unreal Engine helps to create prototypes very quickly.<\/p><h2>Why develop for VR?<\/h2><p>In the past years, VR technology has evolved to approach new levels of immersion and life-like experiences. In this way, consumers have more reasons to get excited about playing in VR, as opposed to 3D and 2D. Therefore, there is an opportunity to create exciting VR content, and for that to happen the developers have to step up and create it.<\/p><p>From a development point of view, it has new challenges to overcome in the way players interact and experiment with different elements of the game. The mentioned challenges include narrative construction, audio setting, locomotion in-game, and many more.<\/p><p>Assuming that future games will be VR ready, we currently have a chance to change the gaming world and entertainment as we know them today.<\/p><h2>Headset choice<\/h2><p>To identify the chosen hardware for our demo, I will state the reasons that led me to choose the HTC Vive:<\/p><ul><li>We want to develop it for desktop. (Automatically excludes mobile devices like Samsung GearVR, Google Daydream, \u2026)<\/li><li>HTC Vive allows roomscale (Oculus Rift will soon have this feature)<\/li><li>HTC Vive already has two motion controllers (Oculus Rift touch must be bought separately)<\/li><\/ul><p>Our goal is to make use of the motion controllers to interact with the objects, so the obvious choice is the HTC Vive.<\/p><h2>VR setup<\/h2><p>Having a high-end desktop and HTC Vive, everything can be set up and ready to use.<\/p><p>For that we need to:<\/p><ol><li>Make sure everything is connected in the right place. The full guide can be seen here [2].<\/li><li>Install Steam and SteamVR.<\/li><li>Make sure the firmware on all controllers and headset is updated.<\/li><li>Run the \u201cRoom setup\u201d and \u201cTutorial\u201d to set up your roomscale and see if everything is working correctly.<\/li><li>Download and install Unreal Engine [3] (Version: 4.13.2).<\/li><\/ol><p>Now we are ready to start our demo.<\/p><h2>Demo implementation<\/h2><p>Before starting the development of our demo, is important to have some previous background knowledge about working with Blueprints.<\/p><p>The following section shows the step-by-step process of how to create a new project, set up a level and create some simple game logic so we can point to an object and by pulling the trigger, destroy it.<\/p><p>The process starts by opening the Unreal Engine and going to the New project tab. In the Blueprint section select Virtual Reality. In the project setup choose Desktop\/console, Maximum Quality and No starter content, and in Location insert the path you want for the project.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f85d686 elementor-widget elementor-widget-image\" data-id=\"f85d686\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"503\" src=\"https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_2-768x503.png\" class=\"attachment-medium_large size-medium_large\" alt=\"\" srcset=\"https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_2-768x503.png 768w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_2-300x197.png 300w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_2-1024x671.png 1024w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_2-600x393.png 600w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_2.png 1050w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4cf3f66a elementor-widget elementor-widget-text-editor\" data-id=\"4cf3f66a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>Go to plugins menu and in Virtual Reality confirm that plugin \u201cSteamVR\u201d is enabled.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-10ff3a1 elementor-widget elementor-widget-image\" data-id=\"10ff3a1\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"544\" src=\"https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_3-1024x544.png\" class=\"attachment-large size-large\" alt=\"\" srcset=\"https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_3-1024x544.png 1024w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_3-300x159.png 300w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_3-768x408.png 768w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_3-600x319.png 600w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_3.png 1050w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fb1ead5 elementor-widget elementor-widget-image\" data-id=\"fb1ead5\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"545\" src=\"https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_4-1024x545.png\" class=\"attachment-large size-large\" alt=\"\" srcset=\"https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_4-1024x545.png 1024w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_4-300x160.png 300w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_4-768x409.png 768w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_4-600x319.png 600w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_4.png 1050w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-af6641e elementor-widget elementor-widget-text-editor\" data-id=\"af6641e\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>On the content browser, go to the folder VirtualRealityBP\/maps and open \u201cMotionControllerMap\u201d.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fa66123 elementor-widget elementor-widget-image\" data-id=\"fa66123\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"554\" src=\"https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_5-1024x554.png\" class=\"attachment-large size-large\" alt=\"\" srcset=\"https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_5-1024x554.png 1024w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_5-300x162.png 300w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_5-768x415.png 768w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_5-600x325.png 600w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_5.png 1050w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e360ca9 elementor-widget elementor-widget-text-editor\" data-id=\"e360ca9\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>This will open a pre-build level that we can use. This level already was many actions ready to use like: grab objects and teleportation for the player to move in the level. We can try it out to see if everything is working correctly. Now to make things more interesting let\u2019s implement logic for destroying an object when we point and pull the trigger.<\/p><p>In order to do that, open the Blueprint \u201cMotionControllerPawn\u201d in VirtualRealityBP\/Blueprints.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8ba14cb elementor-widget elementor-widget-image\" data-id=\"8ba14cb\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"551\" src=\"https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_6-1024x551.png\" class=\"attachment-large size-large\" alt=\"\" srcset=\"https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_6-1024x551.png 1024w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_6-300x161.png 300w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_6-768x413.png 768w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_6-600x323.png 600w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_6.png 1050w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4f91896 elementor-widget elementor-widget-text-editor\" data-id=\"4f91896\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>Call a \u201cMotionController (R) Trigger\u201d event for the right hand and set a boolean that changes between true or false when we press or release the trigger.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f89d1ca elementor-widget elementor-widget-image\" data-id=\"f89d1ca\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"309\" src=\"https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_7.png\" class=\"attachment-large size-large\" alt=\"\" srcset=\"https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_7.png 700w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_7-300x132.png 300w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_7-600x265.png 600w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bada10b elementor-widget elementor-widget-text-editor\" data-id=\"bada10b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>On the Tick event, we are going to create a linetrace for us to know what kind of object we are pointing at. To do that we need the starting and ending point. To obtain the starting point, use the \u201cRight Controller\u201d reference, get the \u201cMotion Controller\u201d and get world location.<\/p><p>Still from \u201cMotion Controller\u201d let\u2019s get the forward vector. This will give us the directions where the controller points to. Multiply this vector with the distance we what (let\u2019s say 1000 = 10 meters) and add to the initial location, obtaining the end point.<\/p><p>Add the module \u201cLineTraceByChannel\u201d, connect the start and end points and select \u201cOne Frame\u201d in \u201cDraw Debug Type\u201d tab. This parameter will draw a line that we can see between the starting and ending point.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a8ad51f elementor-widget elementor-widget-image\" data-id=\"a8ad51f\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"566\" src=\"https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_8-1024x566.png\" class=\"attachment-large size-large\" alt=\"\" srcset=\"https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_8-1024x566.png 1024w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_8-300x166.png 300w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_8-768x424.png 768w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_8-600x331.png 600w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_8.png 1050w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-94acdf9 elementor-widget elementor-widget-text-editor\" data-id=\"94acdf9\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>The next step is to break the \u201cOut Hit\u201d output and do a cast for the \u201cHit Actor\u201d to \u201cBP_PickupCube\u201d. This will guaranty that we can only select the blue cubes in the level.<\/p><p>To finish let\u2019s put a branch and see if the boolean\u201dCan Destroy\u201d (created earlier) is true or false. In case it is false we don\u2019t do anything. In case it\u2019s true, call the module \u201cDestroyActor\u201d to destroy the actor that we have selected.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8f01939 elementor-widget elementor-widget-image\" data-id=\"8f01939\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"562\" src=\"https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_9-1024x562.png\" class=\"attachment-large size-large\" alt=\"\" srcset=\"https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_9-1024x562.png 1024w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_9-300x165.png 300w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_9-768x421.png 768w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_9-600x329.png 600w, https:\/\/tagowill.com\/portfolio\/wp-content\/uploads\/2016\/11\/M_Article1_9.png 1050w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3bc8c17 elementor-widget elementor-widget-text-editor\" data-id=\"3bc8c17\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>And we are done. We can try it by going to the Play button on the top and select VRpreview.<\/p><h4>Final thoughts<\/h4><p>As you can see, creating games for VR devices isn\u2019t difficult. The engine offers pre-made content that makes it much easier for those who are taking the first steps in this area. Furthermore, Unreal allows us to abstract from the hardware (for example, we don\u2019t need to think about how to do the tracking of the devices or how to render the image to the headset) allowing us only to focus on the content of the experience.<\/p><p>In my experience, the use of the Blueprints is a great resource that provides the possibility to create game mechanics in just a few clicks. This demo serves as a basis to easily understand how VR development works in Unreal and from this you can evolve the complexity and create your own VR game.<\/p><p>Now is up to us to create the future of VR<\/p><h4>References<\/h4><p>[1] <a href=\"https:\/\/www.unrealengine.com\/blog\/ue4-is-free\">https:\/\/www.unrealengine.com\/blog\/ue4-is-free<\/a><br \/>[2] <a href=\"https:\/\/support.steampowered.com\/kb_article.php?ref=2001-UXCM-4439\">https:\/\/support.steampowered.com\/kb_article.php?ref=2001-UXCM-4439<\/a><br \/>[3] <a href=\"https:\/\/www.unrealengine.com\/\">https:\/\/www.unrealengine.com\/<\/a><br \/>[Image 1] <a href=\"http:\/\/www.htc.com\/us\/go\/press-image-gallery\/\">http:\/\/www.htc.com\/us\/go\/press-image-gallery\/<\/a><\/p><p>Originally published at <a href=\"https:\/\/medium.com\/@tagowill\">https:\/\/medium.com\/@tagowill<\/a>.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-3ebf9b82\" data-id=\"3ebf9b82\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a87eb87 elementor-align-left elementor-widget elementor-widget-button\" data-id=\"a87eb87\" data-element_type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t<a href=\"https:\/\/virtualrealitypop.com\/start-a-vr-demo-using-the-unreal-engine-63d31eeaf784\" class=\"elementor-button-link elementor-button elementor-size-sm\" role=\"button\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-text\">Origial Post<\/span>\n\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2e3bcb1b elementor-widget elementor-widget-heading\" data-id=\"2e3bcb1b\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Published On<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2054259d elementor-widget elementor-widget-text-editor\" data-id=\"2054259d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>12\/11\/2016<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c10d86e elementor-widget elementor-widget-heading\" data-id=\"c10d86e\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Publisher<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-35a79377 elementor-widget elementor-widget-text-editor\" data-id=\"35a79377\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p><a href=\"https:\/\/medium.com\">Medium<\/a><\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>An quick and easy tutorial on creating your first VR application with Unreal Engine<\/p>\n","protected":false},"featured_media":653,"template":"","portfolio-category":[40,34],"class_list":["post-647","portfolio_xion","type-portfolio_xion","status-publish","has-post-thumbnail","hentry","portfolio-category-medium","portfolio-category-publications"],"_links":{"self":[{"href":"https:\/\/tagowill.com\/portfolio\/wp-json\/wp\/v2\/portfolio_xion\/647","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tagowill.com\/portfolio\/wp-json\/wp\/v2\/portfolio_xion"}],"about":[{"href":"https:\/\/tagowill.com\/portfolio\/wp-json\/wp\/v2\/types\/portfolio_xion"}],"version-history":[{"count":24,"href":"https:\/\/tagowill.com\/portfolio\/wp-json\/wp\/v2\/portfolio_xion\/647\/revisions"}],"predecessor-version":[{"id":1362,"href":"https:\/\/tagowill.com\/portfolio\/wp-json\/wp\/v2\/portfolio_xion\/647\/revisions\/1362"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tagowill.com\/portfolio\/wp-json\/wp\/v2\/media\/653"}],"wp:attachment":[{"href":"https:\/\/tagowill.com\/portfolio\/wp-json\/wp\/v2\/media?parent=647"}],"wp:term":[{"taxonomy":"portfolio-category","embeddable":true,"href":"https:\/\/tagowill.com\/portfolio\/wp-json\/wp\/v2\/portfolio-category?post=647"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}