{"id":526,"date":"2019-11-30T15:57:33","date_gmt":"2019-11-30T15:57:33","guid":{"rendered":"https:\/\/www.danielparente.net\/en\/2019\/11\/30\/ue4-interactive-physics-based-foliage-dev-enabled\/"},"modified":"2019-11-30T15:57:33","modified_gmt":"2019-11-30T15:57:33","slug":"ue4-interactive-physics-based-foliage-dev-enabled","status":"publish","type":"post","link":"https:\/\/www.danielparente.net\/en\/2019\/11\/30\/ue4-interactive-physics-based-foliage-dev-enabled\/","title":{"rendered":"UE4 Interactive Physics-Based Foliage &#8211; Dev Enabled"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"post-831\"> <!-- .et_post_meta_wrapper --><\/p>\n<div class=\"entry-content\">\n<div class=\"et_pb_section  et_pb_section_0 et_pb_with_background et_section_regular\">\n<div class=\" et_pb_row et_pb_row_0\">\n<div class=\"et_pb_column et_pb_column_2_3  et_pb_column_0 et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_text et_pb_module et_pb_bg_layout_light et_pb_text_align_left  et_pb_text_0\">\n<div class=\"et_pb_text_inner\">\n<p>Welcome to my first blog post, it\u2019s only taken more than a year but I think I\u2019ve found an interesting topic to start with, <strong>Physics Constraints<\/strong>.<\/p>\n<p>This short tutorial post comes from one of my favourite features I\u2019ve implemented into my <a href=\"https:\/\/robbcreates.itch.io\/flat-earth\" target=\"_blank\" rel=\"noopener\">Epic Mega jam<\/a> entry, the wobbly bush thingy.<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<p> <!-- .et_pb_text --><\/p>\n<div class=\"et_pb_module et_pb_image et_pb_image_0 et_always_center_on_mobile\">\n<p>\t\t\t\t<span class=\"et_pb_image_wrap\"><img decoding=\"async\" src=\"https:\/\/devenabled.com\/wp-content\/uploads\/2019\/11\/GifWobble.gif\" alt=\"\"\/><\/span>\n\t\t\t<\/div>\n<div class=\"et_pb_text et_pb_module et_pb_bg_layout_light et_pb_text_align_left  et_pb_text_1\">\n<div class=\"et_pb_text_inner\">\n<p>It\u2019s worth noting before getting into the meat of this process that this is not going to be suited for use with abundant foliage or the terrain foliage tool inside of Unreal. This was developed with sparse usage in mind for some extra visual detail in a scene.<\/p>\n<p><br data-rich-text-line-break=\"true\"\/>This idea was actually inspired by various indie racing projects I\u2019ve seen being developed inside of Unity and they add this cool wobble effect to things like the cones and speed barriers and I was interested to see how it could be recreated in Unreal.<\/p>\n<p><br data-rich-text-line-break=\"true\"\/>This process can almost certainly be optimised and if I get the chance I\u2019ll be sure to revisit this, make improvements and post my updates. If you\u2019re still here though, let\u2019s get started making some cool wobbly things\u2026<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<p> <!-- .et_pb_text --><\/p>\n<div class=\"et_pb_text et_pb_module et_pb_bg_layout_light et_pb_text_align_left  et_pb_text_2\">\n<div class=\"et_pb_text_inner\">\n<h2><strong data-rich-text-format-boundary=\"true\">Modelling<\/strong><\/h2>\n<p>I\u2019ll be using Blender 2.8 for my process but you can use any 3D modelling tool that allows you to apply an armature\/skeleton to your mesh.<\/p>\n<p>The first step is to create the mesh we wish to apply the skeleton to and then in this case inside of Blender I\u2019ve simply applied the skeleton with automatic weighting applied.<\/p>\n<p>\u00a0<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<p> <!-- .et_pb_text --><\/p>\n<div class=\"et_pb_module et_pb_gallery et_pb_gallery_0 et_pb_gallery_grid et_pb_bg_layout_light et_pb_text_align_center clearfix\">\n<div class=\"et_pb_gallery_items et_post_gallery clearfix\" data-per_page=\"4\">\n<div class=\"et_pb_gallery_item et_pb_grid_item et_pb_bg_layout_light\">\n<div class=\"et_pb_gallery_image landscape\">\n\t\t\t\t\t<a href=\"https:\/\/devenabled.com\/wp-content\/uploads\/2019\/11\/Bush.png\" title=\"\" target=\"_blank\" rel=\"noopener\"><br \/>\n\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/devenabled.com\/wp-content\/uploads\/2019\/11\/Bush-400x284.png\" alt=\"\"\/><span class=\"et_overlay\"\/><br \/>\n\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n<p class=\"et_pb_gallery_caption\">\n\t\t\t\t\t\tBush Mesh\n\t\t\t\t\t\t<\/p>\n<\/div>\n<div class=\"et_pb_gallery_item et_pb_grid_item et_pb_bg_layout_light\">\n<div class=\"et_pb_gallery_image landscape\">\n\t\t\t\t\t<a href=\"https:\/\/devenabled.com\/wp-content\/uploads\/2019\/11\/BushSkeleton.png\" title=\"\" target=\"_blank\" rel=\"noopener\"><br \/>\n\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/devenabled.com\/wp-content\/uploads\/2019\/11\/BushSkeleton-400x284.png\" alt=\"\"\/><span class=\"et_overlay\"\/><br \/>\n\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n<p class=\"et_pb_gallery_caption\">\n\t\t\t\t\t\tBush Mesh With Skeleton\n\t\t\t\t\t\t<\/p>\n<\/div>\n<\/div>\n<p><!-- .et_pb_gallery_items --><\/div>\n<p><!-- .et_pb_gallery --><\/p>\n<div class=\"et_pb_text et_pb_module et_pb_bg_layout_light et_pb_text_align_left  et_pb_text_3\">\n<div class=\"et_pb_text_inner\">\n<p>As you can see from the images above, I\u2019ve gone for a very simple design and the skeleton is made of just two bones, the root bone and the bone to support the main part of the bush. I\u2019d recommend following along with a similar setup, for now, to get an understanding of the process and then build upon things when you have that nailed.<\/p>\n<p>With your asset modelled and rigged export things and let\u2019s get this into Unreal.<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<p> <!-- .et_pb_text --><\/p>\n<div class=\"et_pb_text et_pb_module et_pb_bg_layout_light et_pb_text_align_left  et_pb_text_4\">\n<div class=\"et_pb_text_inner\">\n<h2><strong data-rich-text-format-boundary=\"true\">Unreal Engine<\/strong><\/h2>\n<p>See, I said we\u2019d be in Unreal.<\/p>\n<p>Inside of Unreal be sure to import the new mesh with correct options to bring it in as Skeletal Mesh.<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<p> <!-- .et_pb_text --><\/p>\n<div class=\"et_pb_module et_pb_image et_pb_image_1 et_always_center_on_mobile\">\n<p>\t\t\t\t<span class=\"et_pb_image_wrap\"><img decoding=\"async\" src=\"https:\/\/devenabled.com\/wp-content\/uploads\/2019\/11\/BushImport-1.png\" alt=\"\"\/><\/span>\n\t\t\t<\/div>\n<div class=\"et_pb_text et_pb_module et_pb_bg_layout_light et_pb_text_align_left  et_pb_text_5\">\n<div class=\"et_pb_text_inner\">\n<p>With that done, open up the <strong>PhysicsAsset <\/strong>version of the mesh, you\u2019ve just imported from your content browser. This is the icon of your mesh with the orange underline. Alternatively, you can open the mesh as usual and navigate to the <strong>Physics <\/strong>tab in the top right of the screen.<\/p>\n<p>By default, you may be met with collision looking something like in the image below on your physics asset and that\u2019s bad, we don\u2019t want that.<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<p> <!-- .et_pb_text --><\/p>\n<div class=\"et_pb_module et_pb_image et_pb_image_2 et_always_center_on_mobile\">\n<p>\t\t\t\t<span class=\"et_pb_image_wrap\"><img decoding=\"async\" src=\"https:\/\/devenabled.com\/wp-content\/uploads\/2019\/11\/DefaultPhysicsAsset.jpg\" alt=\"\" title=\"Bad, bad physics asset collider!!\"\/><\/span>\n\t\t\t<\/div>\n<div class=\"et_pb_text et_pb_module et_pb_bg_layout_light et_pb_text_align_left  et_pb_text_6\">\n<div class=\"et_pb_text_inner\">\n<p>To rectify this simply select the purple collider or colliders if you have more than one and hit delete. You\u2019ll now have a clean physics asset ready to go.<\/p>\n<p>On the left side of your screen navigate to the root bone of your mesh and add a <strong>Sphere Shape<\/strong>. This will act as our reference to act as the root of the mesh to keep it grounded in the world and also as the hinge point of the moveable top part.<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<p> <!-- .et_pb_text --><\/p>\n<div class=\"et_pb_module et_pb_image et_pb_image_3 et_always_center_on_mobile\">\n<p>\t\t\t\t<span class=\"et_pb_image_wrap\"><img decoding=\"async\" src=\"https:\/\/devenabled.com\/wp-content\/uploads\/2019\/11\/GifAddShape.gif\" alt=\"\"\/><\/span>\n\t\t\t<\/div>\n<div class=\"et_pb_text et_pb_module et_pb_bg_layout_light et_pb_text_align_left  et_pb_text_7\">\n<p>\n\t\t\t\t\tSelect the new <strong>Sphere Shape<\/strong>, hit the <strong>R <\/strong>key to enable the scale widget and scale the sphere down pretty small.\n\t\t\t\t<\/p>\n<\/p><\/div>\n<p> <!-- .et_pb_text --><\/p>\n<div class=\"et_pb_module et_pb_image et_pb_image_4 et_always_center_on_mobile\">\n<p>\t\t\t\t<span class=\"et_pb_image_wrap\"><img decoding=\"async\" src=\"https:\/\/devenabled.com\/wp-content\/uploads\/2019\/11\/sphereSize.jpg\" alt=\"\" title=\"Ideal size for the new sphere shape collider.\"\/><\/span>\n\t\t\t<\/div>\n<div class=\"et_pb_text et_pb_module et_pb_bg_layout_light et_pb_text_align_left  et_pb_text_8\">\n<p>\n\t\t\t\t\tThese next steps are important to stop the object falling through the floor when we place it in the world later so let\u2019s move over to the Details panel and make some updates with the new <strong>Sphere Shape<\/strong> selected, it should currently be called <strong>None<\/strong> and that\u2019s fine.\n\t\t\t\t<\/p>\n<\/p><\/div>\n<p> <!-- .et_pb_text --><\/p>\n<div class=\"et_pb_module et_pb_image et_pb_image_5 et_always_center_on_mobile\">\n<p>\t\t\t\t<span class=\"et_pb_image_wrap\"><img decoding=\"async\" src=\"https:\/\/devenabled.com\/wp-content\/uploads\/2019\/11\/gifDetailsPanel.gif\" alt=\"\" title=\"Ideal size for the new sphere shape collider.\"\/><\/span>\n\t\t\t<\/div>\n<div class=\"et_pb_text et_pb_module et_pb_bg_layout_light et_pb_text_align_left  et_pb_text_9\">\n<p>\n\t\t\t\t\tWith the <strong>Capsule <\/strong>created you\u2019ll need to modify the form to match similar to what I have below. It\u2019s not important for this style of interaction to match the collider to the form of the mesh, we just need something small and light to knock around.\n\t\t\t\t<\/p>\n<\/p><\/div>\n<p> <!-- .et_pb_text --><\/p>\n<div class=\"et_pb_module et_pb_gallery et_pb_gallery_1 et_pb_gallery_grid et_pb_bg_layout_light et_pb_text_align_center clearfix\">\n<div class=\"et_pb_gallery_items et_post_gallery clearfix\" data-per_page=\"2\">\n<div class=\"et_pb_gallery_item et_pb_grid_item et_pb_bg_layout_light\">\n<div class=\"et_pb_gallery_image landscape\">\n\t\t\t\t\t<a href=\"https:\/\/devenabled.com\/wp-content\/uploads\/2019\/11\/Capsule1-1.png\" title=\"\" target=\"_blank\" rel=\"noopener\"><br \/>\n\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/devenabled.com\/wp-content\/uploads\/2019\/11\/Capsule1-1-400x284.png\" alt=\"\"\/><span class=\"et_overlay\"\/><br \/>\n\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n<p class=\"et_pb_gallery_caption\">\n\t\t\t\t\t\tDefault Capsule\n\t\t\t\t\t\t<\/p>\n<\/div>\n<div class=\"et_pb_gallery_item et_pb_grid_item et_pb_bg_layout_light\">\n<div class=\"et_pb_gallery_image landscape\">\n\t\t\t\t\t<a href=\"https:\/\/devenabled.com\/wp-content\/uploads\/2019\/11\/Capsule2.png\" title=\"\" target=\"_blank\" rel=\"noopener\"><br \/>\n\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/devenabled.com\/wp-content\/uploads\/2019\/11\/Capsule2-400x284.png\" alt=\"\"\/><span class=\"et_overlay\"\/><br \/>\n\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n<p class=\"et_pb_gallery_caption\">\n\t\t\t\t\t\tGoal Capsule\n\t\t\t\t\t\t<\/p>\n<\/div>\n<\/div>\n<p><!-- .et_pb_gallery_items --><\/div>\n<p><!-- .et_pb_gallery --><\/p>\n<div class=\"et_pb_text et_pb_module et_pb_bg_layout_light et_pb_text_align_left  et_pb_text_10\">\n<div class=\"et_pb_text_inner\">\n<p>Also, note that there\u2019s actually a small gap between the <strong>Sphere <\/strong>and the <strong>Capsule<\/strong>. I found this helps to keep the trunk looking as though it\u2019s stuck in place whilst only allowing the bush to move.<\/p>\n<p>Now we need to constrain our <strong>Capsule <\/strong>to actually remain close to the <strong>Sphere <\/strong>when we simulate physics so let\u2019s add constraints!! Right-click your upper part of the mesh, select <strong>Constraints<\/strong> and select the lower part of the mesh as the constraint target.<\/p>\n<p>\u00a0<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<p> <!-- .et_pb_text --><\/p>\n<div class=\"et_pb_module et_pb_image et_pb_image_6 et_always_center_on_mobile\">\n<p>\t\t\t\t<span class=\"et_pb_image_wrap\"><img decoding=\"async\" src=\"https:\/\/devenabled.com\/wp-content\/uploads\/2019\/11\/Constrain.gif\" alt=\"\" title=\"Ideal size for the new sphere shape collider.\"\/><\/span>\n\t\t\t<\/div>\n<div class=\"et_pb_text et_pb_module et_pb_bg_layout_light et_pb_text_align_left  et_pb_text_11\">\n<div class=\"et_pb_text_inner\">\n<h2><strong data-rich-text-format-boundary=\"true\">Limiting Physics<\/strong><\/h2>\n<p>We can now begin the fun process of tweaking our physics settings to get the kind of bounce and wobble we want for our given object. <br data-rich-text-line-break=\"true\"\/>Begin by selecting one of the new Constraint objects in the Skeleton Tree window. If you\u2019ve followed exactly then you\u2019ll have two but they\u2019re duplicates of the same object which will manage the same constraints so select either.<\/p>\n<p>First, we\u2019ll go to the <strong>Angular Limits <\/strong>section in the <strong>Details <\/strong>panel and set everything to <strong>Limited<\/strong> and I\u2019ve chosen to set both <strong>Swing Limits <\/strong>and the <strong>Twist Limit <\/strong>to <strong>1<\/strong>.<\/p>\n<p>\u00a0<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<p> <!-- .et_pb_text --><\/p>\n<div class=\"et_pb_module et_pb_image et_pb_image_7 et_always_center_on_mobile\">\n<p>\t\t\t\t<span class=\"et_pb_image_wrap\"><img decoding=\"async\" src=\"https:\/\/devenabled.com\/wp-content\/uploads\/2019\/11\/GifAngularLimit.gif\" alt=\"\" title=\"Ideal size for the new sphere shape collider.\"\/><\/span>\n\t\t\t<\/div>\n<div class=\"et_pb_text et_pb_module et_pb_bg_layout_light et_pb_text_align_left  et_pb_text_12\">\n<p>\n\t\t\t\t\tWe can begin testing our results by using the debug simulation options. Inside of any Physics asset you can start a simulation by pressing the <strong>Simulate <\/strong>button on the toolbar and then affect the asset by holding <strong>Left Shift + Right mouse click\/dragging <\/strong>whilst the mouse is hovering over the capsule collider. This can be a little finicky in this setup due to the size of the colliders.\n\t\t\t\t<\/p>\n<\/p><\/div>\n<p> <!-- .et_pb_text --><\/p>\n<div class=\"et_pb_module et_pb_image et_pb_image_8 et_always_center_on_mobile\">\n<p>\t\t\t\t<span class=\"et_pb_image_wrap\"><img decoding=\"async\" src=\"https:\/\/devenabled.com\/wp-content\/uploads\/2019\/11\/gifPhysicsTest1.gif\" alt=\"\" title=\"Ideal size for the new sphere shape collider.\"\/><\/span>\n\t\t\t<\/div>\n<div class=\"et_pb_text et_pb_module et_pb_bg_layout_light et_pb_text_align_left  et_pb_text_13\">\n<div class=\"et_pb_text_inner\">\n<p>This isn\u2019t quite right, the bush looks a little more drunk than just wobbly\u2026<\/p>\n<p>To make the final corrections we can go to the <strong>Angular Motor <\/strong>settings still inside the <strong>Details <\/strong>panel. Change the <strong>Angular Drive Mode <\/strong>dropdown to <strong>Twist and Swing<\/strong>. Be sure to tick <strong>Twist <\/strong>and <strong>Swing <\/strong>under <strong>Target Orientation <\/strong>so that we can update the <strong>Strength <\/strong>to something like <strong>500 <\/strong>to begin. Finally, tick the <strong>Twist <\/strong>and <strong>Swing <\/strong>boxes under <strong>Target Velocity <\/strong>and set <strong>Strength <\/strong>to <strong>100<\/strong>. You can then update these values to get the results to your liking.<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<p> <!-- .et_pb_text --><\/p>\n<div class=\"et_pb_module et_pb_image et_pb_image_9 et_always_center_on_mobile\">\n<p>\t\t\t\t<span class=\"et_pb_image_wrap\"><img decoding=\"async\" src=\"https:\/\/devenabled.com\/wp-content\/uploads\/2019\/11\/GIFAngularMotor.gif\" alt=\"\" title=\"Ideal size for the new sphere shape collider.\"\/><\/span>\n\t\t\t<\/div>\n<div class=\"et_pb_text et_pb_module et_pb_bg_layout_light et_pb_text_align_left  et_pb_text_14\">\n<p>\n\t\t\t\t\tOK! Let\u2019s test this again.\n\t\t\t\t<\/p>\n<\/p><\/div>\n<p> <!-- .et_pb_text --><\/p>\n<div class=\"et_pb_module et_pb_image et_pb_image_10 et_always_center_on_mobile\">\n<p>\t\t\t\t<span class=\"et_pb_image_wrap\"><img decoding=\"async\" src=\"https:\/\/devenabled.com\/wp-content\/uploads\/2019\/11\/gifPhysicsTest2.gif\" alt=\"\" title=\"Ideal size for the new sphere shape collider.\"\/><\/span>\n\t\t\t<\/div>\n<div class=\"et_pb_text et_pb_module et_pb_bg_layout_light et_pb_text_align_left  et_pb_text_15\">\n<div class=\"et_pb_text_inner\">\n<p>And that\u2019s pretty much it. Drag your <strong>Physics Asset<\/strong> straight into your level and make sure to tick <strong>Simulate Physics<\/strong> under the <strong>Collision <\/strong>settings. You can now tweak things to meet your requirements, try adding some extra bones and constraints but just make sure the object collision is set to <strong>Block <\/strong>anything you want to affect it such as the player, enemies, projectiles etc.<\/p>\n<p>A couple of tips to leave you to experiment with:<\/p>\n<ol class=\"rich-text editor-rich-text__editable block-editor-rich-text__editable is-selected\" role=\"textbox\" contenteditable=\"true\" aria-multiline=\"true\" aria-label=\"Write list\u2026\">\n<li>Try disabling <strong>Block World Static <\/strong>and <strong>World Dynamic <\/strong>to avoid the asset colliding with and getting stuck on floors to avoid drastic bouncing.<\/li>\n<li>You can change the weight of the <strong>Capsule Shape <\/strong>to make the object feel heavier or lighter.<\/li>\n<\/ol>\n<p>I\u2019ll be releasing the full source to my Epic Mega Jam submission as soon as I\u2019ve had the chance to tidy the code a little over on my <a href=\"https:\/\/www.patreon.com\/DevEnabled\" target=\"_blank\" rel=\"noopener\">Patreon<\/a> page so consider supporting to help allow to focus on making more content like this.<\/p>\n<p>Thanks for sticking around to the end.<\/p>\n<p>-Rob<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<p> <!-- .et_pb_text -->\n\t\t\t<\/div>\n<p> <!-- .et_pb_column --> <!-- .et_pb_column --><\/p><\/div>\n<p> <!-- .et_pb_row --><\/p><\/div>\n<p> <!-- .et_pb_section -->\t\t\t\t\t<\/div>\n<p> <!-- .entry-content --><br \/>\n\t\t\t\t\t <!-- .et_post_meta_wrapper -->\n\t\t\t\t<\/div>\n<p>[ad_2]<br \/>\n<br \/><a href=\"https:\/\/devenabled.com\/ue4-interactive-physics-based-foliage\" target=\"_blank\" rel=\"noopener\">Source link <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] Welcome to my first blog post, it\u2019s only taken more than a year but I think I\u2019ve found an interesting topic to start with, Physics Constraints. This short tutorial post comes from one of my favourite features I\u2019ve implemented into my Epic Mega jam entry, the wobbly bush thingy. It\u2019s worth noting before getting [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":527,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-526","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"blocksy_meta":[],"jetpack_featured_media_url":"https:\/\/e928cfdc7rs.exactdn.com\/info\/uploads\/sites\/3\/2019\/11\/UE4-Interactive-Physics-Based-Foliage-Dev-Enabled.gif?strip=all","jetpack_shortlink":"https:\/\/wp.me\/p2TFCd-8u","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/www.danielparente.net\/en\/wp-json\/wp\/v2\/posts\/526","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.danielparente.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.danielparente.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.danielparente.net\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.danielparente.net\/en\/wp-json\/wp\/v2\/comments?post=526"}],"version-history":[{"count":0,"href":"https:\/\/www.danielparente.net\/en\/wp-json\/wp\/v2\/posts\/526\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.danielparente.net\/en\/wp-json\/wp\/v2\/media\/527"}],"wp:attachment":[{"href":"https:\/\/www.danielparente.net\/en\/wp-json\/wp\/v2\/media?parent=526"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.danielparente.net\/en\/wp-json\/wp\/v2\/categories?post=526"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.danielparente.net\/en\/wp-json\/wp\/v2\/tags?post=526"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}