{"id":10491,"date":"2026-04-30T16:22:35","date_gmt":"2026-04-30T15:22:35","guid":{"rendered":"https:\/\/www.katsbits.com\/codex\/?p=10491"},"modified":"2026-04-30T16:22:35","modified_gmt":"2026-04-30T15:22:35","slug":"toolkit-furniture-nodes-classic","status":"publish","type":"post","link":"https:\/\/www.katsbits.com\/codex\/toolkit-furniture-nodes-classic\/","title":{"rendered":"Toolkit &#8211; Furniture Node Setup for Classic"},"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-69f3c878319ef\" 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-69f3c878319ef\"  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-furniture-nodes-classic\/#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-furniture-nodes-classic\/#furniture-skeleton\" >Furniture Skeleton<\/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-furniture-nodes-classic\/#handle-misplaced\" >Handle Misplaced<\/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-furniture-nodes-classic\/#correcting-handle-placement\" >Correcting Handle Placement<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.katsbits.com\/codex\/toolkit-furniture-nodes-classic\/#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\/1BnEJjYf81k?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>To make the IMVU Toolkit for Blender functional and easy to use the node set-up used to build the underlying skeleton of a furniture item can cause issues in Classic Editor, largely because the older client is expecting the skeleton to be formatted in a particular way. Although the presence of custom nodes is tolerated so complex items can be made, animated furniture items for example, their order and relationship is more strict than for IMVU Studio, Desktop and Mobile clients. This difference typically results in seat node Handles being incorrectly (re)positioned to wherever the corresponding seat node is. The fix for Handles appearing in the wrong place is to reorganise the skeleton.<\/p>\n<p><b>Duration<\/b>: total c. 5 mins (00:05:00).<br \/>\n<b>Info<\/b>: 1080p.<br \/>\n<b>Suitability<\/b>: Beginner+.<br \/>\n<b>Source<\/b>: n\/a.<br \/>\n<b>Product ID<\/b>: n\/a.<\/p>\n<blockquote><p><strong>Design note<\/strong>: more details on the Handle for for IMVU Classic;<\/p>\n<h4><span class=\"ez-toc-section\" id=\"furniture-skeleton\"><\/span>Furniture Skeleton<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>A typical furniture skeleton has a &#8216;root&#8217; node (&#8220;Root&#8221;) that, as the name suggests, acts as the root element to which everything is linked. This forms the &#8216;skeleton&#8217; (skeletal) hierarchy necessary for IMVU to know what the objects is and what it&#8217;s supposed to do with it. A simple furniture for example, might have the following set-up in Blender when using the furniture tool;<\/p>\n<div style=\"width: 98.5%; padding: 1.0em; background-color: #e7faea; color: #000; font-family: courier;\">\u00bb root (node)<br \/>\n\u00bb \u00bb Mesh (object)<\/div>\n<p>This results in the object seen by the User (chair, table, truck etc.) being parented to root, forming a &#8216;skeleton&#8217; of only two objects, elements or parts.<\/p>\n<p>If this same simple furniture item then has &#8216;seats&#8217; added (sitting, standing and custom spots for custom avatar poses), the furniture items structure might look as follows in the toolkit;<\/p>\n<div style=\"width: 98.5%; padding: 1.0em; background-color: #e7faea; color: #000; font-family: courier;\">\u00bb root (node)<br \/>\n\u00bb \u00bb AvatarNodes<br \/>\n\u00bb \u00bb \u00bb Seat01.Standing<br \/>\n\u00bb \u00bb \u00bb \u00bb Handle01<br \/>\n\u00bb \u00bb \u00bb \u00bb Catcher01.Standing<br \/>\n\u00bb \u00bb \u00bb \u00bb \u00bb Pitcher01.Standing<br \/>\n\u00bb \u00bb Mesh (object)<\/div>\n<p>Here, nodes form a more complex hierarchical skeletal structure, each new addition parented to the seat node first, <strong>Seat01<\/strong>, which is then linked to another node, <strong>AvatarNodes<\/strong>, that acts as a proxy container for all seat nodes as they are dropped into place, which is in-turn finally parented to root forming a relationship chain.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu\/nodes-furniture.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu\/nodes-furniture.jpg\" alt=\"typical furniture skeleton\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Using the Toolkit (1.2.x shown) the structure of furniture is organised for ease of tool use. However, everything is still parented to &#8220;Root&#8221;.<\/i><\/p>\n<h4><span class=\"ez-toc-section\" id=\"handle-misplaced\"><\/span>Handle Misplaced<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Using the set-up described above, when products are exported using the Furniture Tool for use in IMVU Classic Editor and Client, a problem occurs because the app is expecting a skeletal structure that complies with the legacy system Classic uses. For example, where mesh and seat are included the legacy structure is expecting;<\/p>\n<div style=\"width: 98.5%; padding: 1.0em; background-color: #e7faea; color: #000; font-family: courier;\">\u00bb root (node)<br \/>\n\u00bb \u00bb Seat01.Standing<br \/>\n\u00bb \u00bb Handle01<br \/>\n\u00bb \u00bb Catcher01.Standing<br \/>\n\u00bb \u00bb Pitcher01.Standing<br \/>\n\u00bb \u00bb Mesh (object)<\/div>\n<p>The difference isn&#8217;t subtle, everything is parented directly to &#8220;root&#8221; regardless as to what the node does. This essentially flattens the skeletal structure and forms a strict hierarchy. When the client doesn&#8217;t see this, it &#8216;breaks&#8217; the items behaviour in-game in various way depending on the skeleton, typically the Handle get repositioned at the seat node.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu\/nodes-furniture-handle-issue.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu\/nodes-furniture-handle-issue.jpg\" alt=\"IMVU Handle issue\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Using the default items structure generated by the Toolkit, imported projects into Classic Editor and Client may &#8216;break&#8217; depending on the items set up &#8211; shown above the Handle node is (re)positioned incorrectly at the Seat node.<\/i><\/p>\n<h4><span class=\"ez-toc-section\" id=\"correcting-handle-placement\"><\/span>Correcting Handle Placement<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>To correct for this from within the Toolkit furniture items needs to replicate the structure Classic Editor and Client is expecting, that is, everything parented to &#8220;Root&#8221;. Depending on what the furniture is, select everything, <span class=\"shortcutkey\">A<\/span>, and use <span class=\"shortcutkey\">Alt<\/span> + <span class=\"shortcutkey\">P<\/span> to <strong>Clear and Keep Transforms<\/strong>, or from the <strong>Object<\/strong> menu select <strong>Parent<\/strong>, then <strong>Clear and Keep Transform<\/strong> &#8211; <strong><em>Object \u00bb Parent \u00bb Clear and Keep Transform<\/em><\/strong>. This flattens everything inside their respective Collections.<\/p>\n<div style=\"background-color: #dedede; color: #000; width: 98.5%; padding: 1.0em;\"><strong>Aside<\/strong>: everything should reside inside the <strong>FURNITURE_EXPORT<\/strong> Collection if its to be included as part of the exported FBX file.<\/div>\n<p>Re-select everything, <span class=\"shortcutkey\">A<\/span>, making sure to <span class=\"shortcutkey\">Shift<\/span> + <span class=\"shortcutkey\">Click<\/span> the &#8220;<strong>Root<\/strong>&#8221; node to set it as the active object to which everything is to be parented. Using <span class=\"shortcutkey\">Ctrl<\/span> + <span class=\"shortcutkey\">P<\/span>, link the objects together selecting <strong>Objects (Keep Transform)<\/strong>, or alternatively from the <strong>Object<\/strong> menu, select <strong>Parent<\/strong> then <strong>Object<\/strong>. In the popup that appears lower left, ensure &#8220;<strong>Keep Transform<\/strong>&#8221; is checked &#8211; <strong><em>Object \u00bb Parent \u00bb Object \u00bb [popup] \u00bb Keep Transform<\/em><\/strong>. After export and assembly in IMVU Classic, seat Handle will then appear where they should, at about waist height to the avatar.<\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu\/nodes-furniture-reparent.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu\/nodes-furniture-reparent.jpg\" alt=\"Reparent furniture nodes\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>Unparent and then re-parent everything to the Root node, flattening the skeletal hierarchy to make it more compatible with IMVU Classic.<\/i><\/p>\n<p><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu\/nodes-furniture-handle-fix.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" style=\"width: 98.5%; height: auto;\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/imvu\/nodes-furniture-handle-fix.jpg\" alt=\"Seat Handle fix\" width=\"900px\" height=\"500px\" border=\"0\" \/><\/a><br \/>\n<i>After reorganising the node-based skeletal structure furniture will appear correctly in IMVU Classic.<\/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&#8211; n\/a<\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":10498,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[34,37,230],"tags":[1130,203,195,708,194,835,762,724],"class_list":["post-10491","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blender","category-imvu","category-tutorials","tag-blender-5-x","tag-fbx","tag-furniture","tag-furniture-nodes","tag-imvu","tag-imvu-studio-toolkit","tag-seat-nodes","tag-skeleton"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/10491","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=10491"}],"version-history":[{"count":14,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/10491\/revisions"}],"predecessor-version":[{"id":10506,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/posts\/10491\/revisions\/10506"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/media\/10498"}],"wp:attachment":[{"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/media?parent=10491"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/categories?post=10491"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.katsbits.com\/codex\/wp-json\/wp\/v2\/tags?post=10491"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}