戈多 - 为什么我的网格在极端位置变形?

问题描述 投票:0回答:1

我是一个初学者制作一个简单的游戏,我建模了一个机器人并给它控制。你基本上走动,但有重力。它工作得很好,直到我让它掉了很长时间,当我注意到一些奇怪的东西。

以下是它在问题面前的表现:Before mesh deformation issue

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

它在y轴上大约-20,000变得特别极端:When mesh deformation issue became extreme

这只是一个压缩问题吗?我尝试了压缩和未压缩它,它发生了两种方式。也许引擎中存在问题?

mesh game-development godot
1个回答
1
投票

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

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

虽然Khronos集团似乎已经增加了highpnewer edition of the specification的最低精度要求,这似乎是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,也会出现约.3单位的精度问题。考虑到您的顶点在1x1x1单位框内,这相当于相对于对象大小的大约30%的误差,这与您共享的图像一致。

作为解决方案,尝试让您的物体更接近原点;如果/需要,转移你的起源。

© www.soinside.com 2019 - 2024. All rights reserved.