【发布时间】:2014-12-30 01:29:24
【问题描述】:
我正在尝试在 WebGLRenderer 的 PhongMaterial 中为 THREE.SpotLight 实现光 cookie(或图案图案、光纹理或光蒙版)。目的是能够为灯光附加纹理,如下所示:http://www.idjnow.com/ProductImagesLarge/GOBO-GLASS1C.jpg 纹理会降低灯光的强度,从而产生类似阴影的投影。
我认为我已经涵盖了“将纹理附加到灯光并将其作为统一传递以在着色器中查找”,尽管无法对其进行测试,因为我在计算聚光灯锥中的位置时遇到问题/ 点。
我看到这里计算了聚光灯的光贡献(我是直接修改 Three.js 源,而不是创建我自己的材质):
https://github.com/mrdoob/three.js/blob/master/src/renderers/WebGLShaders.js#L1013
聚光灯的位置是一个圆圈,对吧?或椭圆,如果它在一个角度。所以我需要在这里添加一些代码,它会告诉我我在聚光灯下的位置(xy 坐标)。我可以将这些坐标映射到纹理查找上,相应地降低 spotDiffuse,并希望有工作的图案投影。
我如何计算这些与每盏灯相关的坐标?
或者有没有更好的方法在 Three.js 中实现光饼干/图案/光纹理/光蒙版?我看到它是游戏引擎中的一个流行功能,如果有这样的内置功能会很好。 http://docs.unity3d.com/Documentation/Components/class-Light.html 很好地描述了我正在寻找的内容(cookie 部分)。
【问题讨论】:
标签: three.js