大家好,我在这里分享一个关于Unity3D的问题。
我正在开发一个基于真实地理位置的开世界驾驶游戏。这个游戏的位置非常重要,它近在我心坎上。然而,我遇到的一个大问题就是路口的对齐。
我使用的方法是这样的:
- 我使用一个脚本来读取真实地图数据和真实世界地理位置的高度地图。原始数据太多波动,不能让车辆正常行驶,所以脚本会平滑道路,修正路口的高度,并确保道路不太陡峭。然后脚本会“烧”道路的形状到地形中。
- Unity会构建实际的道路表面作为一个3D网格。道路网格被创建后,Unity会改变周围的地形,使地面恰好位于道路下方,并且和周围的土地平滑融合。
我使用QGIS来获取真实世界位置的地形和道路数据。
路口对齐的方法是这样的:
- 首先,路口会被拼接起来,中间部分会被共享。每条道路会在路口中心之前被剪切一小段,以防止道路全部撞击到一起(这是我之前遇到的一个问题)。
- 然后,我会查看每条道路的末端,并找到其左边缘和右边缘。因此,我会在路口中间放置一个点,然后从该点出发,画出三角形片段到所有道路边缘。这会填补道路之间的空隙。但这也是我现在遇到的问题。
我这样做的原因是因为我是新手,仅仅是因为这其中的一个解决方案在我脑海中看起来是合理的。然而,我认为这是一种“暴力”方法,用于平滑道路和路口。地形下方会被移动到恰好位于最终道路形状下方,因此不会有奇怪的凹凸或凹陷。之前我没有这样做,会有地方可以让车辆“在”道路下方行驶。
TL;DR:
我有两个问题:
- 有些路口的道路会出现轻微的飘浮,甚至经过了所有的正常化和后处理。
- 因为我拼接路口的方式,好的路口会出现小的“坡道”,如果你从不正确的角度撞击它们,会让车辆飞起来。
有没有人知道如何在专业的方式解决这些问题,并且有哪些最佳实践?我附上了一张“The Art of Rally”的截图,认为他们对道路和地形的融合做得非常出色。
感谢大家的帮助!
评论 (0)