{"id":93,"date":"2019-10-03T12:47:30","date_gmt":"2019-10-03T12:47:30","guid":{"rendered":"https:\/\/swordreverie.com\/?p=93"},"modified":"2020-07-08T23:32:36","modified_gmt":"2020-07-08T23:32:36","slug":"building-a-fantasy-vr-world-in-unity","status":"publish","type":"post","link":"https:\/\/swordreverie.com\/ja\/building-a-fantasy-vr-world-in-unity\/","title":{"rendered":"Building a Fantasy VR World in Unity"},"content":{"rendered":"<p class=\"XzvDs _208Ie _1dH_e blog-post-text-font blog-post-text-color _2QAo- _25MYV _3ZX8L _1dH_e\">A while ago we wrote about how we created a vision for what the world of Sword Reverie would look like using concept art. Today, we will talk about how we brought that vision to life in Unity 3d.<\/p>\n<p class=\"XzvDs _208Ie _1dH_e blog-post-text-font blog-post-text-color _2QAo- _25MYV _3ZX8L _1dH_e\">There were lots of challenges we needed to overcome to achieve the look and feel we want while simultaneously ensuring high performance. To maintain framerate we needed to support Single Pass Stereo Rendering and strictly monitor polycount and draw calls among other things.<\/p>\n<p class=\"XzvDs _208Ie _1dH_e blog-post-text-font blog-post-text-color _2QAo- _25MYV _3ZX8L _1dH_e\"><strong>Shaping Terrain<\/strong><\/p>\n<p class=\"XzvDs _208Ie _1dH_e blog-post-text-font blog-post-text-color _2QAo- _25MYV _3ZX8L _1dH_e\">The first step in our creation process is to create the actual terrain. Manipulating the terrain using Unity\u2019s built in terrain tools is a little frustrating and there are quite a few assets on the asset store that can help improve Unity\u2019s terrain creation workflow such as <a class=\"_2qJYG blog-link-hashtag-color _2IYtJ\" href=\"https:\/\/assetstore.unity.com\/packages\/tools\/terrain\/gaia-terrain-scene-generator-42618\" target=\"_top\" rel=\"noopener noreferrer\">Gaia<\/a>, <a class=\"_2qJYG blog-link-hashtag-color _2IYtJ\" href=\"https:\/\/assetstore.unity.com\/packages\/tools\/terrain\/world-creator-professional-55073\" target=\"_top\" rel=\"noopener noreferrer\">World Creator<\/a>, etc. We picked Gaia since it allows for procedural and manual creation using a stamp-based system and suits our needs well. We didn\u2019t have to do anything specific to VR beyond from following Gaia\u2019s performance best practices. We used a pixel error of 5 for our terrain. Try to keep the size of the terrain reasonable and use <a class=\"_2qJYG blog-link-hashtag-color _2IYtJ\" href=\"https:\/\/assetstore.unity.com\/packages\/tools\/terrain\/sectr-complete-2019-144433\" target=\"_top\" rel=\"noopener noreferrer\">Sectr<\/a> if you need large terrains.<\/p>\n<p class=\"XzvDs _208Ie _1dH_e blog-post-text-font blog-post-text-color _2QAo- _25MYV _3ZX8L _1dH_e\">Once the terrain is generated, its time to texture the terrain. Gaia does a good job of rule-based texturing, but to truly make the terrain shine, consider using <a class=\"_2qJYG blog-link-hashtag-color _2IYtJ\" href=\"https:\/\/assetstore.unity.com\/packages\/tools\/terrain\/microsplat-advanced-details-108321\" target=\"_top\" rel=\"noopener noreferrer\">Microsplat<\/a> or CTS to add the finishing touches. These assets allows you to get more from your textures in terms of extra details and configurations. We used <a class=\"_2qJYG blog-link-hashtag-color _2IYtJ\" href=\"https:\/\/assetstore.unity.com\/packages\/tools\/terrain\/cts-2019-complete-terrain-shader-140806\" target=\"_top\" rel=\"noopener noreferrer\">CTS 2019<\/a> since it provides great performance optimizations when you use the Lite version of the shader. Unity 2018.3+ is required. CTS is a fairly performance heavy system, but the Lite version allows you to use up to 16 PBR textures in one pass instead of one pass per 4 textures for the Unity default terrain shader.<\/p>\n<div class=\"q2uC4 _3LksV\">\n<div class=\"_2CvYQ c-Mgr _1bhjj _1bhjj _1hD8w\">\n<div class=\"_1Lhwj image-container\" data-hook=\"imageViewer\">\n<div class=\"xdJBZ\"><img data-recalc-dims=\"1\" decoding=\"async\" class=\"_1Fjtc _2lDdg\" src=\"https:\/\/i0.wp.com\/static.wixstatic.com\/media\/db853b_2072d25ee21441abaf0bd73a4d827316~mv2.png\/v1\/fill\/w_740%2Ch_341%2Cal_c%2Cq_90%2Cusm_0.66_1.00_0.01\/db853b_2072d25ee21441abaf0bd73a4d827316~mv2.webp?ssl=1\" alt=\"Environment Terrain\" data-pin-url=\"https:\/\/www.swordreverie.com\/post\/building-a-fantasy-vr-world-in-unity\" data-pin-media=\"https:\/\/static.wixstatic.com\/media\/db853b_2072d25ee21441abaf0bd73a4d827316~mv2.png\/v1\/fit\/w_1135,h_523,al_c,q_80\/file.png\" \/><\/div>\n<\/div>\n<\/div>\n<div class=\"\"><\/div>\n<\/div>\n<p>&nbsp;<\/p>\n<p class=\"XzvDs _208Ie _1dH_e blog-post-text-font blog-post-text-color _2QAo- _25MYV _3ZX8L _1dH_e\"><strong>Planting Trees (and Shrubs, and Grass as well)<\/strong><\/p>\n<p class=\"XzvDs _208Ie _1dH_e blog-post-text-font blog-post-text-color _2QAo- _25MYV _3ZX8L _1dH_e\">A barren landscape is boring, so the next thing we wanted to do is add some vegetation (trees, shrubs, grass). However, vegetation is a huge a performance challenge in VR. Non low-poly trees have a heavy use of alpha cards and can quickly blow up the poly count. Lush grass can cause thousands of draw calls if unoptimized. Simply using dynamic and static batching isn\u2019t enough.<\/p>\n<p class=\"XzvDs _208Ie _1dH_e blog-post-text-font blog-post-text-color _2QAo- _25MYV _3ZX8L _1dH_e\">We used <a class=\"_2qJYG blog-link-hashtag-color _2IYtJ\" href=\"https:\/\/assetstore.unity.com\/packages\/tools\/terrain\/vegetation-studio-pro-131835\" target=\"_top\" rel=\"noopener noreferrer\">Vegetation Studio Pro<\/a> to help with the vegetation rendering performance. Vegetation Studio is a must own asset for creating scenes with lots of Vegetation. It has its own rendering system that uses GPU instancing and a cell-based structure to achieve huge performance boosts over trees rendered using Unity Terrain system. Vegetation Studio Pro has even better performance by using the job system and Burst complier for anyone using Unity 2018.2.11+. If CTS isn\u2019t enough to get you to upgrade Unity, Vegetation Studio Pro surely is. We placed all our vegetation, buildings, props, grass, etc. with Vegetation Studio Pro and it only takes hundreds of draw calls and ~2ms of render time on a GTX 1070 running a Vive for hundreds of objects and lush grass. We used the Vegetation Studio billboarding system on the highest quality so we can be aggressive with billboarding and billboard early.<\/p>\n<p class=\"XzvDs _208Ie _1dH_e blog-post-text-font blog-post-text-color _2QAo- _25MYV _3ZX8L _1dH_e\">The Vegetation and object placement system is easy to use. Unfortunately, the <a class=\"_2qJYG blog-link-hashtag-color _2IYtJ\" href=\"https:\/\/assetstore.unity.com\/packages\/tools\/terrain\/gena-2-terrain-scene-spawner-127636\" target=\"_top\" rel=\"noopener noreferrer\">GeNa 2<\/a> integration seems to be still broken as of the time of writing.<\/p>\n<p class=\"XzvDs _208Ie _1dH_e blog-post-text-font blog-post-text-color _2QAo- _25MYV _3ZX8L _1dH_e\">Now that we have a rendering system, we can go create trees we like. We didn\u2019t like the look of low-poly trees that most VR games use, so we decided to use trees created using Unity Tree Creator. Trees created with Unity Tree Creator trees have pretty good performance in VR and can be easily edited in Unity. To achieve a stylized look, we picked simplified geometry and colors for the foliage and bark textures. Try to limit the amount of leaves since overdraw is a big problem in VR. If targeting a mobile VR platform (such as Quest), I would probably stick with low poly trees. SpeedTree is another option to consider, but it is a paid product and performance may be worse in certain cases.<\/p>\n<p class=\"XzvDs _208Ie _1dH_e blog-post-text-font blog-post-text-color _2QAo- _25MYV _3ZX8L _1dH_e\">To add the final touches, we wanted a foliage shader that lights up the leaves better. We picked <a class=\"_2qJYG blog-link-hashtag-color _2IYtJ\" href=\"https:\/\/assetstore.unity.com\/packages\/vfx\/shaders\/advancedshaders-surfaces-8573\" target=\"_top\" rel=\"noopener noreferrer\">Advanced Foliage Shader<\/a> since it has good support for lighting and bending and performance is quite good .We loved the look of the lighting on the Tree Creator Shader. We edited the shader to support wind when using Vegetation Studio Pro.<\/p>\n<div class=\"q2uC4 _3LksV\">\n<div class=\"_2CvYQ c-Mgr _1bhjj _1bhjj _1hD8w\">\n<div class=\"_1Lhwj image-container\" data-hook=\"imageViewer\">\n<div class=\"xdJBZ\"><img data-recalc-dims=\"1\" decoding=\"async\" class=\"_1Fjtc _2lDdg\" src=\"https:\/\/i0.wp.com\/static.wixstatic.com\/media\/db853b_b2bab58a5fa043c99aa2a74efde71384~mv2.png\/v1\/fill\/w_740%2Ch_342%2Cal_c%2Cq_90%2Cusm_0.66_1.00_0.01\/db853b_b2bab58a5fa043c99aa2a74efde71384~mv2.webp?ssl=1\" alt=\"Environment Trees\" data-pin-url=\"https:\/\/www.swordreverie.com\/post\/building-a-fantasy-vr-world-in-unity\" data-pin-media=\"https:\/\/static.wixstatic.com\/media\/db853b_b2bab58a5fa043c99aa2a74efde71384~mv2.png\/v1\/fit\/w_1303,h_603,al_c,q_80\/file.png\" \/><\/div>\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>&nbsp;<\/p>\n<p class=\"XzvDs _208Ie _1dH_e blog-post-text-font blog-post-text-color _2QAo- _25MYV _3ZX8L _1dH_e\"><strong>Habitat for Humans <\/strong><\/p>\n<p class=\"XzvDs _208Ie _1dH_e blog-post-text-font blog-post-text-color _2QAo- _25MYV _3ZX8L _1dH_e\">Next step is to add buildings and props to the environment, so the world feels like its populated. We also placed buildings and props using Vegetation Studio Pro, so performance remains high. Buildings and props are less of a bottleneck on performance than vegetation as long as you use assets with reasonable polycount, texture size, and one material.<\/p>\n<p class=\"XzvDs _208Ie _1dH_e blog-post-text-font blog-post-text-color _2QAo- _25MYV _3ZX8L _1dH_e\">We used <a class=\"_2qJYG blog-link-hashtag-color _2IYtJ\" href=\"https:\/\/assetstore.unity.com\/packages\/tools\/modeling\/automatic-lod-43652\" target=\"_top\" rel=\"noopener noreferrer\">Automatic LOD<\/a> to automatically create LODs with lower poly count. It doesn\u2019t look as good as manually created LODs but saved us lot of time. For billboards, we used <a class=\"_2qJYG blog-link-hashtag-color _2IYtJ\" href=\"https:\/\/assetstore.unity.com\/packages\/tools\/utilities\/amplify-impostors-beta-119877\" target=\"_top\" rel=\"noopener noreferrer\">Amplify Imposters<\/a> to create billboards that have an illusion of a 3d object since it takes screenshots of an asset from multiple angles and displays the closest screenshot or a blend of the closest screenshots. The result still won\u2019t look good when up close but will look much more 3 dimensional than a regular billboard and will allow you to use billboards earlier in a VR setting.<\/p>\n<div class=\"q2uC4 _3LksV\">\n<div class=\"_2CvYQ c-Mgr _1bhjj _1bhjj _1hD8w\">\n<div class=\"_1Lhwj image-container\" data-hook=\"imageViewer\">\n<div class=\"xdJBZ\"><img data-recalc-dims=\"1\" decoding=\"async\" class=\"_1Fjtc _2lDdg\" src=\"https:\/\/i0.wp.com\/static.wixstatic.com\/media\/db853b_2bb928163e0b4e12b4f2e0efa688cc09~mv2.png\/v1\/fill\/w_740%2Ch_345%2Cal_c%2Cq_90%2Cusm_0.66_1.00_0.01\/db853b_2bb928163e0b4e12b4f2e0efa688cc09~mv2.webp?ssl=1\" alt=\"Environment Buildings\" data-pin-url=\"https:\/\/www.swordreverie.com\/post\/building-a-fantasy-vr-world-in-unity\" data-pin-media=\"https:\/\/static.wixstatic.com\/media\/db853b_2bb928163e0b4e12b4f2e0efa688cc09~mv2.png\/v1\/fit\/w_1294,h_603,al_c,q_80\/file.png\" \/><\/div>\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>&nbsp;<\/p>\n<p class=\"XzvDs _208Ie _1dH_e blog-post-text-font blog-post-text-color _2QAo- _25MYV _3ZX8L _1dH_e\"><strong>Smell the Sea and Feel the Sky<\/strong><\/p>\n<p class=\"XzvDs _208Ie _1dH_e blog-post-text-font blog-post-text-color _2QAo- _25MYV _3ZX8L _1dH_e\">The last two components of a stunning environment are water and sky.<\/p>\n<p class=\"XzvDs _208Ie _1dH_e blog-post-text-font blog-post-text-color _2QAo- _25MYV _3ZX8L _1dH_e\">There are quite a few stylized water shader assets on the Unity Asset Store such as <a class=\"_2qJYG blog-link-hashtag-color _2IYtJ\" href=\"https:\/\/assetstore.unity.com\/packages\/vfx\/shaders\/definitive-stylized-water-87062\" target=\"_top\" rel=\"noopener noreferrer\">Definitize Stylized Water<\/a> and <a class=\"_2qJYG blog-link-hashtag-color _2IYtJ\" href=\"https:\/\/assetstore.unity.com\/packages\/vfx\/shaders\/stylized-water-shader-71207\" target=\"_top\" rel=\"noopener noreferrer\">Stylized Water Shader<\/a>, but none that looked the way we wanted it to and has full VR support (Single Pass Stereo Rendering support). We ended rewriting part of the Definitive Stylized Water shader and real time reflection script to make it support Single Pass Stereo Rendering. The Definitive Stylized Water shader was created with Shader Forge so the easiest way to edit it is with Shader Forge. Unfortunately, the developer of Shader Forge stopped developing the project to focus on her games, so Shader Forge does not support Unity 2018+. We had to get an old version of Unity to get Shader Forge working (some forks of Shader Forge may support newer Unity versions).<\/p>\n<p class=\"XzvDs _208Ie _1dH_e blog-post-text-font blog-post-text-color _2QAo- _25MYV _3ZX8L _1dH_e\">Here is the Shader Forge Code Block we added as a Function_node:<\/p>\n<p><em>float2 uvs = uv;<\/em><\/p>\n<p><em>#if UNITY_SINGLE_PASS_STEREO<\/em><\/p>\n<p><em>\/\/ If Single-Pass Stereo mode is active, transform the<\/em><\/p>\n<p><em>\/\/ coordinates to get the correct output UV for the current eye.<\/em><\/p>\n<p><em>float4 scaleOffset = unity_StereoScaleOffset[unity_StereoEyeIndex];<\/em><\/p>\n<p><em>uvs = (uv &#8211; scaleOffset.zw) \/ scaleOffset.xy;<\/em><\/p>\n<p><em>#endif<\/em><\/p>\n<p><em>return uvs;<\/em><\/p>\n<p class=\"XzvDs _208Ie _1dH_e blog-post-text-font blog-post-text-color _2QAo- _25MYV _3ZX8L _1dH_e\">For the real time reflection script, we need the reflection camera to capture two inverted textures from the position of each eye instead of one and pass both textures to the shader. We thought real time water reflections would cost a lot of performance, but the performance impact was actually pretty low as long as the reflection resolution is kept low.<\/p>\n<p class=\"XzvDs _208Ie _1dH_e blog-post-text-font blog-post-text-color _2QAo- _25MYV _3ZX8L _1dH_e\">For our sky, we wanted to have beautiful volumetric clouds like those in JRPG games and a day night system. We checked out a few sky assets, including <a class=\"_2qJYG blog-link-hashtag-color _2IYtJ\" href=\"https:\/\/assetstore.unity.com\/packages\/tools\/particles-effects\/enviro-sky-and-weather-33963\" target=\"_top\" rel=\"noopener noreferrer\">Enviro<\/a>, <a class=\"_2qJYG blog-link-hashtag-color _2IYtJ\" href=\"https:\/\/assetstore.unity.com\/packages\/tools\/particles-effects\/tenkoku-dynamic-sky-34435\" target=\"_top\" rel=\"noopener noreferrer\">Tenkoku<\/a>, and <a class=\"_2qJYG blog-link-hashtag-color _2IYtJ\" href=\"https:\/\/assetstore.unity.com\/packages\/tools\/particles-effects\/sky-master-ultimate-volumetric-skies-weather-25357\" target=\"_top\" rel=\"noopener noreferrer\">Sky Master Ultimate<\/a>.We picked Enviro because it has beautiful volumetric clouds based on Raymarching (based on a paper written by the devs for Horizon Zero Dawn), fog, day night cycle, realistic sun, moon, stars positions, and many more features. Enviro also has VR support out of the box, so it is a great starting point if you need more than a beautiful skybox. Since Enviro uses multiple full screen post-processing passes for certain features, which is especially hard on performance for VR due to high GPU pixel fill rate, you would need to pick which features to turn on and which to disable. I don\u2019t recommend using Standard Enviro if your game depends on lots of post-processing effects, have high anti-aliasing\/super-sampling requirements, or needs to target mobile VR (such as Quest). The mobile version may be more suited, but I didn\u2019t test that with VR. You can do a little bit of performance optimization by removing Graphics.Blit calls for unused features (which hopefully makes it into the next update for the asset) and caching shader property ids. In the end, on a GTX 1070 running a Vive, volumetric clouds and fog each cost up to 1ms of render time.<\/p>\n<div class=\"q2uC4 _3LksV\">\n<div class=\"_2CvYQ c-Mgr _1bhjj _1bhjj _1hD8w\">\n<div class=\"_1Lhwj image-container\" data-hook=\"imageViewer\">\n<div class=\"xdJBZ\"><img data-recalc-dims=\"1\" decoding=\"async\" class=\"_1Fjtc _2lDdg\" src=\"https:\/\/i0.wp.com\/static.wixstatic.com\/media\/db853b_0488a999f5c243fa8f7131772d845432~mv2.png\/v1\/fill\/w_740%2Ch_349%2Cal_c%2Cq_90%2Cusm_0.66_1.00_0.01\/db853b_0488a999f5c243fa8f7131772d845432~mv2.webp?ssl=1\" alt=\"Environment Water\" data-pin-url=\"https:\/\/www.swordreverie.com\/post\/building-a-fantasy-vr-world-in-unity\" data-pin-media=\"https:\/\/static.wixstatic.com\/media\/db853b_0488a999f5c243fa8f7131772d845432~mv2.png\/v1\/fit\/w_1307,h_617,al_c,q_80\/file.png\" \/><\/div>\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>&nbsp;<\/p>\n<p class=\"XzvDs _208Ie _1dH_e blog-post-text-font blog-post-text-color _2QAo- _25MYV _3ZX8L _1dH_e\"><strong>General Settings and Optimization<\/strong><\/p>\n<p class=\"XzvDs _208Ie _1dH_e blog-post-text-font blog-post-text-color _2QAo- _25MYV _3ZX8L _1dH_e\">Since we wanted to use MSAA for cheap anti-aliasing we had to use forward rendering. However, we also wanted to have dynamic day night cycle in an outdoor open world environment, so we needed real time precomputed GI instead of baked lighting. This limits the amount of lights we can have and make real time soft shadows very costly. We used an aggressive shadow distance to make things manageable. If you don\u2019t need to change the position of your lights, using a mixed lighting strategy such as Shadowmask might give you better performance without impacting the visuals. If you are targeting a mobile VR platform, you might need to stick with baked lights only.<\/p>\n<p class=\"XzvDs _208Ie _1dH_e blog-post-text-font blog-post-text-color _2QAo- _25MYV _3ZX8L _1dH_e\">You can use IL2CPP scripting backend for faster script execution over Mono. The build time is longer, but you get some CPU performance boost if that is a bottleneck for your game.<\/p>\n<p class=\"XzvDs _208Ie _1dH_e blog-post-text-font blog-post-text-color _2QAo- _25MYV _3ZX8L _1dH_e\"><strong>Final Result<\/strong><\/p>\n<p class=\"XzvDs _208Ie _1dH_e blog-post-text-font blog-post-text-color _2QAo- _25MYV _3ZX8L _1dH_e\">Here is the result of browsing through tons of Unity Asset Store assets and weeks of performance optimization:<\/p>\n<div class=\"q2uC4 _3LksV\">\n<div class=\"_2CvYQ c-Mgr _1bhjj _1bhjj _1hD8w\">\n<div class=\"_1Lhwj image-container\" data-hook=\"imageViewer\">\n<div class=\"xdJBZ\"><img data-recalc-dims=\"1\" decoding=\"async\" class=\"_1Fjtc _2lDdg\" src=\"https:\/\/i0.wp.com\/static.wixstatic.com\/media\/db853b_e1484d2c667c4e4e90af845b34a55e29~mv2.jpg\/v1\/fill\/w_740%2Ch_467%2Cal_c%2Cq_90%2Cusm_0.66_1.00_0.01\/db853b_e1484d2c667c4e4e90af845b34a55e29~mv2.webp?ssl=1\" alt=\"Environment Final 1\" data-pin-url=\"https:\/\/www.swordreverie.com\/post\/building-a-fantasy-vr-world-in-unity\" data-pin-media=\"https:\/\/static.wixstatic.com\/media\/db853b_e1484d2c667c4e4e90af845b34a55e29~mv2.jpg\/v1\/fit\/w_1432,h_904,al_c,q_80\/file.png\" \/><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"q2uC4 _3LksV\">\n<div class=\"_2CvYQ c-Mgr _1bhjj _1bhjj _1hD8w\">\n<div class=\"_1Lhwj image-container\" data-hook=\"imageViewer\">\n<div class=\"xdJBZ\"><img data-recalc-dims=\"1\" decoding=\"async\" class=\"_1Fjtc _2lDdg\" src=\"https:\/\/i0.wp.com\/static.wixstatic.com\/media\/db853b_ceba749771104eb5b9f18255ece76f7f~mv2.jpg\/v1\/fill\/w_740%2Ch_467%2Cal_c%2Cq_90%2Cusm_0.66_1.00_0.01\/db853b_ceba749771104eb5b9f18255ece76f7f~mv2.webp?ssl=1\" alt=\"Environment Final 2\" data-pin-url=\"https:\/\/www.swordreverie.com\/post\/building-a-fantasy-vr-world-in-unity\" data-pin-media=\"https:\/\/static.wixstatic.com\/media\/db853b_ceba749771104eb5b9f18255ece76f7f~mv2.jpg\/v1\/fit\/w_1432,h_904,al_c,q_80\/file.png\" \/><\/div>\n<div class=\"\"><img data-recalc-dims=\"1\" decoding=\"async\" class=\"_1Fjtc _2lDdg\" style=\"font-style: inherit; font-weight: inherit;\" src=\"https:\/\/i0.wp.com\/static.wixstatic.com\/media\/db853b_96f54ee8024d4bacbed456e3d99705b5~mv2.jpg\/v1\/fill\/w_740%2Ch_467%2Cal_c%2Cq_90%2Cusm_0.66_1.00_0.01\/db853b_96f54ee8024d4bacbed456e3d99705b5~mv2.webp?ssl=1\" alt=\"Environment Final 3\" data-pin-url=\"https:\/\/www.swordreverie.com\/post\/building-a-fantasy-vr-world-in-unity\" data-pin-media=\"https:\/\/static.wixstatic.com\/media\/db853b_96f54ee8024d4bacbed456e3d99705b5~mv2.jpg\/v1\/fit\/w_1432,h_904,al_c,q_80\/file.png\" \/><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"q2uC4 _3LksV\">\n<div class=\"_2CvYQ c-Mgr _1bhjj _1bhjj _1hD8w\">\n<div class=\"_1Lhwj image-container\" data-hook=\"imageViewer\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>&nbsp;<\/p>\n<p class=\"XzvDs _208Ie _1dH_e blog-post-text-font blog-post-text-color _2QAo- _25MYV _3ZX8L _1dH_e\">On a GTX 1070 running a Vive we get pretty good frame rate without reprojection or motion smoothing kicking in.<\/p>\n<div class=\"q2uC4 _3LksV\">\n<div class=\"_2CvYQ _1wj_L _1vQBB _1vQBB _1hD8w\">\n<div class=\"_1Lhwj image-container\" data-hook=\"imageViewer\">\n<div class=\"xdJBZ\"><img data-recalc-dims=\"1\" decoding=\"async\" class=\"_1Fjtc _2lDdg\" src=\"https:\/\/i0.wp.com\/static.wixstatic.com\/media\/db853b_c47ba9d305e7463d96a4af7106f05d6d~mv2.png\/v1\/fill\/w_153%2Ch_119%2Cal_c%2Cq_90\/db853b_c47ba9d305e7463d96a4af7106f05d6d~mv2.webp?ssl=1\" alt=\"Environment Perf\" data-pin-url=\"https:\/\/www.swordreverie.com\/post\/building-a-fantasy-vr-world-in-unity\" data-pin-media=\"https:\/\/static.wixstatic.com\/media\/db853b_c47ba9d305e7463d96a4af7106f05d6d~mv2.png\/v1\/fit\/w_153,h_119,al_c,q_80\/file.png\" \/><\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>A while ago we wrote about how we created a vision for what the world of Sword Reverie would look like using concept art. Today, we will talk about how we brought that vision to life in Unity 3d. There were lots of challenges we needed to overcome to achieve the look and feel we want while simultaneously ensuring high performance. To maintain framerate we needed to support Single Pass Stereo Rendering and strictly monitor polycount and draw calls among other things. Shaping Terrain The first step in our creation process is to create the actual terrain. Manipulating the terrain using Unity\u2019s built in terrain tools is a little frustrating [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":21,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"default","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-93","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Building a Fantasy VR World in Unity - SwordReverie<\/title>\n<meta name=\"description\" content=\"A while ago we wrote about how we created a vision for what the world of Sword\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/swordreverie.com\/ja\/building-a-fantasy-vr-world-in-unity\/\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Building a Fantasy VR World in Unity - SwordReverie\" \/>\n<meta property=\"og:description\" content=\"A while ago we wrote about how we created a vision for what the world of Sword\" \/>\n<meta property=\"og:url\" content=\"https:\/\/swordreverie.com\/ja\/building-a-fantasy-vr-world-in-unity\/\" \/>\n<meta property=\"og:site_name\" content=\"SwordReverie\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/sharer.php?u=https%3a%2f%2fswordreverie.com%2fposts%2f\" \/>\n<meta property=\"article:published_time\" content=\"2019-10-03T12:47:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-07-08T23:32:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i1.wp.com\/swordreverie.com\/wp-content\/uploads\/2019\/12\/db853b_9aea1661c7394c87ab2c8fda3c4d4581mv2_d_1900_1200_s_2.jpg?fit=722%2C456&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"722\" \/>\n\t<meta property=\"og:image:height\" content=\"456\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"immefrank\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"immefrank\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"8\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/swordreverie.com\\\/building-a-fantasy-vr-world-in-unity\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/swordreverie.com\\\/building-a-fantasy-vr-world-in-unity\\\/\"},\"author\":{\"name\":\"immefrank\",\"@id\":\"https:\\\/\\\/swordreverie.com\\\/#\\\/schema\\\/person\\\/707435eae715b310d9cdad95b20dba23\"},\"headline\":\"Building a Fantasy VR World in Unity\",\"datePublished\":\"2019-10-03T12:47:30+00:00\",\"dateModified\":\"2020-07-08T23:32:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/swordreverie.com\\\/building-a-fantasy-vr-world-in-unity\\\/\"},\"wordCount\":1609,\"commentCount\":5,\"publisher\":{\"@id\":\"https:\\\/\\\/swordreverie.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/swordreverie.com\\\/building-a-fantasy-vr-world-in-unity\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/swordreverie.com\\\/wp-content\\\/uploads\\\/2019\\\/12\\\/db853b_9aea1661c7394c87ab2c8fda3c4d4581mv2_d_1900_1200_s_2.jpg?fit=722%2C456&ssl=1\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/swordreverie.com\\\/building-a-fantasy-vr-world-in-unity\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/swordreverie.com\\\/building-a-fantasy-vr-world-in-unity\\\/\",\"url\":\"https:\\\/\\\/swordreverie.com\\\/building-a-fantasy-vr-world-in-unity\\\/\",\"name\":\"Building a Fantasy VR World in Unity - SwordReverie\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/swordreverie.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/swordreverie.com\\\/building-a-fantasy-vr-world-in-unity\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/swordreverie.com\\\/building-a-fantasy-vr-world-in-unity\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/swordreverie.com\\\/wp-content\\\/uploads\\\/2019\\\/12\\\/db853b_9aea1661c7394c87ab2c8fda3c4d4581mv2_d_1900_1200_s_2.jpg?fit=722%2C456&ssl=1\",\"datePublished\":\"2019-10-03T12:47:30+00:00\",\"dateModified\":\"2020-07-08T23:32:36+00:00\",\"description\":\"A while ago we wrote about how we created a vision for what the world of Sword\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/swordreverie.com\\\/building-a-fantasy-vr-world-in-unity\\\/#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/swordreverie.com\\\/building-a-fantasy-vr-world-in-unity\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/swordreverie.com\\\/building-a-fantasy-vr-world-in-unity\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/swordreverie.com\\\/wp-content\\\/uploads\\\/2019\\\/12\\\/db853b_9aea1661c7394c87ab2c8fda3c4d4581mv2_d_1900_1200_s_2.jpg?fit=722%2C456&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/swordreverie.com\\\/wp-content\\\/uploads\\\/2019\\\/12\\\/db853b_9aea1661c7394c87ab2c8fda3c4d4581mv2_d_1900_1200_s_2.jpg?fit=722%2C456&ssl=1\",\"width\":722,\"height\":456},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/swordreverie.com\\\/building-a-fantasy-vr-world-in-unity\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/swordreverie.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Building a Fantasy VR World in Unity\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/swordreverie.com\\\/#website\",\"url\":\"https:\\\/\\\/swordreverie.com\\\/\",\"name\":\"SwordReverie\",\"description\":\"JRPG Inspired VR Action Game\",\"publisher\":{\"@id\":\"https:\\\/\\\/swordreverie.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/swordreverie.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/swordreverie.com\\\/#organization\",\"name\":\"Sword Reverie\",\"url\":\"https:\\\/\\\/swordreverie.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/swordreverie.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/i2.wp.com\\\/swordreverie.com\\\/wp-content\\\/uploads\\\/2019\\\/12\\\/Logo-01.png?fit=1354%2C696&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i2.wp.com\\\/swordreverie.com\\\/wp-content\\\/uploads\\\/2019\\\/12\\\/Logo-01.png?fit=1354%2C696&ssl=1\",\"width\":1354,\"height\":696,\"caption\":\"Sword Reverie\"},\"image\":{\"@id\":\"https:\\\/\\\/swordreverie.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/sharer.php?u=https:\\\/\\\/swordreverie.com\\\/posts\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/shareArticle?mini=true&amp;amp;amp;amp;amp;amp;amp;url=https:\\\/\\\/swordreverie.com\\\/posts\\\/&amp;amp;amp;amp;amp;amp;amp;title=Posts - SwordReverie&amp;amp;amp;amp;amp;amp;amp;summary&amp;amp;amp;amp;amp;amp;amp;source=https:\\\/\\\/swordreverie.com\\\/posts\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/swordreverie.com\\\/#\\\/schema\\\/person\\\/707435eae715b310d9cdad95b20dba23\",\"name\":\"immefrank\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/41cdbba28ef5d17e5991d79095c4980e4876c4d856e822954b7aa072eae55e57?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/41cdbba28ef5d17e5991d79095c4980e4876c4d856e822954b7aa072eae55e57?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/41cdbba28ef5d17e5991d79095c4980e4876c4d856e822954b7aa072eae55e57?s=96&d=mm&r=g\",\"caption\":\"immefrank\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Building a Fantasy VR World in Unity - SwordReverie","description":"A while ago we wrote about how we created a vision for what the world of Sword","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/swordreverie.com\/ja\/building-a-fantasy-vr-world-in-unity\/","og_locale":"ja_JP","og_type":"article","og_title":"Building a Fantasy VR World in Unity - SwordReverie","og_description":"A while ago we wrote about how we created a vision for what the world of Sword","og_url":"https:\/\/swordreverie.com\/ja\/building-a-fantasy-vr-world-in-unity\/","og_site_name":"SwordReverie","article_publisher":"https:\/\/www.facebook.com\/sharer.php?u=https%3a%2f%2fswordreverie.com%2fposts%2f","article_published_time":"2019-10-03T12:47:30+00:00","article_modified_time":"2020-07-08T23:32:36+00:00","og_image":[{"width":722,"height":456,"url":"https:\/\/i1.wp.com\/swordreverie.com\/wp-content\/uploads\/2019\/12\/db853b_9aea1661c7394c87ab2c8fda3c4d4581mv2_d_1900_1200_s_2.jpg?fit=722%2C456&ssl=1","type":"image\/jpeg"}],"author":"immefrank","twitter_card":"summary_large_image","twitter_misc":{"\u57f7\u7b46\u8005":"immefrank","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"8\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/swordreverie.com\/building-a-fantasy-vr-world-in-unity\/#article","isPartOf":{"@id":"https:\/\/swordreverie.com\/building-a-fantasy-vr-world-in-unity\/"},"author":{"name":"immefrank","@id":"https:\/\/swordreverie.com\/#\/schema\/person\/707435eae715b310d9cdad95b20dba23"},"headline":"Building a Fantasy VR World in Unity","datePublished":"2019-10-03T12:47:30+00:00","dateModified":"2020-07-08T23:32:36+00:00","mainEntityOfPage":{"@id":"https:\/\/swordreverie.com\/building-a-fantasy-vr-world-in-unity\/"},"wordCount":1609,"commentCount":5,"publisher":{"@id":"https:\/\/swordreverie.com\/#organization"},"image":{"@id":"https:\/\/swordreverie.com\/building-a-fantasy-vr-world-in-unity\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/swordreverie.com\/wp-content\/uploads\/2019\/12\/db853b_9aea1661c7394c87ab2c8fda3c4d4581mv2_d_1900_1200_s_2.jpg?fit=722%2C456&ssl=1","articleSection":["Uncategorized"],"inLanguage":"ja","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/swordreverie.com\/building-a-fantasy-vr-world-in-unity\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/swordreverie.com\/building-a-fantasy-vr-world-in-unity\/","url":"https:\/\/swordreverie.com\/building-a-fantasy-vr-world-in-unity\/","name":"Building a Fantasy VR World in Unity - SwordReverie","isPartOf":{"@id":"https:\/\/swordreverie.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/swordreverie.com\/building-a-fantasy-vr-world-in-unity\/#primaryimage"},"image":{"@id":"https:\/\/swordreverie.com\/building-a-fantasy-vr-world-in-unity\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/swordreverie.com\/wp-content\/uploads\/2019\/12\/db853b_9aea1661c7394c87ab2c8fda3c4d4581mv2_d_1900_1200_s_2.jpg?fit=722%2C456&ssl=1","datePublished":"2019-10-03T12:47:30+00:00","dateModified":"2020-07-08T23:32:36+00:00","description":"A while ago we wrote about how we created a vision for what the world of Sword","breadcrumb":{"@id":"https:\/\/swordreverie.com\/building-a-fantasy-vr-world-in-unity\/#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/swordreverie.com\/building-a-fantasy-vr-world-in-unity\/"]}]},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/swordreverie.com\/building-a-fantasy-vr-world-in-unity\/#primaryimage","url":"https:\/\/i0.wp.com\/swordreverie.com\/wp-content\/uploads\/2019\/12\/db853b_9aea1661c7394c87ab2c8fda3c4d4581mv2_d_1900_1200_s_2.jpg?fit=722%2C456&ssl=1","contentUrl":"https:\/\/i0.wp.com\/swordreverie.com\/wp-content\/uploads\/2019\/12\/db853b_9aea1661c7394c87ab2c8fda3c4d4581mv2_d_1900_1200_s_2.jpg?fit=722%2C456&ssl=1","width":722,"height":456},{"@type":"BreadcrumbList","@id":"https:\/\/swordreverie.com\/building-a-fantasy-vr-world-in-unity\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/swordreverie.com\/"},{"@type":"ListItem","position":2,"name":"Building a Fantasy VR World in Unity"}]},{"@type":"WebSite","@id":"https:\/\/swordreverie.com\/#website","url":"https:\/\/swordreverie.com\/","name":"\u30bd\u30fc\u30c9\u30ec\u30d9\u30ea\u30fc","description":"JRPG Inspired VR Action Game","publisher":{"@id":"https:\/\/swordreverie.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/swordreverie.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":"Organization","@id":"https:\/\/swordreverie.com\/#organization","name":"\u5263\u306e\u5922\u8a9e","url":"https:\/\/swordreverie.com\/","logo":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/swordreverie.com\/#\/schema\/logo\/image\/","url":"https:\/\/i2.wp.com\/swordreverie.com\/wp-content\/uploads\/2019\/12\/Logo-01.png?fit=1354%2C696&ssl=1","contentUrl":"https:\/\/i2.wp.com\/swordreverie.com\/wp-content\/uploads\/2019\/12\/Logo-01.png?fit=1354%2C696&ssl=1","width":1354,"height":696,"caption":"Sword Reverie"},"image":{"@id":"https:\/\/swordreverie.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/sharer.php?u=https:\/\/swordreverie.com\/posts\/","https:\/\/www.linkedin.com\/shareArticle?mini=true&amp;amp;amp;amp;amp;amp;amp;url=https:\/\/swordreverie.com\/posts\/&amp;amp;amp;amp;amp;amp;amp;title=Posts - SwordReverie&amp;amp;amp;amp;amp;amp;amp;summary&amp;amp;amp;amp;amp;amp;amp;source=https:\/\/swordreverie.com\/posts\/"]},{"@type":"Person","@id":"https:\/\/swordreverie.com\/#\/schema\/person\/707435eae715b310d9cdad95b20dba23","name":"immefrank","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/secure.gravatar.com\/avatar\/41cdbba28ef5d17e5991d79095c4980e4876c4d856e822954b7aa072eae55e57?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/41cdbba28ef5d17e5991d79095c4980e4876c4d856e822954b7aa072eae55e57?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/41cdbba28ef5d17e5991d79095c4980e4876c4d856e822954b7aa072eae55e57?s=96&d=mm&r=g","caption":"immefrank"}}]}},"jetpack_featured_media_url":"https:\/\/i0.wp.com\/swordreverie.com\/wp-content\/uploads\/2019\/12\/db853b_9aea1661c7394c87ab2c8fda3c4d4581mv2_d_1900_1200_s_2.jpg?fit=722%2C456&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/swordreverie.com\/ja\/wp-json\/wp\/v2\/posts\/93","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/swordreverie.com\/ja\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/swordreverie.com\/ja\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/swordreverie.com\/ja\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/swordreverie.com\/ja\/wp-json\/wp\/v2\/comments?post=93"}],"version-history":[{"count":0,"href":"https:\/\/swordreverie.com\/ja\/wp-json\/wp\/v2\/posts\/93\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/swordreverie.com\/ja\/wp-json\/wp\/v2\/media\/21"}],"wp:attachment":[{"href":"https:\/\/swordreverie.com\/ja\/wp-json\/wp\/v2\/media?parent=93"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/swordreverie.com\/ja\/wp-json\/wp\/v2\/categories?post=93"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/swordreverie.com\/ja\/wp-json\/wp\/v2\/tags?post=93"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}