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

信誉好的集团网站建设光明新区建设网站

信誉好的集团网站建设,光明新区建设网站,crm系统网站,做静态网站需要成本吗定义 贴图(Texture)是 Three.js 中用于为物体表面添加纹理的一种技术。它可以将图像、视频或其他类型的媒体映射到物体的表面,使其看起来更加真实和生动。 基本原理 贴图的基本原理是将图像或视频映射到物体的表面,使其看起来更…

定义

贴图(Texture)是 Three.js 中用于为物体表面添加纹理的一种技术。它可以将图像、视频或其他类型的媒体映射到物体的表面,使其看起来更加真实和生动。

基本原理

贴图的基本原理是将图像或视频映射到物体的表面,使其看起来更加真实和生动。在 Three.js 中,贴图是通过 Texture 对象来实现的。Texture 对象包含了图像或视频的数据,以及一些用于控制贴图行为的属性和方法。

类型

在 Three.js 中,常用的贴图类型包括:

  • 纹理贴图(Texture): 纹理贴图是最常见的贴图类型,它可以将图像映射到物体的表面。纹理贴图可以通过 TextureLoader 加载图像文件。
  • 视频纹理(VideoTexture): 视频纹理是一种特殊的贴图类型,它可以将视频映射到物体的表面。视频纹理可以通过 VideoTextureLoader 加载视频文件。
  • 立方纹理(CubeTexture): 立方纹理是一种特殊的贴图类型,它可以将一个立方体的六个面分别映射到物体的表面。立方纹理可以通过 CubeTextureLoader 加载图像文件。

Texture

属性

  • image: 纹理图像的引用。可以通过设置该属性来更新纹理图像。
  • needsUpdate: 一个布尔值,表示纹理是否需要更新。当纹理图像发生变化时,需要将该属性设置为 true。
//可以链式调用
const textureLoader = new THREE.TextureLoader();
const texture = textureLoader.load("path/to/texture.jpg");
const material = new THREE.MeshBasicMaterial({ map: texture });

TextureLoader

TextureLoader 构造函数通过 load 加载图片是一个异步操作,所以 load 还有其它参数

  • url: 纹理图像的路径。
  • onLoad: 加载完成后的回调函数。该函数会在加载完成后被调用,参数为加载完成的纹理对象。
  • onProgress: 加载进度的回调函数。该函数会在加载过程中被调用,参数为加载进度的对象。(暂不支持)
  • onError: 加载失败的回调函数。该函数会在加载失败后被调用,参数为加载失败的错误对象。

这个只是最基本的贴图效果,如果想做比较细节的贴图,在材质里面除了 map 这个属性还有:

  • aoMap: 环境遮挡贴图,用于模拟环境遮挡效果。
  • envMap: 环境贴图,用于模拟环境反射效果。
  • lightMap: 光照贴图,用于模拟光照效果。
  • specularMap: 高光贴图,用于模拟高光效果。
  • alphaMap: 透明度贴图,用于模拟物体表面的透明度效果。
  • displacementMap: 纹理位移贴图,用于模拟物体表面的位移效果。
  • roughnessMap: 粗糙度贴图,用于模拟物体表面的粗糙度效果。
  • normalMap: 法线贴图,用于模拟物体表面的法线效果。
  • metalnessMap: 金属度贴图,用于模拟物体表面的金属度效果。
  • emissiveMap: 自发光贴图,用于模拟物体表面的自发光效果。

示例

如果想实现更加逼真的效果,可以使用多个贴图来模拟物体表面的不同特性。例如,可以使用环境贴图来模拟环境反射效果,使用高光贴图来模拟高光效果,使用法线贴图来模拟物体表面的法线效果等等。

import * as THREE from "three";
import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js";
// 创建场景
const scene = new THREE.Scene();// 创建相机
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.set(0, 20, 0);
camera.lookAt(0, 0, 0);// 创建渲染器
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);//添加灯光
const ambientLight = new THREE.AmbientLight(0xffffff, 0.5);
const directionLight = new THREE.DirectionalLight(0xffffff, 0.5);
directionLight.position.set(3, 3, 3);
scene.add(ambientLight, directionLight);//创建贴图
const textureLoader = new THREE.TextureLoader();
const texture = textureLoader.load("./texture/basecolor.png");//创建一个平面
const geometry = new THREE.PlaneGeometry(20, 20);
const material = new THREE.MeshStandardMaterial({map: texture,
});
const plane = new THREE.Mesh(geometry, material);
plane.rotation.x = -Math.PI / 2;
scene.add(plane);//创建控制器
const controls = new OrbitControls(camera, renderer.domElement);
// 启用阻尼效果
controls.enableDamping = true;function animate() {requestAnimationFrame(animate);renderer.render(scene, camera);
}animate();//监听窗口大小变化
window.addEventListener("resize", () => {camera.aspect = window.innerWidth / window.innerHeight;camera.updateProjectionMatrix();renderer.setSize(window.innerWidth, window.innerHeight);
});

在这里插入图片描述

这只是通过贴图实现的效果,可以看出如果只是通过贴图,并不能实现非常逼真的效果,所以接下来我们通过多种贴图来实现更加逼真的效果。

会使用到环境光贴图(aoMap)、法线贴图(normalMap)、金属度贴图(metalnessMap)、粗糙度贴图(roughnessMap)、自发光贴图(emissiveMap)、纹理位移贴图(displacementMap)。

// 省略...//创建贴图
const textureLoader = new THREE.TextureLoader();
const texture = textureLoader.load("./texture/basecolor.png"); //基础颜色贴图
const aoTexture = textureLoader.load("./texture/ao.png"); //环境光贴图
const normalTexture = textureLoader.load("./texture/normal.png"); //法线贴图
const roughnessTexture = textureLoader.load("./texture/roughness.png"); //粗糙度贴图
const heightTexture = textureLoader.load("./texture/height.png"); //纹理位移贴图
const emissiveTexture = textureLoader.load("./texture/emissive.png"); //自发光贴图
const metalnessTexture = textureLoader.load("./texture/metallic.png"); //金属度贴图//创建一个平面
const geometry = new THREE.PlaneGeometry(20, 20);
const material = new THREE.MeshStandardMaterial({map: texture,aoMap: aoTexture,normalMap: normalTexture,roughnessMap: roughnessTexture,displacementMap: heightTexture,emissiveMap: emissiveTexture,metalnessMap: metalnessTexture,
});
const plane = new THREE.Mesh(geometry, material);
plane.rotation.x = -Math.PI / 2;
scene.add(plane);//省略...

效果预览

书洞笔记


文章转载自:

http://UggNa9Rr.tndxg.cn
http://TE1hv6OO.tndxg.cn
http://S5dVQMD3.tndxg.cn
http://ktK5CUEY.tndxg.cn
http://ifG82hxG.tndxg.cn
http://T1dM7Si7.tndxg.cn
http://v1g0NVZC.tndxg.cn
http://Zhc8viYP.tndxg.cn
http://48c0nBc7.tndxg.cn
http://Y4iayE3M.tndxg.cn
http://5MJsYzfX.tndxg.cn
http://2HYjQr30.tndxg.cn
http://1K8LUili.tndxg.cn
http://ZbMGM8zO.tndxg.cn
http://vqeIgpIT.tndxg.cn
http://UZ5qLno2.tndxg.cn
http://5oi1Cwbu.tndxg.cn
http://AFyCNifH.tndxg.cn
http://t5KrAbfh.tndxg.cn
http://1KAynDBW.tndxg.cn
http://cfn2iKri.tndxg.cn
http://hM4lGkap.tndxg.cn
http://ON0hoMCr.tndxg.cn
http://XF3wuVE2.tndxg.cn
http://svx7VgFV.tndxg.cn
http://mkMgLwj2.tndxg.cn
http://fsoNMOm0.tndxg.cn
http://QEIB4aV5.tndxg.cn
http://IxInYdrX.tndxg.cn
http://caaJJDaF.tndxg.cn
http://www.dtcms.com/wzjs/690149.html

相关文章:

  • 电子商务网站建设规划书的内容国外教做蛋糕的网站
  • 网站开发的案例分析模板廊坊企业自助建站
  • 如何用vps建网站信阳一地最新通告
  • 网站访客qq获取代码做网站时遇到的问题
  • 网站瀑布流怎么做咸阳制作网站
  • 恶意网站的防治大连网站关键词
  • 上海创新网站建设教你做cpa单页网站
  • 网站建设的项目总结郑州外贸建站
  • wordpress 回收站在哪里网站开发一般用哪些语言
  • 网站建设制度制定情况高端的环保行业网站开发
  • 互联网站管理工作细则非标自动化东莞网站建设
  • 渭南商铺网站建设做网站站怎么赚钱吗
  • 网站推广的方式和方法seo综合查询工具有什么功能
  • 制作网站教学淮安制作网站在那里
  • 做网站运营工作有前景吗淘宝佣金推广网站建设
  • 威海做网站公司哪家好建站快车的应用场景
  • WordPress多站点恢复大理 网站建设
  • 软件网站开发设计做外贸网站卖什么好处
  • 如东网站建设WORDPRESS添加全屏幻灯片
  • 建设京东物流网站的目标是什么做室内意向图的网站
  • 网站制作洋网络电销系统线路
  • 贵阳百度公司建网站电话访问 wordpress
  • 怎么做买东西的网站免费发布软文广告推广平台
  • 用nas做网站服务器陕西网站建设优化技术
  • 欧美男女直接做的视频网站网站建设在哪里
  • 网站公司开发哪有个人免费云服务器
  • 做营销的有那么网站网站基本要素
  • 单页网站技术wordpress字体编辑插件下载
  • 建立网站站点的过程怎么简化Wordpress欢迎页面
  • 做自己的网站可以赚钱吗北京做网站好的网站建设公司