three.js - 未捕获TypeError:无法读取未定义的属性'x'
问题描述:
我从github和其他关于在stackoverflow上旋转对象的问题找到了参考代码。three.js - 未捕获TypeError:无法读取未定义的属性'x'
var vector = new THREE.Vector3(1, 0, 0);
var axis = new THREE.Vector3(1, 0, 0).normalize();
var angle = Math.PI/2;
function rotateAroundWorldAxis(object, axis, angle) {
var matrix = new THREE.Matrix4().makeRotationAxis(axis, angle);
matrix.multiplyVector3(vector);
object.matrix = matrix;
object.rotation.setEulerFromRotationMatrix(object.matrix);
}
function render() {
rotateAroundWorldAxis(tubeMesh, axis, angle);
renderer.render(scene, camera);
}
我找不出可能是错误的原因“Uncaught TypeError:无法读取未定义的属性'x'”。 在谷歌浏览它显示为
- 遗漏的类型错误:无法读取属性 'X' 的未定义在three.min.js:在three.min.js 56个
- THREE.Matrix4.makeRotationAxis:56
- rotateAroundWorldAxis在my_model.htm:290
- 呈现在my_model.htm:297
- 有生
的错误是在three.min.js
在行号。我正在使用three.js库的r51。
答
在情况下,我们有同样的问题(three.js所想读入UV-映射阵列),您可以通过解决它:
加入UV-mapping(在搅拌机)到您的模型。
它基本上需要:
- 标记在对象上的接缝。
- 展开模型。
- 导出启用UV的模型。
对于步骤1和2,您可以按照this好步行。
(注意:除了文章中的步骤,在我的版本(2.59)中,我不得不先创建材质和纹理。)
嗨。不知道你现在是否已经完成了它,但你可能想尝试使用ThreeJS的未压缩版本(即three.js而不是three.min.js)。然后你就可以看到错误发生的位置,以及它试图做什么。我最近自己也有这个相同的错误,但我认为它与从Blender导出的模型中的顶点组被分配到不再存在的骨骼有关。我删除并重新创建了我的顶点组,并解决了问题。 – null