React-three实现3D游戏(二)-模型替换

在一个基本的可交互的3D游戏中,人物和环境是不可或缺的元素。接下来,我们将逐步迭代我们的项目,使其更像一个真正的可交互的3D游戏。

React-three实现3D游戏(二)-模型替换
3D模型在线预览提供多种低代码平台3D模型在线预览解决方案,实现了将多种3D模型格式无缝集成到低代码业务表单中。这意味着用户可以在不离开低代码平台的情况下,直接查看和操作3D模型,极大地提升了数据可视化的效果和用户交互体验。

添加辅助工具

将我们之前添加的Grid辅助网格线去除,添加<axesHelper args={[500]} />辅助坐标线。安装r3f-perf,添加Perf组件。

这是一个性能监控器库,可以轻松看到当前项目的gpu、cpu、fps、线面数量等实时参数,但只在开发阶段使用。 代码修改如下:

调试可能遇到的bug

人物疯狂旋转

当环境线面较多时,由于Ecctrl库会根据周围环境的法线计算人物的平衡性。这会导致人物疯狂旋转,如果你的人物也疯狂旋转。在Ecctrl的配置项上将autoBalance设置为false。或者将autoBalanceDampingCautoBalanceDampingOnY设置的更小些。

人物穿过地面无限掉落

当环境模型太大时,物理效果生效时,环境模型尚未加载。这时人物会掉落到地面以下,解决方案也很简单,只要让物理效果的生效时间往后延迟一段时间就好。

卡顿

如果遇到性能问题,以下方法可以快速解决一部分卡顿问题。如果还是存在,则需要使用性能监控工具,逐段检测代码,识别造成性能瓶颈的原因。

  1. 减少模型的线面
  2. 将光线产生阴影的功能关掉。
  3. 关掉physics的debug模式
  4. 使用useMemo和useCallback避免不必要的渲染
  5. 在index.tsx添加以下代码

React-three实现3D游戏 - 索引

React-three实现3D游戏(一)-模型替换

React-three实现3D游戏(二)-模型替换

React-three实现3D游戏(三)-空间音频

React-three实现3D游戏(四)-海洋、天空和云雾

React-three实现3D游戏(五)-小地图

React-three实现3D游戏(六)-小地图

React-three实现3D游戏(七)-多人同屏

React-three实现3D游戏(八)-第一视角

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号