три.JS изменение текстуры на материале
я настраиваю текстуру на сетке через три.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;
но это не меняет текстуру, отображаемую на сетке, как я могу изменить текстуру на три.Шейдерматериал ?
1 ответов
присвоить текстуру . Также рассмотрите возможность установки needsUpdate
флаг после успешной загрузки текстуры (путем подписки на событие load).