BabylonJS场景切换口吃

时间:2019-02-28 04:55:16

标签: babylonjs

Live Demo

我想在2个复杂的场景之间切换以进行简介动画。这两个场景均从.gltf或.babylon文件加载,并且包含相机运动。

我遇到的问题是,当我从场景1切换到2时,在下一个场景动画开始之前出现冻结/停顿。渲染场景后,场景切换将照常继续。可能很难发现,但是第一个开关和后续开关之间肯定有区别。

在加载场景之后,我尝试使用scene2.render();,它虽然有所帮助,但在尝试渲染两个场景时,也会使第一个场景变得口吃。我可能对此缺少什么吗?我找不到一个可以在网上很好地进行场景切换的简介示例。只是相机开关,但这不是我想要的。

1 个答案:

答案 0 :(得分:1)

这是因为第二个场景的着色器需要编译(因为它们可能与第一个场景中使用的着色器不同)。

Babylon.js v4将支持并行着色器编译,但并非在所有浏览器中都可用。

最好的选择是预先强制编译:

scene1.meshes.forEach(mesh => {
            mesh.material.forceCompilation(mesh);
        });