我正在使用Libgdx和Box2Dlights编写类似于Don't Starve 的游戏。我有一个平面世界,在这个表面上有一些广告牌。因此使用了透视摄像头。屏幕法线与表面法线(地面)之间的夹角为45°。这些物体中的一些向所有方向(篝火)发光。所以 RayHandler 类用于处理这些问题。设置 RayHandler 的组合矩阵的方法需要视口宽度和高度。当透视摄影机的视口传递给此方法时,渲染的光线在其中心离开屏幕后会消失。只有当它完全离开屏幕(不仅仅是中心)时,应该做些什么才能使光线消失,这样用户就不会看到它消失的那一刻?谢谢。
更新:
方法rayHandler.setCombinedMatrix(camera);
需要 OrthographicCamera 。我使用的相机是透视。这就是为什么我不可能使用rayHandler.setCombinedMatrix(camera)
。我唯一的选择是使用setCombinedMatrix(Matrix4 combined, float x, float y, float viewPortWidth, float viewPortHeight)
。我可以将 PerspectiveCamera 的组合矩阵与其位置和视口一起传递,但是它没有给出所需的结果,因为它仍然提供了错误的视口(可能是因为它不考虑相机处于3D空间并倾斜的事实。
答案 0 :(得分:0)
由于您没有提供任何代码,只是提供了一些可能对您有帮助的背景:光线处理程序使用剔除来确保安全性能:它不会渲染屏幕上的灯光。屏幕边界由
的输入计算rayHandler.setCombinedMatrix(camera);
您必须在render()
之前的rayHandler.updateAndRender()
方法中调用它,以便及时更新。