美文网首页
Unity中spotlight是如何实现的?疑惑点解析

Unity中spotlight是如何实现的?疑惑点解析

作者: 大其心宏其量扩其识 | 来源:发表于2021-01-31 14:05 被阅读0次

    我们以x分量为例,x * m_CotanHalfSpotAngle/(2 * z) + 0.5其实是把点的tan值除以半张角的tan值(即等于乘以cot值m_CotanHalfSpotAngle),由此得到张角比值,再通过缩放和平移,把张角的判断范围归一到[0, 1],如下图所示:


    d36cf0dd029f8addf4c9643884878ddf_720w[1].jpg

    数学基础太差,一直不明白这句话什么意思?今天终于想明白一点了,记录下,要是不应该这样理解,非常欢迎指正。


    spotlight.png

    因为:
    tan\alpha'=x'/z
    tan\alpha=x/z
    tan\alpha'/tan\alpha=\frac{x'}{z} / \frac{x}{z}=\frac{x'}{z} * \frac{z}{x}=\frac{x'}{x}

    cot \alpha=\frac{z}{x}
    x' * cot\alpha = x' * \frac{z}{x} * \frac{1}{z} = \frac{x'}{x}
    这里多出的\frac{1}{z}我理解是为了约去z

    再缩放加偏移
    \frac{x'}{x}* \frac{1}{2} + 0.5,(-1\leq \frac{x'}{x}\leq1)

    最终将 -1到1之间的值转换成0到1之间的值

    参考链接:https://www.zhihu.com/question/51060429

    相关文章

      网友评论

          本文标题:Unity中spotlight是如何实现的?疑惑点解析

          本文链接:https://www.haomeiwen.com/subject/wsuktltx.html