{"id":999,"date":"2022-03-08T23:52:44","date_gmt":"2022-03-08T23:52:44","guid":{"rendered":"https:\/\/lucyestela.com\/dev\/?p=999"},"modified":"2022-03-09T03:57:02","modified_gmt":"2022-03-09T03:57:02","slug":"recording-and-playback-of-live-link-animations-with-your-metahuman","status":"publish","type":"post","link":"https:\/\/lucyestela.com\/dev\/unreal\/recording-and-playback-of-live-link-animations-with-your-metahuman\/","title":{"rendered":"Recording and Playback of LiveLink Animations with your Metahuman"},"content":{"rendered":"<div class=\"boldgrid-section\">\n<div class=\"container\">\n<div class=\"row\">\n<div class=\"col-md-12 col-xs-12 col-sm-12\">\n<p><iframe loading=\"lazy\" title=\"LiveLink Animation on a Metahuman\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/XjKtTrT-URU?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/p>\n<p class=\"\">Before you read through this tutorial, I&#8217;m assuming you&#8217;ve already linked up your iPhone Live Link app to Unreal and had a bit of a play with it. If not, then I&#8217;d suggest going through my <a href=\"https:\/\/lucyestela.com\/dev\/unreal\/set-up-livelink-with-your-metahuman\/\">Set Up LiveLink with your Metahuman<\/a> tutorial first to get it working.<\/p>\n<p class=\"\">Also I am researching all things Metahumans&nbsp; for a speech therapy app, so if you want to link up with your own characters, you&#8217;d be better off reading through the&nbsp; <a href=\"https:\/\/docs.unrealengine.com\/4.26\/en-US\/AnimatingObjects\/SkeletalMeshAnimation\/FacialRecordingiPhone\/\">Unreal Engine Official Tutorial<\/a>.<\/p>\n<p class=\"\">So from here then you have LiveLink set up and when you press Play &gt; Simulate the metahuman is copying your facial poses.<\/p>\n<p class=\"\">So to record you need to open up Take Recorder, which is Window &gt; Cinematics &gt; Take Recorder<\/p>\n<p class=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1009 size-full\" src=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder2-e1646703877743.jpg\" alt=\"\" width=\"420\" height=\"237\" srcset=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder2-e1646703877743.jpg 420w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder2-e1646703877743-300x169.jpg 300w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder2-e1646703877743-250x141.jpg 250w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder2-e1646703877743-319x180.jpg 319w\" sizes=\"auto, (max-width: 420px) 100vw, 420px\" \/><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\">It will open up in a little window next to your view port. Add your phone as a source by clicking the green <strong>+source<\/strong> button &gt; <strong>From LinkLink<\/strong> &gt;<strong> choose your phone.&nbsp;<\/strong>I&#8217;m not recording audio for these as I&#8217;m just doing facial animations, but I think you can add an audio source here too, like <strong>+source<\/strong> &gt; <strong>microphone<\/strong> <strong>audio<\/strong>, but maybe do a quick google to confirm.<\/p>\n<p class=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1012 size-full\" src=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder3.jpg\" alt=\"\" width=\"352\" height=\"583\" srcset=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder3.jpg 352w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder3-181x300.jpg 181w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder3-250x414.jpg 250w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder3-109x180.jpg 109w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder3-302x500.jpg 302w\" sizes=\"auto, (max-width: 352px) 100vw, 352px\" \/><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\">Click on your phone to bring up extra options and deselect <strong>Use Source Timeco<\/strong><\/p>\n<p class=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1013 size-full\" src=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder4-e1646707666819.jpg\" alt=\"\" width=\"353\" height=\"603\" srcset=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder4-e1646707666819.jpg 353w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder4-e1646707666819-176x300.jpg 176w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder4-e1646707666819-250x427.jpg 250w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder4-e1646707666819-105x180.jpg 105w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder4-e1646707666819-293x500.jpg 293w\" sizes=\"auto, (max-width: 353px) 100vw, 353px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p class=\"\">Start up LiveLink on your phone and press the Unreal Play &gt; Simulate option to see your metahuman respond to your input. When you&#8217;re ready just press the red button on the Take Recorder panel. It will give you a 3 second countdown.&nbsp;<\/p>\n<p class=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1014 size-large\" src=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder5-1024x547.jpg\" alt=\"\" width=\"1024\" height=\"547\" srcset=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder5-1024x547.jpg 1024w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder5-300x160.jpg 300w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder5-768x410.jpg 768w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder5-1536x820.jpg 1536w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder5-250x134.jpg 250w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder5-550x294.jpg 550w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder5-800x427.jpg 800w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder5-337x180.jpg 337w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder5-562x300.jpg 562w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder5-936x500.jpg 936w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder5.jpg 1672w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\">When you&#8217;re finished just hit the stop button.<\/p>\n<p class=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1016 size-full\" src=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder6-e1646778482233.jpg\" alt=\"\" width=\"347\" height=\"521\" srcset=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder6-e1646778482233.jpg 347w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder6-e1646778482233-200x300.jpg 200w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder6-e1646778482233-250x375.jpg 250w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder6-e1646778482233-120x180.jpg 120w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder6-e1646778482233-333x500.jpg 333w\" sizes=\"auto, (max-width: 347px) 100vw, 347px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p class=\"\">The recording will be saved as a level sequence in a cinematics &gt; Takes &gt; date folder. Open it up and if you are still in play mode you can scrub back and forth to see your animation playback on your metahuman<\/p>\n<p class=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1018 size-full\" src=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder7-e1646778817920.jpg\" alt=\"\" width=\"872\" height=\"481\" srcset=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder7-e1646778817920.jpg 872w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder7-e1646778817920-300x165.jpg 300w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder7-e1646778817920-768x424.jpg 768w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder7-e1646778817920-250x138.jpg 250w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder7-e1646778817920-550x303.jpg 550w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder7-e1646778817920-800x441.jpg 800w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder7-e1646778817920-326x180.jpg 326w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder7-e1646778817920-544x300.jpg 544w\" sizes=\"auto, (max-width: 872px) 100vw, 872px\" \/><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\">Okay so now we have an animation, but I want to save it in a way that I can apply it to my metahuman when I press a button. I&#8217;ll be creating a lot of these facial animations and will call them all in a state machine for the metahuman facial blueprint. So my next step is to save this animation out. First unlock the sequence by clicking the padlock in the top right corner. And double click on the blue track to open it.<\/p>\n<p class=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1019 size-large\" src=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder8-e1646779904531-1024x306.jpg\" alt=\"\" width=\"1024\" height=\"306\" srcset=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder8-e1646779904531-1024x306.jpg 1024w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder8-e1646779904531-300x90.jpg 300w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder8-e1646779904531-768x229.jpg 768w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder8-e1646779904531-1536x459.jpg 1536w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder8-e1646779904531-250x75.jpg 250w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder8-e1646779904531-550x164.jpg 550w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder8-e1646779904531-800x239.jpg 800w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder8-e1646779904531-603x180.jpg 603w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder8-e1646779904531-1005x300.jpg 1005w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder8-e1646779904531.jpg 1571w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p class=\"\">Drag your metahuman from your World Outliner into the timeline of the Level Sequence<\/p>\n<p class=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1021 size-large\" src=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder9-1-1024x634.jpg\" alt=\"\" width=\"1024\" height=\"634\" srcset=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder9-1-1024x634.jpg 1024w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder9-1-300x186.jpg 300w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder9-1-768x475.jpg 768w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder9-1-1536x951.jpg 1536w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder9-1-2048x1268.jpg 2048w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder9-1-250x155.jpg 250w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder9-1-550x340.jpg 550w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder9-1-800x495.jpg 800w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder9-1-291x180.jpg 291w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder9-1-485x300.jpg 485w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder9-1-808x500.jpg 808w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\">There are a couple of things that we don&#8217;t need, so delete out the Body, MetaHuman_ControlRig and the Face_ControlBoard_CtrlRig<\/p>\n<p class=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1023 size-full\" src=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder10.jpg\" alt=\"\" width=\"747\" height=\"474\" srcset=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder10.jpg 747w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder10-300x190.jpg 300w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder10-250x159.jpg 250w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder10-550x349.jpg 550w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder10-284x180.jpg 284w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder10-473x300.jpg 473w\" sizes=\"auto, (max-width: 747px) 100vw, 747px\" \/><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\">Save the animation by right clicking on the Face track and choosing <strong>Bake Animation Sequence &gt; <\/strong>name it and define where you want to save<strong> &gt; OK &gt;&nbsp; Export To Animation Sequence<\/strong><\/p>\n<p class=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1024 size-full aligncenter\" src=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder11-e1646780635245.jpg\" alt=\"\" width=\"279\" height=\"690\" srcset=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder11-e1646780635245.jpg 279w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder11-e1646780635245-121x300.jpg 121w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder11-e1646780635245-250x618.jpg 250w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder11-e1646780635245-73x180.jpg 73w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder11-e1646780635245-202x500.jpg 202w\" sizes=\"auto, (max-width: 279px) 100vw, 279px\" \/><\/p>\n<p class=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1025 size-full aligncenter\" src=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder12-e1646780755931.jpg\" alt=\"\" width=\"513\" height=\"481\" srcset=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder12-e1646780755931.jpg 513w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder12-e1646780755931-300x281.jpg 300w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder12-e1646780755931-250x234.jpg 250w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder12-e1646780755931-192x180.jpg 192w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder12-e1646780755931-320x300.jpg 320w\" sizes=\"auto, (max-width: 513px) 100vw, 513px\" \/><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\">You can open the animation and see it playing back on your metahuman head<\/p>\n<div style=\"width: 1200px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-999-1\" width=\"1200\" height=\"675\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/linkLinkAnimation.mp4?_=1\" \/><a href=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/linkLinkAnimation.mp4\">https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/linkLinkAnimation.mp4<\/a><\/video><\/div>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\">Now I have 3 animations saved out. Idle, nervous and sad and I want my metahuman to play them based on the button I press in the control panel in my Hololens 2 app. I already have my Mixamo body animations playing, and now I want facial animations to go along with them.&nbsp;<\/p>\n<p class=\"\">For playback on your metahuman, you&#8217;ll be working with the Face_AnimBP. Search for it in your Content Browser and open it.<\/p>\n<p class=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1000 size-full\" src=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/recording_1.jpg\" alt=\"\" width=\"786\" height=\"468\" srcset=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/recording_1.jpg 786w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/recording_1-300x179.jpg 300w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/recording_1-768x457.jpg 768w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/recording_1-250x149.jpg 250w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/recording_1-550x327.jpg 550w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/recording_1-302x180.jpg 302w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/recording_1-504x300.jpg 504w\" sizes=\"auto, (max-width: 786px) 100vw, 786px\" \/><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\">Open up the AnimGraph and you&#8217;ll see that LiveLink is already set up and feeding data to your metahuman. Great, but we want to feed it our animations so we need to create a new State Machine.&nbsp; So right click and create a State Machine node. I&#8217;ve called it FacialControl&nbsp; but you can name it whatever you like. Double click on it to open it and set it up.<\/p>\n<p class=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1031 size-full\" src=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder13.jpg\" alt=\"\" width=\"800\" height=\"609\" srcset=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder13.jpg 800w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder13-300x228.jpg 300w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder13-768x585.jpg 768w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder13-250x190.jpg 250w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder13-550x419.jpg 550w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder13-236x180.jpg 236w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder13-394x300.jpg 394w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder13-657x500.jpg 657w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\">I&#8217;m going to assume here that you know all about State Machines, how they work, how they are set up. If not then have a quick google for a tutorial on them. But I&#8217;ve just set mine up with a simple idle, upset and nervous state.&nbsp;<\/p>\n<p class=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1034 size-full\" src=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder14.jpg\" alt=\"\" width=\"910\" height=\"459\" srcset=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder14.jpg 910w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder14-300x151.jpg 300w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder14-768x387.jpg 768w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder14-250x126.jpg 250w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder14-550x277.jpg 550w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder14-800x404.jpg 800w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder14-357x180.jpg 357w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder14-595x300.jpg 595w\" sizes=\"auto, (max-width: 910px) 100vw, 910px\" \/><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\">Once you&#8217;ve set up your State Machine, link it into your Metahuman by replacing the LinkLink connection with your StateMachine<\/p>\n<p class=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1046 size-full\" src=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder19.jpg\" alt=\"\" width=\"837\" height=\"538\" srcset=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder19.jpg 837w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder19-300x193.jpg 300w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder19-768x494.jpg 768w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder19-250x161.jpg 250w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder19-550x354.jpg 550w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder19-800x514.jpg 800w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder19-280x180.jpg 280w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder19-467x300.jpg 467w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder19-778x500.jpg 778w\" sizes=\"auto, (max-width: 837px) 100vw, 837px\" \/><\/p>\n<p class=\"\">From here you&#8217;ll create your own process for controlling the State Machine and no doubt it will be better and cleaner than my setup.<\/p>\n<p class=\"\">But just a quick run down, here is how I&#8217;m calling them in my Hololens 2 app.<\/p>\n<p class=\"\">I&#8217;ve also set up 3 booleans isSad, isIdle and isNervous that I control through the three functions activateSad, activateIdle and activateNervous.<\/p>\n<p class=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1035 size-full\" src=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder15-e1646784092214.jpg\" alt=\"\" width=\"636\" height=\"642\" srcset=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder15-e1646784092214.jpg 636w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder15-e1646784092214-297x300.jpg 297w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder15-e1646784092214-150x150.jpg 150w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder15-e1646784092214-48x48.jpg 48w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder15-e1646784092214-250x252.jpg 250w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder15-e1646784092214-550x555.jpg 550w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder15-e1646784092214-178x180.jpg 178w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder15-e1646784092214-495x500.jpg 495w\" sizes=\"auto, (max-width: 636px) 100vw, 636px\" \/><\/p>\n<p class=\"\">Those three functions are super simple just setting the boolean value of the 3 variables. The State Machine that I set up reads these variables and decides when to play the various animations.<\/p>\n<p class=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1036 size-full\" src=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder16.jpg\" alt=\"\" width=\"945\" height=\"240\" srcset=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder16.jpg 945w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder16-300x76.jpg 300w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder16-768x195.jpg 768w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder16-250x63.jpg 250w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder16-550x140.jpg 550w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder16-800x203.jpg 800w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder16-709x180.jpg 709w\" sizes=\"auto, (max-width: 945px) 100vw, 945px\" \/><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\">I have a control panel in my Hololens 2 app that already talks to my <strong>ABP_Metahuman<\/strong> (animation blueprint)&nbsp; linked to the <strong>metahuman_base_skeleton<\/strong> and tells it which body animations to activate.<\/p>\n<p class=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1044 size-full\" src=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder17-1-e1646785229116.jpg\" alt=\"\" width=\"800\" height=\"502\" srcset=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder17-1-e1646785229116.jpg 800w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder17-1-e1646785229116-300x188.jpg 300w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder17-1-e1646785229116-768x482.jpg 768w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder17-1-e1646785229116-250x157.jpg 250w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder17-1-e1646785229116-550x345.jpg 550w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder17-1-e1646785229116-287x180.jpg 287w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder17-1-e1646785229116-478x300.jpg 478w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder17-1-e1646785229116-797x500.jpg 797w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p class=\"\">So in my Metahuman (called Alpha) blueprint I have the functions set up to talk to both the skeleton animation blueprint (ABP_Metahuman) and the facial animation blueprint (Face_AnimBP)&nbsp;<\/p>\n<p class=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1041 size-large\" src=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder18-1-1024x460.jpg\" alt=\"\" width=\"1024\" height=\"460\" srcset=\"https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder18-1-1024x460.jpg 1024w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder18-1-300x135.jpg 300w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder18-1-768x345.jpg 768w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder18-1-1536x690.jpg 1536w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder18-1-250x112.jpg 250w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder18-1-550x247.jpg 550w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder18-1-800x360.jpg 800w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder18-1-400x180.jpg 400w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder18-1-667x300.jpg 667w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder18-1-1112x500.jpg 1112w, https:\/\/lucyestela.com\/dev\/wp-content\/uploads\/2022\/03\/takerecorder18-1.jpg 1842w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\">So when I run it and press various buttons, the whole Metahuman updates with overly exaggerated emotions.<\/p>\n<p><iframe loading=\"lazy\" title=\"LiveLink facial captures played back on Unreal Metahuman\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/vywLCm-v0IQ?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/p>\n<p class=\"\">&nbsp;<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Before you read through this tutorial, I&#8217;m assuming you&#8217;ve already linked up your iPhone Live Link app to Unreal and had a bit of a play with it. If not, then I&#8217;d suggest going through my Set Up LiveLink with your Metahuman tutorial first to get it working. Also I am researching all things Metahumans&nbsp; &#8230; <a title=\"Recording and Playback of LiveLink Animations with your Metahuman\" class=\"read-more\" href=\"https:\/\/lucyestela.com\/dev\/unreal\/recording-and-playback-of-live-link-animations-with-your-metahuman\/\" aria-label=\"More on Recording and Playback of LiveLink Animations with your Metahuman\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"bgseo_title":"","bgseo_description":"","bgseo_robots_index":"index","bgseo_robots_follow":"follow","footnotes":""},"categories":[64,60,114,59],"tags":[],"class_list":["post-999","post","type-post","status-publish","format-standard","hentry","category-character-animation","category-hololens-2","category-metahuman","category-unreal"],"_links":{"self":[{"href":"https:\/\/lucyestela.com\/dev\/wp-json\/wp\/v2\/posts\/999","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lucyestela.com\/dev\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lucyestela.com\/dev\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lucyestela.com\/dev\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lucyestela.com\/dev\/wp-json\/wp\/v2\/comments?post=999"}],"version-history":[{"count":10,"href":"https:\/\/lucyestela.com\/dev\/wp-json\/wp\/v2\/posts\/999\/revisions"}],"predecessor-version":[{"id":1057,"href":"https:\/\/lucyestela.com\/dev\/wp-json\/wp\/v2\/posts\/999\/revisions\/1057"}],"wp:attachment":[{"href":"https:\/\/lucyestela.com\/dev\/wp-json\/wp\/v2\/media?parent=999"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lucyestela.com\/dev\/wp-json\/wp\/v2\/categories?post=999"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lucyestela.com\/dev\/wp-json\/wp\/v2\/tags?post=999"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}