无法更改用作alphaMap的纹理的偏移/重复

时间:2016-06-01 22:37:40

标签: javascript three.js

演示:

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),它*可以*移动,这对我来说似乎是不一致的行为。

2 个答案:

答案 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。

吉姆