我有一个名为“ material”的MeshPhongMaterial,如下所示:
var material = new THREE.MeshPhongMaterial({
map: THREE.ImageUtils.loadTexture('assets/images/8k-earth-diffuse.jpg'),
normalMap: THREE.ImageUtils.loadTexture('assets/images/8k-earth-normal.jpg'),
normalScale: (0.1, 0.1),
specularMap: THREE.ImageUtils.loadTexture('assets/images/8k-earth-spec.png'),
specular: new THREE.Color('grey')
});
一切都可以正常使用,包括地图和法线贴图。问题是,当我尝试添加normalScale
属性时,它将引发以下错误:
Uncaught TypeError: Failed to execute 'uniform2fv' on 'WebGLRenderingContext': No function was found that matched the signature provided.
我之前使用normalScale
过正确的语法,直到最近才使用它。没有normalScale
一切都很好。我正在使用修订版77。我的问题是为什么会发生这种情况以及导致此错误的原因是什么?如何在normalScale
不使用three.js引发错误的情况下使用?我使用Chrome DevTools来获取在three.js源中引发错误的行:
if ( v.x === undefined ) gl.uniform2fv( this.addr, v );
您的设置不normalScale
正确:
var material = new THREE.MeshPhongMaterial( {
normalMap: THREE.ImageUtils.loadTexture('assets/images/8k-earth-normal.jpg'),
normalScale: new THREE.Vector3( 0.1, 0.1 );
) };
或者,在实例化材料后:
material.normalScale.set( 0.1, 0.1 );
three.js r.77
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句