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

标签 javascript three.js

演示:

https://dl.dropboxusercontent.com/u/123374/so-pages/20160601/index.html

alphaTexture 在每次渲染期间都会更改其偏移量。作为“map”属性,它会改变,但作为“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 偏移量的变化而移动。

实际:

透明部分固定在 Material 上。但是,如果我编辑设置为 map 属性(而不是 alphaMap)的纹理偏移量,它 * 能够移动,这对我来说似乎是不一致的行为。

最佳答案

您所看到的是 Three.js 的当前“功能”:每个网格仅允许一对 offset/repeatmesh.map 具有优先权。

有关详细信息,请参阅 https://stackoverflow.com/a/14372235/1461008

将来可能会对此进行更改,以允许每个纹理或每个 Material 属性单独的偏移/重复设置。

三.js r.84

关于javascript - 无法更改用作 alphaMap 的纹理的偏移/重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37579923/

相关文章:

javascript - 使用 import fs from 'fs'

javascript - 使用 javascript 删除 url 字符串的特定部分

javascript - 为什么我们需要私有(private)变量?

javascript - Three.js 渲染器是否克隆对象位置?

javascript - 将相机放置在 Three.js 立方体内

three.js - Buffergeometry 显示为黑色,带有 phongmaterial

javascript - 单击 <a> 标签时 Bootstrap 模式无法正确显示

javascript - 无法使用 :not() 将按钮定位为分离行为

三.js OrbitControls。如何更新旋转相机?

javascript - 从场景中移除所有物体的正确方法