1. Home
  2. Learning
  3. Going 3D
  4. Meshing Rooms – Skeletons and Nodes

Meshing Rooms – Skeletons and Nodes

Despite how it may seem a Room product is actually one of the simplest mesh product that can be made, much like a Furniture product. All that is needed is a mesh, the bit users see, and a skeleton comprising a single node called skeleton.Root. So long as the two elements, mesh and skeleton, are linked together properly a working product can be exported for IMVU.

While this tutorial uses Blender, the information presented here apply to 3ds Max or any 3D editing software.

Basic knowledge of how to use 3D editing software is required.

Basic Room Skeleton

Everything in IMVU has an underlying skeleton. A Room Skeleton has attached to it several things including meshes, in this case the room shell mesh or meshes (the bits visible to the user), Furniture nodes (to which furniture products are attached when a room is decorated) and avatar Seat nodes.

Root Node

The most basic skeleton that can be used for a room is a single master node called skeleton.Root and sits at the top of the scene hierarchy. It is a single non-mesh object that acts as a reference point for the entire IMVU scene.

skeleton.Root
- Mesh
- [+ nodes]

skeleton.Root is normally positioned at grid-centre (0, 0, 0 in X, Y, Z world space) and oriented  with Z-axis upward.

Your 3d editor should be set to Z-axis up. Both Blender and 3ds Max are oriented this way.

Furniture Nodes

Furniture Nodes are special nodes within a room which are designed to accept the placement of furniture products when decorating a room. The are specially named and oriented  relative to the furniture’s intended use. This is determined by the orientation of the Z-axis of node and corresponds to the type of furniture item being placed; floor, wall or ceiling.

skeleton.Root
- furniture.Floor.[n]
- furniture.Wall.[n]
- furniture.Ceiling.[n]

Floor Nodes

Floor Nodes have their Z Axis pointing upward into the Room

Wall Nodes

Wall Nodes have their Z Axis pointing inwards towards the center of the Room

Ceiling Nodes

Ceiling Nodes have their Z Axis pointing downwards into the Room.

Avatar Seat Nodes

For more complex room the basic single node skeleton can be added to by parenting other nodes to skeleton.Root. With a set of nodes called Seats you can add places for avatars to sit or stand, pose or animate. As well you can add nodes to animate meshes in room itself.

Rooms require at least six seat nodes to be present. If you do not supply them when building your room they will be created starting a 0, 0, 0 world space spaced along the X axis.

For nodes that are used by avatars there are a set of four nodes, each performing specific functions: a Seat node that defines the avatar location, a Handle node which is the User Interface element clicked on in-game, and Catcher and Pitcher nodes to establish where avatars stand when interacting with each other.

Taking a closer look this set of nodes, the nodes represent either a Sitting or Standing stance by default, or with slight modification, a custom Stance pose or animation. This is determined by a case-sensitive suffix label such as .Sitting, .Standing or a custom stance label (more about this later).

skeleton.Root
- Handle[n]
- seat[n].Sitting
- Catcher[n].Sitting
- Pitcher[n].Sitting

The Handle node is generally positioned above the seat node, but can be repositioned for ease of access. This is useful in instances where too many seats are in close proximity to each other.

The Catcher and Pitcher similarly can be repositioned but should remain the same distance apart to ensure cooperative avatar animations are properly synchronized such as avatar hands touching during a handshake for example.

Avatar Seats don’t have any say in how an avatar might pose or animate, they only highlight where avatars appear and can be interacted with.

Animation Nodes

For animation, additional nodes can be included depending on what and how the item is being animated. A single node, parented to Root for example, can be used to rotate or move something. More nodes can be used to create more complex animations of the room product mesh.

In addition animation can be set up to pose and animate the avatar using a custom stance label so long as the hierarchy between the nodes is set up to accommodate this. Like the labels SittingStanding, the use of a custom stance label are used to trigger Avatar Actions.

Sitting and  Standing are built-in IMVU avatar actions.  Custom custom stance labels are used to trigger custom avatar poses or animations called Avatar Actions.

For more info see Avatar Actions

Nodes and more Nodes

Node Numbering

Finally, all related nodes such as Furniture or sets of nodes in Seats (Handle, seat, Catcher, and Pitcher) need to have their names labeled so that IMVU knows how many there are. For rooms (and for Furniture), each of these nodes needs to have a numerical identifier. This is a done using a two digit number appended to the node’s name before the node’s function label suffix of  .Sitting, .Standing or a custom stance label.

skeleton.Root
- furniture.Floor.01
- furniture.Floor.02
- Handle01
- seat01.Sitting
- Catcher01.Sitting
- Pitcher01.Sitting
- Handle02
- seat02.Sitting
- Catcher02.Sitting
- Pitcher02.Sitting
Node Numbering

Seat nodes are limited to 01-99.

Furniture nodes may exceed 100, but must not be padded with zeros except for 01-09.

Examples of valid furniture numbering:

1
01
02
03
04
05
06
07
08
09
10
100
1000

Examples of invalid furniture numbering:

001
010
0100
01000
0001

Lights Nodes

Lights in rooms are represented by nodes also. Named typically Omni and Spot, they are often parented to a node called node.Room. Like Seats, if there are more than one of each they are numbered sequentially with a two digit suffix.

Camera Nodes

Parented to skeleton.Root are the Camera Nodes, named camera.01.01 and camera.01.01.Target which control where the scene camera is located and the direction it is facing when a room is loaded by IMVU. Unlike lights there can be only one camera.

NOTE

The node camera.01.01 must be oriented such that its local Z axis is facing away from the node camera.01.01.Target. The is handled automatically in 3ds Max by using a Target Camera. In Blender you must manually orient the rotation of  camera.01.01 or use our handy Blender IMVU Studio Toolkit.

And there we have it, as we can see, the combinations of these simple sub-elements means we can build quite complex rooms, the only limitation being the imagination!

Updated on July 21, 2023

Was this article helpful?

Related Articles

Discuss this!
Ask questions and get answers in our Creator Discussions.
BROWSE DISCUSSIONS