terrain地形lod巨大bug

Creator 版本: 3.8.6
本人这几天在研究地形制作,只做了一个非常简单的案例


结果进游戏发现竟然是这样的

一开始甚至没注意画面有什么不对 :face_with_head_bandage:爬坡的时候疯狂穿模,以为是物理引擎精度问题,遂开始怒读源码
很久之后终于发现了竟然是LOD的锅 :scream_cat:于是又开始读terrain的源码然后排查了数小时。。。
终于查到了这里


就是说为什么,每一帧都会前后两次得到两种不同的lod结果!


看到这里的时候我已有点气笑了无语了家人们 :no_mouth:场景里明明只放了一个相机,这第二个相机是…InspectorCamera :grimacing:

显然是相机完全没有做筛选导致的结果,在这里简单加了一个相机visibility的筛选,立马好了

虽然这可能不是最优解,暂时勉强够用了哈,之后要是什么多相机更新渲染流程打架什么的。。。等我学到了再说吧 :rofl:

可是引擎组的dalao们,我真的很想问,就不说lod系统做的时候就应该考虑3d场景多相机也是很正常的需求了,哪怕是单一个相机,也会被InspectorCamera触发一定会导致lod变成最低(除非数值设为极大),dalao们这个功能测试到底是怎么通过的 :woozy_face:虽然cocos还没多少大型项目来检验,一般也不会真刀真枪用上terrain,但是咱们cocos的功能就真的是先有再说吗,地形lod推出这么久了非常容易触发的bug也没人发现更别说修复了 :mask:

5赞

没用过这个组件,你不说我还真不知道。

发现我理解错一件事,inspectorcamera是cc-inspector调试工具带的相机,是我理解错了哈不是cc自带的,但是同样,如果渲染场景之后渲染ui相机 LOD就还是会乱掉

深入查询后发现这个是渲染管线的问题,CustomPipeline都是在setup时发送RENDER_CAMERA_BEGIN,而内置原pipeline是在render时每个相机发送事件,这个问题比想象中严重啊怎么会有同样的事件具有不同含义 :grimacing:完全是因为cc自带组件只有terrain现在用到了这个事件,才没有发现也没有严重问题产生的 :upside_down_face:

我是不是该提一个pr,但是显然这是一个治标不治本的修改 :crazy_face:

提个issue吧…想看什么会关掉 :smirk_cat: