Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么Box2D机身是';使用WebGL渲染时,s线是否扭曲、不清晰和不直?_Javascript_Box2d_Webgl - Fatal编程技术网

Javascript 为什么Box2D机身是';使用WebGL渲染时,s线是否扭曲、不清晰和不直?

Javascript 为什么Box2D机身是';使用WebGL渲染时,s线是否扭曲、不清晰和不直?,javascript,box2d,webgl,Javascript,Box2d,Webgl,我将Box2DWeb与javascript和WebGL一起使用 在Box2D中,我的身体尺寸约为1.0,地面尺寸约为5.0。 我只是使用WebGL使用translate和rotate(使用从GetPosition()和GetAngle()函数中获得的值)绘制它们。我使用从这些函数中得到的相同值。 i、 例如,我使用1.0左右的值绘制对象,使用5.0左右的值绘制地面 问题是当旋转发生时(如两个物体碰撞),物体旋转并平移直到平衡,并且绘制的最终位置不清楚。即使物体只是躺在地上,线条也不笔直。 没有旋

我将Box2DWeb与javascript和WebGL一起使用

在Box2D中,我的身体尺寸约为1.0,地面尺寸约为5.0。 我只是使用WebGL使用translaterotate(使用从GetPosition()GetAngle()函数中获得的值)绘制它们。我使用从这些函数中得到的相同值。 i、 例如,我使用1.0左右的值绘制对象,使用5.0左右的值绘制地面

问题是当旋转发生时(如两个物体碰撞),物体旋转并平移直到平衡,并且绘制的最终位置不清楚。即使物体只是躺在地上,线条也不笔直。 没有旋转,身体看起来很好

是一个图像:

正如你所看到的,有些方面和底线是不直的。它们看起来是扭曲的。 为什么会发生这种情况

总而言之,我步进世界,更改的位置和角度存储在某处,然后使用WebGL我使用WebGL调用转换到点并旋转,并在屏幕上绘制身体

[编辑]
对于较大的物体,最后放下时的角度为:-3.1379659302514917!它没有下降到一个完整的
-PI
。也许这就是为什么人们会这么看。有没有办法解决这个问题?

一个通用的物理引擎不可避免地会产生不精确的结果。您可以通过设置更严格的阈值来停止模拟几乎静止的物体(显然,Box2D将其称为“睡眠”),从而将其调整到更接近的近似值

您还可以通过使用抗锯齿图形使其在屏幕上不那么明显,这样轻微的旋转不会在直线上创建一个单像素的扭结,而是创建一个更为渐变的坡度


您也可以在假设接近倍数π/2的情况下调整旋转值,但这会在翻滚的身体中产生明显的小故障。

我发现这是因为我使用透视投影而不是正交投影来绘制2D内容


此外,我还必须将图像保持在0.5米到5米的范围内,并使用30.0的比例在屏幕像素和Box2D米之间进行转换。

否则身体的行为是否正确?在这种情况下,GetAngle的精确值是多少?物体的行为非常逼真。对于较大的物体,最后放下时的角度为:-3.1379659302514917!它没有下降到一个完整的PI。也许这就是为什么人们会这么看。有没有办法修复它?网络上有大量的Box2D演示/应用程序。它们不像我的那样油嘴滑舌。你知道你提到的那些方法中有哪些是其他开发人员通常使用的吗?关于第一种方法,你能解释一下,设置一个“更严格的阈值”来停止模拟几乎静止的物体意味着什么吗?即使我发现一个物体在休息,我也不能确定它是否在一个平坦的表面上休息。实际上可能有一个轻微的0.01弧度的倾斜。我看不出这会有什么帮助。我的意思是,仅仅因为一个物体在静止,它的角度近似于这个物体的角度有多正确?这可能会产生错误的结果,就像第三种方法一样。我完全错过了什么吗?这并不是说你应该寻找静止的身体——而是Box2D已经在做了。如果通过设置较小的“速度阈值”将其更改为“模拟更长时间”,则它们可能会变得更平坦。我从未特别使用过Box2D,因此我无法进一步帮助。