Godot-为什么我的Mesh会在极端位置变形?

时间:2018-07-20 02:10:31

标签: mesh game-development godot

我是制作简单游戏的初学者,我为机器人建模并提供了控件。你基本上走来走去,但是有重力。直到我发现它有点奇怪之前,我让它掉了很长一段时间,效果一直很好。

这是问题之前的样子: Before mesh deformation issue

然后,当我掉下平台后,在y轴上大约为-2000,出现了变形: When mesh deformation issue became present

在y轴大约为-20,000时变得尤为极端: When mesh deformation issue became extreme

这仅仅是一个压缩问题吗?我尝试将其压缩和未压缩,但同时发生了两种方式。也许引擎有问题?

1 个答案:

答案 0 :(得分:1)

根据您提供的数字,很明显您遇到浮点精度问题。确切的效果取决于您的平台,但是OpenGL ES着色语言规范对硬件制造商有一些最低要求:

https://www.khronos.org/files/opengles_shading_language.pdf(第4.5.2节)

尽管Khronos集团似乎提高了newer edition of the specificationhighp的最低精度要求,而OpenGL ES 3.0似乎是the version required,但我不知道您是什么确切地使用了您的硬件,以及您的硬件符合该规范的程度,因此,我将使用我链接的第一个规范。基于此,GLSL浮点数具有以下最低精度:

highp  : 2^-16 = 0.0000153
mediump: 2^-10 = 0.000977
lowp   : 2^-8  = 0.00391

假设您的硬件没有超出最低要求,那么即使您的原产地为20,000个单位,即使使用highp,也会遇到约0.3个单位的精度问题。考虑到顶点在1x1x1单位框中,相对于对象的大小,这相当于30%的误差,这与您共享的图像一致。

作为解决方案,请尝试使您的物体靠近原点。在需要时更改您的原点。