请马上登录,朋友们都在花潮里等着你哦:)
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 马黑黑 于 2023-10-22 11:36 编辑
本节主要内容:① 扩展介绍镜面滤镜 feSpecularLighting 的属性;② 聚光灯光源滤镜 feSpotLight。
镜面反射滤镜中有两个重要属性需要补充:一是 specularExponent 属性,它是镜面反射指数,该属性控制光源的焦点,值越大光亮越强;二是specularContant 属性,是镜面反射指数,该属性控制镜面反射照明的反射比率。它表示冯(Phong)照明模型中的 ks 值。值越大,反射越强。本节的示例将用到这两个属性。
下面重点介绍聚光灯光源滤镜。作为光源滤镜,我们可以将之想象成手电筒光源。它的光发自手电筒的发光体,用 x、y、z 表示光源的坐标点,这和点光源 fePointLight 是一致的。既然是聚光灯,就需要定义光射出去的方向,用 pointsAtX、pointsAtY、pointsAtZ 表示聚光灯朝向的坐标点,聚光灯的光柱宽度用角度限制,即圆锥形角度,属性名为 limitingConeAngle,角度越大光柱越大。x、y、z、pointsAtX、pointsAtY、pointsAtZ 和 limitingConeAngle 各属性,以及父滤镜的相关属性、合成滤镜的设定等等,它们是共同作用的,任何一个参数值的改变,都不同程度会改变光柱的渲染形态。
以下示例,f1 滤镜组使用的是镜面反射滤镜,光源来自聚光灯滤镜,它们直接作用于200*200的矩形,在其上产生聚光灯效果:
代码:
<svg width="200" height="200" style="border: 1px solid gray;">
<!-- f1滤镜 --!>
<filter id="f1">
<!-- 反射滤镜 : 镜面反射 feSpecularLighting -->
<feSpecularLighting in="SourceGraphic" specularExponent="1" specularConstant="10" lighting-color="blue">
<!-- 光源 : 聚光灯 feSpotLight -->
<feSpotLight
x="0"
y="0"
z="5"
pointsAtX="200"
pointsAtY="150"
pointsAtZ="0"
limitingConeAngle="10"></feSpotLight>
</feSpecularLighting>
</filter>
<!-- 尺寸为完整svg画布的矩形绑定 f1 滤镜 -->
<rect x="0" y="0" width="100%" height="100%" filter="url(#f1)"></rect>
</svg>
因为没有使用合成滤镜,光滤镜组直接作用于矩形,矩形的默认 fill 颜色的黑色没有了,rect矩形的表现形态由光滤镜组替代。
|