React-three实现3D游戏(二)-模型替换
在一个基本的可交互的3D游戏中,人物和环境是不可或缺的元素。接下来,我们将逐步迭代我们的项目,使其更像一个真正的可交互的3D游戏。
3D模型在线预览提供多种低代码平台3D模型在线预览解决方案,实现了将多种3D模型格式无缝集成到低代码业务表单中。这意味着用户可以在不离开低代码平台的情况下,直接查看和操作3D模型,极大地提升了数据可视化的效果和用户交互体验。
添加辅助工具
将我们之前添加的Grid辅助网格线去除,添加<axesHelper args={[500]} />
辅助坐标线。安装r3f-perf,添加Perf组件。
这是一个性能监控器库,可以轻松看到当前项目的gpu、cpu、fps、线面数量等实时参数,但只在开发阶段使用。 代码修改如下:
调试可能遇到的bug
人物疯狂旋转
当环境线面较多时,由于Ecctrl库会根据周围环境的法线计算人物的平衡性。这会导致人物疯狂旋转,如果你的人物也疯狂旋转。在Ecctrl的配置项上将autoBalance
设置为false。或者将autoBalanceDampingC
和autoBalanceDampingOnY
设置的更小些。
人物穿过地面无限掉落
当环境模型太大时,物理效果生效时,环境模型尚未加载。这时人物会掉落到地面以下,解决方案也很简单,只要让物理效果的生效时间往后延迟一段时间就好。
卡顿
如果遇到性能问题,以下方法可以快速解决一部分卡顿问题。如果还是存在,则需要使用性能监控工具,逐段检测代码,识别造成性能瓶颈的原因。
- 减少模型的线面
- 将光线产生阴影的功能关掉。
- 关掉physics的debug模式
- 使用useMemo和useCallback避免不必要的渲染
- 在index.tsx添加以下代码
React-three实现3D游戏 - 索引