【发布时间】:2020-02-02 23:36:42
【问题描述】:
我曾经有一个项目,它使用灰度图像来设置简单平面网格中顶点的高度,从而生成漂亮的高度映射地形。但是,我已经将我的项目转换为 C++ 并且不能再使用 BufferedImage 等的帮助来使用旧的灰度方法从平面网格创建高度映射的地形。
因此,我的 C++ 项目现在使用 .obj 文件作为地形,但我发现当用户在地形上行走时更新播放器/相机高度非常困难,而我只是作为播放器漂浮在所有物体上高度从不改变,或者只是非常频繁地改变(所以我知道高度至少在更新,只是不正确)。
Bellow 是一个基于地形.obj 文件实际更新玩家高度的代码示例,它通过存储 .obj 文件的所有顶点并将它们的每个 x 和 z 分量与玩家的 x 和 z 分量,如果有匹配则将玩家的 y 值设置为当前顶点 y 位置:
Vector3f *playerPos = freeMoveObjects[0]->GetParent()->GetTransform()->GetPos();
float playerXPos = playerPos->GetX();
float playerZPos = playerPos->GetZ();
int playerXPosInt = (int)playerXPos;
int playerZPosInt = (int)playerZPos;
for (Vector3f currentVector : meshObjects[0]->getMeshVertices()) {
int meshHeightXInt = (int)currentVector.GetX();
int meshHeightZInt = (int)currentVector.GetZ();
if (meshHeightXInt == playerXPosInt & meshHeightZInt == playerZPosInt){//currentVector.GetX() <= playerXPos & currentVector.GetZ() <= playerZPos) {
freeMoveObjects[0]->GetParent()->GetTransform()->GetPos()->SetY(currentVector.GetY());
}
}
【问题讨论】:
-
网格和玩家位置是否可能使用不同的比例?即,一个方格的网格覆盖不止一个方格的玩家位置?