{"version": "1.0", "type": "rich", "title": "Anatomy of a Falcon", "author_name": "kontextmaschine", "author_url": "https://kontextmaschine.com", "provider_name": "kontextmaschine", "provider_url": "https://kontextmaschine.com", "url": "https://kontextmaschine.com/post/178152604589/", "html": "<p><a href=\"https://heatandapathy.tumblr.com/post/178113905746/anatomy-of-a-falcon\" class=\"tumblr_blog\" target=\"_blank\">heatandapathy</a>:</p>\n<blockquote>\n<p><a href=\"https://outerloop.tumblr.com/post/177984549261/anatomy-of-a-falcon\" class=\"tumblr_blog\" target=\"_blank\">outerloop</a>:</p>\n\n<blockquote>\n<figure class=\"tmblr-embed tmblr-full\" data-provider=\"youtube\" data-orig-width=\"540\" data-orig-height=\"304\" data-url=\"https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DEkiu6QQ_EeU\"><iframe width=\"540\" height=\"304\" id=\"youtube_iframe\" src=\"https://www.youtube.com/embed/Ekiu6QQ_EeU?feature=oembed&amp;enablejsapi=1&amp;origin=https://safe.txmblr.com&amp;wmode=opaque\" frameborder=\"0\" allowfullscreen=\"\"></iframe></figure><p>We recently announced <b><i><a href=\"https://www.falconage.com/\" target=\"_blank\">Falcon Age</a></i></b>, a game about nurturing a falcon from a baby, bonding with them, and together resisting the forces that colonise your planet. Falcon Age will be out in 2019 for PS4 and PS VR.<br/></p>\n<p>\n\nWe showed off the game at <a href=\"https://www.penny-arcade.com/news/post/2018/09/05/bring-the-heat1\" target=\"_blank\"><b><i>PAX</i></b></a> last week, got a great <a href=\"https://uploadvr.com/falcon-age-preview-metroidvania/\" target=\"_blank\"><b><i>response</i></b></a>, especially on the <a href=\"https://twitter.com/OuterloopGames/status/1038473656987340800\" target=\"_blank\"><i><b>falcon</b></i></a>. Let\u2019s do a deep dive of the design of the falcon, animation and rig setup, AI and navigation, feather tech, and raptor sounds.<br/></p>\n<p><b></b></p>\n<h2>Falcon Design</h2>\n<p><a href=\"https://twitter.com/ekanaut\" target=\"_blank\">Chandana Ekanayake</a> and Darran Hurlbut</p>\n<figure data-orig-width=\"570\" data-orig-height=\"572\" class=\"tmblr-full\"><img src=\"/media/tumblr_inline_pex0ebpIG31w7x9pm_540_ad328e0903a5.png\" alt=\"image\" data-orig-width=\"570\" data-orig-height=\"572\"/></figure><p>\n\nOur falcon design combines multiple raptor types. She is big as a golden eagle, fights like a hawk, has some eagle-hawk resemblance, some owl-like tufts, and falcon tendancies. She\u2019s one of the last of her kind left in our world and we wanted to make her unique visually for the story and also visually stand out during gameplay against the sky and desert like environments.</p>\n<figure data-orig-width=\"570\" data-orig-height=\"570\" class=\"tmblr-full\"><img src=\"/media/tumblr_inline_pex0ervqle1w7x9pm_540_237de14c1bdd.png\" alt=\"image\" data-orig-width=\"570\" data-orig-height=\"570\"/></figure><p>\n\nOne of the early inspirations for Falcon Age came from videos of golden eagles hunting large mountain goats. That led to some research on falconry and the idea of having a falcon as a pet and designing mechanics and gameplay around that core idea. We made a rough prototype early on to test out the ideas. The first time we successfully whistled for the bird in VR and saw the scale change from it approaching from a distance to landing on our hand, we knew we were on to something that could serve as the core of a unique game.\u00a0\u00a0<br/></p>\n<h2>Animation and Rig</h2>\n<p><a href=\"https://www.instagram.com/azostuff/\" target=\"_blank\">Aung Zaw Oo</a></p>\n<figure data-orig-width=\"570\" data-orig-height=\"380\" class=\"tmblr-full\"><img src=\"/media/tumblr_inline_pewx1p3od71w7x9pm_540_b8a039e7d020.png\" alt=\"image\" data-orig-width=\"570\" data-orig-height=\"380\"/></figure><p><b>FALCON FEET TRACKING</b><br/></p>\n<p>There are lots of animation options out there, but none of them would easily solve our specific falcon feet tracking needs. Inverse kinematic setups, root motion and other complex plugins could do the job if we had a bigger team and more time to dedicate to it. We wanted a more predictable outcome so we went with a multiple pose based solution made in 3dsmax.\u00a0\u00a0</p>\n<p>However, the biggest reason for not using IK, is that this is the best way I could come up within a couple of days. We were building the prototype so fast back at the beginning of the project that we didn\u2019t have time to look at what other solutions are available. This is the most reliable and least ugly way I found and we\u2019ve stuck with it since. If it\u2019s not broken, don\u2019t fix it.</p>\n<p>Here is how I imagined the bird claws blending IRL. The ball is the fist that is attached to the VR motion controls.There are limits to this method. The claws needs to be able to wrap around a fair chunk of the fist and the fist pose needs to be as spherical as possible. </p>\n<figure data-orig-width=\"570\" data-orig-height=\"570\" class=\"tmblr-full\"><img src=\"/media/tumblr_inline_pews0pyEsm1w7x9pm_540_b0fa1e635c71.gif\" alt=\"image\" data-orig-width=\"570\" data-orig-height=\"570\"/></figure><figure data-orig-width=\"570\" data-orig-height=\"321\" class=\"tmblr-full\"><img src=\"/media/tumblr_inline_pewt7d5xTK1w7x9pm_540_ae3615b5b257.jpg\" alt=\"image\" data-orig-width=\"570\" data-orig-height=\"321\"/></figure><p><b></b></p>\n<p>\n\n Note that head and legs are siblings of the pelvis. This makes the bone masking and making separate blend trees easier. Ignore the word \u2018eagle\u2019 in the naming. That was just a temp asset name before we figured out the bird design.<br/></p>\n<p><b><br/></b></p>\n<figure data-orig-width=\"400\" data-orig-height=\"225\" class=\"tmblr-full\"><img src=\"/media/tumblr_inline_pewypzNhPR1w7x9pm_540_7fd7f970e4b4.gif\" alt=\"image\" data-orig-width=\"400\" data-orig-height=\"225\"/></figure><p>Short version of how its done; the fist is a ball and the bird\u2019s feet rotate around the ball using 30 blend poses and shuffle animation to get the feet back to center when the ball(motion hand) has rotated too far. </p>\n<p>\n\n30 Blend Poses on a ball\n\n<br/></p>\n<figure data-orig-width=\"565\" data-orig-height=\"428\" class=\"tmblr-full\"><img src=\"/media/tumblr_inline_pewsimj0ng1w7x9pm_540_00ad30981f05.gif\" alt=\"image\" data-orig-width=\"565\" data-orig-height=\"428\"/></figure><p><br/></p>\n<p>A shuffle animation let feet recenter</p>\n<figure data-orig-width=\"570\" data-orig-height=\"570\" class=\"tmblr-full\"><img src=\"/media/tumblr_inline_pewt587uNu1w7x9pm_540_748258eb6a22.gif\" alt=\"image\" data-orig-width=\"570\" data-orig-height=\"570\"/></figure><p><br/></p>\n<p>And the the blends start again after that quick shuffle animation from the new rotation of the hand. According to our programmer Justin, he is doing some regular old quaternion and linear algebra math. And I\u2019m using 3 float values that he\u2019s giving me and feeding them into those anim blend states.\n\n</p>\n<p><b></b></p>\n<p>For baby bird, the 2nd knuckle on the index finger is treated like a ball.\u00a0<br/></p>\n<figure data-orig-width=\"400\" data-orig-height=\"306\" class=\"tmblr-full\"><img src=\"/media/tumblr_inline_pewx89JqCn1w7x9pm_540_d0aa5a395a3d.gif\" alt=\"image\" data-orig-width=\"400\" data-orig-height=\"306\"/></figure><p>\n\nThe one edge case where the ball concept doesn\u2019t work is when the glove is pointed directly down. Pictured below.\n\n<br/></p>\n<figure data-orig-width=\"570\" data-orig-height=\"380\" class=\"tmblr-full\"><img src=\"/media/tumblr_inline_pewtc2CH0E1w7x9pm_540_11bbbcf7a7ff.png\" alt=\"image\" data-orig-width=\"570\" data-orig-height=\"380\"/></figure><p><b></b></p>\n<p>We had several ways we could\u2019ve dealt with that case. One solution was to have a collider on the forearm part of the glove and have the bird fly away if bird\u2019s collision intersects with it. Ultimately we decided to let it be as is. It\u2019s more player friendly that way since it lets you scratch your left hip while in VR without having the bird leave you. Also most people would never have their hands positioned that way in normal play.\u00a0</p>\n<p>Unless they\u2019re playing in a headstand for some reason.\u00a0<b></b>All kinds of animation features would look wrong or broken in a headstand.</p>\n<figure data-orig-width=\"570\" data-orig-height=\"538\" class=\"tmblr-full\"><img src=\"/media/tumblr_inline_pewx2yS2rA1w7x9pm_540_41217d9a5331.png\" alt=\"image\" data-orig-width=\"570\" data-orig-height=\"538\"/></figure><p><b>FALCON HEAD TRACKING</b></p>\n<p>Short version of how its done; the head (bone_Head) is a direct child of the highest object in the bird skeletal hierarchy ( bone_Root ). </p>\n<p>Bone_Root\u2019s position(not rotation) follows the position of the motion controller and bone_Head counters that motion. Basically a 2-object hierarchy where a positional blend is used to counter motion of the parent object to keep the child object in same global position. The rest of the bird body uses a blend of 27 poses to try its best to keep the bird looking natural.<br/></p>\n<figure data-orig-width=\"560\" data-orig-height=\"560\" class=\"tmblr-full\"><img src=\"/media/tumblr_inline_pewssvTEAY1w7x9pm_540_b298280d9a32.gif\" alt=\"image\" data-orig-width=\"560\" data-orig-height=\"560\"/></figure><p>With the size of the adult bird we have, a 12 cm translation in all axis(24x24x24 cube) seemed ideal for getting the stabilizer effect without stretching the neck too much. The head will also move at the edge of that range and when the motion hand stops moving, that new position is now the new center and another 24cm cube is formed there.\u00a0 Math wise, headlock is mostly just a vector transform with a lot of extra \u2018fluff\u2019 for limiting speed, transitioning in and out, and moving the lock point when it gets too far from the body but the bird is still in the area<b>.</b>\n\n<b><br/></b></p>\n<h2><br/></h2>\n<figure data-orig-width=\"565\" data-orig-height=\"318\" class=\"tmblr-full\"><img src=\"/media/tumblr_inline_pewxfcQxAP1w7x9pm_540_c036216d0995.gif\" alt=\"image\" data-orig-width=\"565\" data-orig-height=\"318\"/></figure><h2><br/></h2>\n<h2>Bird Navigation and AI<br/></h2>\n<p><a href=\"https://twitter.com/OLGJustice\" target=\"_blank\">Justin LaLone</a></p>\n<p><b>BIRD BOREDOM</b><br/></p>\n<p>For the most part, the falcon obeys Ara\u2019s commands and follows her around. \u00a0If you stand around long enough in one area while the bird is just circling or if you launch her with no orders, she will start looking for something else in the area to do - usually hunting or landing on a point of interest. \u00a0She will also take some initiative when perched on Ara if anything else tries to grab her (she\u2019s possessive like that), and likes to help lead Ara to the next hole in lightning golf.</p>\n<p><b>SUN BLINDING PREY</b></p>\n<p>Some of the prey, such as the rabbits, are very skittish and as soon as they notice a falcon diving towards them they will take off for the nearest bolthole. \u00a0They have a more difficult time seeing Ara\u2019s bird if she approaches with the sun behind her, so paying attention to where the light is coming from and sending the bird from that direction can make catching prey easier and more reliable. \u00a0On the other hand, simply diving from higher up can be good too, as the bird can pick up more speed before being noticed, giving her prey less time to dodge out of the way.</p>\n<figure data-orig-width=\"509\" data-orig-height=\"514\" class=\"tmblr-full\"><img src=\"/media/tumblr_inline_pewqlnLqxR1w7x9pm_540_9399fad08331.png\" alt=\"image\" data-orig-width=\"509\" data-orig-height=\"514\"/></figure><p><i>Coming in fast and and from the sun, for a guaranteed hit.</i></p>\n<hr><p><b>FALCON 3D NAVIGATION</b></p>\n<p>Getting a flying animal to reliably traverse a 3D space in a somewhat natural looking way isn\u2019t something you typically find out of the box in a game engine. \u00a0We have roughly three levels of bird-navigation logic going on to get the bird from point A to point B without running into too many things or getting stuck in a corner.</p>\n<figure data-orig-width=\"570\" data-orig-height=\"490\" class=\"tmblr-full\"><img src=\"/media/tumblr_inline_pewqpcgPvw1w7x9pm_540_f5281a70b89c.png\" alt=\"image\" data-orig-width=\"570\" data-orig-height=\"490\"/></figure><p>For high-level navigation to find its way through the world, we build a 3D navigation graph and use A* to find a path. \u00a0What\u2019s probably somewhat unique in our implementation is that we are using the fairly new Unity job system to do all our A* pathfinding, giving us fast searches that stay off the main thread, allowing more time for other AI, physics, and more stuff in general. \u00a0Most of the graph is generated automatically, with manually placed connections for flying through narrow gaps like windows that are small or require an approach from a good angle.<br/></p>\n<figure data-orig-width=\"570\" data-orig-height=\"262\" class=\"tmblr-full\"><img src=\"/media/tumblr_inline_pewqq1LxM81w7x9pm_540_2aaf7bcd742c.png\" alt=\"image\" data-orig-width=\"570\" data-orig-height=\"262\"/></figure><p>\n\nThe purple line is a rough path for it to follow to get around the big rocks in between where the falcon started and where Ara is standing. \u00a0The bird doesn\u2019t try to follow this line very closely; it would be trying to make some pretty strange and sharp turns if it tried, so as soon as it has a clear shot to the next part of the path it heads there instead.\n\n<br/></p>\n<figure data-orig-width=\"570\" data-orig-height=\"636\" class=\"tmblr-full\"><img src=\"/media/tumblr_inline_pewqqp4dQX1w7x9pm_540_a26dfc1251f4.png\" alt=\"image\" data-orig-width=\"570\" data-orig-height=\"636\"/></figure><p>Sometimes smaller objects or moving objects can get in the way. \u00a0The falcon looks ahead and goes over or around these objects. \u00a0This rock is actually just big enough that it would normally navigate around it with A*, but I forced it to \u201cforget\u201d about that for now. \u00a0Here, it\u2019s turning left to go around the rock - the red lines show where it has been looking for the past few frames. \u00a0It usually won\u2019t try to go under things in this way, but the A* navigation can direct it to go under arches or walkways.<br/></p>\n<p>The last level of bird flight logic is the actual maneuvering logic, or how the bird decides how fast it wants to go, how much to ascend or descend, how quickly to turn, and how it applies physics accelerations, limited by what it is allowed to do, to get there. \u00a0This feeds into the animation system telling it how hard the bird is working, what sort of pose it should be in, if it should be banking, etc. \u00a0The object avoidance is tied in somewhat strongly with this, but all the A* navigation is completely separate. \u00a0It is also a big pile of math and logic.</p>\n<p><b><br/></b></p>\n<h2>Feathers and Rendering</h2>\n<p><a href=\"https://twitter.com/bgolus\" target=\"_blank\">Ben Golus</a></p>\n<p>The small body feathers, or contour feathers, on our birds flutter in the wind, and react to the player\u2019s hands brushing against them to give a greater sense of tactile interactivity. The way this was done for the PAX demo is a bit of a hack which I hope to replace before we ship. (This of course means it\u2019s the solution that will ship with the game.) The short description is each small feather on the bird is a treated like many grass or vegetation shaders. Several overlapping sine waves are used to calculate some simple noise used to flutter the feathers and give them some life. Their timing is offset by a random value per feather stored in the vertex color, and the flutter movement is scaled also using the vertex color. This means the base of the feathers don\u2019t move, but the tips do. It also means longer feathers move more than shorter ones.</p>\n<figure data-orig-width=\"570\" data-orig-height=\"570\" class=\"tmblr-full\"><img src=\"/media/tumblr_inline_pewqy22oCx1w7x9pm_540_db75f103820d.png\" alt=\"image\" data-orig-width=\"570\" data-orig-height=\"570\"/></figure><p>\n\nUnlike most grass shaders, we need the feathers to not move in random directions, so we can\u2019t use world or local space directions. Plus this is on a skinned mesh which makes the direction even more dynamic. Instead I use a combination of the feather\u2019s vertex normal and tangent so the feathers flutter in and out and side to side relative to their orientation. This isn\u2019t strictly accurate, but for small movements like this it won\u2019t be obviously wrong.\n\n<br/></p>\n<p><b></b></p>\n<p>To handle hand interactions, the player\u2019s hand has a script which tracks the bones and creates a list of capsules that follow the shape of each finger, and a sphere for the palm. If the hand is in range, the vertex shader iterates over the list of capsules to find closest distance to one and softly scales down the flutter if a capsule one is overlapping it. The feathers are also squished down towards the body. The capsules are oversized as the overlapping tests are soft, so this isn\u2019t an instant on-off, but a gradual change. It\u2019s roughly tuned so that once the visible finger is touching the feather it has stopped moving entirely and will push down.</p>\n<figure data-orig-width=\"570\" data-orig-height=\"320\" class=\"tmblr-full\"><img src=\"/media/tumblr_inline_pewqz0NqS81w7x9pm_540_7fa1c6d83d09.png\" alt=\"image\" data-orig-width=\"570\" data-orig-height=\"320\"/></figure><p>\n\nHere\u2019s an early test of this system in action. You can see how the feathers react to the sphere before it actually touches it, but the interaction is still convincing.\n\n<br/></p>\n<figure data-orig-width=\"378\" data-orig-height=\"482\" class=\"tmblr-full\"><img src=\"/media/tumblr_inline_pewtv6JZSh1w7x9pm_540_b9c94988c24d.gif\" alt=\"image\" data-orig-width=\"378\" data-orig-height=\"482\"/></figure><figure data-orig-width=\"400\" data-orig-height=\"225\" class=\"tmblr-full\"><img src=\"/media/tumblr_inline_pewx6wuYqb1w7x9pm_540_09630c1bcec6.gif\" alt=\"image\" data-orig-width=\"400\" data-orig-height=\"225\"/></figure><p>For the final release of the game I\u2019d like to move to a geometry shader or compute shader approach which would solve some of the issues the effect currently has when only one vertex of a feather is being overlapped, and the fact the feathers light normals don\u2019t change when being touched.<b><br/></b></p>\n<p><b>FALCON DAMAGE FEEDBACK</b></p>\n<p>We needed some way to show when the bird is hurt, and we wanted to avoid using a health bar or similar mechanic as much as possible. Animation is used to make the bird look tired, and in pain, but we still didn\u2019t find that it was clear enough to users that she had taken damage. We decided we wanted her to look physically damaged with blood and frayed feathers to really strongly communicate her state. The obvious answer was to do a material swap. However we also wanted to show a gradual increase in damage rather than a hard on / off, and did not want to have to have a lot of different maps. There was also the issue that most feathers shared the same UVs, which meant blood spots would be repeated all over the bird.</p>\n<p>The solution we ended up with was done in two parts. First was feather damage and fraying. The alpha channel of each feather is setup in a special way so that both an undamaged and damaged version exist in the alpha at different opacities. The feathers are using alpha test cutout (actually alpha to coverage) at 50% opacity when at normal health, and 25% opacity when damaged to switch between the two states.</p>\n<figure data-orig-width=\"570\" data-orig-height=\"732\" class=\"tmblr-full\"><img src=\"/media/tumblr_inline_pewr26Rdcv1w7x9pm_540_d37b11586365.png\" alt=\"image\" data-orig-width=\"570\" data-orig-height=\"732\"/></figure><p><b></b></p>\n<p>For blood splatter the bird has a second UV for the blood texture so we don\u2019t have to reuse the original feather texture UVs, and then we blend in the blood on top of the base texture. The result is we only need one base texture set, and one blood splatter texture set for the bird and we can get variable damage effects on the bird.</p>\n<figure data-orig-width=\"570\" data-orig-height=\"590\" class=\"tmblr-full\"><img src=\"/media/tumblr_inline_pewr3aYDu61w7x9pm_540_814290eb4687.png\" alt=\"image\" data-orig-width=\"570\" data-orig-height=\"590\"/></figure><figure data-orig-width=\"570\" data-orig-height=\"590\" class=\"tmblr-full\"><img src=\"/media/tumblr_inline_pewr3pFgUI1w7x9pm_540_4857575c59ad.png\" alt=\"image\" data-orig-width=\"570\" data-orig-height=\"590\"/></figure><figure data-orig-width=\"570\" data-orig-height=\"590\" class=\"tmblr-full\"><img src=\"/media/tumblr_inline_pewr3zSbgj1w7x9pm_540_8b9e80ed25d6.png\" alt=\"image\" data-orig-width=\"570\" data-orig-height=\"590\"/></figure><p><b><br/></b></p>\n<h2>Raptor Sounds</h2>\n<p><a href=\"https://twitter.com/ripstreet\" target=\"_blank\">Rob Pearsall</a></p>\n<figure data-orig-width=\"565\" data-orig-height=\"283\" class=\"tmblr-full\"><img src=\"/media/tumblr_inline_pewxgcPSQz1w7x9pm_540_c60147e12440.gif\" alt=\"image\" data-orig-width=\"565\" data-orig-height=\"283\"/></figure><p>The bird wasn\u2019t designed to be different - futuristic or magical - from any bird in our world, just an amalgam of several flying raptors (except for wearing hats); so, it didn\u2019t make any sense to create a voice for it that might sound \u2018cinematically awesome\u2019 - it just had to work and be believable.</p>\n<p>That said, I did have the choice of \u201cborrowing\u201d the calls of any raptor I thought would communicate to the player the various moods, feelings, and responses of the bird. \u00a0So, I listened to the sounds that raptors make; and to my surprise, the biggest, most impressive bird - the eagle - was absolutely the worst sounding predator of them all. \u00a0First place for \u201cdon\u2019t use this\u201d.</p>\n<p>The hawk is always a great choice. \u00a0Everybody loves the screech of a hawk. \u00a0I used to think that there was only one good recording of a hawk screech and every sound designer owned it and that\u2019s why all hawks in all shows and movies sound the same. \u00a0Not true. \u00a0It turns out, all hawks sound the same. \u00a0Not much variation at all. \u00a0Now, don\u2019t get me wrong, it sounds awesome, so yea\u2026 we\u2019ve got that sound on our bird too. \u00a0But that\u2019s not all.</p>\n<p>The best thing I had going for me was that I didn\u2019t have to limit our falcon voice to one specific kind of falcon; and there are many kinds. \u00a0Because of this, I could liberally choose any sound any falcon produces that makes sense as a kind of emotional statement from the bird. \u00a0</p>\n<p><b></b></p>\n<p>Conveniently, the emotions were limited; I name them as statements from the bird: </p>\n<ul><li>All is calm, all is well</li>\n<li>I hear you call me</li>\n<li>I\u2019m attacking</li>\n<li>I\u2019m hurt, but I\u2019m still flying</li>\n<li>That hurts</li>\n</ul><p>Getting a recording of a raptor that\u2019s annoyed is really easy; show up with a bunch of recording gear, get into it\u2019s space, and it\u2019s already annoyed. \u00a0So, there\u2019s a lot of material of raptors sounding negative and mad. \u00a0This works for \u2018pain\u2019. \u00a0The hawk\u2019s sounds work for flying responses and attack calls. \u00a0The \u201call is calm\u201d sounds were the difficult ones. \u00a0There were several chirps that worked, but then I had to edit a lot of different kind of calls to get partial, short squawks that fit with the chirps, and it worked.</p>\n<p>Keeping track of the bird sonically while in game\u2026 well, that\u2019s another story for later.</p>\n<p><br/></p>\n<h2>Thank you!</h2>\n<figure data-orig-width=\"565\" data-orig-height=\"318\" class=\"tmblr-full\"><img src=\"/media/tumblr_inline_pewxkufc5m1w7x9pm_540_96ff4a2df7ce.gif\" alt=\"image\" data-orig-width=\"565\" data-orig-height=\"318\"/></figure><p>Thanks for reading. For more info and latest updates follow <a href=\"https://twitter.com/outerloopgames\" target=\"_blank\"><b>@outerloopgames</b></a></p>\n</blockquote>\n\n<p><a class=\"tumblelog\" href=\"https://tmblr.co/m-akD4kuyoTAxf9aaF-TKMA\" target=\"_blank\">@demonladytakkuri</a> </p>\n<h1>LOOK AT IT :0</h1>\n</blockquote>", "thumbnail_url": "https://kontextmaschine.com/media/tumblr_inline_pex0ebpIG31w7x9pm_540_ad328e0903a5.png", "thumbnail_width": 540, "thumbnail_height": 542}