Converting Ready Player Me Avatars for Second Life and OpenSim

This blog post provides resources and information for a route to take Ready Player Me avatars through Blender with the (paid) Bento Buddy addin into Second Life and OpenSim to travel across the Hypergrid. Note that a current Bento Buddy “Expression” service subscription is needed to be able to export to Collada (.dae).

An alternative process and simpler instructions is available using the “Onigiri” Blender add-on. See this blog post.

Workflow for Conversion

  • Obtain Ready Player Me avatar .glb URL.
  • Download avatar URL with ?textureAtlas=none&pose=T on the end.
  • Start Blender and delete the default camera and light.
  • Import .glb to Blender and check avatar is in T-Pose.
  • Extract all the textures using one of two methods:
    1. Save the project as a .blend file first, then go to File -> External Data -> Unpack Resources and select “Use files in current directory (create when necessary)”.
    2. Via the Texture Paint tab, select each texture via the drop down menu and then Image -> Save As.

Export FBX for other platforms such as Unity

This is a good point at which to export an FBX version of the avatar if you wish to use it in other platforms, such as Unity. The settings for “Add Leaf Bones” box and the “Bake Animation” box for FBX Export appear not to matter, so defaults are fine. The FBX avatar and its textures can be inserted into a Unity project’s assets directly. For Unity I suggest uploading the textures to a folder first, accepting any recommendation to “Fix” the normal map images. Then add the FBX model to ensure that the materials all are correctly setup with bumpiness normals.

Set Finger Pose to Second Life/OpenSim Splayed Fingers

Shortcut for this section: Use the saved Bento Buddy Pose Library entry that I have made for you that will splay the hands of the avatar in a form suitable for Second Life and OpenSim [Resources here https://openvce.net/resources/downloads/ReadyPlayerMe/BentoBuddy/]

The Ready Player me T-Pose has the fingers in a line. Second Life and OpenSim T-Pose rest pose has the fingers widely splayed. The steps in the bullets below should be undertaken BEFORE doing the character conversion. Missing out these steps will still give a reasonable avatar but leave the fingers deformed.

  • Add (temporarily) the Bento Buddy Rig Creation Safe Rig which have splayed fingers as expected in Second Life and OpenSim) to act as a comparison to the Ready Player me T-Pose which has the fingers straight.
  • Enter Blender Pose Mode. It is also useful to set the skeleton to be in front in Viewport Display.
  • Rotate the bones of the avatar’s fingers and thumbs to closely match the reference rig. It is best not to scale or move them to avoid bad hand positions. You can mirror the changes on one hand to the opposite hand using the “Pose Options” setting for “X-Axis Mirror”.
  • Select the avatar “Armature” and under Bento Buddy Rig Tools click the “Rebind associated mesh” button.
  • Check that the Pose and Rest Pose for the mesh are now identical (with splayed fingers).
  • Remove the temporary Bento Buddy reference safe rig.


You can save the splayed fingers T-Pose in the Bento Buddy Library for later reapplication to simplify these steps on other avatars. The Library is usually located at something like
C:\Users\…\AppData\Roaming\Blender Foundation\Blender\3.4\scripts\addons\bentobuddy
but can be overridden when you update Bento Buddy so save a copy elsewhere as well. Use the Bento Buddy Animation tab -> Enable Posing Library. Select the avatar and “Add Pose” from the rig, rename it to something meaningful (e.g. “T-Pose Splayed Fingers”) and “Save Lib” to save a .bpl (Bento Pose Library) file.

Location of the Apply Pose ButtonYou can then skip the steps above to set the fingers in splayed position by selecting Bento Buddy’s Animation -> Enabling the Pose Library and then loading the .bpl pose library file and applying the pose to the avatar (note to make the Pose Apply button to be active you might have to click off the Armature in the Blender Outliner and and back on it).

Its safest to restrict the change of bone positions to just the thumbs and fingers which you changed by selecting only them first and using the Posing Library option to “Apply to selected bones only”. But you also can streamline that procedure by manually editing the .bpl file to only leave in the “pose_matrix” positions for the fingers and thumbs.
[Resources here https://openvce.net/resources/downloads/ReadyPlayerMe/]

Convert Avatar Rig/Armature to Second Life/OpenSim version

  • Under Bento Buddy Character Converter, load the readyplayerme.bbm map (Any version from 3.0.10.2 30-Sep-2022 onwards) and click Convert
  • Use Bento Buddy to export for Second Life/OpenSim (select all three options including Project Full Rig)
  • Import to Second Life/OpenSim. Name the mesh something sensible. Set the Lowest Level of Detail to 0. Select Physics as “Lowest”. In Rigging tick both “Include Skin Weights” and “Include Joint Positions”. If you leave out Include joint positions, the avatar may look spindly.

Note: Ready Player Me avatars have a Mixamo compatible skeleton/armature. After 30-Sep-2022 versions of Bento Buddy have readyplayerme.bbm similar to mixamo_no_prefix.bbm, but before that readyplayerme.bbm (2KB) would not give a full conversion and would leave the hands unconverted.

Prepare the Avatar

  • Attach the uploaded mesh avatar (e.g. to Avatar Center)
  • Change the Description field of the avatar mesh to include the licence information:
    CC BY-NC 4.0 https://readyplayer.me
  • As with any mesh avatar in Second Life or OpenSim, you will need to add an “Alpha Mask” to make sure the underlying standard avatar does not show through the mesh. This should make all parts transparent (Lower, Upper, Head, Eye and Hair)

Texture the Avatar in Second Life or OpenSim

  • Texture the mesh faces using the Diffuse textures and Normal Maps (for bumpiness). The shininess/metallic textures don’t work well and may be omitted

Texture with diffuse textures and add bumpiness “normal” textures to the mesh inworld. You probably don’t want to use (yet) the Metallic/Roughness/Shininess (PBR) where that is provided for some faces as they can be a bit too glossy. Though Physics Based Rendering (PBR) is under development for Second Life, so you may wish to keep the textures to hand.

To texture the teeth you may need to Disable the Camera Constraints (Preferences -> Advanced) to be able to swing the camera inside the mesh head to select that mesh part.

The hair colour is a simple coloured image. You can alternatively change the hair colour using the “Blank” texture and setting a colour.

Avatar .glb files that are downloaded may have a single face with three textures that represent the texture (diffuse), normal map and metallic/shininess (PBR), or maybe have multiple faces for hair, face, skin, top and bottom. The single face format does not allow hiding of the hair, glasses, etc for in world customisation as described below.

Optimising and Re-using Textures

If multiple Ready Player Me avatars share the same face, eyes, teeth body, hair and perhaps items such as glasses. The diffuse and normal map textures for these can be reused rather than uploading and using a new asset each time. This will save upload fees, but also allow for texture sharing or reuse for efficiency. The different textures for the outfit top, bottom, dress and/or footwear can then be used with these shared elements. The skin and hair colour textures can also be replaced by the standard blank texture and coloured to match to further save on the use of different textures.

Hand Relax Background Pose

  • You could add a hand relax low priority pose into the mesh
  • To “relax” the hands when not in a pose you could use the RuthAndRoth “bentohandrelax” script and “bentohandrelaxP1” animation. These are available in the Ruth2 v4 and Roth2 v2 distributions in Second Life and OpenSim or via the (GitHub RuthAndRoth “Extras” repository Animations Directory).

In-world Customisation

  • Optionally make some parts transparent (such as hair and glasses, hats, etc) to allow use of in world attachments for those parts
  • Try the Avatar Shape sliders as many will work

A number (but not all) the “Edit Shape” sliders work on Ready Player Me avatars to adjust the general shape.

Some parts such as the hair, accessories such as glasses, etc can be set to 100% transparent and the underlying avatar shows through (such as setting a bald head). This can allow some measure of in-world customisation. It also allows standard avatar attachments such as mesh and flexi hair to be added on without initially uploading a bald headed Ready Player Me avatar.

The head and body parts and textures cannot be altered. Facial hair, eyebrow details, make-up, etc are all baked onto the skin textures which have a unique mapping for Ready Player Me avatars. Hence tattoos and other elements that can be applied to skins in Second Life or OpenSim will not work.

The eye texture can be changed, even to a Bakes on Mesh (BoM) Eye (ensure you use an underlying avatar mask that allows the eye to show in that case). The normal eye texture iris image is slightly larger than the standard Ready Player Me one, so you may wish to adjust the image horizontal and vertical scale to (say) 1.1.

Update February 2023 – Tests with Blender 3.4.1 and Bento Buddy 2013.28

Ready Player Me Avatar - Male - in OpenSim Ready Player Me Avatar - Female - in OpenSim

Licence Details

Bento Buddy 3.0.10.2

Bento Buddy 3.0.10.2 was the last version available prior to a change in operation of Bento Buddy from versions 2023.x which now require a current license for the “Expression” web service to create the Collada (.dae) export file.

There is a fork of the Bento Buddy code by gaffe-buck at https://github.com/gaffe-buck/bentobuddy based on Bento Buddy 3.0.10.2 and so is pre the need for the “Expression” service. But it does not contain the data for character conversion, pose library and devkit contents in the release versions.

This entry was posted in OpenSim, Second Life, Virtual World and tagged , , . Bookmark the permalink.

4 Responses to Converting Ready Player Me Avatars for Second Life and OpenSim

  1. bat says:

    Ready Player Me advice on FBX export for use in Unreal Engine (UE) gives information on the RPM skeleton/Armature not being fully compatible with Mixamo and could be relevant to more general conversions…

    https://docs.readyplayer.me/ready-player-me/integration-guides/unreal-sdk/blender-to-unreal-export

    This essentially suggests FBX Export settings to use and suggests going via a Mixamo upload and download intermediate step to improve the compatibility of the skeleton/armature.

  2. bat says:

    Another blog post on converting a Ready Player Me .glb avatar to FBX via Blender that simplifies the extraction of textures by using Unpack External Resources on a saved .blend version of the avatar to extract them all in one step is at
    https://rehtse-studio.medium.com/made-with-unity-using-blender-to-convert-ready-player-me-avatars-to-fbx-62af1f14b135

  3. bat says:

    The avatar download URL used to be https://api.readyplayer.me/v1/avatars/AvatarURL.glb but from February 2023 it has changed to https://models.readyplayer.me/AvatarURL.glb. The previous URL also continues to function.

  4. bat says:

    I have been reminded that Blender requires addons to be licenced as GPL and this applies to Bento Buddy. The situation is nuanced as the core product and scripts are indeed GPL licensed as Bin Bash, the author, has pointed out on Discord (02/11/2022 4:01 PM) and the inworld Second Life group. But from 2023 onwards the export of Collada (.dae) requires a paid current licence to a web service called the “expression” service. 2022 and earlier versions of bento Buddy work without such a current licence.

    https://www.blender.org/about/license/

    Sharing or selling Blender add-ons (Python scripts):

    Blender’s Python API is an integral part of the software, used to define the user interface or develop tools for example. The GNU GPL license therefore requires that such scripts (if published) are being shared under a GPL compatible license. You are free to sell such scripts, but the sales then is restricted to the download service itself. Your customers will receive the script under the same license (GPL), with the same free conditions as everyone has for Blender.

    Regarding 3rd party addons:

    Blender also includes the Blender Python API, so every piece of code of the addon that uses some Blender Python API must be also licensed under GNU. This only applies to the addon script files or binaries.

    What does that mean:

    It does not mean the author must give you such code for free. It means when you have the code, you are free to distribute it (or modify) under the same license. You can distribute it however you like – for free or for money.

    When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things.(excerpt from GNU)

    If the addon includes artwork (assets, textures, etc.) these have their own licenses and you will have to get permission to distribute them. … Script files usually have header inside stating the license.

Comments are closed.