Error when putting on hoodies and clothes in the studio

Hi guys, I’m having problms trying to upload two hoodies and an outfit to the studio. Has anyone had this problem or any idea how to solve it? The problems are as follow:

Headwear 1 JSON
[
{
“instancePath”: “/joints”,
“schemaPath”: “joints.schema.json#/$defs/noSkeleton/additionalProperties”,
“keyword”: “additionalProperties”,
“params”: {
“additionalProperty”: “Spine”
},
“message”: “must NOT have additional properties”
},
{
“instancePath”: “/joints”,
“schemaPath”: “joints.schema.json#/$defs/noSkeleton/additionalProperties”,
“keyword”: “additionalProperties”,
“params”: {
“additionalProperty”: “Neck”
},
“message”: “must NOT have additional properties”
},
{
“instancePath”: “/joints”,
“schemaPath”: “joints.schema.json#/$defs/noSkeleton/additionalProperties”,
“keyword”: “additionalProperties”,
“params”: {
“additionalProperty”: “Head”
},
“message”: “must NOT have additional properties”
},
{
“instancePath”: “/joints”,
“schemaPath”: “joints.schema.json#/$defs/headwear/errorMessage”,
“keyword”: “errorMessage”,
“params”: {
“errors”: [
{
“instancePath”: “/joints/Spine”,
“schemaPath”: “joints.schema.json#/$defs/headwear/properties/Spine/const”,
“keyword”: “const”,
“params”: {
“allowedValue”: “Headwear_Rig”
},
“message”: “must be equal to constant”,
“emUsed”: true
}
]
},
“message”: “Invalid skeleton definition.”
},
{
“instancePath”: “/joints”,
“schemaPath”: “#/properties/joints/oneOf”,
“keyword”: “oneOf”,
“params”: {
“passingSchemas”: null
},
“message”: “must match exactly one schema in oneOf”
},
{
“instancePath”: “”,
“schemaPath”: “#/allOf/7/if”,
“keyword”: “if”,
“params”: {
“failingKeyword”: “then”
},
“message”: “must match "then" schema”
}
]

Headwear 2 JSON
[
{
“instancePath”: “/joints”,
“schemaPath”: “joints.schema.json#/$defs/noSkeleton/additionalProperties”,
“keyword”: “additionalProperties”,
“params”: {
“additionalProperty”: “Spine”
},
“message”: “must NOT have additional properties”
},
{
“instancePath”: “/joints”,
“schemaPath”: “joints.schema.json#/$defs/noSkeleton/additionalProperties”,
“keyword”: “additionalProperties”,
“params”: {
“additionalProperty”: “Neck”
},
“message”: “must NOT have additional properties”
},
{
“instancePath”: “/joints”,
“schemaPath”: “joints.schema.json#/$defs/noSkeleton/additionalProperties”,
“keyword”: “additionalProperties”,
“params”: {
“additionalProperty”: “Head”
},
“message”: “must NOT have additional properties”
},
{
“instancePath”: “/joints”,
“schemaPath”: “joints.schema.json#/$defs/noSkeleton/additionalProperties”,
“keyword”: “additionalProperties”,
“params”: {
“additionalProperty”: “neutral_bone”
},
“message”: “must NOT have additional properties”
},
{
“instancePath”: “/joints/neutral_bone”,
“schemaPath”: “joints.schema.json#/$defs/headwear/additionalProperties/errorMessage”,
“keyword”: “errorMessage”,
“params”: {
“errors”: [
{
“instancePath”: “/joints/neutral_bone”,
“schemaPath”: “joints.schema.json#/$defs/headwear/additionalProperties/type”,
“keyword”: “type”,
“params”: {
“type”: “object”
},
“message”: “must be object”,
“emUsed”: true
},
{
“instancePath”: “/joints/neutral_bone”,
“schemaPath”: “joints.schema.json#/$defs/headwear/additionalProperties/not”,
“keyword”: “not”,
“params”: {},
“message”: “must NOT be valid”,
“emUsed”: true
}
]
},
“message”: “Found unsupported skeleton joint: "neutral_bone". Check the correct name.”
},
{
“instancePath”: “/joints”,
“schemaPath”: “joints.schema.json#/$defs/headwear/errorMessage”,
“keyword”: “errorMessage”,
“params”: {
“errors”: [
{
“instancePath”: “/joints/Spine”,
“schemaPath”: “joints.schema.json#/$defs/headwear/properties/Spine/const”,
“keyword”: “const”,
“params”: {
“allowedValue”: “Headwear_Rig”
},
“message”: “must be equal to constant”,
“emUsed”: true
}
]
},
“message”: “Invalid skeleton definition.”
},
{
“instancePath”: “/joints”,
“schemaPath”: “#/properties/joints/oneOf”,
“keyword”: “oneOf”,
“params”: {
“passingSchemas”: null
},
“message”: “must match exactly one schema in oneOf”
},
{
“instancePath”: “”,
“schemaPath”: “#/allOf/7/if”,
“keyword”: “if”,
“params”: {
“failingKeyword”: “then”
},
“message”: “must match "then" schema”
}
]

Outfit JSON
[
{
“instancePath”: “/joints”,
“schemaPath”: “joints.schema.json#/$defs/skeletonV2/$defs/maxJoints/errorMessage”,
“keyword”: “errorMessage”,
“params”: {
“errors”: [
{
“instancePath”: “/joints”,
“schemaPath”: “joints.schema.json#/$defs/skeletonV2/$defs/maxJoints/maxProperties”,
“keyword”: “maxProperties”,
“params”: {
“limit”: 65
},
“message”: “must NOT have more than 65 properties”,
“emUsed”: true
}
]
},
“message”: “Exceeded supported number of 65 joints in the skeleton.”
},
{
“instancePath”: “/joints”,
“schemaPath”: “#/$defs/skeletonV2WithEyes/$defs/maxJoints/errorMessage”,
“keyword”: “errorMessage”,
“params”: {
“errors”: [
{
“instancePath”: “/joints”,
“schemaPath”: “#/$defs/skeletonV2WithEyes/$defs/maxJoints/maxProperties”,
“keyword”: “maxProperties”,
“params”: {
“limit”: 67
},
“message”: “must NOT have more than 67 properties”,
“emUsed”: true
}
]
},
“message”: “Exceeded supported number of 67 joints in the skeleton.”
},
{
“instancePath”: “/joints/LeftForeArm”,
“schemaPath”: “joints.schema.json#/$defs/skeletonXr/properties/LeftForeArm/const”,
“keyword”: “const”,
“params”: {
“allowedValue”: “LeftArmTwist”
},
“message”: “must be equal to constant”
},
{
“instancePath”: “/joints/LeftHand”,
“schemaPath”: “joints.schema.json#/$defs/skeletonXr/properties/LeftHand/const”,
“keyword”: “const”,
“params”: {
“allowedValue”: “LeftForeArmTwist”
},
“message”: “must be equal to constant”
},
{
“instancePath”: “/joints/LeftHandIndex1”,
“schemaPath”: “joints.schema.json#/$defs/skeletonXr/properties/LeftHandIndex1/const”,
“keyword”: “const”,
“params”: {
“allowedValue”: “LeftHandIndex0”
},
“message”: “must be equal to constant”
},
{
“instancePath”: “/joints/LeftHandMiddle1”,
“schemaPath”: “joints.schema.json#/$defs/skeletonXr/properties/LeftHandMiddle1/const”,
“keyword”: “const”,
“params”: {
“allowedValue”: “LeftHandMiddle0”
},
“message”: “must be equal to constant”
},
{
“instancePath”: “/joints/LeftHandRing1”,
“schemaPath”: “joints.schema.json#/$defs/skeletonXr/properties/LeftHandRing1/const”,
“keyword”: “const”,
“params”: {
“allowedValue”: “LeftHandRing0”
},
“message”: “must be equal to constant”
},
{
“instancePath”: “/joints/LeftHandPinky1”,
“schemaPath”: “joints.schema.json#/$defs/skeletonXr/properties/LeftHandPinky1/const”,
“keyword”: “const”,
“params”: {
“allowedValue”: “LeftHandPinky0”
},
“message”: “must be equal to constant”
},
{
“instancePath”: “/joints/RightForeArm”,
“schemaPath”: “joints.schema.json#/$defs/skeletonXr/properties/RightForeArm/const”,
“keyword”: “const”,
“params”: {
“allowedValue”: “RightArmTwist”
},
“message”: “must be equal to constant”
},
{
“instancePath”: “/joints/RightHand”,
“schemaPath”: “joints.schema.json#/$defs/skeletonXr/properties/RightHand/const”,
“keyword”: “const”,
“params”: {
“allowedValue”: “RightForeArmTwist”
},
“message”: “must be equal to constant”
},
{
“instancePath”: “/joints/RightHandIndex1”,
“schemaPath”: “joints.schema.json#/$defs/skeletonXr/properties/RightHandIndex1/const”,
“keyword”: “const”,
“params”: {
“allowedValue”: “RightHandIndex0”
},
“message”: “must be equal to constant”
},
{
“instancePath”: “/joints/RightHandMiddle1”,
“schemaPath”: “joints.schema.json#/$defs/skeletonXr/properties/RightHandMiddle1/const”,
“keyword”: “const”,
“params”: {
“allowedValue”: “RightHandMiddle0”
},
“message”: “must be equal to constant”
},
{
“instancePath”: “/joints/RightHandRing1”,
“schemaPath”: “joints.schema.json#/$defs/skeletonXr/properties/RightHandRing1/const”,
“keyword”: “const”,
“params”: {
“allowedValue”: “RightHandRing0”
},
“message”: “must be equal to constant”
},
{
“instancePath”: “/joints/RightHandPinky1”,
“schemaPath”: “joints.schema.json#/$defs/skeletonXr/properties/RightHandPinky1/const”,
“keyword”: “const”,
“params”: {
“allowedValue”: “RightHandPinky0”
},
“message”: “must be equal to constant”
},
{
“instancePath”: “/joints”,
“schemaPath”: “joints.schema.json#/$defs/skeletonXr/errorMessage”,
“keyword”: “errorMessage”,
“params”: {
“errors”: [
{
“instancePath”: “/joints”,
“schemaPath”: “joints.schema.json#/$defs/skeletonXr/required”,
“keyword”: “required”,
“params”: {
“missingProperty”: “LeftArmTwist”
},
“message”: “must have required property ‘LeftArmTwist’”,
“emUsed”: true
},
{
“instancePath”: “/joints”,
“schemaPath”: “joints.schema.json#/$defs/skeletonXr/required”,
“keyword”: “required”,
“params”: {
“missingProperty”: “LeftForeArmTwist”
},
“message”: “must have required property ‘LeftForeArmTwist’”,
“emUsed”: true
},
{
“instancePath”: “/joints”,
“schemaPath”: “joints.schema.json#/$defs/skeletonXr/required”,
“keyword”: “required”,
“params”: {
“missingProperty”: “LeftHandIndex0”
},
“message”: “must have required property ‘LeftHandIndex0’”,
“emUsed”: true
},
{
“instancePath”: “/joints”,
“schemaPath”: “joints.schema.json#/$defs/skeletonXr/required”,
“keyword”: “required”,
“params”: {
“missingProperty”: “LeftHandMiddle0”
},
“message”: “must have required property ‘LeftHandMiddle0’”,
“emUsed”: true
},
{
“instancePath”: “/joints”,
“schemaPath”: “joints.schema.json#/$defs/skeletonXr/required”,
“keyword”: “required”,
“params”: {
“missingProperty”: “LeftHandRing0”
},
“message”: “must have required property ‘LeftHandRing0’”,
“emUsed”: true
},
{
“instancePath”: “/joints”,
“schemaPath”: “joints.schema.json#/$defs/skeletonXr/required”,
“keyword”: “required”,
“params”: {
“missingProperty”: “LeftPalm”
},
“message”: “must have required property ‘LeftPalm’”,
“emUsed”: true
},
{
“instancePath”: “/joints”,
“schemaPath”: “joints.schema.json#/$defs/skeletonXr/required”,
“keyword”: “required”,
“params”: {
“missingProperty”: “LeftHandPinky0”
},
“message”: “must have required property ‘LeftHandPinky0’”,
“emUsed”: true
},
{
“instancePath”: “/joints”,
“schemaPath”: “joints.schema.json#/$defs/skeletonXr/required”,
“keyword”: “required”,
“params”: {
“missingProperty”: “RightArmTwist”
},
“message”: “must have required property ‘RightArmTwist’”,
“emUsed”: true
},
{
“instancePath”: “/joints”,
“schemaPath”: “joints.schema.json#/$defs/skeletonXr/required”,
“keyword”: “required”,
“params”: {
“missingProperty”: “RightForeArmTwist”
},
“message”: “must have required property ‘RightForeArmTwist’”,
“emUsed”: true
},
{
“instancePath”: “/joints”,
“schemaPath”: “joints.schema.json#/$defs/skeletonXr/required”,
“keyword”: “required”,
“params”: {
“missingProperty”: “RightHandIndex0”
},
“message”: “must have required property ‘RightHandIndex0’”,
“emUsed”: true
},
{
“instancePath”: “/joints”,
“schemaPath”: “joints.schema.json#/$defs/skeletonXr/required”,
“keyword”: “required”,
“params”: {
“missingProperty”: “RightHandMiddle0”
},
“message”: “must have required property ‘RightHandMiddle0’”,
“emUsed”: true
},
{
“instancePath”: “/joints”,
“schemaPath”: “joints.schema.json#/$defs/skeletonXr/required”,
“keyword”: “required”,
“params”: {
“missingProperty”: “RightHandRing0”
},
“message”: “must have required property ‘RightHandRing0’”,
“emUsed”: true
},
{
“instancePath”: “/joints”,
“schemaPath”: “joints.schema.json#/$defs/skeletonXr/required”,
“keyword”: “required”,
“params”: {
“missingProperty”: “RightPalm”
},
“message”: “must have required property ‘RightPalm’”,
“emUsed”: true
},
{
“instancePath”: “/joints”,
“schemaPath”: “joints.schema.json#/$defs/skeletonXr/required”,
“keyword”: “required”,
“params”: {
“missingProperty”: “RightHandPinky0”
},
“message”: “must have required property ‘RightHandPinky0’”,
“emUsed”: true
}
]
},
“message”: “Missing skeleton joints.”
},
{
“instancePath”: “/joints”,
“schemaPath”: “joints.schema.json#/$defs/skeletonXr/$defs/maxJoints/errorMessage”,
“keyword”: “errorMessage”,
“params”: {
“errors”: [
{
“instancePath”: “/joints”,
“schemaPath”: “joints.schema.json#/$defs/skeletonXr/$defs/maxJoints/minProperties”,
“keyword”: “minProperties”,
“params”: {
“limit”: 81
},
“message”: “must NOT have fewer than 81 properties”,
“emUsed”: true
}
]
},
“message”: “Number of joints in the skeleton must be 81.”
},
{
“instancePath”: “/joints”,
“schemaPath”: “#/properties/joints/anyOf”,
“keyword”: “anyOf”,
“params”: {},
“message”: “must match a schema in anyOf”
},
{
“instancePath”: “”,
“schemaPath”: “#/allOf/0/if”,
“keyword”: “if”,
“params”: {
“failingKeyword”: “then”
},
“message”: “must match "then" schema”
}
]

Hey Ramon!
By “two hoodies”, you mean something that just covers the head? Because for me, a hoodie is a hooded sweatshirt.

Headwear 1:
You discovered a bug, and we’re fixing it! Thanks for reporting! The skeleton’s root name should be “Armature”, just like in the template file. I’ll let you know once the fix is live.

Headwear 2:
“additionalProperty”: “neutral_bone” This error tells me that the mesh is missing skin weights on some vertices. Blender’s gltf 2.0 exporter adds a “neutral_bone” joint to the skeleton to which it assigns vertices without skin weights. Make sure all vertices have skin weights.

Outfit:
What skeleton does your outfit use? The fullbody XR or the redular fullbody? The XR skeleton should have 81 joints, the regular one 67.

The fix for the skeleton name validation of headwear is live now. Please try again uploading your Headwear 1.

Thank you for your reply. I’ve had progress with Headwear 1. While the skeleton my outfit uses, it’s the normal full body. It has 67 joints, but still the error information remains. I have already sent an e-mail informing you of the problem and sent the GLB file along with the description of the error. I’m still waiting for a reply, but if it’s possible to reply here, that would be great, as I need to resolve this urgently.
Captura de Tela 2024-07-09 às 18.02.22

Hi,

I think we responded to you in Technical Support already, but I will share the response here as well.

  1. Outfit: missing skin weights. That results in the exporter creating a joint “neutral_bone” to which it assigns these vertices. This is why the validation fails. Assigning skin weights should fix it.
  2. Headwear 1: working fine, no errors when uploading, passed validation.
  3. Headwear 2: missing skin weights. That results in the exporter creating a joint “neutral_bone” to which it assigns these vertices. This is why the validation fails. Assigning skin weights should fix it.

More about checking skin weights can be found in our documentation: Checking Skin Weights | Ready Player Me