gpt4 book ai didi

java - 了解 libGDX 投影矩阵

转载 作者:IT王子 更新时间:2023-10-28 23:35:04 26 4
gpt4 key购买 nike

在过去的几周里,我一直在尝试学习 libGDX 库。我发现很难理解相机/视口(viewport)关系系统,尤其是在我第一次尝试游戏开发时。我被告知要使用的一行代码以及 API 提到的代码是:

    batch.setProjectionMatrix(camera.combined);

尽管进行了 4 个小时的研究,但我仍然对这段代码的功能缺乏完整的了解。据我的基本理解,它“告诉”相机正在寻找的批处理。我缺乏理解力令人沮丧和愤怒,如果有人能帮助我,我将不胜感激。代码 fragment 的另一个问题是我不确定何时需要实现(在渲染方法、创建方法等中)。

最佳答案

考虑用相机拍照。例如。使用您的智能手机相机拍摄公园长凳的照片。当你这样做时,你会在智能手机的屏幕上看到公园里的长椅。这可能看起来很明显,但让我们看看这涉及到什么。

图片上长凳的位置是相对于您拍照时站立的位置。换句话说,它是相对于相机而言的。在典型的游戏中,您不会相对于对象放置对象。相反,您将它们放置在您的游戏世界中。在您的游戏世界和您的相机之间进行转换是使用矩阵完成的(这只是一种转换坐标的数学方法)。例如。当您将相机向右移动时,长凳会在照片上向左移动。这称为 View 矩阵。

图片上长凳的确切位置还取决于长凳和相机之间的距离。至少,它是 3D 的(2D 非常相似,所以请继续阅读)。当它更远时,它更小,当它靠近相机时,它更大。这称为透视投影。您还可以进行正交投影,在这种情况下,对象的大小不会根据与相机的距离而改变。无论哪种方式,公园长凳的位置和大小都会转换为屏幕上的位置和大小(以像素为单位)。例如。公园里的长凳是两米宽,而照片上是 380 像素。这称为投影矩阵。

camera.combined 表示组合的 View 和投影矩阵。换句话说:它描述了游戏世界中的事物应该在屏幕上渲染的位置。

调用 batch.setProjectionMatrix(cam.combined); 指示批处理使用该组合矩阵。每当值更改时,您都应该调用它。这通常是在调用 resize 时以及在您移动或以其他方式改变相机时。

如果您不确定,那么您可以在 render 方法的开头调用它。

关于java - 了解 libGDX 投影矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33703663/

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