Issue Type: Display
Impact: Moderate
Frequency: Constantly
Date First Experienced: 2021-04-26 00:04:00 (-06:00)
Date Last Experienced: 2021-04-26 00:04:00 (-06:00)
Reproduction Steps:
This one is a really annoying issue because I currently have to do a very messy workaround that frankly should be avoidable. My game does NOT use Humanoid:ApplyDescription() for its avatar system because ApplyDescription relies on using assets for character parts, and I need these parts to load on your character instantly rather than waiting to validate/load an asset every time body parts are switched out.
CharacterRenderBugRepro.rbxl (31.6 KB)
In this simple repro, a script on the server creates two characters based on the ROBLOX account, then applies the âPirate Swashbucklerâ package LeftHand through two different methods
The first method calls Humanoid:ApplyDescription() after editing the asset ID for the characterâs LeftArm
CHAR1.Humanoid.DisplayName = 'Renders LeftHand Correctly'
local desc = CHAR1.Humanoid:GetAppliedDescription()
desc.LeftArm = 27847412
CHAR1.Humanoid:ApplyDescription(desc)
The second method manually creates the LeftHand instance and swaps it out on the character using Humanoid:ReplaceBodyPartR15()
local newLeftHand = script.LeftHand:Clone()
CHAR2.Humanoid.DisplayName = 'Renders LeftHand Incorrectly'
CHAR2.Humanoid:ReplaceBodyPartR15(Enum.BodyPartR15.LeftHand, newLeftHand)
In the âActual Behaviorâ screenshot, the first method appears on the left, and the second method appears on the right. When Humanoid:ApplyDescription() is called, the hook texture on the LeftHand appears correctly, whereas when Humanoid:ReplaceBodyPartR15() is called, the hook texture doesnât show up at all.
Expected Behavior:
I would expect both characters to look the same, no matter how I put the character together (be it manually deleting/re-inserting/adding character parts, or calling Humanoid:ReplaceBodyPartR15())
Actual Behavior:
Workaround:
In order to work around this, I have to create multiple meshes for each limb, split by which parts of the mesh can show clothing textures, and which parts of the mesh cannot. Sometimes I have to create an invisible limb part and then weld the âfakeâ limb over it; I also have to manually apply limb scaling on these fake parts. This increases overall asset load times and client memory usage.
This process would be made a million times easier if these textures would just render correctly.
When I call Humanoid:GetBodyPartR15() on the replaced LeftHand part, it will return âEnum.BodyPartR15.LeftHandâ regardless of whether the LeftHand was replaced via Humanoid:ApplyDescription() or Humanoid:ReplaceBodyPartR15(), or even by manually deleting the existing R15 part, inserting a new one, and creating custom joints.
These textures are on the âTextureIDâ property of the limbâs MeshPart instance. I would expect this texture to show up even in the latter case where I am manually deleting, re-adding, and creating a joint for the given limb.