8
我在three.js所建立的质地上的网状纹理加载时,它看起来如何,我希望它太:three.js所改变材料
texture = THREE.ImageUtils.loadTexture("textures/hash.png");
texture.needsUpdate = true;
uniforms = {
color: { type: "c", value: new THREE.Color(0xffffff) },
texture: { type: "t", value: texture },
},
vertexShader = "varying vec2 vUv; void main() {vUv = uv;gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);}",
fragmentShader = "uniform vec3 color; uniform sampler2D texture; varying vec2 vUv; void main() { vec4 tColor = texture2D(texture, vUv); gl_FragColor = vec4(mix(color, tColor.rgb, tColor.a), 1.0);}",
material = new THREE.ShaderMaterial({
uniforms : uniforms,
vertexShader : vertexShader,
fragmentShader : fragmentShader
});
,但我想改变纹理也就是在这个网以后,我已经试过这样:
obj.mesh.material.uniforms.texture = THREE.ImageUtils.loadTexture("textures/1.png");
obj.mesh.material.uniforms.texture.needsUpdate = true;
,但是这并不能改变上显示网格纹理,我怎样才能改变一个THREE.ShaderMaterial纹理?
尝试像以前一样将它分配给'obj.mesh.material.uniforms.texture.value'。也可以考虑在纹理成功加载(订阅加载事件)后设置'needsUpdate'标志。 – Matthias
你说得对,我需要把它分配给'texture.value',谢谢 – 0xor1
很好。我添加了一个答案,所以你可以关闭这个问题。 – Matthias