1

我正在使用 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 空间中的事实并且是倾斜的)。

4

1 回答 1

0

由于您没有提供任何代码,只是一些可能对您有所帮助的背景: 光线处理程序使用剔除来安全性能:它不会渲染屏幕上的灯光。屏幕边界由输入计算

rayHandler.setCombinedMatrix(camera);

render()您必须通过在之前的方法中调用它来保持最新状态rayHandler.updateAndRender()

https://github.com/libgdx/box2dlights/wiki/How-To

于 2016-08-26T06:18:04.217 回答