How to... guide to making IMVU furniture items using Blender

Making basic IMVU furniture items

The following tutorial, "making IMVU furniture items using Blender", is meant to serve as a checklist guide or general overview to using the IMVU furniture template file for Blender to make non-animated furniture items.

It does not cover the finer points or more complex aspects of making content for IMVU using Blender, most of which are to do with Blender itself rather than IMVU. What it does provide is the core information needed to properly export meshes from Blender to Cal3D, IMVU's various XML assets files - xmf (Mesh), xrf (Material), xaf (Animation) and xsf (Skeletal).

A basic understanding of Blender is going to be necessary to make the most of this guide as well as knowledge of IMVU's Create Mode and using that to assemble products before publication to the catalogue.

Design note: for a "Making of..." see the Video Tutorial below which goes through the process of making a simple furniture item from start to finish.

Which version of Blender? ^

There are a number of different versions of Blender that can be used to make content for IMVU; Blender 2.45, 2.46 and any version above 2.63a. If not already downloaded or the reader is new to being an IMVU Creator t is suggest the latest version of Blender be used which can be downloaded from Blender.org. Else please read the "Getting started with Blender" guide, in particular "Should I use 2.45, 2.49 2.64+ or newer?".

Download the Blender furniture template file for IMVU ^

The following guide uses a Blender template file containing everything needed to make non-animated furniture items for IMVU. Included are two *.blend files; "TEMPLATE_furniture_items.blend" for Blender 2.45/2.49 and "TEMPLATE_furniture_updated.blend" for Blender 2.63a or above. To download the file click the link below.

Contents of the furniture template file ^

The template file contains a number of objects either as individual elements or as part of a group or groups. Whilst some can be edited, others should remain untouched for reasons outlined below. Included are "block.MESH", "furniture.RIG", "sitting.RIG", "HELPER_sitting", "standing.RIG", "HELPER_standing".

  • block.MESH: Base Template mesh object. Parented to furniture armature before export. Mesh object can be any shape/size relative to item/product required in IMVU as 'furniture'. Object has a single Material ("block [0]") assigned and a single image mapped to the object UV's.

  • furniture.RIG: Master armature to which everything must be connected either directly in the case of other armature sections, or indirectly using 'parenting' ("Ctrl+P"). DO NOT alter the position or rotation of this object.

  • sitting.RIG

    • sitting.RIG: Seat node template for avatar in sitting/seated generic pose spot. Once positioned correctly, needs 'joining' to "furniture.RIG" ("Ctrl+J") - un-parent 'helper' (see below) before joining (Alt+P).

    • HELPER_sitting: A visual aid to assist in placement of sitting pose nodes. This object is not required for furniture items so needs to be un-parented ("Alt+P") before exporting completed product. Select "sitting.RIG" when moving the sitting unit.

Design note: when wanting to move, rotate or position the SITTING node, select "sitting.RIG", this manipulates the associated Armature and Dummy as a UNIT.
NO ADDITIONAL EDITING IS REQUIRED
, simply use the objects/unit as is.

  • standing.RIG

    • standing.RIG: Seat node template for avatar in standing/upright generic pose spot. Once positioned correctly, needs joining to "furniture.RIG" ("Ctrl+J") - un-parent helper (see below) before joining.

    • HELPER_standing: A visual aid 'helper' to assist the placement of standing pose nodes. This object is not required for furniture items so needs to be un-parented from "standing.RIG" ("Alt+P") before exporting completed object.

Design note: when wanting to move, rotate or position the STANDING node, select "standing.RIG", this manipulates the Armature and Dummy as a UNIT.
NO ADDITIONAL EDITING IS REQUIRED, simply use the objects/unit as is.

Making basic IMVU furniture items

The template file open in the latest version of Blender containing everything needed to make non-animated furniture items for IMVU

Contents of furniture template file

Contents of furniture example file which contains a number of 'template' items for furniture creation, shown above in Blender 2.49

How to use the furniture template file ^

For convenience sake it's always best to start a new IMVU furniture project from the template file so all the necessary components are present and correct, ready for use. If not done this way, one or the other will need to be appended and brought into the project file; either the furniture mesh to the template file, or the template file and it's contents to the furniture file.

Appending data in the latest version of Blender ^

To append data in Blender 2.63a or above: click "File » Append" to open the File Browser. From there browse to, and select, the file containing the elements needed ("LMB"). Select "Object" ("LMB") to access the folder and its contents, then select the appropriate items to Append to the open file ("LMB" for single items, "Shift+LMB" for multiple). Click the "Link/Append from Library" button top-right to load the selected items and return to the main interface.

Important: IMVUs default scale, the size of objects in the 3D View, is approximately 100x LARGER than Blenders so Append may appear not to have worked because the items are too big to be immedately visible. Always start a project by opening the appropriate template for the product type being made to ensure everything is the correct size relative to IMVU, else Scene "Scale" and "Clip" values will need to be increased to properly view view content (press "N" to access "View" properties, adjust "Scale:" under "Display", and "Start:" and "End:" under "Clipping").

Design note: bottom left of the Browser is a set of options, make sure "Link" is de-selected.

Append data in Blender

Using the File/Library Browser to Append data into an open furniture project in Blender - Shift+LMB to multi-select the template objects[1], make sure "Link" is deactivated[2], then click "Link/Append from Library" top-right[3] to load the selected data

Appending data in Blender 2.45 or 2.49 ^

To append data in Blender 2.45 or 2.49, from the "File" menu click "Append" to access the File Browse view. Browse to and then click the file containing the needed assets. From the list that appears click "Object" and then select the items corresponding to whichever element is being appended to the open file. Once done click the "Load Library" button top-left to load the assets and return to the main interface.

Design note: a series of buttons run along the bottom of the Browser view, make sure that "Append" is active to bring actual duplicates of the data into the open file.

Appending data in Blender 2.49

Using File Browse to Append template file data into an open IMVU furniture project in Blender 2.49 - RMB to multi-select all the template objects[1], ensure "Append" is active[2], then click "Load Library"[3] to bring in the data

With the template file data in place, or the furniture item appended to the template file, the various elements that make up an actual IMVU product must be positioned relative to each other and the desired affect then resulting item is to have; seat node units need to be duplicated (if/where required) and positioned/rotated depending on the number of sitting or standing positions for example. All however, will need to be joined and parented together in a particular order before export to IMVU.

Design note: furniture items do no require seat nodes as not all furniture has seating; lamps and wall hangings don't require seats for example.

Preparation & export check-list for Blender ^

Assuming the mesh has been finalised and has been fully UVW mapped with at least one Material assigned that has a correctly sized texture associated with it and the UVW map, the check-list below should be followed when exporting content from newer versions of Blender (2.63a+ or later) for IMVU;

  • CLEAR PARENTING: Press "A" to select the Scenes contents and then "Alt+P" and make sure to clear any Parent relationships that might already exist. Select "Clear and Keep Transform" from the "Clear Parent" pop-up - this keep everything in situ.

    • Optional: RMB select any Armature objects used in the furniture and fix their respective positions using "Ctrl+A" to "Apply" their "Rotation & Scale" - this is OPTIONAL because joining these Armature to "furniture.RIG" will automatically set this for each joined item.

      WARNING : DO NOT TAMPER with the SEATING Armature objects except to rotate, position & connect them to the main product Armature. DO NOT scale or otherwise muck about with the SEATING Armatures themselves or the individual bones contained within the armature except to rename and parent them to various 'master' bones; "Root" for furniture or "Skeleton.Room" for rooms. Ignoring the this warning will 'break' the nodes and render them useless.

  • JOIN ARMATURES: Using "Shift+RMB" select all the Armatures where appropriate making sure to click "furniture.RIG" LAST - it will outline a lighter orange to indicate this. Once done use "Ctrl+J" to "Join" the selected elements to "armature.RIG" resulting in a single larger Armature.

    • Optional: if "furniture.RIG" has been rotated during construction, select it and use "Ctrl+A" to set its "Rotation & Scale" (this may also have been done in the previous step above).

  • BONE PARENTING: With the Armature selected, press "Tab" to enter "Edit" mode. In "Bone" Properties (click the "Bone" icon in the Properties panel to the right), RMB select a bone and then change its "Parent:" in the "Relations" sub-section - click the text input field and select an entry from the drop-down list, typically this should be "Root" (note the uppercase "R"). Depending on the item being made all bones should have "Root" as their parent object. Press "Tab" to exit Edit mode on the Armature.

  • BONE NAMES: a furniture items 'master' bone must be called "Root". It sits atop of the Armature hierarchy. Sitting and Standing bones should be sequentially named, e.g. "seat01.Sitting", "seat02.Sitting", "seat03.Standing" and so on (applies to all bones within a set, i.e. "Catcher[n].Sitting", "Pitcher[n].Sitting", "seat[n].Sitting" and "Handle[n]" - where "[n]" equals an numerical, incremental value).
    Names are caSe SeNsITIvE;
    - "Root" (furniture).
    - "Handle[n]" (pose-spots).
    - "seat[n].Sitting" or "seat[n].Standing".
    - "Pitcher[n].Sitting" or "Pitcher[n].Standing".
    - "Catcher[n].Sitting" or "Pitcher[n].Standing".
    Other misc. or non-critical User generated bones only need to be named relative to their function, e.g. named to ensure proper Vertex Group pairing.
  • "RMB" select the Mesh and press "Tab" to enter Edit mode.

  • VERTEX GROUPS: Click the "Object Data" Properties button (icon with a Triangle) and in the "Vertex Groups" sub-section click the "+" button to add a new vertex group. In the input-field below type "Root" and press "Enter" to set.

  • VERTEX GROUP NAME: Still in Edit mode, with the mouse over the 3DView, press "A" to "Select All" and then click the "Assign" button to assign the selected to the newly created "Root" vertex group. Click "Select" and "Deselect" to test assignment. Press "Tab" and exit Edit mode.

  • MATERIALS: names should be appended a number, e.g. "block [0]". Where multiple Materials are used this should be a sequentially append, i.e. "block [0]", "block [1]", "block [2]" etc. Simple click the Material ID input field, or double-left click the entry in the Material List, to activate for editing and types the append needed. Remove any unused Materials - in Object Mode select the Material to be removed from the Material List, click the "-" (minus) button.
Adding a Vertex Group to the mesh

In "Object Data" Properties[1] make sure a Vertex Group is created and assigned to the Mesh object[2] with the same name as the master bone of the Armature, "Root" in this instance[3]

  • PARENTING: "RMB" select the Mesh then "Shift+RMB" the Armature (indicated by highlighting a lighter colour), press "Ctrl+P" to "Parent" the Mesh to the Armature selecting "Object" from the "Set Parent to.." list that opens.

  • ARMATURE MODIFIER: Deselect all ("A") then "RMB" reselect the Mesh. From "Object Modifiers" Properties (the wrench or spanner icon), click the "Add Modifier" drop-down and add an "Armature" modifier from the "Deform" sub-list (second column from the right). A set of options will appear below, click the input box under "Object:" (contains a small orange box icon) and select "furniture.RIG" from the list (or the name assigned to the rig being used for the furniture item).

Assign an Armature Modifier to the mesh

Assign an Armature Modifier to the mesh linking to the items Armature rig ("furniture.RIG" or whatever the rig has been named) - click the "Object Modifiers" button[1], select an "Armature" modifier which is now associated with the mesh[2], then select the Armature object to link[3] ("trough.RIG" is shown)

  • ACTION EDITOR: In the "DopeSheet" timeline at the bottom of the screen, click the pop-up button currently marked "Dropsheet" and change that to "Action Editor". In the Timeline, make sure the marker is positioned at frame "1" ("LMB" click or click-drag it into place), then select the Armature in the 3DView, press "Ctrl+Tab" to enter "Pose" mode. Press "A" to "Select All", then "I" to open the "Insert" menu selecting "LocRot" from the options available. A series of orange markers will appear in the Action Editor timeline below.

Insert a keyframe before export

Before exporting to Cal3D, the Armature needs to have a basic, single frame animation Sequence associated with it; in "Pose" mode press "I" to "Insert" and select "LocRot"

  • EXPORT TO IMVU: Select the Mesh then Armature and from the "File" menu select "Export » IMVU Cal3D Export". In the Browser view that open, bottom-left make sure "Export skeletal (.XSF)", "Export mesh (.XMF)", "Export animations (.XAF)" and "Export materials (.XRF)" are selected - deselect any other active options. Optionally change the name of the *.cfg file if desired and then finally click the "Export Cal3D for IMVU" button. Depending on the objects size and complexity there should be a short pause before Blender returns to the previous view.

 Select the correct Cal3D export options

In the export Browser make sure the appropriate Cal3D options are selected - change the file name if necessary[1] (optional/not required), select the correct Cal3D export options[2], click the "Export Cal3D for IMVU" button[3] to export the furniture for IMVU

  • ASSEMBLY: Assemble the components in IMVU Create Mode as normal by replacing the appropriate componants of an IMVU root derivable - item #12908 for example (default IMVU chair derivable).

  • Upload and Publish.

Preparation check-list for Blender 2.49+/- ^

Before exporting to IMVU, the items used to make the furniture will need to be collated together, some of which may need to be joined. Run through the check-list below to make sure this is done in the correct order.

  • CLEAR PARENTING: Un-parent the helper meshes ("Alt+P" - select "Clear and Keep Transformation (clear track)" - this keeps the helper mesh 'in situ' so it can be used as a constant point of reference for the associated bones and their relative positions).

  • APPLY LOCATION: Select all the armatures and fix their positions/rotations "Ctrl+A" - note that this step is optional because joining armatures together - as outlined in the next step below - will 'set' positions relative to the parent armature being joined to.

    WARNING : DO NOT TAMPER with the SEATING Armature objects except to rotate, position & connect them to the main product Armature. DO NOT scale or otherwise muck about with the SEATING Armatures themselves or the individual bones contained within the armature except to rename and parent them to various 'master' bones; "Root" for furniture or "Skeleton.Room" for rooms. Ignoring the this warning will 'break' the nodes and render them useless.

  • JOIN ARMATURES: Select all the armatures - "furniture.RIG" must be selected last (so that it is outlined in brighter pink than the others) - and join them together ("Ctrl+J") into one larger armature unit.

  • APPLY LOCATION: "Ctrl+A" to fix position/rotation of now joined armature to make sure it's position/rotation is set correctly.

  • BONE PARENTING: With the joined armature selected, press "Tab" and enter EDIT mode. Press "F9" to make sure the edit tools are active and in the "Armature Bones" panel, parent all available bones to the "Root" bone. Press "Tab" to exit EDIT mode.

  • BONE NAMES: a furniture items 'master' bone must be called "Root". It sits atop of the Armature hierarchy. Sitting and Standing bones should be sequentially named, e.g. "seat01.Sitting", "seat02.Sitting", "seat03.Standing" and so on (applies to all bones within a set, i.e. "Catcher[n].Sitting", "Pitcher[n].Sitting", "seat[n].Sitting" and "Handle[n]" - where "[n]" equals an numerical, incremental value).
    Names are caSe SeNsITIvE;
    - "Root" (furniture).
    - "Handle[n]" (pose-spots).
    - "seat[n].Sitting" or "seat[n].Standing".
    - "Pitcher[n].Sitting" or "Pitcher[n].Standing".
    - "Catcher[n].Sitting" or "Pitcher[n].Standing".
    Other misc. or non-critical User generated bones only need to be named relative to their function, e.g. named to ensure proper Vertex Group pairing.
  • APPLY LOCATION: "Ctrl+A" to fix rotation/position of MESH.

  • Select mesh and enter EDIT MODE (Tab key).

  • TRIANGULATE: Select all faces/verts/etc ("A").. and press "Ctrl+T" to triangulate the mesh ('tessellate').

  • VERTEX GROUPS: Still in EDIT mode, in "LINKS & MATERIALS" panel add a new VERTEX GROUP and call it "Root" (or the same name as the 'master' root bone, "Root" for example if using the furniture sample file available above); select all face/verts ("A") and "ASSIGN" the group to the mesh. Exit edit mode ("Tab").

  • MATERIALS: names should be appended a number, e.g. "block [0]". Where multiple Materials are used this should be a sequentially append, i.e. "block [0]", "block [1]", "block [2]" etc. Simple click the Material ID input field, or double-left click the entry in the Material List, to activate for editing and types the append needed. Remove any unused Materials - in Object Mode select the Material to be removed from the Material List, click the "-" (minus) button.
  • PARENTING: Select Mesh then the armature, then parent the mesh to the armature ("Ctrl+P"), you can check this by selecting and moving the armature, if parented correctly the mesh will move with the armature (the mesh will outline 'white' when moved in this way).

  • ACTION EDITOR: Open up the ACTION EDITOR (SHIFT+F12) and add a new action, call it "idle".

  • POSE MODE: Select the armature only and go into POSE MODE ("Ctrl+Tab").

  • INSERT KEYS: Select all ("A") and then press the "I" key to "insert keyframes" for "LocRotScale" - (yellow) markers will appear in the Action editor window. Exit pose mode ("Ctrl+Tab").

  • EXPORT: Select the mesh then the armature and export the files - "File » Export » Cal3D", leave defaults in pop up window and "OK". Export process saves all the relevant files at the same time to the same location (your project folder) as the working file.

  • ASSEMBLY: Build product using IMVU Previewer tool using the exported assets.

  • Upload to catalogue.

Wall, Floor or Ceiling Furniture ^

Included in the main ZIP file are three different versions of the same *.blend. They all share the exact same components except for the "furniture.RIG" Armature. For each type of "Wall", "Floor" and "Ceiling" furniture item the "Root" bone for each respective Armature is properly orientated with respect to an IMVU room and the type of furniture the item is to be - floor furniture is orientated so the Root bone lays on its back with the "Z" axis pointing upwards into the scene (the eventual room); wall furniture is orientated so Root stands upright with its "Z" axis pointing inwards; with ceiling furniture orientated similarly to floor furniture except the Roots "Z" axis points downwards.

"Z" axis for Floor furniture points UPWARDS

Floor furniture will typically have a Root bone orientated so it's "Z" axis points upwards into the Scene (what will be the room in IMVU) whilst the bone itself lies on its back along the ground plain

"Z" axis for Wall furniture points INWARDS

Wall furniture will typically have a Root bone orientated to it stands upright relative to the item with its "Z" axis pointing inwards into to the scene

"Z" axis of Root bone for Ceiling furniture points DOWN

Ceiling furniture will typically have a Root bone in a similar location to floor items except the Root bone will have a "Roll" value of "180°" so the "Z" axis point downwards below Blenders grid floor

This orientation and rotation of bones is important for proper item behaviour in IMVU and it should not, if done properly, unduly affect item construction in Blender; this should be the same in all instances except where it relates to the positions of meshes and Armatures so they don't load back-to-front or upside-down - in Blender meshes attributed to floor and wall items would be typically located above the grid, for ceiling items, below.

Ceiling bone needs to be "Rolled" 180°

Adding a "Roll" value or "180°" to the Root bone of a Ceiling furniture Armature, without this the item will display incorrectly in IMVU. Note also the mesh is below Blenders grid floor for correct placement relative to the Root bone as it relates to the 'origin' of the object (where it will initially spawn in IMVU)

Make a simple chair Furniture item ^

The following is a two part video tutorial taking the viewer through the process of making a simple 'block' style chair in Blender for IMVU from start to finish. Join the workshop for full support of post questions below.

Watched in conjunction with the tutorial information above, this two part video will help contextualise the process of making a simple furniture item for IMVU using Blender. From start to finish including export and assembly in IMVU's "Create Mode"

^