为何出现'vertexColors'参数未定义?Three.js代码疑问
问题原因及解决办法
报错原因
出现'vertexColors' parameter is undefined的核心原因是Three.js版本迭代导致顶点颜色枚举值的命名空间变更:
- 在r151及更早的版本中,启用顶点颜色的枚举值是
THREE.VertexColors,直接挂载在全局THREE对象下; - 从r152版本开始,Three.js将颜色模式相关的枚举统一迁移到
THREE.ColorMode命名空间下,原全局的THREE.VertexColors被移除,直接引用就会触发undefined报错。
另外还有一种可能:部分版本的LineBasicMaterial支持直接用布尔值true启用顶点颜色,错误传枚举值反而会导致参数不识别。
解决办法
根据你的Three.js版本选择对应方案:
- 新版本(r152+):使用
THREE.ColorMode.VertexColors替代原枚举值const material = new THREE.LineBasicMaterial({ vertexColors: THREE.ColorMode.VertexColors, transparent: true, side: THREE.DoubleSide, }) - 通用兼容方案:直接传入布尔值
true(几乎适配所有支持vertexColors参数的版本)const material = new THREE.LineBasicMaterial({ vertexColors: true, transparent: true, side: THREE.DoubleSide, })
内容的提问来源于stack exchange,提问作者我犟不过你
相关产品推荐
相关产品推荐

