{"id":8246,"date":"2023-12-22T16:22:20","date_gmt":"2023-12-22T16:22:20","guid":{"rendered":"https:\/\/www.katsbits.com\/codex\/?p=8246"},"modified":"2024-09-19T17:13:11","modified_gmt":"2024-09-19T16:13:11","slug":"macos-blender-toolkit-animated-pose","status":"publish","type":"post","link":"https:\/\/www.katsbits.com\/codex\/macos-blender-toolkit-animated-pose\/","title":{"rendered":"MacOS, Blender 4 &#038; IMVU Toolkit \u2013 Animated Pose"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_83 counter-hierarchy ez-toc-counter ez-toc-light-blue ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a015f6f4403e\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a015f6f4403e\"  aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.katsbits.com\/codex\/macos-blender-toolkit-animated-pose\/#description\" >Description<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.katsbits.com\/codex\/macos-blender-toolkit-animated-pose\/#copypaste-poses\" >Copy\/Paste Poses<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.katsbits.com\/codex\/macos-blender-toolkit-animated-pose\/#actionpose-name\" >Action\/Pose Name<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.katsbits.com\/codex\/macos-blender-toolkit-animated-pose\/#avatar-vs-empty-mood\" >Avatar vs Empty Mood<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.katsbits.com\/codex\/macos-blender-toolkit-animated-pose\/#disable-gaze\" >Disable Gaze<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.katsbits.com\/codex\/macos-blender-toolkit-animated-pose\/#timestamps\" >Timestamps<\/a><\/li><\/ul><\/nav><\/div>\n<div style=\"background-color: black; position: relative; padding-bottom: 56.25%; padding-top: 25px; height: 0; overflow: hidden; max-width: 100%;\"><center><iframe style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%;\" src=\"https:\/\/www.youtube.com\/embed\/oDarBs9NK-g?rel=0\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/center><\/div>\n<h3><span class=\"ez-toc-section\" id=\"description\"><\/span>Description<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>In this exercise we take a look at making a simple animated avatar pose for IMVU in Blender using the <a href=\"https:\/\/www.katsbits.com\/codex\/macos-imvu-toolkit-blender-4\/\">IMVU Toolkit<\/a> on MacOS (MacBook). With <b>Toolkit<\/b> open in the <b>Sidebar<\/b> (<b><i>View \u00bb Sidebar<\/i><\/b> or press <span class=\"shortcutkey\">N<\/span>) load in an <b>Animation Tool<\/b> instance to access the rigged avatar. Checking to make sure <b>Pose Mode<\/b> is active, an animation is then made posing the avatar at different <i><b>key<\/b> frames<\/i> (keyframes) along the timeline. This can then be exported using the Toolkits embedded <b>FBX Export<\/b> tool that generate a file that can be imported into Classic or Studio and assembled into an triggerable <b>Action<\/b>.<\/p>\n<p><b>Duration<\/b>: total c. 25 mins (00:25:00).<br \/>\n<b>Info<\/b>: 1080p.<br \/>\n<b>Suitability<\/b>: Beginner+.<br \/>\n<b>Source<\/b>: <a href=\"https:\/\/www.katsbits.com\/files\/imvu\/katsbits - mac animated pose.zip\">KatsBits \u2013 MacOS Animated Pose<\/a> (c. 1 MB, *.blend, *.fbx).<br \/>\n<b>Product ID<\/b>: n\/a.<\/p>\n<blockquote><p><b>Design note<\/b>: some additional considerations to keep in mind making animated avatar poses for IMVU using the Toolkit in Blender on MacOS;<\/p>\n<h4><span class=\"ez-toc-section\" id=\"copypaste-poses\"><\/span>Copy\/Paste Poses<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>When duplicating a pose, keyframe or keyframe set, there are two approaches that can use; 1) copying the posed\/positioned control elements in the 3D Viewport, or 2) copying keyframe markers in the timeline.<\/p>\n<p>Using the former [1], copying (<span class=\"shortcutkey\">Command<\/span> (<span class=\"shortcutkey\">\u2318<\/span>) + <span class=\"shortcutkey\">C<\/span>) <i>control element<\/i> positions in the 3D Viewport [2] &#8211; <b><i>Pose \u00bb Copy Pose<\/i><\/b>\/<b><i>Paste Pose<\/i><\/b> &#8211; ensure the blue timeline scrubber\/playback head is over the frame from which pose position data is to be copied, e.g. frame 20, else the pose copied may be slightly different from what&#8217;s needed due to &#8220;tweening&#8221;, the blending of one pose to another. Similarly, make sure to move the timeline scrubber into position before pasting (<span class=\"shortcutkey\">Command<\/span> (<span class=\"shortcutkey\">\u2318<\/span>) + <span class=\"shortcutkey\">V<\/span>) to avoid overriding existing frame data.<\/p>\n<p>When copy\/pasting <i>keyframes<\/i> [3] &#8211; <b><i>Key \u00bb Copy Keyframe<\/i><\/b>\/<b><i>Paste Keyframe<\/i><\/b> &#8211; this consideration is not necessary because by nature, keyframes incorporate whatever pose data [4] has been inserted into the timeline and\/or is associated with each control element.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-mac\/copy-paste-viewport.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-mac\/copy-paste-viewport.jpg\" alt=\"Copy &#038; Paste Poses\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Pose data can be copy\/pasted by selecting various control elements of the rigged avatar in the <b>3D Viewport<\/b> and using the <b>Pose<\/b>[1] menu to <b>Copy Pose<\/b>\/<b>Paste Pose<\/b> [2]&#8230;<\/i><\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-mac\/copy-paste-keyframes.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-mac\/copy-paste-keyframes.jpg\" alt=\"Copy &#038; Paste Keyframes\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>&#8230; or by similarly copy\/pasting a set of keyframes in the <b>Action Editor<\/b> timeline from the Key [3] menu to <b>Copy Keyframes<\/b>\/<b>Paste Keyframes<\/b> [4].<\/i><\/p>\n<h4><span class=\"ez-toc-section\" id=\"actionpose-name\"><\/span>Action\/Pose Name<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>If several poses or avatar animations are to be used in the same avatar product, each needs to be uniquely named in Blender to prevent overriding existing or previously exported FBX files or imported data in Classic or Studio. In Blender, while this generally means sequences should be saved to their own <i>*.blend<\/i> file, they still need to be labelled in a way that they can be uniquely identified during export\/import.<\/p>\n<p>To do this, first create an <b>Action<\/b> sequence by posing the avatar, or select a previously generated sequence from the <b>Browse Action to be linked<\/b> menu [5]. Next, in the <b>Action<\/b> timeline Header click in the <b>Name<\/b> input field [6] and type an identifying label e.g. &#8220;shrug&#8221; (alpha-numeric characters only). (Re)save the *.blend file and export as normal. Repeat for each sequence to be imported into IMVU.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-mac\/animated-pose-rename-action.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-mac\/animated-pose-rename-action.jpg\" alt=\"Rename Actions\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Make sure the rig is selected in the 3D Viewport so the correct <b>Action<\/b> sequence is exposed (or select it from <b>Browse Action to be linked<\/b>) [5], then click the <b>Name<\/b> [6] input field and type a new unique label. Press Enter\/Return to confirm.<\/i><\/p>\n<h4><span class=\"ez-toc-section\" id=\"avatar-vs-empty-mood\"><\/span>Avatar vs Empty Mood<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>When testing animated poses it&#8217;s best to derive from the <b>Empty Mood<\/b> [7] (<a href=\"https:\/\/www.imvu.com\/shop\/product.php?products_id=10945930\" rel=\"noopener\" target=\"_blank\">PID 10945930<\/a>) as this is stripped of potentially conflicting pose data. Essentially this makes it easier to check the FBX file exports correctly from Blender, and that the derived item itself doesn&#8217;t include something that might otherwise cause issues erroneously attributed to the animation or pose being imported into Classic or Studio.<\/p>\n<div style=\"background-color: #fc0; color: #000; width:98.5%; padding: 1.0em;\"><b>Important<\/b>: using the <b>Empty Mood<\/b>, avatars poses and animations only activate using a <b>stance.*<\/b> automatic or &#8216;on-load&#8217; trigger, i.e. <b>stance.Idle<\/b> (activates regardless of mood or mode), <b>stance.Sitting<\/b> (activates when the avatar &#8216;sits&#8217;) or <b>stance.Standing<\/b> (activates when avatar &#8216;stands&#8217;). In other words, animations and\/or poses play as soon as they&#8217;re put on or worn by the User. For manually triggered animations and poses, once testing has been done, derive from 80 (female), 191 (male) or a derivative thereof.<\/div>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-mac\/empty-mood-no-actions.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-mac\/empty-mood-no-actions.jpg\" alt=\"Empty Mood\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>The Empty Mood is useful for testing to ensure animated poses have exported correctly because the base derivable is stripped of action data [7] that might cause issues\/confusion.<\/i><\/p>\n<h4><span class=\"ez-toc-section\" id=\"disable-gaze\"><\/span>Disable Gaze<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>When creating an animated pose, or just a pose generally for which the avatars head needs to remain still, this can either be done in Blender by posing the Head bone, or alternative in Classic or Studio editors by enabling <b>Disable Gaze<\/b>. To do this, once the basic Action has been created, in the Ensemble editor (Studio) or panel (Classic) click the <b>Disable Gaze<\/b> [8] checkbox or toggle to activate. The avatars head will then freeze in place (note the eyes may still move).<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-mac\/disable-gaze-studio.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-mac\/disable-gaze-studio.jpg\" alt=\"Disable Gaze\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>To &#8216;fix&#8217; the avatars head in place (forward looking) enable <b>Disable Gaze<\/b> [8] in the <b>Ensemble<\/b> panel or editor for the corresponding Action sequence in Classic\/Studio.<\/i>\n<\/p><\/blockquote>\n<h3><span class=\"ez-toc-section\" id=\"timestamps\"><\/span>Timestamps<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Times are approximate;<br \/>\n&#8211; 00:00 : Overview &#038; 1st Pose<br \/>\n&#8211; 02:00 : Timeline Poses<br \/>\n&#8211; 12:00 : 1st Export &#038; Assembly<br \/>\n&#8211; 14:30 : Rename &#038; Re-Export<br \/>\n&#8211; 17:00 : Empty Mood Set Up<br \/>\n&#8211; 19:00 : Avatar Set Up<\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":9362,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[34,37,1045,230],"tags":[945,217,622,704,200,1039,1061,1062,194,738,835,1049,623,1043,1044],"class_list":["post-8246","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blender","category-imvu","category-macos","category-tutorials","tag-action","tag-action-editor","tag-animation","tag-avatar","tag-avatar-poses","tag-blender-3d","tag-disable-gaze","tag-empty-mood","tag-imvu","tag-imvu-studio","tag-imvu-studio-toolkit","tag-imvu-toolkit","tag-keyframes","tag-macbook","tag-macos"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/8246","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/comments?post=8246"}],"version-history":[{"count":28,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/8246\/revisions"}],"predecessor-version":[{"id":9363,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/8246\/revisions\/9363"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/media\/9362"}],"wp:attachment":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/media?parent=8246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/categories?post=8246"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/tags?post=8246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}