## Bone

Set up bones inside objects, and deform objects by moving bones.

### Supported file format

Modeling data with setting bones can be exported and imported to other software by the file format that supports bone.

File format | Import | Export
--- | --- | ---
FBX / PMD / glTF / VRM | OK | OK
DAE | OK | -

### Process chart of Bone edit

[Bone] has two modes, [Rigging] and [Skinning].

At first, only operations in [Rigging] mode are available.

Rigging
  It is a mode to place bones.
  - Set up bones
  - Template
Bone setting
  - Display config.
  - Bone list
    - Property
Skin setting
  Attach the bones to the object after placing the bones. Objects attached bones are called skins.
Skinning
  It is a mode to operate skin objects with bones.
  You can deform skin objects by bones and adjust the weight of bone for a skin object.
  - Deform by bones
  - Paint
  - Anchor
    - Closed region
    - Ellipsoid
  - Copy
VRM
  Configure settings for VRM 1.0/0.x.

### Placing bones

Select [Rigging] first, create bones, and set the position and the direction.

Add
  Click on 3D display and place a node.
  A node is the smallest unit used for bone editing. Connect two nodes to create one bone.
  When you drag from the placed node, a bone is created.

  Click and create a node |  | Create a bone by dragging from a node

  While creating a bone, hold down the left button and right-click near another node to combine this node with another node.
  Shift + click a bone to add a new node at that point. The bones are split.
Delete
  Delete a clicked node.
X=0
  Move a clicked node to X=0.
Move
  Move a node.
  While moving a node, hold down the left button and right-click near another node to combine this node with another node. And you can select all nodes from the clicked to ends together by Shift+Ctrl+click.
Rotate
  Rotate selected bones.
  L/W
    It selects whether to display and input values of the rotation angle in local coordinates (L) or world coordinates (W). (This setting has no effect on handle operations. It is set in the [Edit option])
  Rotate children
    When one node is selected, if the node has a child node, the child node is rotated around the parent node.
    When multiple nodes are selected and rotated, the selected node rotates around the center point of the handle. Ctrl + AltDrag to move the center of the handle.
  Adjust direction
    Rotate the orientation of the local axes of the selected node.
    Click [Reset direction] to initialize the direction of the local axes.

    Fin

    The direction of the bone is represented by a fin attached to the bone. The orientation of the fins is determined by the orientation of the local coordinate axes of the start node.
    The bone's direction bases on Rotation limit.
    For example, when the limits are following values,

    | Min | Max
    --- | --- | ---
    X | 0 | 90
    Y | 0 | 0
    Z | 0 | 0

    a range to rotate the bone varies like the following image by rotating 180 degrees around Y axis on a local coordinate.

    Before rotation |  | After rotation

Scale
  Scale a bone.
  Ctrl+Alt+Drag to move the center of the handle.
Centering
  A node is created at the center of a front face and a back one when [Centering] is checked.

  Centering - ON

  Centering - OFF

Align
  Aligns the selected node to the specified position.
  - With the X/Y/Z axis - Align multiple nodes along the nearest X / Y / Z axis.
  - Middle bones between parent and child - For bones with multiple levels. Align the nodes between the selected parent and children on a straight line.
  - Make two bones symmetric - Move two selected bones where they become symmetrical.

### Template

You can use a template instead of creating bones from scratch.

Standard Template
  Templates such as MMD (MikuMikuDance), Humanoid for Unity, and VRM humanoid are available.
  Please adjust the size and position of bones to an object after putting a template.
Import
  The bone structure is imported from the file.
Export
  Current bone structure is exported to the file.
  If the [Bone setting mode] is for VRM, information related to VRM is also saved.

### Display config.

Display bones
  Switch to display or not bones.
  Bones aren't displayed on 3D views if you don't check it.
  Display bone axis
    If it is checked, the local axes of each node are displayed.
  Display bone names
    When this item is checked, bone's names are displayed on 3D views.
  Display in other commands
    When this item is checked, bones are displayed on 3D views even if you switch to other commands.
  Displayed bone width
    You can set the width of a bone displayed on 3D views.
    The setting value is in the range from 1 to 20. Larger the value, the width of a bone is thicker. The initial value is 10.
Weight Display
  It is the setting for display color of weight in [Paint] or [Anchor].
  Multi Color
    Weight values of all bone are displayed on skin objects. Weight color can be set in [Property] of [Bone list]. A part of an object with multiple bones is displayed gradation color.
  Color map
    Weight values of a selected bone are displayed on skin objects. The color is applied from the selected color map in [Configuration > Display].
    In the default setting, larger weight value becomes red, and less weight value becomes blue.

    Multi Color | Color map

  Coloring vertices and lines
    When it is checked, the color display of weight values is also applied to vertices and lines.
Apply morph deformation
  You can edit bone with keeping deformation of [Morph] if it is checked.
  *It is supported in [Skinning] only.
Float a bone list.
  [Bone list] is opened as a floating window when this item id checked.
Color
  You can set the color of bones, nodes, anchors, spring bones (for VRM) and colliders (for VRM).
Bone setting mode
  When you select [For PMD], [VRM 1.0], or [VRM 0.x], the setting items for PMD/VRM will be displayed in [Property]. For VRM 1.0/0.x, it also affects the VRM version when outputting the VRM file.
Reset setting
  Initialize Display config.

### Skin setting

Bind a skin object to the bone by [Skin setting] button after setting up bones.

Select objects in the list and push [OK]. Weight values are added to the objects, and the object will be moved together with bones.

If you deselected objects and push [OK], weight added to the object is released.

After unbinding a skin and bind it again, the previous weight will be reproduced as possible. If the reproduced weight is not desired, please push [Reset weight] button in [Paint].

Skinning
  It set the method of deformation in the [Skinning] mode.

  Liner | Dual quaternion

  If you select dual quaternion, the thickness of an object is less likely changed when you move a joint of bones.
Effect bone limit #
  Specify a maximum number of bones that affect each vertex. It is not limited if the check is off.

In [Rigging] mode, you can add and adjust bones after binding skins.

After binding skins, newly added bone can be set weight automatically when you press [Skinning] button. If you don't select the automatic setting, you need set weight by [Paint] or [Anchor].

### Bone list

Created bones are displayed in a list.

Property
  Change a setting of the selected bone. (See later description)
Move up one level
  Move the selected node up one level.
Move down one level
  Move the selected node down one level.
Delete
  Delete a selected node in the list.
  Copy a bone
    Copy selected nodes.
  Divide a bone
    Insert nodes into the selected bone and divide it into any number.

    Click and select a bone |  | Divide by one node

  Combine bones
    Combine selected nodes to one.

    Shift+Click and select any bones |  | Combine to one

  Mirror all
    Symmetric bones are shown along a Y axis when this is checked. When an original bone is moved, the mirroring bone is also moved together.
  Freeze mirror
    The mirroring bones can be added to the list as independent bones.
  Set a rule for bone's name
    You can set the naming rule for bones created by freezing mirror bones.

    Name the bones according to the naming rule.
    Frozen bones are automatically named according to the rule.

  Delete all bones
    Delete all nodes.
Right-click menu
  When you right-click the name of bone on the list, you can open the menu.
  You can set part of the item in [Property] from this menu.
  Move to the top of the same hierarchy
    Selected node on the bone list is moved to the top in the same hierarchy.

    Select bone4 and Move
    List items are sorted.

  Disconnect from parent
    The bone will be disconnected from a parent bone.
  Disconnect children
    Child bones will be disconnected from this bone.

### Property

Settings of a bone selected in [Bone list] can be changed in [Property] dialog.

List
  You can change the order of bones by up and down arrow buttons.
Information
  Name
    It is to set the name of the node.
  Visible
    If you unchecked it, the node is not displayed on the 3D view.
  Lock
    If you checked it, Operation for the node is disabled.
  Mirror
    If you checked it, the mirror of the node is displayed at the position of the Y-axis symmetry.
    When you click [Freeze] in bone list, a mirror of the node is added to list as a real node.
  Dummy
    Ignore weights for the node, and a movement of the node does not affect a skin object.
  Float node
    If you unchecked it, the node is fixed. You cannot move the node in [Skinning] mode.
  Parent
    Set a parent node to it.
Weight Color
  Change the color of weight.
Forward axis
  Selects the type of axis for the bone's child node direction from +X/-X/+Y/-Y/+Z/-Z. The default is +Y.
Rotation limit
  Limit a rotation angle along each axis with the specified range.
IK
  When a node is moved after binding a skin, parent nodes are moved together.
  Hierarchy of nodes can be changed by number editor in the side.

  Set IK to a child node
  The node is moved, a parent node is moved together

Bone setting mode
  When you select [For PMD], [VRM 1.0] or [VRM 0.x], you can set properties for the selected format.

The following items can be set only in the [For PMD] mode.

Group
  It is to classify nodes for each group.
  When you click [Edit], a dialog to add a new group and to delete a group is opened.
  *If you do not set up a group to the node, when the PMD file is loaded in the MikuMikuDance, bone is not registered in the display frame.
Link
  It is to set the link of nodes. In [Skinning] mode, when the linkage source node is operated, linked nodes are operated together.
  You can specify the interlocking rate for each operation [Move], [Rotate], [Scale].

  Set bone1 as the link source of bone3 and bone5. |  | Multiple bones link and move by moving bone1 or bone2

IK
  You can set [IK name] and [IK end name] for PMD.
  By selecting [IK parent] in the list, when outputting the PMD file, the parent is set for the IK bone. If IK is applied to the specified bone, you can check [Treat destination's IK bone as IK parent]. When checking it, IK Bone for the specified bone is set to the parent.

*Notes for the PMD file export

In PMD format, single parent bone cannot have more than one child bone. (Dummy bones are excluded.) If there are multiple children bones at the same level, the weight is held only the bone located at the top on the bone list. Other children bones are treated as a dummy.

The following items can be set only in the [For PMD] mode.

Humanoid
  Specify which part of the human body the bone corresponds to. When set to [Auto], bones with matching bone names and humanoid names are recognized as bones for that humanoid.?
  The structure is almost the same betweenn VRM 1.0 and 0.x, but there are some differences such as required bones. Please refer VRM specification (VRMC_vrm.humanoid) for details.
Node constraint (VRM 1.0 only)
  By specifying node constraints for [Roll], [Aim], and [Rotation], you can configure settings so that changes in each state of the constraint source node are also applied to this node. The closer the weight is to 1, the more changes in the constraint source node will be applied as is. Please refer VRM specification (VRMC_node_constraint) for details.

### Deform by bones

After binding a skin, you can pose the object by deforming bones in [Skinning > Bone] mode. And you can save and load the pose.

*In [Skinning > Bone] mode, [Add], [Delete] and [X=0] are not available.

Move
  Move a bone by dragging a node.

  Select a bone |  | Move the endpoint

Rotate
  Rotate the bone starting at the selected node.

  Select a bone |  | Rotate by dragging a handle

Scale
  Scale the bone starting from the selected node.

  Select a bone |  | Scale by dragging

  *If you set Dual quaternion to [Skinning] in [Skin setting], [Scale] is disabled.
Default
  Restore a selected node to the pose at the time of binding a skin.
Default all
  Restore all nodes to the poses at the time of binding a skin.
Save pose
  Save a current pose. 3 poses can be stored.
Load pose
  Load a saved pose.
Apply deformation
  Add a deformed object of a current pose as a new object.

### Paint

In [Paint], you can manually adjust a weight; the influence of a bone to a skin object.

Weight values of bones are displayed by color on a skin object. Method of the display can be changed in [Skin setting].

Multi Color | Color map

Select
  Select a bone.
  You can also switch selected bone by Ctrl+click in other modes.
Point
  Weight operation
    Select a vertex in a skin object, and input a weight by number.
    Click [Select weighted points], select all vertices that assigned weight by selected bone.
    Click [Delete weights from all bones], delete weights from all bones on selected vertex.
  Weight list
    Displays a list of weight values assigned to the selected vertex from each bone.
Brush
  Adjust weights like painting the skin.
  - Brush - Paint the skin by dragging and adjust the weight.

    Original |  | Drag by [Mix] brush

  - Needle - Click to select any vertex. The weight is adjusted around it.

    Click a vertex |  | and assign weights around vertex.

Picker
  A weight value of the clicked vertex is applied to the brush.
Normalize weights
  The sum of the weight values will be corrected to 100 when the weight is set to one vertex from the multiple bones.
  If [Auto normalize] is checked, the correction is done automatically. You do not have to click this button.
Reset
  Restore weight in vertices with the selected bone to the initial value.
Reset all
  Restore weight in all vertices to the initial values.

### Anchor

If the weight assigned by auto setting is not suitable, you can set the weight to skins again by [Anchor].

#### Closed region

In [Closed region], objects are set as anchor to each bone. You adjust shape and position, size of them, and click [Apply weight] button. The inside of anchor object is set as region of weight.

Move / Rotate / Scale
  It edits vertices of anchor objects.
  You can select multiple vertices by click with pressing shift key.
  And, you can select an anchor object by click a bone with pressing Ctrl key.

  Click and select a vertex |  | Drag and move

  Click a bone with pressing Ctrl key |  | Drag and move an anchor object

Default
  To initialize the anchor of the selected bone.
Default all
  To initialize anchors of all bones.
Target bone
  When [All] is selected, anchors of all bones are displayed on 3D view. If you select [Select], only an anchor of a selected bone is displayed.
Highlight inside vertices
  Vertices in the anchor of selected bone is highlighted when you checked this item.
Export
  It creates a new object and exports each anchor to child objects. Exported objects can be edited by edit command.
Import
  It imports the object with the same name as a bone to an anchor.
Apply weight
  When you click [Apply weight] button, the set weight is applied. If you don't click this button, the setting is not applied.

#### Ellipsoid

In [Ellipsoid], a range which a bone is affected is displayed as an ellipsoid. If you click [Apply weight] after you adjusted position and size of ellipsoids, the inside of this ellipsoid is set the range of weight of the bone.

Move
  Moving an ellipsoid of selected bone.

  Select the bone |  | Drag to move

Rotate
  Rotating an ellipsoid of selected bone.

  Select the bone |  | Drag handle to rotate

Scale
  Scaling size of an ellipsoid of selected bone.

  Select the bone |  | Drag to scale

Strength
  A red ellipsoid on the inside represents the strength of influence of bones.
  If multiple ellipsoids overlap, the weight of bones is automatically assigned to the vertex. The total is 100. When assigned, the stronger bone of the influence is a priority.
  In [Strength], adjusting the strength of the influence of bones by dragging.

  Left bone is stronger | Right bone is stronger

Width
  To extend and retract the width of an ellipsoid of selected bone.

  Select the bone |  | Drag to extend the width

Default
  To initialize the sphere of the selected bone.
Default all
  To initialize the spheres of all bones.
Target
  If you selected [All], the setting of spheres apply to all bones. [Select], the setting of selected spheres applies to selected bones only.
Preview
  If you checked it, the result of setting spheres is displayed as real-time preview.
Interpolation
  If you checked it, vertex outside the range of the sphere is set automatic interpolation.

  Without interpolation | With interpolation

Apply weight
  When you click [Apply weight] button, the set weight is applied. If you don't click this button, the setting is not applied.

### Copy

In [Copy], you can copy or import/export your setting of weight.

Mirroring copy
  Copy weight of bones of the selected object to vertices at the symmetrical position with X/Y/Z axis.
  The direction copying can be selected [Positive to negative] or [Negative to positive] of axis.

  Setting weight to only right |  | Copying weight with [Positive to negative] of [X] axis

Transcript
  Copy weight of the selected object to other objects.

  Set weight to left object |  | Transcribe it to right object

Export
  Export weight information of selected objects to a file.
  VRM information is also output in VRM 1.0/0.x mode
Import
  Import weight from an exported file.
  Even if positions of bones or vertices are different, weight values are set to vertices with bones has the same name as far as possible.

### VRM settings

Configure each setting for VRM 1.0/0.x.

If you specify [VRM 1.0] or [VRM 0.x] for [Bone Setting Mode] in [Display config.], the [VRM] tab for VRM 1.0 or the [VRM 0.x] tab for VRM 0.x will be displayed next to the [Bone] tab in [Rigging] mode

Select the [VRM] or [VRM 0.x] tab, switch the editing target to [Spring bone], [Look at], [Visibility] and [Meta] using the button on the top left of the tab, and configure various settings.

#### Spring > Spring bone

When the model moves, set the bones that will swing a lot, such as clothes or hair, as [Spring bones].

The way spring bones are set up differs greatly between VRM 1.0/0.x.

VRM 1.0
  Spring bones that are continuously connected between parent and child are treated as one group. You can set parameters for each spring bone in the group.

  4 spring bones are connected to each of 6 groups.

VRM 0.x
  Manage multiple spring bones together (regardless of whether they are connected or not) for each group. For each spring bone, the area from the specified bone to the end bone (including branches) is subject to spring control. Common parameters are applied to each spring bone within the group.

  There are 6 spring bones in the same group.

The operation to create spring bones is the same with VRM 1.0/0.x.

- Press the [Create] button.
- Select one or more bones in the 3D view or in the bone list
- Press the [Create spring bone] button and enter the [Spring bone name]

If you want to change the target bone of the spring bone after creation, use the buttons at the bottom of the spring bone list. Operations differ depending on VRM 0.x/1.0.

+ (VRM 0.x)
  Adds the bone selected in the bone list as a spring bone.
x (VRM 0.x)
  Removes the spring bones from the bones selected in the spring bone list.
Re-create (VRM 1.0)
  Replaces the spring bone with the bones selected in the bone list. It must be a series of bones connected between parent and child, just like when it was created.

After creating the spring bone, set the parameters to the spring bone with [Edit] selected. Changes to each parameter are not reflected in the 3D view, but you can check the results on the VRM player.

Hit radius
  The radius used to determine collision with colliders, which will be described later. In the external VRM viewers, the position of the spring bone will be adjusted so that the collision object does not fall within this radius.
Stiffness
  Specify the strength of the attempt to return to the original shape in the range of 0 to 1. The softer the material, like hair, the lower the value.
Drag force
  Specify the deceleration force in the range of 0 to 1. The higher the value, the slower the movement.
Gravity (Power/Direction)
  Set the strength and direction of gravity.

#### Spring > Collider

In [Collider] mode, you can set colliders for each group of spring bones.

For example, if your head, arms, legs, etc. are near clothes or hair, by placing the collision object in a place where there is a possibility of contact, the clothes or hair will not sink into your body no matter how much the spring bone moves. This can be prevented.

The collision object is set on the inner thigh of the skirt.

Create a collider using the following operations.

- Press the [Create] button
- Select one or more bones in the 3D view or in the bone list
- Press the [Add new group] button and enter the [Collider group name]

Other operations are as follows.

Add a collider
  Adds the selected bone as a collider to an existing collider group.
Share existing group
  Shares a collider group used within other spring bone groups. Editing a shared collider group also affects other spring bone groups.
Delete
  Delete the selected collider or group in the collider list.
Rename
  Renames the selected collider group in the collider list.

The following parameters can be set for the created collider.

Shape
  Select from [Sphere], [Capsule] or [Plane].
  [Capsule] is only available for VRM 1.0, and [Plane] is only available for software that supports the VRM 1.0 with the extented specification. When outputting as VRM 0.x, capsules are automatically approximated to multiple spheres.
Inside
  You can place objects inside a sphere or capsule to prevent them from ricocheting and flying out. This is only available for software that supports the VRM 1.0 with the extended specification.
Offset
  Specify the position of the collision object relative to the bone.
Radius
  Set the radius of the collision object.
Tail
  Sets the center position of the end of the capsule. Cannot be set for spheres.

#### Spring > Center

Specifies the bone to use as the center space. With a bone selected in the bone list, press [Center the n selected bone]. If no bones are selected, the center setting will be canceled.

The change of the center bone will not be reflected in the 3D view, but you can check the result on the VRM player.

How much the spring bone swings depends on its relative distance to the center bone. If the entire bone moves and the relative distance remains the same, the spring bone will not sway.

If the center bone is not specified, the amount of movement of the bone in world coordinates is used as the reference.

In VRM 1.0, the center bone must be either the top of the spring bone, or one of its parent bones (up to the root).

Please refer the VRM specification for details.

#### LookAt

These are setting items for gaze animation. Here, set the viewpoint and the range of movement of the eyes.

Even if you change each item, it will not be reflected in the display on the 3D view, but you can check the results on the VRM player.

Set the gaze point and eye movement range. Please refer the VRM specification (VRMC_vrm.lookAt) for details.

Reversed front (VRM 0.x only)
  Specify this when the front direction is reversed and facing the +Z direction.
  This is set automatically if you load a VRM 0.x file, but if you set up your model from scratch, the orientation of your model must match this check.
Type
  Select from the following methods to express changes in viewing direction.
  Bone
    Rotates the bone that the [leftEye] or [rightEye] humanoid is set.
  Expression (Morph)
    Combine [Morph]'s four presets: [lookUp] [lookDown] [lookLeft] [lookRight].
Gaze offset
  Specify the base point of the viewpoint as a relative distance from the bone where the [head] humanoid is set. Adjust it to match the eye height in the model.
Eyes motion range
  Specify the [Angle limit] and [Value scaling] for the eyes in each direction: [Horizontal inside], [Horizontal outside], [Vertical down], and [Vertical up].

#### Visibility

Specify which objects are visible or invisible when a first-person camera (VR perspective camera) or third-person camera is used.

Click the [Add] button to set display conditions for the object selected in the object panel.

Auto
  Display control is performed based on VRM specifications.
Both
  Displayed in both 1st and 3rd person cameras.
Third-person only
  If you set it for the face, eyes, head, hair, hat, helmet, etc., it will not block the VR view when viewed with VR goggles.
First-person only
  Set it to a user interface object that is visible only to the player and invisible to others.

Objects that do not have visibility settings are treated as [Auto]. Please refer the VRM specification (VRMC_vrm.firstPerson) for details.

#### Meta

Configure settings regarding copyright, thumbnails, purpose of use of data, permission to redistribute, etc.

Copyright etc. for VRM 1.0 | Permissions for VRM 1.0

Since the setting items differ between VRM 1.0/0.x, you will need to configure the settings again when changing the VRM version.

A thumbnail can be set by referencing an existing file or by capturing a screen. When referencing an existing file, please specify a PNG or JPEG image with a resolution of 1024x1024.

Please refer the VRM specification (VRMC_vrm.meta) for details of those settings.

#### Convert to VRM 1.0

Convert the following items from VRM 0.x to 1.0.

Spring bones
  Convert the structure of the spring bone so that it connects from the node to the end. If there are branches, multiple new spring bones will be generated.
Color space of MToon shader
  Adjust the color values used in the MToon shader so that the colors look the same even in the sRGB space used in VRM 1.0.

The model must already be facing the +Z direction (toward the front) at the time of conversion. - If facing in the Z direction (backward), you need to reread the VRM 0.x file and reverse the forward direction at that time.

Meta information that is completely common between 0.x and 1.0 will be retained as is, but everything else will need to be set again.

#### Validate VRM

If there is an inappropriate setting for VRM, the error location will be detected. Currently, the following elements are checked;

- Required bones for humanoid exist
- Bones structure (parent-child relationship) of the and spring bones
- Presence of facial morph presets
- Required items in the meta information
- Material shader type

#### VRM player

You can configure each spring bone setting while moving the VRM model. To use the VRM player, all required humanoid bones must be set.

VRM player cannot be used in offline environment without internet connection.

Move the model
  You can move the entire model by left button dragging and see how the spring bones shake.
Drag target
  Select the target to move by dragging with the left button.
  Root node / Hips bone
    You can move the entire model to see how the spring bones shake.
    If the root is specified at the center of the spring bone, it will not shake even if you move the root node, so the hips bone will be selected by default.
  Look at
    You can move the position of the gaze point, which appears as a red sphere ahead of your line of sight, and see how your line of sight moves based on [LookAt]. You can also check while changing the parameters of [Eyes motion range].
Animation
  The following animation data is compatible;
  * Adobe's Mixamo (.fbx)
  * VRM animation (.vrma)
  When you drag and drop the animation file into the VRM player window, the model will move according to the animation.
  [Playback speed], [Play/Pause], and [Stop] can be set.
Spring bone setings
  With the spring bone selected, you can change the values of [Hit radius], [Stiffness], [Drag force], [Gravity power] and [Center].
  If you change values, it will only be reflected temporarily in the VRM player, so you need to [Save changes] to make the change take effect even after closing the VRM player.
Configuration
  In [Configuration], you can set [Initial Mixamo animation] and [TCP port].
  By specifying [Initial Mixamo Animation], the same animation can be applied every time the VRM player is started.
  [TCP Port] specifies the TCP port that is used by the HTTP server required to start the VRM player. This number is usually determined automatically, but if you can only use certain ports for security or other reasons, change this number.