【发布时间】:2015-04-18 15:57:04
【问题描述】:
我正在尝试在鼠标悬停事件中突出显示游戏中的网格(动画角色等)。 它们有多种纹理,有时还有皮肤。
我想我会将它们包装到 ShaderMaterial 中,并在命中测试时更改制服以使用片段着色器使其变亮。
为此,我可以以某种方式操纵常规阴影吗? 我可以混合多种材质,让我的着色器从标准着色器中获取颜色值并调整它们吗? 还是我需要整个单独的渲染通道并将其与作曲家混合?
或者完全是其他的东西,比如环境光只应用于一个对象/着色器?
感谢您的任何建议。
【问题讨论】:
-
您可以在鼠标悬停时更改整个材质/着色器,尽管我猜这有点性能密集型,这取决于用户通常执行的开关数量以及您的应用程序的其余部分正在执行的操作。我曾经使用的是常规 phong 材料的发光颜色,例如 material.emissive.setRGB()。这也会给你一些不错的效果。
-
问题是我正在寻找一种与材料无关的解决方案。我将 phong 材料用于某些对象,而将 lambert 用于其他对象。但我会看看他们是否有共同点我可以修改。感谢您提供一个有趣的想法,它实际上可能是我正在寻找的解决方案。我会告诉你的。
-
酷,它工作得很好,两种材质,甚至纹理。所以我猜你搞定了。 :) 非常感谢。在这里你可以看到结果:eskel.cz/preview/Lighten
-
@GuyGood 请将其作为答案发布,我会将其标记为正确。
-
我唯一遇到的问题是我必须为每个对象克隆该材料,否则我会立即更改它。而且由于我正在做类似体素引擎的事情,这意味着数百个材质克隆(具有多个纹理贴图)来更改一个属性。 :(
标签: three.js