three.js - 未捕获TypeError:无法读取未定义的属性'x'

问题描述:

我从github和其他关于在*上旋转对象的问题找到了参考代码。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。

+1

嗨。不知道你现在是否已经完成了它,但你可能想尝试使用ThreeJS的未压缩版本(即three.js而不是three.min.js)。然后你就可以看到错误发生的位置,以及它试图做什么。我最近自己也有这个相同的错误,但我认为它与从Blender导出的模型中的顶点组被分配到不再存在的骨骼有关。我删除并重新创建了我的顶点组,并解决了问题。 – null

在情况下,我们有同样的问题(three.js所想读入UV-映射阵列),您可以通过解决它:

加入UV-mapping(在搅拌机)到您的模型。
它基本上需要:

  1. 标记在对象上的接缝。
  2. 展开模型。
  3. 导出启用UV的模型。

对于步骤1和2,您可以按照this好步行。
(注意:除了文章中的步骤,在我的版本(2.59)中,我不得不先创建材质和纹理。)