Threejs进阶之九:让模型沿着指定轨迹移动与转向

上一次我们创建了蓝天大海,并且将一个游轮模型添加到了大海中,这一节我们让游轮按照指定轨迹移动,移动的过程中实现自动转向;先看下最终效果
在这里插入图片描述
要实现模型沿着轨迹运动,需要以下几个步骤
(1)创建一个轨迹曲线
(2)编写物体沿轨迹运动的方法
(3)在渲染函数中调用上面的方法,实现物体的移动

具体实现方法如下

创建轨迹曲线

创建曲线轨迹我们这里使用了CatmullRomCurve3类,CatmullRomCurve3 类使用Catmull-Rom算法, 从一系列的点创建一条平滑的三维样条曲线

CatmullRomCurve3的构造函数

CatmullRomCurve3( points : Array, closed : Boolean, curveType : String, tension : Float )
points – Vector3点数组
closed – 该曲线是否闭合,默认值为false。
curveType – 曲线的类型,默认值为centripetal。
tension – 曲线的张力,默认为0.5。

重要属性

.points : Array
定义了这一曲线的Vector3点数组,数组中至少需要两个点。

.closed : Boolean
当该值为true时,曲线将会闭合(环回自身)。

.curveType : String
可能的值为centripetal、chordal和catmullrom。

.tension : Float
当.curveType为catmullrom时,定义catmullrom的张力。

创建轨迹曲线的代码如下

let curve 
function makeCurve() {
   
  // 通过CatmullRomCurve3类创建一个3D样条曲线
  curve = new THREE.CatmullRomCurve3([
    new THREE.Vector3(0,0,-10), 
    new THREE.Vector3(10,0,0),
    new THREE.Vector3(0,0,10),
    new THREE.Vector3(-10,0,0),
  ])
  curve.curveType = 'catmullrom'
  curve.closed = true //设置是否闭环
  curve.tension = 0.5 //设置线的张力,0为无弧度折线
  // 为曲线添加材质在场景中显示出来,方便看到轨迹线
  const points = curve.getPoints(50) // 50等分获取曲线点
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

九仞山

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

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

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

打赏作者

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

抵扣说明:

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

余额充值