2016-06-05 12 views
2

Ich habe ein MeshPhongMaterial namens 'Material' bekam etwa so:Three.js MeshPhongMaterial normalScale Fehler werfen

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

Alles funktioniert und angewendet wird, einschließlich der Karte und normalmap. Das Problem ist, wenn ich versuche, eine normalScale Eigenschaft hinzufügen, wirft es den folgenden Fehler:

Uncaught TypeError: Failed to execute 'uniform2fv' on 'WebGLRenderingContext': No function was found that matched the signature provided. 

I normalScale vor und mit der richtigen Syntax verwendet haben, und es hat sich bis vor kurzem arbeiten. Ohne normalScale ist alles in Ordnung. Ich benutze Revision 77. Meine Frage ist, warum passiert das und was verursacht diesen Fehler? Wie kann ich normalScale ohne Three.js verwenden, die den Fehler wirft? Ich habe Chrome DevTools verwendet, um die Linie zu bekommen, wo der Fehler in Three.js Quelle geworfen wird:

if (v.x === undefined) gl.uniform2fv(this.addr, v); 

Antwort

2

Sie nicht normalScale richtig setzen:

var material = new THREE.MeshPhongMaterial({ 

    normalMap: THREE.ImageUtils.loadTexture('assets/images/8k-earth-normal.jpg'), 

    normalScale: new THREE.Vector3(0.1, 0.1); 

) }; 

Alternativ kann, nachdem das Material instanziiert wird:

material.normalScale.set(0.1, 0.1); 

three.js r.77