3D游戏开发如何利用地形Terrain拼接多个实现无限世界?

好,谢谢,我去了解一下

很好哇,经过大家的慷慨提示,已经做出来了,谢谢你

分享一下哇

楼主什么时候发个教程贴

不好意思,最近忙着开发项目,没上过线了,现在才来看这个。实现无限地图,其实很简单的,永远加载显示九宫格地图就好,也就是每次刷新地图都最多只有九个,然后玩家永远都是站在中间那块,代码还没有空整理,后面写了很多自己的业务代码,直接放出来可能会感觉不好看

你好,我想知道你的地形是提前设置好的?还是动态计算出来的?类似无限未知地图?

你好,我理解的是通过噪点算法生成高度值,根据不同高度设置不同layer 贴图,目前最多是4中贴图对吗?但是我测试没办法动态更新地形信息,设置layer 0层时还可以正常渲染,设置layer 1层时,地形就变黑了,不知道什么问题,应该是4个以内都可以的。设置好后,再设置权重即可,但是总是设置不好,有相关文章吗?能不能推荐下,或者您简单指点下

动态计算的,就是每次生成九块地图(九宫格),每次移动越界中间那块地图的边缘后开始加载新的地图,并重新渲染编排这九块地图,已经存在的不管,新的取创建,旧的删除,然后给所有地图块设置新的坐标,就可以了,当然,真实情况还要清理地图上的怪和一些场景,或者生成新的怪和场景,反正都是动态的计算出来和创建对象

我不这么干,都是做好地形图预制体,丢服务器上,然后每次运行游戏远程加载过来渲染的,Cocos的编辑器做地形图,已经处理好高度了,纹理也一样,但是感觉还是很多BUG,不太好用,特别是重新修改的时候根本改不了,很多时候占用内存高,机器崩了,重新启动,各种操作后,感觉都容易损坏文件了,很多时候只能重新做

这位朋友,您做无限的世界效果前,有限世界的产品 出几个了?

没有呢,第一次用Cocos写

3D 拼接比2D的复杂一点,有几个地方要处理
1.地形拼接的时候,如果是动态LOD地形,块边缘上会出现不同的LOD等级,网格需要缝合,否则会有缝。
2.烘焙光照,在边界的时候尽量少放灯。因为每块都是单独烘焙的,在边界的地方容易有拼接感。
3.如果在块上做好navmesh,有跨块寻路的需求的话,需要做好navmesh拼接或者上层跨块A*寻路。以前做过跨块的时候可通行的边界线记录下来,上层A*找块路径,然后按可通行边界线跨块移动,这种形式也有很多边界bug比较难处理。
暂时大的想到这么几个,其他的小细节比较多,比2D复杂很多。

这个是做大世界拼块的注意点,无限的应该更简单,因为块都是动态生成的,可以控制。

你说的确实有点

1.地形拼接的时候都是动态加载预制体地形,感觉不到你说的LOD,块边缘有缝隙在低版本的时候确实有,我升级到3.8.4后没有了,没仔细研究,因为目前看起来还可以

2.我整体就是一个光源,每个地形块12,因为Cocos的设计规格,所以一个块相当于384x384尺寸,也就是384米(可以模糊这样理解),从这个点来说,距离足够大,所以玩家几乎感觉不到板块移动,也感觉不到拼接感,我这边实现的效果这样,不知道别人的

3.因为我没有做自动寻路的,全是手动跑图,所以完美避开了,然后玩家跑到边缘的时候,我做了一个MAP缓存地形块的业务数据,KEY为板块XY坐标做String索引,每次移动都去判断是否玩家跑到边缘块了(X和Z都提前累计5距离),然后如果越界就移动回来一点就好 ,计算当前玩家坐标对应MAP的顶点坐标(计算每个地形块顶点坐标公式【parseInt(v - ( v % w ))】这里v是你传入的X或Z点的值,w为固定384)

我目前遇到的问题:
1.地形隆起很高的时候,形成山脉,玩家走过的时候,摄像头卡山里面,可以看到里面的空间,如果实现不能卡里面呢?
2.版本3.8.4打包到安卓会卡主界面不动,可能是我写了语法aaa?.xxx() 先试试,不行就升级到3.8.5

  1. 这种情况就没问题的,我指的是用高度图+动态网格生成的地形拼接。
    2.一个实时光源肯定没关系,我指的是烘焙光源。例如场景里面打了大量点灯光的情况,特别是室内拼接。另外在烘焙光照下跨越边缘的物体阴影,在边缘也会有截断的现象。
    3.没有跨块的寻路需求就没关系。

摄像头卡山里面的,需要摄像头挂一个物理物体,和地形有碰撞的时候推出。然后有一个弹簧arm节点在摄像机节点之上,在推出的时候可以用弹簧来拉伸和弹回。这个你找一些third-person-controller实现看看应该就可以了解的。

1赞

真正的大佬,听君一席话胜读十年书 :+1:

你说的对
1.理解
2.确实,我用的真实光源,烘培的话还没试过,希望官方慢慢优化好你说的情况,学习了,感谢
3.摄像头卡山里,你这个做法很好,让我顿时感悟,非常感谢 :+1: :pray: :handshake:

最近正好在做这个,我是基于柏林噪音动态生成网格拼接出来的,就是拼接的地方有一点痕比较难处理
动画

大佬来个showcase让我们膜拜膜拜!

:+1:你这个不错,还可以,主要能接受就好,我的可能摄像头拉的高一点,边缘拼接处也尽量不做地形有高度,贴图也尽量保持底色那个,暂时看起来比较可以接受

这就不得不提到我的获奖投稿了 :grin: