奇怪的线条3D团结

时间:2016-11-12 15:02:35

标签: unity3d

我正在研究一个项目,使用统一5.4。 在这个项目中,块彼此相邻堆叠。

然而,出现了一些恼人的奇怪线条。还有关于android这些 线路比PC上更常出现。 为了便于说明,我添加了图像和视频。 请放大图片,看看我所说的那条线,显然。

任何人都可以提供一个解决方案,以获得这种新生的红色。 提前谢谢。

文献:

阻止对齐代码段:

for (int x = 0; x < xSize; x++)
        for (int z = 0; z < zSize; z++)
        {
            Vector3 pos = new Vector3(x, -layerDepth, z);
            InstantiateBlock(pos);
        }

视频链接:https://youtu.be/5wN1Wn51d_Y

2 个答案:

答案 0 :(得分:8)

你有对象接缝!

当物体之间存在物理或感知间隙时,会发生这种情况。

这有多种原因。

1。浮点不精确

这可能是因为您将立方体的位置设置为int,但它们具有浮点尺寸。当相机靠近物体时,其症状通常是没有白色接缝,然后由于浮点不精确而逐渐出现。 More

  

大多数这些模块似乎与大多数摄像机位置完全对齐。但是从偶然的不幸位置来看,A的位置加上其顶点(0.5,0.5,-0.5)的确切值可能与对象B的位置加上其顶点(-0.5,0.5,-0.5)略有不同。结果是Unity显示了一个微小的间隙,在其中你可以看到立方体A的阴影面。

如果你在纸上3 == 1/3 * 3考虑以下内容,这在数学上是正确的,但是使用浮点数,1/3 == 0.333333...以及随后的3 * 0.333333... == 0.999999... BINGO!对象之间的随机差距!

那怎么解决?使用浮动来计算对象的位置。 new vector3(1,1,1);应为new vector3(1f,1f,1f); - 例如。如需进一步阅读,请尝试this SOP。

2。纹理包裹模式

如果您在对象上使用纹理,请尝试将纹理的环绕模式从包裹更改为限制,或尝试增加纹理padding

3。阴影痤疮 - (光照和阴影瑕疵)

这是阴影中应该真正点亮或不亮的像素的任意模式。

  

为防止阴影痤疮,可以在阴影贴图中的距离中添加偏移值,以确保边线上的像素确实通过比较,或确保在渲染到阴影贴图时。 source

在Unity中...转到你的光源然后增加Shadow Type > shadow Bias我建议加倍默认值0.05然后继续直到修正。您不希望将此值设置为max,因为...

  

不要将偏差值设置得太高,因为游戏对象附近的阴影周围的区域有时会被错误地照亮。这会导致阴影断开,使GameObject看起来好像是在地面上飞行。

答案 1 :(得分:0)

你使用的是不同的块吗?你的问题听起来像块并不完全相互对抗,这会导致你看到下一个块的一侧(这解释了相机Y的变化:你可能会看到更高的一侧更好的一面)。那一面将有不同的光线,并显示为不同/较浅的颜色。要检查这是否是问题,请尝试在编辑器中稍微手动重叠它们,看看问题是否仍然存在。