ThreeJS实现船行效果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ThreeJS实现船行效果相关的知识,希望对你有一定的参考价值。

参考技术A

解决方法:
官方提供了射线捕获的接口 raycaster.intersectObjects , 但是只能识别自建的 Mesh 模型, 对于导入的模型则无法捕获, 主要是因为导入的模型最外层包了一层, 没有把自己内部的Mesh暴露出来
所以我们需要在模型导入后, 在 onProgress 回调中对其进行递归获取子 Mesh , 将所有 Mesh 存在一个全局数组中. 在鼠标事件触发时, 将全局数组提供给 raycaster.intersectObjects , 即可识别
1. 递归函数

2.mtlLoader的onProgress事件

3.鼠标点击事件

2D平面展示有两种, 一种是这个项目里的鼠标触碰直升机的提示牌, 时刻与摄像头在同一角度的2D平面; 另一种是只在一个方向上可见的2D平面

封装的canvas函数

解决方法: 动画一般就放在固定的动画函数里, 通过 requestAnimationFrame 维持60帧

解决方法:

以上是关于ThreeJS实现船行效果的主要内容,如果未能解决你的问题,请参考以下文章

ThreeJS——精灵模型实现下雨场景效果

ThreeJs到Qt

angular8 + threejs 实现太阳系3D动画

threejs 绘制地球飞机轨迹

基于threeJS实现圣诞节孔明灯效果

Threejs—BIM管道流向动态效果