Ready Player Me Avatars in Second Life and OpenSim (Onigiri)

PBR Viewers - glTF materials Bulk UploadUpdate August 2023: A big advantage of new PBR Viewers is that the Ready Player Me .gltf file can be used to load all the PBR materials, their properties and constituent textures in one bulk upload. Use Build -> Upload -> Materials and select the avatar .gltf and then use the drop down menu to select the “Bulk Upload All” option.

This blog post describes a process to take Ready Player Me (https://readyplayer.me) avatars via Blender and the Onigiri add-on to use in Second Life and OpenSim. Onigiri is a fork of the GPLv3 licenced Bento Buddy around version 3.0.5.0 (2-Feb-2022) with some assets replaced. Onigiri is a type of Japanese rice ball (see Wikipedia).

Prepare the Resources

  1. Obtain and install Blender (https://blender.org).
  2. Obtain Onigiri (https://github.com/nessaki/Onigiri). Only the Blender add-on install ZIP file is required, the rest is source code only used to build the add-on. Get it via https://github.com/nessaki/Onigiri/blob/main/Onigiri.zip. Install it as a Blender add-on via Edit -> Preferences -> Add-ons.
  3. Some data files used by Onigiri may be needed to make the conversion process easier.
    1. Go to the Onigiri “data” directory which is usually located at something like
      C:\Users\…\AppData\Roaming\Blender Foundation\Blender\…\scripts\addons\Onigiri\data
      This location can be overwritten when you update Onigiri so save a copy of the changes/additions mentioned below for future use.
    2. Observe that the readyplayerme.onim is 3KB (in Onigiri 3.5b). Copy mixamo_no_prefix.onim (29KB) to readyplayerme.onim instead as that gives a better conversion. Ready Player Me avatars have a Mixamo compatible skeleton/armature.
    3. Ready Player Me avatars can be downloaded in a “T-Pose” which is a good basis for the conversion but also splaying the fingers on the hands works better. From https://openvce.net/resources/downloads/ReadyPlayerMe/Onigiri/ download ReadyPlayerMe-T-Pose-Splayed-Hands-Only.bpl and also put it in …\addons\Onigiri\data.
  4. Ensure you have a Ready Player Me avatar to download via https://readyplayer.me).

Workflow for Conversion

  • Obtain Ready Player Me avatar .glb URL.
  • Download avatar URL with ?textureAtlas=none&textureSizeLimit=1024&textureFormat=png&pose=T on the end.
    • Smaller clothing textures can be obtained in the .glb download by using textureSizeLimit=512 or leaving it out (usually means 512).
    • You can get the “Full” .glb download which includes all “morphTargets” for facial and mouth animation (unused in this conversion process) by using
      ?morphTargets=ARKit,Oculus+Visemes,Default&textureAtlas=none
      &textureSizeLimit=1024&textureFormat=png&pose=T
    • Smaller clothing textures can be obtained in the .glb download by using textureSizeLimit=512 or leaving it out (usually means 512).
    • The default of &lod=0 is used. You can alternatively get reduced triangle mesh avatars via &lod=1 or &lod=2.
    • You can get smaller compressed textures with &textureFormat=jpeg.
  • Start Blender and delete any initial content (e.g. cube), the default camera and light.
  • Import .glb to Blender and check avatar is in T-Pose.
  • Extract all the textures. One quick way to do that is to 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)”.

Set Finger Pose to Second Life/OpenSim Splayed Fingers

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. This can be fixed by applying the finger splaying mentioned earlier which is limited to the fingers and thumbs of the avatar.

  • Location of the Apply Pose ButtonUse Onigiri’s Animation -> Enable the Pose Library and then load the ReadyPlayerMe-T-Pose-Splayed-Hands-Only.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).

Onigiri Posing Library

Convert Avatar Rig/Armature for Second Life/OpenSim

Onigiri Load Map - Convert - Project Full Rig - Export

  • Under Onigiri’s Character Converter, load the readyplayerme.onim map and click Convert
  • Use Onigiri to export for Second Life/OpenSim (select all three options including Project Full Rig).
  • Import the Collada (.dae) file produced 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.

Prepare the Avatar within Second Life/OpenSim

  • 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, Eyes 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).

An alternative might be to tick the Firestorm Viewer Settings -> Firestorm Tab -> Fix Bento Idle Animation.

In-world Customisation

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 “unlinked” to be separate wearable items or just set to 100% transparent so that the underlying avatar shows through (such as setting a bald head). This can allow some measure of in-world customisation. This 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.

Licencing

Ready Player Me avatars are licensed as CC BY-NC 4.0.

Onigiri is based on a fork of Bento Buddy (a charged for Blender add-on) and uses the same basic Python scripts as is permitted under the Blender add-on licence, though it uses its own assets such as icons.

Alternative Routes

An alternative route to convert Ready Player Me avatars for use in Second Life and OpenSim is to use the Bento Buddy Blender add-on as described in this blog post. Though Bento Buddy is also GPL licenced, the latest versions of Bento Buddy (1-Jan-2023 onwards) requires a current paid for licence to the Bento Buddy “Expression” service to allow the export of the Collada (.dae) outfit file.

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

5 Responses to Ready Player Me Avatars in Second Life and OpenSim (Onigiri)

  1. bat says:

    I wanted to clarify that https://github.com/nessaki/Onigiri and https://github.com/gaffe-buck/bentobuddy repositories were legitimate derivatives or forks of Bento Buddy. So I did check the situation via a number of routes.

    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 are licensed as GPLv3 as described in the addon README.txt file and work without such a current Expression service usage 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.

  2. bat says:

    The README.txt file in Bento Buddy 3.0.5.1 (the last paid for version I have available from 2022) is replicated below (typos left in) to clarify that Bento Buddy up to the end of 2022 was indeed licenced GPLv3. The LICENSE.txt file indicates GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007.

    A full license description is provide in the file LICENSE.txt and elsewhere.
    Below is the standard header identifying the license associated with this software.

    Bento Buddy

    Copyright (C) 2012 – 2022 – Critters

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program. If not, see http://www.gnu.org/licenses/ .

  3. bat says:

    https://github.com/aiaustin/Onigiri

    Improvement to readyplayerme.onim (copy of mixamo_no_prefix.onim) and addition of ReadyPlayerMe-T-Pose-Splayed-Hands-Only.bpl. Updated Onigiri.zip for these changes which can be considered as a candidate for release 3.5c.

  4. bat says:

    The parameters to add to the .glb download to get all head/mouth morph targets are as follows:

    ?morphTargets=ARKit,Oculus+Visemes,Default&textureAtlas=none&textureSizeLimit=1024&pose=T

    That example if full quality, non-atlassed with all blendshapes. But note that the blendshapes are not used in the Second Life/OpenSim conversion.

  5. bat says:

    How to convert Mixamo animations into SL animations with Onigiri – YouTube video by the Mighty Ginkgo.

    https://www.youtube.com/watch?v=qs38nki-qYM

    Includes link to a Mixamo to Second Life Spayed hands T-Pose .bpl file

    https://www.dropbox.com/s/98a67t0xxifeb8h/Mixamo%20onigiri%20bone%20maps.zip?dl=0

Comments are closed.