[three.js]UV动画

本文介绍了如何在THREE.js中使用UV坐标系制作光带动画,包括纹理贴图的加载、贴图平铺、偏移和动画效果的实现。
摘要由CSDN通过智能技术生成

背景

好久没接触UV动画这块内容,突然接手了一个涉及这块的开发任务,被打个措手不及。完成任务后,把涉及到的知识点记录下。其实做的就是一个光带。

UV坐标系

UV坐标系是将贴图贴到某个面上时,指定怎么贴合的坐标系。以平面几何体为例,U坐标对应几何体的X坐标,V坐标对应几何体的Y坐标。对应关系是将X坐标上平面几何体的宽度映射到U坐标上的单位1,将Y坐标上平面几何体的高度映射到V坐标上的单位1。

UV动画

一个光带的示例如下:

const geometry = new THREE.PlaneGeometry(200, 200);
//纹理贴图加载器TextureLoader
const texLoader = new THREE.TextureLoader();
// .load()方法加载图像,返回一个纹理对象Texture
const texture = texLoader.load('./纹理1.jpg');

const material = new THREE.MeshLambertMaterial({
    map: texture,//map表示材质的颜色贴图属性
});
const mesh = new THREE.Mesh(geometry, material);

// 设置贴图在U方向和V方向上的平铺次数
// texture.repeat.set(1, 1);	// U方向铺1,V方向铺1,1张贴图贴住平面整体
// texture.repeat.set(2, 1);	// U方向铺2,V方向铺1,2张贴图沿U方向贴住平面整体
texture.repeat.set(1, 0.5);	// U方向铺1,V方向铺0.5,沿V方向将贴图裁成一般,半张贴图贴住平面整体

texture.offset.y +=0.6;//纹理V方向偏移
// 纹理映射模式(包裹模式)
texture.wrapS = texture.wrapT = THREE.RepeatWrapping;            
// 将贴图 V 设置为 -0.4,从0.6到-0.4正好是一个贴图的高度,offset的偏移方向我也很迷,正好和我想象的方向相反,所以我的方法就是按我想象的方向的反方向来就行,或者两个方向都跑一下
const tween = new TWEEN.Tween(texture.offset).to({ y: -0.4 }, 5000 / 3);
// 设置重复次数
tween.repeat(Infinity);
// 开始动画
tween.start();                                                                                    

参考

参考

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值