把工作里遇到的一些有意思的例子记录一下吧~
这次的示例是,用多种材质加载模型,并且同步模型动画,先放示例图
horse.png
这是使用官方示例中的horse模型,在原有模型材质上,加了一层wireframe:true的meshBasicMaterial,材质渲染其实很简单,难点在于新的材质渲染的mesh的动画,做的时候设想了几种方法:
- 对材质进行调整:模型重新输出 或者 使用联合材质(createMultiMaterialObject)
- 对mesh进行设置:想办法使两个mesh重合并且动画一致
- 对动画进行设置
最终采用的方案是第3种,采用了AnimationObjectGroup,一组对象接收共享的动画状态,参考链接https://blog.csdn.net/u013270347/article/details/81178737
核心代码如下:
// animationobjectgroup
var animation1 = new THREE.AnimationObjectGroup()
animation1.add(mesh)
var animation2 = new THREE.AnimationObjectGroup()
animation2.add(lineMesh)
animationObj.push(animation1,animation2)
//mixer
mixer = new THREE.AnimationMixer(group)
具体代码详见:https://github.com/ysrdear/threejs-demos/tree/master/multi-model
小伙伴们有更好的方案一起来讨论呀~