{"id":5253,"date":"2021-10-19T10:33:04","date_gmt":"2021-10-19T09:33:04","guid":{"rendered":"https:\/\/www.katsbits.com\/codex\/?p=5253"},"modified":"2023-09-07T15:50:39","modified_gmt":"2023-09-07T14:50:39","slug":"animated-pumpkin","status":"publish","type":"post","link":"https:\/\/www.katsbits.com\/codex\/animated-pumpkin\/","title":{"rendered":"Animated Accessories (Pumpkin Pet)"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 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-69fe5db27abaf\" 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-69fe5db27abaf\"  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\/animated-pumpkin\/#description\" >Description<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.katsbits.com\/codex\/animated-pumpkin\/#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\/0o7sTxcZTb0\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/center><\/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\/B3XmlXt81Nc\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/center><\/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\/nKF4iWfPHdU\" 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 video series (<i>recorded live so may include off-topic chat<\/i>) we take a look at setting up an animated Accessory, a Pumpkin Pet, using the <a href=\"https:\/\/www.katsbits.com\/codex\/imvu-starter-files\/\">Accessory Starter File<\/a>.<\/p>\n<p>In <b>Video #1<\/b>, with an item available it first needs to be positioned where its to appear in IMVU, this is important to do before adding a skeleton for positional purposes and in decided which Armature to use &#8211; typically the closest to the item is utilised. Once these initial steps are done, the appropriate skeleton selected, it can be modified, bones added and themselves positioned, to accommodate prospective animations. The mesh is then assigned corresponding <b>Vertex Group<\/b> before parenting to the Armature so the latter has control over the former.<\/p>\n<p>In <b>Video #2<\/b>, once the object is prepped (&#8216;rigged&#8217;) it can be animated in the <b>Action Editor<\/b> using <b>Pose Mode<\/b> to create an <b>Action<\/b> sequence that is then exported to FBX along with mesh and skeleton, for assembly in IMVU Studio.<\/p>\n<p>In the follow-up, <b>Video #3<\/b>, we take a look at alternative ways to set up accessories if the skeleton is rigged without the appropriate &#8216;root&#8217; bone(s), <b>AttachmentRoot<\/b>. Here two options are available; 1) set-up and export using an appropriately placed <i>Empty<\/i> (node), or 2) using an existing <i>accessory attachment<\/i>, an Armature, included with the Accessory Starter File.<\/p>\n<p><b>Duration<\/b>: total c. 2 hr 30 mins (02:30:00).<br \/>\n<b>Info<\/b>: 1080p.<br \/>\n<b>Source<\/b>: n\/a.<br \/>\n<b>Product ID<\/b>: n\/a.<\/p>\n<blockquote><p><b>Design note<\/b>: the underlying skeleton of an accessory has two bones, <b>AttachmentRoot<\/b> [1] and <b>AttachmentNode<\/b> [2], that remain fixed relative to the avatar to ensure proper functionality in IMVU [3]. They do not move. To create animated accessory items like the Pumpkin Pet shown, the skeleton has to be modified to accommodate movement, bones being added based on how and what is to be animated.<\/p>\n<div style=\"background-color: #fc0; color: #000; padding: 0.5em 0.75em; width:98.5%;\"><b>Important<\/b>: the Armature objects included in the <a href=\"https:\/\/www.katsbits.com\/codex\/imvu-starter-files\/\">Accessory Starter File<\/a> are set up to accommodate non-moving accessory items. To ensure they work correctly in IMVU this structure should not be modified except as outlined in this tutorial. <a href=\"https:\/\/www.katsbits.com\/codex\/tag\/accessory\/\">See here for more on making Accessories<\/a>.<\/div>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-accessories\/accessory-skeleton.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-accessories\/accessory-skeleton.jpg\" alt=\"Basic elements of Accessory Skeleton\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>The core skeleton of an Accessory item includes two bones, AttachmentRoot [1] and AttachmentNode [2] that are fixed positionally relative to the corresponding bone of the avatar [3] (<i>in the above this would be lfCalf or the lower leg\/shin bone<\/i>). This setup should not be animated.<\/i><\/p>\n<p>When adding bones to an existing Armature objects it&#8217;s often simplest to select on existing bone and copy it. This ensures new additions appear localised to the initial selection (in roughly the same place), but also avoids issues joining Armatures together. To do this, with Armature selected switch to <b>Edit Mode<\/b>, <span class=\"shortcutkey\">Tab<\/span>, make a selection, then from the <b>Armature<\/b> menu click <b>Duplicate<\/b> &#8211; <i><b>Armature \u00bb Duplicate<\/b><\/i> (or <span class=\"shortcutkey\">Shift<\/span> + <span class=\"shortcutkey\">D<\/span>) [4]. A new bone appears [5] &#038; [6]. Press <b>Esc<\/b> to reset readying it for positioning.<\/p>\n<div style=\"background-color: #fc0; color: #000; padding: 0.5em 0.75em; width:98.5%;\"><b>Important<\/b>: if bones are created through use of a separate Armature be mindful to join &#8211; <i><b>Object \u00bb Join<\/b><\/i> or <span class=\"shortcutkey\">Ctrl<\/span> + <span class=\"shortcutkey\">J<\/span> &#8211; the new addition to the default <i>before<\/i> doing any mesh prep or animation to avoid issues caused by differences between their respective <b>Transform<\/b> properties (rotation, location and scale coordinates).<\/div>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-accessories\/duplicate-bone.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-accessories\/duplicate-bone.jpg\" alt=\"Duplicating a Bone in Blender\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>To add bones to an existing Armature, in Edit Mode select an existing bone and from the <b>Armature<\/b> menu click <b>Duplicate<\/b> &#8211; this avoids issues that can crop up joining separate Armatures together that might have different rotation, location and scale properties.<\/i><\/p>\n<p>When positioning bones prior to being animating make sure they&#8217;re located to accommodates the expected articulation of whatever they control, a sphere needing to revolve freely around its centre might mean the bone controlling that movement being positioned so the <i>Head<\/i> control sphere, the bones &#8216;origin&#8217; or point around which it rotates, is located at the objects centre else articulation will be lopsided. To aid in doing this use <a href=\"https:\/\/www.katsbits.com\/codex\/snap\/\">Snap<\/a> &#8211; <b>Object \u00bb Snap \u00bb  [option]<\/b>, typically <b><i>Cursor to Selected<\/i><\/b> or <b><i>Cursor to Active<\/i><\/b> (<span class=\"shortcutkey\">Shift<\/span> + <span class=\"shortcutkey\">S<\/span>) [7] to reposition the 3D Cursor to an Object or selection [8], then snap the respective bone to that point [9] using <b>Armature \u00bb Snap \u00bb [option]<\/b>, typically <b><i>Selection to Cursor<\/i><\/b> or <b><i>Selection to Active<\/i><\/b>.<\/p>\n<div style=\"background-color: #fc0; color: #000; padding: 0.5em 0.75em; width:98.5%;\"><b>Important<\/b>: aligning different objects to one another tends to mean selecting and toggling in to and out from <b>Interaction Modes<\/b> i.e. mesh selected in Object Mode to set 3D Cursor location to the object, Armature in Edit Mode to select and position a specific bone.<\/div>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-accessories\/bone-position.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-accessories\/bone-position.jpg\" alt=\"Position a bone for animating\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Bones need to be positioned so meshes articulate as expected. For IMVU this means accommodating translation and rotation only, the latter occurring around a given bones <b>Head<\/b> node. Use the <b>Snap<\/b> [7] options to align 3D Cursor to Objects [8], then bones to 3D Cursor [9].<\/i><\/p>\n<p>The <b>Action Editor<\/b> is generally blank by default [10], an <b>Action<\/b> being generated as soon as a keyframe is marked to the timeline. To manually create an Action click the <b>+ New<\/b> [11] &#8211; if a sequence is active in the timeline when doing this it will be duplicated, the Actions label being given a numerical append, *.001, *.002 etc., to distinguish it from the original. This can be changed clicking the label input box and typing a replacement.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-accessories\/empty-action-editor.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-accessories\/empty-action-editor.jpg\" alt=\"Blank Action Editor before animation\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>The Action Editor is generally blank by default but a new sequence will be created when marking pose data to the timeline, or clicking the <b>+ New<\/b> button in the Header.<\/i><\/p>\n<p>When exporting an animation make a sequence is active in the Action Editor timeline then select the mesh, <i>then<\/i> Armature (should be last object selected) and export, <b>File \u00bb Export \u00bb FBX (.fbx)<\/b>. As animation is being included in the <b>Bake Animation<\/b> [12] settings make sure <b>NLA Strips<\/b> [13] and <b>Force Start\/End Keying<\/b> [14] are disabled, forcing Blender to export each sequence to its own &#8216;track&#8217; within the FBX without extraneous data.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-accessories\/export-animation-settings.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-accessories\/export-animation-settings.jpg\" alt=\"Bake Animation settings during FBX export\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>As an animation is bieng included in the exported FBX file make sure the <b>Bake Animation<\/b> options are set correctly [12], <b>NLA Strips<\/b> [13] and <b>Force Start\/End Keying<\/b> [14] should be disabled to avoid the resulting file containing unwanted data.<\/i><\/p>\n<p>In situations where the animated accessory is rigged relative to itself, exporting to IMVU means the product will be positioned incorrectly as the root or anchor point will be whatever &#8216;bone&#8217; sits at the top of the skeletal hierarchy in the FBX file (<i>typically the root or master bone of the items Armature<\/i>). This can be corrected in two ways; 1) using a node proxy, or 2) joining armatures. To use a node, drop an <b>Empty<\/b> object into the scene &#8211; <b><i>Add \u00bb Empty \u00bb [option]<\/i><\/b> &#8211; and then link the existing animated Armature to it using <b>Parent<\/b> [15]. To then export, select all the parts to be included, node last so the resulting file uses it as the point of origin [16].<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-accessories\/root-node.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-accessories\/root-node.jpg\" alt=\"Using a node as root\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>In instances where the skeleton has been set-up without an accessory root this can be included using a node as a proxy for the &#8216;attachment&#8217; Armature &#8211; once added link skeleton to node using Parent (with Keep Transform set) which will set up the correct hierarchy [15] using the node as the items origin [16].<\/i><\/p>\n<p>To use a Armature, select the rigged armature first then shift-click select the existing accessory armature to be used as the root, i.e. <i>Female03MasterRoot (Attachment Root)<\/i> for a ground-based &#8216;pet&#8217;. From the <b>Object<\/b> menu select Join &#8211; <b><i>Object \u00bb Join<\/i><\/b> &#8211; creating a single object from the two. Bone relationships then need to be adjusted so the last bone of the rigged armature [17] uses <b>AttachmentRoot<\/b> as the new master bone [18]. Toggle into Edit Mode and in <b>Bone Properties<\/b> set the <b>Parent<\/b> option to use <b>AttachmentRoot<\/b> under <b>Relations<\/b>.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-accessories\/root-armature.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-accessories\/root-armature.jpg\" alt=\"Using an Armature as root\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Using an armature as the items root means joining the rigged armature to an accessory armature then updating the bone relationship so AttachmentRoot sits at the top of the hierarchy [17], the origin then being positioned correctly relative to IMVU [18].<\/i><\/p>\n<p>For import into IMVU Studio, during the <b>Skeleton &#038; Mesh<\/b> selection\/set up, the <b>Set Skeleton<\/b> drop-down may list a number of <i>bone<\/i> and <i>mesh<\/i> options, i.e. <i>Female03MasterRoot (12 bones, 2 meshes)<\/i>, that differ depending on how the accessory was exported from Blender. Typically the entry with the fewest number of bones should be selected.<\/p>\n<div style=\"background-color: #fc0; color: #000; padding: 0.5em 0.75em; width:98.5%;\"><b>Important<\/b>: using a <i>node<\/i> as root will list a different set of options compared to a single <i>Armature<\/i> due to the way the items skeletal hierarchy is defined in the resulting FBX. This can result in issues which can usually be addressed reimporting the project selecting a different skeletal option.<\/div>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-accessories\/studio-import-options.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-accessories\/studio-import-options.jpg\" alt=\"IMVU Studio import options\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>During import into IMVU Studio a number of different options may appear for the <b>Skeleton &#038; Mesh<\/b> setting [19] depending on how the accessory is set up and exported from Blender.<\/i><\/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<b>Video #1<\/b> &#8211; Rigging<br \/>\n&#8211; 00:00 : Stream start<br \/>\n&#8211; 02:20 : Project overview<br \/>\n&#8211; 10:30 : Armature prep (rigging)<br \/>\n&#8211; 25:00 : Parenting &#038; Vertex Groups<br \/>\n&#8211; 36:00 : Export &#038; Studio assembly<br \/>\n&#8211; 52:00 : Shininess<br \/>\n&#8211; 01:00:00 : Animated earrings overview<\/p>\n<p><b>Video #2<\/b> &#8211; Action Editor &#038; Animation<br \/>\n&#8211; 00:00 : Stream start<br \/>\n&#8211; 01:50 : Project recap<br \/>\n&#8211; 07:30 : Action Animation<br \/>\n&#8211; 37:00 : Export &#038; Studio Assembly<br \/>\n&#8211; 45:00 : Animation tweaking<br \/>\n&#8211; 01:07:00 : Export &#038; Studio Assembly<\/p>\n<p><b>Video #3<\/b> &#8211; Alternative Skeleton Set Up<br \/>\n&#8211; 00:00 : Stream start<br \/>\n&#8211; 01:00 : Project recap &#038; overview<br \/>\n&#8211; 22:30 : Using a Node as Root<br \/>\n&#8211; 43:30 : Using an Armature as Root<br \/>\n&#8211; 55:00 : Studio import &#038; Action set-up<\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":5274,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[34,37,230],"tags":[575,217,622,725,774,704,204,194,738,826,827,334,947,215,946,754,724,509],"class_list":["post-5253","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blender","category-imvu","category-tutorials","tag-accessory","tag-action-editor","tag-animation","tag-armature","tag-attachmentroot","tag-avatar","tag-fbx-export","tag-imvu","tag-imvu-studio","tag-insert","tag-location-rotation","tag-nodes","tag-pet","tag-pets","tag-pumpkin","tag-shape-key-editor","tag-skeleton","tag-snap"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/5253","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=5253"}],"version-history":[{"count":32,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/5253\/revisions"}],"predecessor-version":[{"id":6822,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/5253\/revisions\/6822"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/media\/5274"}],"wp:attachment":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/media?parent=5253"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/categories?post=5253"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/tags?post=5253"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}