我正在尝试使用图像的亮度到阿尔法转换在 SVG 中创建凹凸贴图效果,然后更改点光源在整个表面上的位置。
这是我创建的短小提琴, https://jsfiddle.net/5g2qncq8/6/
代码片段:
<defs>
<filter id="bump" x="0" y="0" height="100%" width="100%" >
<feColorMatrix in="SourceGraphic" type="luminanceToAlpha" result="bumpMap"/>
<feDiffuseLighting in="bumpMap" surfaceScale="1" diffuseConstant="10" result="shading">
<fePointLight in="SourceGraphic" id="light" x="300" y="300" z="10">
</fePointLight>
</feDiffuseLighting>
<feBlend in="SourceGraphic" mode="multiply" result="lit"/>
</filter>
</defs>
当您滚动图像时,点光源的位置会更新,并且随着指针远离图像,图像会变暗。我遇到的问题是,虽然房子实际上是多边形的,但当点光源消失时,我会看到一些额外的灰色矩形区域(在房子上方)。为什么会这样?
当灯光照在房子的顶部时,它显然会消失。有人可以建议摆脱这个灰色区域的方法吗?
我知道我可能会遗漏一些明显的东西。任何帮助或指针表示赞赏。干杯!