diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
index 4bb1f8467a..7c0df39b3b 100644
--- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
@@ -2213,6 +2213,14 @@ namespace OpenSim.Region.Environment.Scenes
///
public void SetAppearance(byte[] texture, List visualParam)
{
+ if (m_physicsActor != null)
+ {
+ // This may seem like it's redundant, remove the avatar from the physics scene
+ // just to add it back again, but it saves us from having to update
+ // 3 variables 10 times a second.
+ m_scene.PhysicsScene.RemoveAvatar(m_physicsActor);
+ AddToPhysicalScene();
+ }
m_appearance.SetAppearance(texture, visualParam);
SetHeight(m_appearance.AvatarHeight);
m_scene.CommsManager.AvatarService.UpdateUserAppearance(m_controllingClient.AgentId, m_appearance);