gpt4 book ai didi

math - 投影-将3d转换为2d

转载 作者:行者123 更新时间:2023-12-04 02:53:02 26 4
gpt4 key购买 nike

我有问题还是好,我不知道如何将x,y,z值的3d点转换为2d点,
我必须绘制投影,其中的点确实有x,y,z值,但是我不知道如何将它们转换为2d,所以我可以将它们移动到我的轴上。

我一直在寻找Wiki和Google,但是我不确定我应该使用哪种矩阵转换来获得想要的结果。

最佳答案

首先,让我们以观察场景的摄像机为中心,然后观察-z的方向。
然后:

  • 的透视投影如下:x' = x/zy' = y/z
  • 正交投影由下式给出:x' = xy' = y(即,仅丢弃z分量)

  • 现在,您已经应用了上面的步骤,您可能会获得一个位于 (x',y') = (-28.4, +134.5)的点。现在,您需要根据屏幕分辨率以及相机的“缩放因子”和宽高比来缩放和居中:例如,您可能想乘以 Zoom并将 screen_center添加到 xy组件中(注意:大多数图形渲染系统将 y的方向指向下方,因此您可能需要将符号替换为 y组件)。您可能最终仍然会得到带有负坐标的像素,或者其坐标大于 Canvas 大小的像素。只需丢弃它们:这意味着它们不在您的视锥范围内。

    最后,您可能想知道如果您的相机是 而不是指向 -z或不在原点居中,该怎么办。对于后一种情况,这很简单:在执行其他任何操作之前,只需将相机坐标减去所有3D点的分量即可。对于摄像机旋转来说,这实际上也很容易:您只需要以相反的方式旋转点即可旋转摄像机,然后再执行其他任何操作。这只是意味着您需要将所有3D坐标乘以相机旋转矩阵的转置。此步骤背后的想法是,左右移动摄像机与沿相反方向移动点完全相同(并且发生的情况是旋转矩阵的逆是同一矩阵的转置)。

    关于math - 投影-将3d转换为2d,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15844101/

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