threejs视频教程学习(2):添加坐标轴辅助器、设置物体移动、缩放与旋转、动画、自适应页面大小、全屏

前言

学习教程:老陈 threejs课程

接上一篇笔记:threejs视频教程学习(1):本地搭建threeJS官网、渲染第一个场景

添加坐标轴辅助器

AxesHelper 用于简单模拟3个坐标轴的对象。红色代表 X 轴,绿色代表 Y 轴, 蓝色代表 Z 轴。

// 参数  size -- (可选的) 表示代表轴的线段长度. 默认为 1.
const axesHelper = new THREE.AxesHelper( 5 );
scene.add( axesHelper );

在这里插入图片描述

设置物体移动

//方式1
const cube = new THREE.Mesh(geometry, material); // 根据立方体和材质创建物体
cube.position.set(5, 0, 0); // 修改立方体的位置

//方式2
cube.position.x = 5;

在这里插入图片描述

const render = () => {
    cube.position.x += 0.01;
    if (cube.position.x > 5) {
        cube.position.x = 0;
    }

    renderer.render(scene, camera);
    // 使用浏览器自带的请求动画帧函数不断的进行渲染
    requestAnimationFrame(render);
};

在这里插入图片描述

缩放与旋转

缩放

// 方式1
cube.scale.set(3, 2, 1);

//方式2
cube.scale.x = 3;

在这里插入图片描述

旋转

// 按照XYZ的顺序进行旋转,必须是大小,默认是XYZ
// 角度的单位是弧度,也可以是Math.PI * 数字
cube.rotation.set(20, 30, 40, 'XYZ'); 

在这里插入图片描述

动画

视频教程中介绍的动画库gsap,之前简单了解过,商用是收费的。这里推荐另一个动画库 anime.js
感兴趣的可以看一下我的这篇文章 JavaScript动画库:Anime.js,可以简单入门。

修改上一篇文章中的例子,使用anime来实现动画

 anime(({
     targets: cube.position,
     x: 5,
     easing: 'linear',
     duration: 1000
 }));

动画的对象是物体的position属性,运动的属性是x,匀速动画,动画时间是1秒。这里使用的是 JAVASCRIPT对象属性

自适应页面大小

 window.addEventListener('resize', () => {
     // console.log('变化了');
     // 更新摄像头
     camera.aspect = window.innerWidth / window.innerHeight;
     // 更新摄像机的投影矩阵
     camera.updateProjectionMatrix();
     // 更新渲染器
     renderer.setSize(window.innerWidth, window.innerHeight);
     // 设置渲染器的像素比为设备的像素比
     renderer.setPixelRatio(window.devicePixelRatio);
 });

除了 还可以使用ResizeObserver,可以监听窗口和div元素大小的变化,而且更加节省性能,感兴趣的可以看一下:Web API:ResizeObserver——监听元素大小的变化

设置全屏与取消全屏

 window.addEventListener('dblclick', () => {
     console.log('全屏元素:', document.fullscreenElement);
     if (!document?.fullscreenElement) {
         // 设置dom元素全屏
         renderer.domElement.requestFullscreen();
     } else {
         // 取消全屏
         document.exitFullscreen();
     }
 });

document?.fullscreenElement 不要直接点,不然会报错
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

无知的小菜鸡

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

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

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

打赏作者

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

抵扣说明:

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

余额充值