Threejs发光闪烁提示特效

一、导语

发光闪烁特效应该在我们的项目中是经常需要去封装的一个特效吧,一般用于点击选择,选中物体,或者一些特效加持于中心物体,物体碰撞检测后的发光特效等等
Threejs发光闪烁

二、分析

我们可以合理的使用后处理特效,上步骤:

  • 首先,我们利用后处理效果
  • 然后整合输出于屏幕
  • 再加持自定义着色器合成后处理效果

优点是性能更好,FPS不会掉,优化为我们场景可以加载更多特效或者物体做下更多铺垫哦

三、上基础代码

    this.composer = new EffectComposer(this.renderer)

    const renderPass = new RenderPass(this.scene, this.camera)
    this.composer.addPass(renderPass)
	// 发光特效后处理器
    this.outlinePass = new OutlinePass(
      new THREE.Vector2(window.innerWidth, window.innerHeight),
      this.scene,
      this.camera
    )
    this.outlinePass.edgeStrength = 10
    this.outlinePass.edgeGlow = 1
    this.outlinePass.pulsePeriod = 2

四、动画切换,以及优化自定义着色器后处理效果

具体动态效果实现可以关注课程ThreejsWeb3D开发之可视化大数据地图,更多特效尽在里面,限时折扣哦

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要实现three.js中击模型发光特效,可以使用以下步骤: 1. 创建一个着色器材质,并设置emissive属性为需要的颜色。 ``` var material = new THREE.MeshBasicMaterial({ color: 0xffffff, emissive: 0xff0000, emissiveIntensity: 0.5, side: THREE.DoubleSide //设置为双面可见 }); ``` 2. 将需要发光的模型的材质设置为该着色器材质。 ``` var mesh = new THREE.Mesh(geometry, material); ``` 3. 监听场景的鼠标击事件,当击到需要发光的模型上时,将该模型的材质的emissive属性设置为需要的颜色,并设置emissiveIntensity属性为大于0的值。 ``` function onDocumentMouseDown(event) { event.preventDefault(); var mouse = new THREE.Vector2(); mouse.x = (event.clientX / window.innerWidth) * 2 - 1; mouse.y = - (event.clientY / window.innerHeight) * 2 + 1; var raycaster = new THREE.Raycaster(); raycaster.setFromCamera(mouse, camera); var intersects = raycaster.intersectObjects(scene.children, true); if (intersects.length > 0) { var selectedObject = intersects[0].object; selectedObject.material.emissive.setHex(0xff0000); selectedObject.material.emissiveIntensity = 1; } } ``` 4. 在渲染循环中更新需要发光的模型的材质的emissiveIntensity属性,使其在击后逐渐减小到0。 ``` function animate() { requestAnimationFrame(animate); //更新模型的emissiveIntensity mesh.material.emissiveIntensity = Math.max(0, mesh.material.emissiveIntensity - 0.05); renderer.render(scene, camera); } ``` 以上就是在three.js中实现击模型发光特效的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ifHappyEveryDay@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值