演示:
https://dl.dropboxusercontent.com/u/123374/so-pages/20160601/index.html
alphaTexture
在每次渲染过程中都会改变偏移量。作为“地图”属性,它会改变,但作为“alphaMap”,它不会改变。第二个网格的alphaMap
演示链接中的相关代码:
var colorTexture = new THREE.TextureLoader().load('blue.png')
, alphaTexture = new THREE.TextureLoader().load('alpha.png')
, offset = 0
, colorFill = new THREE.Mesh(
new THREE.Geometry(),
new THREE.MeshPhongMaterial({
map: colorTexture,
alphaMap: alphaTexture,
side: THREE.DoubleSide,
shading: THREE.FlatShading
})
)
function render() {
requestAnimationFrame(render)
offset += .01
alphaTexture.offset.x = Math.sin(offset)
renderer.render(scene, camera)
}
render()
预期:
当alphaTexture的偏移发生变化时,对象的透明部分会移动。
实际
透明部分保持固定在材料上。但是,如果我将纹理集的偏移量编辑为map
属性(而不是alphaMap
),它*可以*移动,这对我来说似乎是不一致的行为。
答案 0 :(得分:1)
您所看到的是three.js的当前“特征”:每个网格只允许一对offset/repeat
对。 mesh.map
具有优先权。
有关详细信息,请参阅https://stackoverflow.com/a/14372235/1461008
将来可能会更改此设置,以便为每个纹理或每个材质属性设置单独的offset/repeat
设置。
three.js r.84
答案 1 :(得分:0)
我尝试用最新版本(82)评论USE_ALPHAMAP,但它没有用。但是,在alpha_fragment块中将vUv更改为vUv2。
吉姆