8
Ben three.js bir ağ üzerinde bir doku kuruyorum
üzerinde doku değiştirme ve göründüğü yüklediğinde ben de istiyorum nasıl:Three.js malzemesi
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
});
ama doku değiştirmek istiyorum bir THREE.ShaderMaterial üzerinde bir doku nasıl değiştirebileceğini,
obj.mesh.material.uniforms.texture = THREE.ImageUtils.loadTexture("textures/1.png");
obj.mesh.material.uniforms.texture.needsUpdate = true;
ancak bu ağ üzerinde görüntülenen doku değişmez: ben bu denedi, daha sonra bu ağ üzerinde?
Daha önce yaptığınız gibi 'obj.mesh.material.uniforms.texture.value' değerini atamayı deneyin. Ayrıca doku başarılı bir şekilde yüklendikten sonra "needsUpdate" bayrağını ayarlamayı da düşünün (yük olayına abone oluyor). – Matthias
haklıydınız, bunu 'texture.value' olarak atamam gerekiyor, teşekkürler – 0xor1
Nice. Bu soruyu kapatabilmek için bir cevap ekledim. – Matthias