我正在投影视图中试验LibGDX和3D。现在我正在研究如何在z = 0.0的世界空间中确定视口的最外边界,以便绘制不大于必要的坐标网格。然而,我似乎超过了我的教育,因为我还没有采用正式的线性代数课,而且我对矩阵数学仍然有点模糊。
有没有办法确定我应该在哪里开始和停止绘制线条而不需要使用拾取和绘制透明平面来交叉?
LibGDX的unproject函数获取Vector3中的屏幕坐标,并在给定提供的z的情况下,从近剪裁平面向远处的世界空间返回Vector3。但是,鉴于我有一个已翻译和旋转的相机(视图投影矩阵的封装和一系列便利方法),我发现我无法选择任意z来放入窗口坐标向量并只是设置它在未投影后为0.0,因为该点可能不是视口中最远的可视点。那么我怎么知道在窗口坐标中使用什么z值,它将给出z = 0.0的世界空间中我需要的x和y?
编辑(更新): 所以看起来我正在看的问题是平面交叉,这需要光线跟踪。所以现在我想我的问题是:每个渲染循环是光线跟踪4次(或者,我认为每当相机移动时)值得获得能够动态绘制不大于视口的世界空间坐标网格的回报吗?如果没有,是否有一个更便宜的算法,我可以用来估计我应该从哪里开始和停止画线?