2016-06-05 2 views
2

У меня есть MeshPhongMaterial названного «материал», как так:Three.js MeshPhongMaterial normalScale бросал ошибку

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); 

ответ

2

Вы не настройки 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

Смежные вопросы