ThreeJS 3D 实现自行车动效 附项目代码

985 阅读1分钟

用ThreeJS仿写某PixiJS项目案例。

仿写动图

仿写.gif

原版动图

原版.gif

原方案

图形库:基于WebGL的2D渲染引擎PixiJS。 动效库:专业动画库GSAP。

改写方案

图形库:基于WebGL的3D渲染引擎ThreeJS。 动效库:@tweenjs/tween.js库。

仿写

采用ThreeJS用3D增加了一些表现,并且和2D进行了结合,使静态的车轮转了起来。其它动态效果也使用ThreeJS来仿照实现。由于时间关系,刹车开始结束时缓动效果暂未实现。

增加旋转车轮

一开始计划使用3dmax/blender软件来做车轮建模,后来考虑下载模型带宽小的时候加载时间太长,于是采用了用代码动态创建圆环车轮和车轮钢丝的方式来创建车轮,以优化首屏时间,但模型精细度会差一些。 有两个细节值得说一下:一是代码创建的模型都加到一个Group里,方便整体设置位置和旋转;二是加入Group里的模型不用scene.add('模型'),只需要scene.add(xxGroup)即可;

2D车架和3D车轮对位

车轮建好之后需要通过设置位置,我旋转来与2D车架图对齐位置,达到2D车架月3D车轮融合的效果。

仿写飞线

点状飞线使用Line和LineDashedMaterial材质来仿照实现效果。创建的Line Mesh加入Group,并使用Tween往后移动。循环往复。

项目代码仓库

github.com/pangda9527/…

第一次写技术博客,感谢大家!