C# ScreenPointToRay,What';功能的背后是什么?

C# ScreenPointToRay,What';功能的背后是什么?,c#,unity3d,lua,roblox,C#,Unity3d,Lua,Roblox,我想知道摄像机背后的代码是什么:屏幕指针可能是Unity或ROBLOX 我的情况是,我在世界空间中有一个位置,相机的视口大小, 我想有一个函数,它可以显示屏幕指针, 我假设创建这个函数只需要这两个参数,但我不知道如何创建 有人能告诉我这个吗?中有一节介绍了您要查找的函数: 也有一个部分具有自己的功能 我希望这对你有帮助 有几种方法可以进行此计算。此版本仅适用于透视摄影机,但也可以修改为适用于正交摄影机。不幸的是,我无法共享代码,但我会尽力解释 从相机中,需要通过反转camera.projecti

我想知道摄像机背后的代码是什么:屏幕指针可能是Unity或ROBLOX

我的情况是,我在世界空间中有一个位置,相机的视口大小, 我想有一个函数,它可以显示屏幕指针, 我假设创建这个函数只需要这两个参数,但我不知道如何创建

有人能告诉我这个吗?

中有一节介绍了您要查找的函数:

也有一个部分具有自己的功能


我希望这对你有帮助

有几种方法可以进行此计算。此版本仅适用于透视摄影机,但也可以修改为适用于正交摄影机。不幸的是,我无法共享代码,但我会尽力解释

  • 从相机中,需要通过反转camera.projectionMatrix与camera.worldToCameraMatrix相乘的结果来生成矩阵x4x4
  • 您需要将屏幕空间像素转换为剪辑平面坐标。在剪辑平面中,-1相当于0,0,1,1相当于Camera.pixelWidth、Camera.pixelHeight
  • 接下来,将使用Matrix4x4.MultiplyPoint函数乘以剪辑点
  • 光线的方向是步骤3减去相机位置的结果
  • 使用步骤4中的方向构造光线,并使用摄影机的位置作为光线原点

  • 如果您试图在Unity API之外执行此操作,则还需要创建Matrix4x4.MultiplyPoint函数。

    您可以检查,它使用Unity相机上可用的矩阵为计算着色器内的所有像素创建光线。

    我知道它的功能,但我想知道函数背后的内容,例如,我不想使用camera:screenpointoray。我希望有一个自己的函数可以使用它来实现灵活性:
    code本地函数worldCameraPoint(cframe,viewportSize,mousePoint)--世界空间坐标,分辨率,基于分辨率的鼠标位置--screenpointtoray return ray end