Appearance Troubleshooting
From OpenSimulator
Contents |
Introduction
Making an avatar appearance available in a simulator currently involves a large number of steps.
- On login, the viewer needs to told what body parts and clothing it is wearing.
- The viewer then creates the appearance textures from this data (bakes them).
- The viewer uploads the baked textures to the simulator via the UploadBakedTexture HTTP capability.
- The simulator temporarily stores this asset data.
- The simulator sends asset UUIDs to other viewers in the region.
- If the viewer does not already have the baked texture asset, it requests it from the simulator via the GetTexture HTTP capability.
- Other avatars appear with those baked textures.
As you can imagine there are many points at which this process can go wrong. If it does go wrong, you will often end up with a gas cloud instead of an avatar. The text below lists the various ways in which avatar appearance can go wrong, diagnosis commands and some suggestions for trying to fix the situation.
Useful commands
These commands are in OpenSimulator 0.7.4 and later and some will be in 0.7.3.1 and 0.7.3.
appearance show
Usage
appearance show [<first-name> <last-name>]
e.g.
appearance show Lord Lucan
This will show the asset UUID for each baked texture uploaded by the viewer for that user. For instance, a properly baked user may have something like
(test one)# appearance show Lord Lucan For Lord Lucan in test one Bake Type UUID Head fd783d4a-b1d2-4bdc-89c7-88578b429ccc (uploaded) UpperBody d147b1f5-b99d-49d4-8492-6cd4c7da905e (uploaded) LowerBody e8aae819-e04b-4894-983a-15bd2d354b71 (uploaded) Eyes ae8fe60d-9d20-440d-989a-869d2ee1ed3d (uploaded) Skirt not set Hair 4e354649-f880-4204-987a-8d744f531469 (uploaded) Lord Lucan baked appearance texture is OK
The textures may be listed as (not found) if they have been uploaded by the viewer but can't be found in the asset cache. Or they may be listed as (not set) if the viewer has never uploaded this data.
If no name is given then data for all users is displayed.
appearance send
Usage
appearance send [<first-name> <last-name>]
e.g.
appearance send Lord Lucan
Send appearance baked texture IDs to other avatars in the scene. In theory, this should trigger other avatars to request those textures if they need them. This will have no effect if the original viewer never uploaded the texture IDs in the first place (i.e. if avatars are appearing as clouds). If avatars are grey instead, then this command may help. There is also a ResendAppearanceUpdates config which can periodically resend this data. We will discuss this later on.
If no name is given then all avatars resend their appearance texture UUIDs to all other avatars.
appearance rebake
Usage
appearance rebake <first-name> <last-name>
e.g.
appearance rebake Lord Lucan
Now, this sounds like it should be an enormously useful command. Unfortunately, it will only have any effect if the viewer has already successfully uploaded some baked texture data, even if that turned out to be corrupt. The viewer will very probably ignore any requests to rebake textures if it has not managed to perform an initial successful bake.
j2k decode
Usage
j2k decode <id>
e.g.
j2k decode ae8fe60d-9d20-440d-989a-869d2ee1ed3d
Attempt a JPEG2000 decode of the given asset. All baked textures are JPEG2000 files, so this can be useful to assess whether a given upload is corrupt or not. If the decode succeeds then it will tell you how many the number of layers and components in the JPEG2000 texture.
Possible problems and resolutions
General
In all these situations, one can force the client to attempt a rebake using the ctrl+alt+r key combination. This is always worth trying.
Another general tip is to try clearing the viewer cache and logging back in.
This is probably only a small selection of issues. Please add more as you encounter them if you know of workarounds or fixes.
Cloudy avatars
The avatar does not have sufficient clothing or body-parts to bake textures
There is a minimum set of body parts and clothing a viewer requires to bake an appearance texture. There are the shape, hair, skin and eyes body parts, and the shirt and trousers clothing. Without these, the viewer will never attempt to bake a texture.
Solution
Make sure your avatar has this minimum set of body parts and clothing.
One of the assets for a bodypart/clothing is corrupt or missing
Sometimes the necessary data to perform the bake may be corrupt or missing.
Solution
Try switching to a different set of clothing and body parts (e.g. using the "replace outfit" option), or create the minimum set from scratch and see if wearing these helps.
The viewer graphics code is failing to successfully bake textures
We've seen some graphics drivers fail to successfully bake textures. Sometimes this depends on where the baking is done (e.g. if the viewer is on a second screen).
Solution
Update your graphics drivers. Attempt a bake with a simple set of body parts/clothing and on your main screen.
Grey avatars
Sometimes avatars may appear grey rather than cloudy.
The message containing appearance information has been lost
For some reason, the packet containing appearance information is sometimes ignored by the viewer. The "appearance send" command above may help diagnose this.
Solution
Try setting ResendAppearanceUpdates = true setting in the [Appearance] section of OpenSim.ini. This will resend appearance data every 60 seconds. This will probably not help if avatars are clouds, since this usually signals a failure to upload the data in the first place.
In OpenSimulator 0.7.4 this setting is not on by default (it is not present in OpenSimulator 0.7.3.1 and before). In OpenSimulator 0.7.5 it will be on by default.