{"id":6063,"date":"2022-06-06T17:34:16","date_gmt":"2022-06-06T16:34:16","guid":{"rendered":"https:\/\/www.katsbits.com\/codex\/?p=6063"},"modified":"2024-12-17T18:33:25","modified_gmt":"2024-12-17T18:33:25","slug":"toolkit-animated-furniture","status":"publish","type":"post","link":"https:\/\/www.katsbits.com\/codex\/toolkit-animated-furniture\/","title":{"rendered":"IMVU Studio Toolkit &#8211; Animated Furniture"},"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-69f5d866e94ba\" 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-69f5d866e94ba\"  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\/toolkit-animated-furniture\/#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\/toolkit-animated-furniture\/#furniture-toolkit-defaults\" >Furniture Toolkit Defaults<\/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\/toolkit-animated-furniture\/#check-vertex-group-assignment\" >Check Vertex Group Assignment<\/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\/toolkit-animated-furniture\/#frame-rate-30-fps-interpolation\" >Frame Rate (30 FPS) &#038; Interpolation<\/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\/toolkit-animated-furniture\/#animation-import-imvu-studio\" >Animation Import &#038; IMVU Studio<\/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\/toolkit-animated-furniture\/#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\/lnL7kRJy_Co?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>Using <b>IMVU Studio Toolkit<\/b> we take a look at making a <i>simple animated furniture item<\/i> to understand how this is done using the <b>Furniture Tool<\/b> and the default template items. As a furniture items root node, <i>Furniture.Root<\/i>, cannot (should not) be moved another node has to be added so it can be animated instead. The two nodes, plus the mesh object, are then linked using <b>Parent<\/b> to form a hierarchy that becomes the items skeleton. Once this is set up the extra node is animated using the <b>Action Editor<\/b>, the whole project then being exported to FBX using the tools exporter and assembled in IMVU Studio.<\/p>\n<p><b>Duration<\/b>: total c. 20 mins (00:20:00).<br \/>\n<b>Info<\/b>: 1080p.<br \/>\n<b>Source<\/b>: <a href=\"https:\/\/www.katsbits.com\/files\/imvu\/katsbits - toolkit animated furniture.zip\">KatsBits \u2013 Toolkit Animated Furniture<\/a> (250 KB, *.blend, *.fbx). Requires installation of the <a href=\"https:\/\/create.imvu.com\/articles\/studio\/toolkit\/\" rel=\"noopener\" target=\"_blank\">toolkit<\/a> for Blender. Open in <a href=\"https:\/\/www.blender.org\/download\/lts\/2-93\/\" rel=\"noopener\" target=\"_blank\">Blender 2.93 LTS<\/a> or above.<br \/>\n<b>Product ID<\/b>: <a href=\"https:\/\/www.imvu.com\/shop\/product.php?products_id=59818759\">Toolkit Anim Furniture<\/a> (PID 59818759).<\/p>\n<blockquote><p><b>Design note<\/b>: the complexity of animated furniture depends on what the item is and what type of animation is required so keep the following in mind;<\/p>\n<h4><span class=\"ez-toc-section\" id=\"furniture-toolkit-defaults\"><\/span>Furniture Toolkit Defaults<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>The components dropped into the scene by default are organised to export functional furniture items without needing additional set-up. In other words the mesh is automatically configured as a child object of Attachment.Root to create the necessary skeletal structure IMVU needs; <i>Parent (Attachment.Root) \u00ab Child (mesh)<\/i>. Ordinarily if more meshes are to be included, so long as they reside in the <b>Mesh<\/b> collection in the <b>Outliner<\/b> [1], exporting will similarly generate the correct hierarchy for a furniture item. For animated furniture this differs however, the relationship between objects needs to be established manually depending on functionality and what the eventual product is supposed to do, else the exporter will assume the default relationship between objects &#8211; everything parented to Attachment.Root &#8211; which will break the item.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-studio\/animated-furniture-hierarchy.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-studio\/animated-furniture-hierarchy.jpg\" alt=\"Furniture item skeleton\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>For general export meshes go in the <b>Mesh<\/b> collection and nodes in <b>Furniture Nodes<\/b> [1]. This ensures the resulting skeleton has the correct parent \u00bb child relationship to function correctly in IMVU.<\/i><\/p>\n<h4><span class=\"ez-toc-section\" id=\"check-vertex-group-assignment\"><\/span>Check Vertex Group Assignment<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>To ensure objects animate correctly meshes need vertex group assignments that correspond to the nodes controlling them. Similarly for meshes controlled by multiple nodes, individual areas or segments each need their own vertex group. In all instances node labels and vertex group name needs to be unique (Blender forces this by default), both being CaSe SEnSiTiVe. In <b>Object Data Properties<\/b> then [2] click the <b>+<\/b> button for each group that needs to be added to the <b>Vertex Groups<\/b> list and assign them to specific selection of the mesh in <b>Edit Mode<\/b>.<\/p>\n<div style=\"background-color: #fc0; color: #000; width:98.5%; padding: 1.0em;\"><b>Important<\/b>: to ensure properly functioning furniture, if items include both animated and non-animated elements, the non-animated parts will need to be associated with the root node <b>Attachment.Root<\/b>. This can be done creating an additional vertex group named <i>Attachment.Root<\/i> and assigning it to all non-animated parts appropriately.<\/div>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-studio\/animated-furniture-vertex-group.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-studio\/animated-furniture-vertex-group.jpg\" alt=\"Vertex Group assignments\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Vertex Group assignments are crucial for animated furniture item as they create the link between mesh and animated control node.<\/i><\/p>\n<h4><span class=\"ez-toc-section\" id=\"frame-rate-30-fps-interpolation\"><\/span>Frame Rate (30 FPS) &#038; Interpolation<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Because the furniture tool isn&#8217;t specifically set up to create animated items, projects may need to be adjusted for this, primarily the <b>Frame Rate<\/b> and <b>Interpolation Mode<\/b>, which match an animations speed and behaviour with what IMVU is expecting; without doing this sequences will appear slower and may pause or hiccup, typically at the <i>last \u00bb first<\/i> loop transition. In <b>Output Properties<\/b> [3] make sure <b>Frame Rate<\/b> is set to <b>30 fps<\/b> [4] (default is 24fps &#8211; may depend on region). Then in the <b>Action Editor<\/b> change the <b>Interpolation Mode<\/b> to <b>Linear<\/b> [5] in the <b>Key<\/b> menu &#8211; <b><i>Key \u00bb Interpolation Mode \u00bb Linear<\/i><\/b>.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-studio\/animation-furniture-interpolation.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-studio\/animation-furniture-interpolation.jpg\" alt=\"Project settings for animation\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>The furniture tool isn&#8217;t set up to accommodate animation so the scene and interface need adjusting in <b>Output Properties<\/b> [3], naming the <b>Frame Rate<\/b> [4] and <b>Interpolation Mode<\/b> [5].<\/i><\/p>\n<h4><span class=\"ez-toc-section\" id=\"animation-import-imvu-studio\"><\/span>Animation Import &#038; IMVU Studio<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Although IMVU Studio automatically assembles the main product after import, the Action will need to be manually set up. In the <b>Inspector<\/b> panel [6] for the <b>Action<\/b> being edited, for animated furniture items, the <b>Trigger<\/b> should be <b>stance.Idle<\/b> (cAsE SEnSitiVE) if the animation is to auto-start on load, or a word, phrase or character if its to be activated manually, e.g. &#8220;<i>go<\/i>&#8220;. Set the <b>Action Type<\/b> to either <b>Room<\/b> or leave it blank (default). The animations speed and other properties can then be set in the Ensembles configuration panel; <b>Speed 100<\/b> plays the sequence as imported, <b>50<\/b> halves it, <b>200<\/b> doubles it and so on. Finally type a value to set the <b>Start<\/b> and <b>End<\/b> frames, and the number of times the sequence should play, <b>0<\/b> will repeat infinitely.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-studio\/animated-furniture-action-type.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu-studio\/animated-furniture-action-type.jpg\" alt=\"Action Type in IMVU Studio\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>There are a number of settings to use in IMVU Studio that can modify the behaviour of an animated furniture item [6] but the fundamentals, the frame rate and sequence duration (length), should be established in Blender before export to FBX.<\/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\u2013 00:00 : Skeleton Set Up.<br \/>\n\u2013 08:00 : Animating.<br \/>\n\u2013 11:30 : Frame Rate, Duration &#038; Interpolation.<br \/>\n\u2013 15:30 : Export, Assembly &#038; Action Setup.<\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":6066,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[34,37,230],"tags":[217,622,589,195,194,738,835,880],"class_list":["post-6063","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blender","category-imvu","category-tutorials","tag-action-editor","tag-animation","tag-frame-rate","tag-furniture","tag-imvu","tag-imvu-studio","tag-imvu-studio-toolkit","tag-interpolation-mode"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/6063","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=6063"}],"version-history":[{"count":21,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/6063\/revisions"}],"predecessor-version":[{"id":9547,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/6063\/revisions\/9547"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/media\/6066"}],"wp:attachment":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/media?parent=6063"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/categories?post=6063"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/tags?post=6063"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}