gpt4 book ai didi

c - 查找对象的阴影贴图

转载 作者:太空宇宙 更新时间:2023-11-04 08:39:16 25 4
gpt4 key购买 nike

所以我有一个光源和一个类似平面的东西。像这样:

    |
|
|
o |
|
|
|

平面用|表示,光源为o

现在我可以通过用光的位置减去平面的左上角来找到方向 vector (这是正确的术语吗?),如下所示:

vec3 dir = plane_top_left - light_pos

但是,我希望能够将方向 vector 投影到更远的平面上,如下所示:

        | /___  I want to know where this is
/| \
/ |
/ |
/ |
/| |
/ | |
/ | |
o | |
| |
| |
| |

我如何知道方向 vector 和平面相交的位置?顺便说一下,这是一个 3D 场景的俯 View

我在谷歌上查了一下,变得非常困惑......答案相互矛盾,我几乎无法理解它们背后的数学原理。

最佳答案

我不认为这与 C 特别有任何关系...

根据我的空间几何知识,我可以提供以下信息:如您所说,非单位方向 vector 可以通过从目标点减去初始点的坐标来获得。让我们用 TLC 表示飞机的左上角,用 LS 表示光源。非单位方向 vector 将是:

( TLC - LS )

在三维系统中,这相当于:

< TLC_X - LS_X,
TLC_Y - LS_Y,
TLC_Z - LS_Z >

您问题的答案取决于您要转换光线的平面有多远。如果它是图表中原始平面的 7/3 倍,那么您可以简单地将方向 vector 乘以该因子,并将其添加到 LS :

LS + ( TLC - LS ) * 7 / 3

无论您做什么,都必须将其添加到 LS,因为它是光的原点。根据投影平面的距离,乘法因子会发生变化。一般来说,它将是:

LS + ( TLC - LS ) * ( how_far_the_projected_plane_is / how_far_the_original_plane_is )

关于c - 查找对象的阴影贴图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24534949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com