Three.js 无法读取属性';顶点法线';未定义的

Three.js 无法读取属性';顶点法线';未定义的,three.js,Three.js,我使用three.js文档页面中的示例代码加载了一个带有.mtl的.obj文件,它不断给我错误,无法读取未定义的属性“vertexNormals” 代码如下: // instantiate a loader var loader = new THREE.OBJMTLLoader(); // load an obj / mtl resource pair loader.load( // OBJ resource URL 'models/farmhouse.obj', // MTL r

我使用three.js文档页面中的示例代码加载了一个带有.mtl的.obj文件,它不断给我错误,无法读取未定义的属性“vertexNormals”

代码如下:

// instantiate a loader
var loader = new THREE.OBJMTLLoader();

// load an obj / mtl resource pair
loader.load(
  // OBJ resource URL
  'models/farmhouse.obj',
  // MTL resource URL
  'models/farmhouse.mtl',
  // Function when both resources are loaded
  function ( object ) {
    scene.add( object );
  },
  // Function called when downloads progress
  function ( xhr ) {
    console.log( (xhr.loaded / xhr.total * 100) + '% loaded' );
  },
  // Function called when downloads error
  function ( xhr ) {
    console.log( 'An error happened' );
  }
);

此错误显然是由于将three.js mtl对象加载器与较早版本的three.js build一起使用而导致的。问题是我使用的包中的three.js源代码与我在文档中使用的较新加载程序不兼容


解决方案是添加最新版本的three.js来代替包的three.js版本。(这确实引入了其他的回归)。如果您在将模型加载到场景中时看到这一错误,则three.js版本很可能已过时。

使用调试器跟踪它并确定错误的位置。您没有为任何人提供足够的信息来帮助您。我花了很多时间跟踪调试器。最终找到了解决方案,但我试图找到引入错误的最小代码量,以便发布。实际上,这段产生错误的代码意味着存在一个较旧的three.js构建,需要升级,这有望对将来的人有所帮助。