当前位置: 首页 > news >正文

[three.js]UV动画

背景

好久没接触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();                                                                                    

参考

参考

相关文章:

  • Java面试题之基础篇
  • 【数学建模】层次分析
  • ES分布式搜索-索引库操作
  • 【HTML】HTML基础7.3(自定义列表)
  • Java字符串处理基础:掌握字符串的各种操作技巧
  • Apache POI 解析和处理Excel
  • Mysql数据库-基本表操作
  • LVS----DR模式
  • 【C#图解教程】笔记
  • Text Field文本输入框
  • ABA关键词选品,大卖成功打造亚马逊爆款的秘密武器
  • 【RHCSA问答题】第八章 监控和管理Linux进程
  • 云上攻防-云产品篇堡垒机场景JumpServer绿盟SASTeleport麒麟齐治
  • 异步编程实战:使用C#实现FTP文件下载及超时控制
  • 代码详解:2024美团春招实习笔试第一场0309,是难还是简单?
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 2017届校招提前批面试回顾
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • HTTP那些事
  • iOS编译提示和导航提示
  • Java面向对象及其三大特征
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • python学习笔记-类对象的信息
  • spark本地环境的搭建到运行第一个spark程序
  • vuex 学习笔记 01
  • 复习Javascript专题(四):js中的深浅拷贝
  • 给github项目添加CI badge
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 计算机在识别图像时“看到”了什么?
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 微信支付JSAPI,实测!终极方案
  • 详解NodeJs流之一
  • 想写好前端,先练好内功
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 原生Ajax
  • 翻译 | The Principles of OOD 面向对象设计原则
  • #define用法
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (3)选择元素——(17)练习(Exercises)
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (原)本想说脏话,奈何已放下
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .NET Reactor简单使用教程
  • .NET 设计模式初探
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .NET连接MongoDB数据库实例教程