diff --git a/examples/jsm/loaders/GLTFLoader.js b/examples/jsm/loaders/GLTFLoader.js index 5f80a267b32a5a..59b4aa1169444f 100644 --- a/examples/jsm/loaders/GLTFLoader.js +++ b/examples/jsm/loaders/GLTFLoader.js @@ -3886,8 +3886,17 @@ class GLTFParser { primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN || primitive.mode === undefined ) { + const needsSkinning = meshDef.isSkinnedMesh === true; + const hasSkinningAttributes = geometry.hasAttribute( 'skinIndex' ) && geometry.hasAttribute( 'skinWeight' ); + + if ( needsSkinning && hasSkinningAttributes === false ) { + + console.warn( 'THREE.GLTFLoader: Missing skinIndex or skinWeight attributes. Skinning disabled.' ); + + } + // .isSkinnedMesh isn't in glTF spec. See ._markDefs() - mesh = meshDef.isSkinnedMesh === true + mesh = ( needsSkinning && hasSkinningAttributes ) ? new SkinnedMesh( geometry, material ) : new Mesh( geometry, material );