四、如何改变观察视角

靠的两个东西Mitt.js和TWEEN.js,那么他们分别是什么呢,咱们下来说说

1.Mitt.js

它被叫做小型事件发布订阅库,常被作为兄弟组件间传值.

gitHub地址: GitHub - developit/mitt: 🥊 Tiny 200 byte functional event emitter / pubsub.

npm地址: mitt - npm

使用方法也很简单

import mitt from 'mitt'
const emitter = mitt()
function onFoo(data) {
    console.log(data);
}
const TOPIC = 'topic'
// 订阅,在触发的页面监听值,onFoo里面的参数就是被传递的data
emitter.on(TOPIC, onFoo)   
// 发布事件,在触发的页面传递值
emitter.emit(TOPIC, { a: 'b' })
// 取消订阅
emitter.off(TOPIC, onFoo)

以上方法就形成了点击事件传递给js文件

2.TWEEN.js

        TWEEN又叫补间动画,允许你以平滑的方式更改对象的属性。你只需告诉它哪些属性要更改,当补间结束运行时它们应该具有哪些最终值,以及这需要多长时间,补间引擎将负责计算从起始点到结束点的值。

在Three.js中其实已经引入了TWEEN,只需要引入它就可以了。

import { TWEEN } from 'three/examples/jsm/libs/tween.module.min'
/**
 * 移动视角
 */
var tween;
const moveCamera = (newT = { x: 0, y: 0, z: 0 }, newP = { x: 215, y: 251, z: 378 }) => {
  if (tween) {
    tween.stop()
  }
  let oldP = camera.position
  // return console.log(this.controls)
  let oldT = controls.target
  // let oldT = controls.object.position

  tween = new TWEEN.Tween({
    x1: oldP.x,
    y1: oldP.y,
    z1: oldP.z,
    x2: oldT.x,
    y2: oldT.y,
    z2: oldT.z
  })
  tween.to(
    {
      x1: newP.x,
      y1: newP.y,
      z1: newP.z,
      x2: newT.x,
      y2: newT.y,
      z2: newT.z
    },
    2000
  )
  tween.onUpdate((object) => {
    camera.position.set(object.x1, object.y1, object.z1)
    controls.target.x = object.x2
    controls.target.y = object.y2
    controls.target.z = object.z2
    controls.update()
  })
  tween.onComplete(() => {
    controls.enabled = true
  })
  tween.easing(TWEEN.Easing.Cubic.InOut)
  tween.start()
}

20230911_162304

        

本期的threejs的使用技巧和代码页面的组成就讲到这里,下期我会给大家将一些例如标签的创建,热力图的展示等效果,有没有很期待呢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

arguments_zd

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

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

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

打赏作者

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

抵扣说明:

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

余额充值