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

ThreeJs学习-纹理贴图、顶点UV坐标

1、纹理贴图

import * as THREE from 'three'const loader = new THREE.TextureLoader(); //纹理加载器
const texture = loader.load('./earth.png'); .load()方法加载图像,返回一个纹理对象Texture
const material = new THREE.MeshLambertMaterial({map: texture
});
texture.colorSpace = THREE.SRGBColorSpace;//设置为SRGB颜色空间const geometry = new THREE.SphereGeometry(100)
const mesh = new THREE.Mesh(geometry, material);export default mesh

效果:把一个地球的图片贴到一个球体上

2、纹理对象阵列,实现地面效果。

主要使用的是设置阵列模式和uv两个方向纹理重复数量
texture.wrapS = THREE.RepeatWrapping;
texture.wrapT = THREE.RepeatWrapping;
texture.repeat.set(30, 30)
import * as THREE from 'three';const geometry = new THREE.PlaneGeometry(100, 100);const textureLoader = new THREE.TextureLoader();
const texture = textureLoader.load('./floor.png');
texture.wrapS = THREE.RepeatWrapping;
texture.wrapT = THREE.RepeatWrapping;
texture.repeat.set(30, 30)
const material = new THREE.MeshBasicMaterial({map: texture,side: THREE.DoubleSide
});
const mesh = new THREE.Mesh(geometry, material);
mesh.rotateX(Math.PI / 2)
export default mesh;

3、UV坐标

UV坐标的作用是从纹理贴图上提取像素映射到网格模型mesh的表面

4、背景透明png贴图

 设置材质的transparent: true,这样png图片背景完全透明。

5、通过纹理的offset偏移属性实现动画

import * as THREE from 'three';const textureLoader = new THREE.TextureLoader(); //创建纹理加载器
const texture = textureLoader.load('./line.jpg');//加载图片
texture.wrapS = THREE.RepeatWrapping; //设置阵列
texture.repeat.x = 30; // uv两个方向纹理重复数量
const geometry = new THREE.PlaneGeometry(100, 100);const material = new THREE.MeshBasicMaterial({map: texture
});const mesh1 = new THREE.Mesh(geometry, material);
mesh1.rotateX(-Math.PI / 2)
export { mesh1, texture }// //渲染
function animate() {texture.offset.x += 0.1 // 纹理偏移属性requestAnimationFrame(animate);stats.update();renderer.render(scene, camera);
}const controls = new OrbitControls(camera, renderer.domElement);
controls.addEventListener('change', function () {// renderer.render(scene, camera); //执行渲染操作
});//监听鼠标、键盘事件animate();


http://www.mrgr.cn/news/14221.html

相关文章:

  • 深圳MES制造管理系统在企业中的应用
  • 探索原理图
  • XR虚拟拍摄和VP有什么区别
  • 【vue、Electron】搭建一个Electron vue项目过程、将前端页面打包成exe 桌面应用
  • GPT应用-如何用GPT4.0写一份专业的ppt
  • 基于 XILINX FPGA 的 Cameralink Full 模式相机采集系统技术分析方案
  • 鸿蒙( Beta5版)开发实战-Flex布局性能提升规范
  • R语言中theme的调整技巧汇总-持续更新
  • 【亲测有效】RSA标准加密解密,高强度秘钥4096确保万无一失
  • SQL server 屏蔽除数为0错误
  • 如何在Java爬虫中设置代理IP:详解与技巧
  • 5步掌握“花开富贵”花园管理系统开发——基于Python Django+Vue
  • 有向图游戏 SG函数【博弈论】C++
  • 青龙面板搭建教程以及必要配置(国内)
  • 【自动驾驶】控制算法(六)前馈控制与航向误差
  • vue3 bug记录
  • 记上一笔zabbix日志的错误信息 network error, wait for 15 seconds
  • Ubuntu 上一键部署 MySQL 服务器
  • 直播路由器的原理是什么
  • HAProxy 负载均衡指南