(五)Threejs基础-Clock时间跟踪动画与Gsap动画库使用

本文详细介绍了如何在Three.js中使用Clock对象进行时间跟踪,以及结合GSAP库实现复杂的动画控制。通过创建Clock对象、访问其属性和方法,可以精确地控制3D对象的运动。同时,演示了GSAP的使用,通过简单调用即可实现物体平滑移动的动画效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、Clock时间跟踪

1.1 对象构造

//创建时间跟踪对象
const clock=new THREE.Clock();

1.2 常用属性

 //当clock start, .getElapsedTime() or .getDelta() 更新oldTime,注意查看oldTime值
 var oldTime=clock.oldTime;
 //时钟总的运行时间
 var elapsedTime= clock.elapsedTime 

1.3 常用方法

//获取上次 .oldTime更新至clock.getDelta()被调用后的时间,并更新 .oldTime
var delta=clock.getDelta();
//获取时钟启动至当前的时间,并更新 .oldTime
var elapsedTime= clock.getElapsedTime ()

1.4 完整过程

//导入threejs框架
import * as THREE from "three"
//导入轨道控制器 允许相机围绕着目标对象旋转
import {OrbitControls} from "three/examples/jsm/controls/OrbitControls"
//1创建场景 threejs对象及对象位置的渲染是在场景中完成的,场景中可渲染配置对象、灯光、相机
const scene=new THREE.Scene();
//2创建相机 perspective projection 模拟人眼所看到的景象,它是3D场景的渲染中使用得最普遍的投影模式。详见第3部分相机类型
const camera=new >THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,0.1,1000);
//3设置相机位置 详见第3部分其它相机位置说明
camera.position.set(0,0,10)
//4添加相机到场景
scene.add(camera);
//5场景中添加物体
const geometry= new THREE.BoxGeometry( 1, 1, 1);
const material= new THREE.MeshBasicMaterial({color: 0xffff00});
const cube=new THREE.Mesh(geometry,material);
scene.add(cube);
//6初始化渲染器
const renderer=new THREE.WebGLRenderer();
//7设置渲染的尺寸大小
renderer.setSize(window.innerWidth,window.innerHeight);
//8将webgl渲染的canvas内容添加到body
document.body.appendChild(renderer.domElement);
//9创建轨道控制器
const controls=new OrbitControls(camera,renderer.domElement);

//10创建辅助坐标轴
const axesHelper=new THREE.AxesHelper(5);
scene.add(axesHelper);
//11缩放
cube.scale.x=2;
//12 创建clock
const clock=new THREE.Clock();
//13动画实现
animate();
var flag=true;

function animate(){
   //14旋转
  cube.rotation.x+=0.01;
   //15 获取每帧调用时间,1000/clock.getDelta()=渲染帧数
  var delta=clock.getDelta();
   t+=delta;
   //时间X速度=路程  根据耗费的时间移动相应的距离
   cube.position.x=t*1%5;
   requestAnimationFrame(animate);
   //使用渲染器,通过相机将场景渲染进来
   renderer.render(scene,camera);
}

2、Gsap动画控制

2.1 安装依赖

gsap文档: link

在这里插入图片描述

在这里插入图片描述

2.2 完整过程

//导入threejs框架
import * as THREE from "three"
//导入轨道控制器 允许相机围绕着目标对象旋转
import {OrbitControls} from "three/examples/jsm/controls/OrbitControls"
//1创建场景 threejs对象及对象位置的渲染是在场景中完成的,场景中可渲染配置对象、灯光、相机
const scene=new THREE.Scene();
//2创建相机 perspective projection 模拟人眼所看到的景象,它是3D场景的渲染中使用得最普遍的投影模式。详见第3部分相机类型
const camera=new >THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,0.1,1000);
//3设置相机位置 详见第3部分其它相机位置说明
camera.position.set(0,0,10)
//4添加相机到场景
scene.add(camera);
//5场景中添加物体
const geometry= new THREE.BoxGeometry( 1, 1, 1);
const material= new THREE.MeshBasicMaterial({color: 0xffff00});
const cube=new THREE.Mesh(geometry,material);
scene.add(cube);
//6初始化渲染器
const renderer=new THREE.WebGLRenderer();
//7设置渲染的尺寸大小
renderer.setSize(window.innerWidth,window.innerHeight);
//8将webgl渲染的canvas内容添加到body
document.body.appendChild(renderer.domElement);
//9创建轨道控制器
const controls=new OrbitControls(camera,renderer.domElement);

//10创建辅助坐标轴
const axesHelper=new THREE.AxesHelper(5);
scene.add(axesHelper);
//11缩放
cube.scale.x=2;

//12动画实现

//13 gsap动画js框架使用
gsap.to(cube.position,{x:5,duration:10});
animate();
function animate(){
   requestAnimationFrame(animate);
   //使用渲染器,通过相机将场景渲染进来
   renderer.render(scene,camera);
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值