Skip to main content

第四部分:分辨率与垂直空间的压缩

垂直空间的压缩


我已经做好了一切,但是为什么它看起来还是那么平

15f4fd94-be5f-4338-ad2a-56df861232b9.png

一个不是很立体的立体地图

垂直空间的压缩

它确实是立体的,只是在垂直方向上的隆起非常非常小,小到你无法感知

image.pngmask.png

左:应用了全黑与全白作为颜色以及 Height Map 的平面;右:全白与全黑各占一半的 Height Map


即使将颜色设置为全黑和全白,这块平面依然只是在有限的范围内隆起和落下了,顶点偏移是有极限的,它不会隆起到无限高

  • 立体范围是有限

那么,这就意味着,摄像机摄录的垂直空间会被压缩到这个有限的范围内,我们姑且将它称之为 地图空间。如果摄像机摄录了一个巨大的地图空间,在比例不变的情况下,真正有物体的部分就会被极度压缩趋近于一个平面

image.png

 想象一下,将世界的其中一小块拆分出来,从侧面看,是一个这样的切面。

其中,蓝色是天空,绿色是大地和建筑


image.png

现在将整个世界的区块在比例不变的情况下压缩到红色的地图空间中。

image.png

它看起来变成了这样。

image.png

你是否发现大地部分的厚度显著的减少了?

4m 压缩为 1.5m

摄像机摄录的空间越大,某一物体在空间中的占比就越小,在压缩到地图空间之后就越是扁平。

默认情况下,摄像机摄录的空间是 0.3m - 1000m,即999.7m的空间距离。如果在1000m的范围中包含一个起伏最高5m的陆地,那么压缩到1m之后,陆地看起来会非常非常扁平,这就是为什么现在你的地图看起来依然很平。

将摄像机的摄录范围设定在一个合适的数值,地形的起伏在压缩后也被明显的看到。

image.png

一个新建的摄像机组件,视锥远近平面距离设定被圈出

image.png

一张摄录空间调整合适的 VOB3DM

image.png

摄像机实际的摄录空间可视化

地图分辨率与立体分辨率


好吧,虽然它立体了,可是看起来还是很糟糕,非常棱角分明,非常模糊,这是因为它的颜色分辨率 以及 立体分辨率很低。

颜色分辨率

颜色分辨率指的是地图的颜色(图形)的分辨率,和一般的纹理分辨率是一样的东西。这决定了绘制在地图上的画面的精度如何,数值越高,对GPU计算性能以及显存的消耗越显著

你可以调整储存颜色的 Render Texture 的分辨率来改善质量或者性能

image.png

image.png

颜色,左:256x256;右:2048x2048

深度分辨率

理论上来说,你也可以调整深度分辨率来改善地图的立体精度,但是这还不够,地图立体的精度同时受到深度 Render Texture 的分辨率以及地图本身顶点数量的影响。

图像的指引有多精确可以看出顶哪里,以及地图的顶点有多密可以被顶起来

image.pngimage.png

深度,低密度平面,左:256x256;右:8192x8192

image.pngimage.png

深度,高密度平面,左:256x256;右:2048x2048


如果你对计算机图形学有更多了解的话,你可能会想到 曲面细分(Tessellation),这也是一个可行的提高立体分辨率的方法。

局限与看穿世界


眼尖和智慧的你可能已经发现了 VOB3DM 的局限性。由于其实现原理,它只能显示它捕获到的最高点,换句话说,任何中心空洞的特征无法展示,例如屋檐下。

但是你可以通过调整摄像机的位置视锥的近平面来让摄像机摄录室内或者中空的区域,这样就能看到被遮挡或者中心空洞的位置了。

image.pngimage.png


image.png

image.png


摄像机的位置/视锥的近平面对结果的影响

至于移动,缩放,编写状态机,录制动画之类的事情,就是你的工作了 :D