THREE.js学习笔记9——Materials

news/2025/1/18 17:03:20/文章来源:https://www.cnblogs.com/xxxiCJQ/p/18678133

这一小节主要学习材质
材质用于为几何物理模型的每个可见像素添加颜色。
Materials are used to put a color on each visible pixel of the geometries.
决定每个像素颜色的算法是在程序中编写的,称为着色器
Three.js 具有许多带有预制着色器的内置材料。
Algorithms that decide on the color of each pixel are written in programs called shaders.
Three.js has many built-in materiais with pre-made shaders.

//在纹理中加入这一行代码,就能防止默认的白色和纹理相叠加
texture.colorSpace = THREE.SRGBColorSpace;
//MeshBasicMaterial的一些使用
const material = new THREE.MeshBasicMaterial();
// 纹理
material.map = texture;
// 颜色
material.color = new THREE.Color("red");
// 线框模式
material.wireframe = true;
// 透明度
material.transparent = true;
material.opacity = 0.5;
//白色部分显示,黑色部分被遮盖
material.alphaMap = texture;
// 一个平面的两个面都看得见,默认情况下只看得见正面(一个面),同时,也可以看见物体的里面
// 注意使用DoubleSide会有性能问题,因为要渲染更多的像素
material.side = THREE.DoubleSide;
material.side = THREE.FrontSide;
material.side = THREE.BackSide;

MeshNormalMaterial用于计算如何照亮模型的各个面或环境材质应在几何体的表面上如何反射或折射,这些颜色将显示相对于相机的法线方向。同时,MeshBasicMaterial中可以使用的属性,在MeshNormalMaterial中同样适用

const material = new THREE.MeshNormalMaterial();
material.flatShading = true;

1
MeshMatcapMaterial由一个材质捕捉(MatCap,或光照球(Lit Sphere))纹理所定义,其编码了材质的颜色与明暗。
无法形容,反正我觉得这个特别牛逼!像是纹理通过摄像机投影上去的一样。
模型看起来被照亮了,但这是由纹理创建的错觉,问题是,无论摄像机在什么位置,结果都是相同的。我们没办法通过修改摄像机的位置来改变渲染结果。其他的matcaps列表:matcaps

const material = new THREE.MeshMatcapMaterial();
material.matcap = texture;

1
MeshDepthMaterial是一种按深度绘制几何体的材质。深度基于相机远近平面。白色最近,黑色最远。
2
MeshLambertMaterial是一种非光泽表面的材质,没有镜面高光。
该材质使用基于非物理的Lambertian模型来计算反射率。这可以很好地模拟一些表面(例如未经处理的木材或石材),但不能模拟具有镜面高光的光泽表面。
这个材质需要环境中有光照才能看见。
4
如果添加点光源,就会看见明暗变化。
5
MeshPhongMaterial是一种用于具有镜面高光的光泽表面的材质。
该材质使用非物理的Blinn-Phong模型来计算反射率。 与MeshLambertMaterial中使用的Lambertian模型不同,该材质可以模拟具有镜面高光的光泽表面。

const material = new THREE.MeshPhongMaterial();
material.shininess = 100;
material.specular = new THREE.Color(0x1188ff);

6
MeshToonMaterial是一种实现卡通着色的材质。
7

const material = new THREE.MeshToonMaterial();
texture.magFilter = THREE.NearestFilter;
material.gradientMap = texture;

8
MeshStandardMaterial是一种基于物理的标准材质,使用Metallic-Roughness工作流程。支持灯光,但具有更逼真的算法和更好的参数,例如粗糙度和金属度。

const material = new THREE.MeshStandardMaterial();
material.metalness = 0.45;
material.roughness = 0.65;

9
添加环境贴图来测试材质

import { RGBELoader } from "three/examples/jsm/loaders/RGBELoader.js";
const rgbeLoader = new RGBELoader();
rgbeLoader.load("/assets/test.hdr", (environmentMap) => {environmentMap.mapping = THREE.EquirectangularReflectionMapping;scene.background = environmentMap;scene.environment = environmentMap;
});

9
调整一下材质的metalness roughness

const material = new THREE.MeshStandardMaterial();
material.metalness = 1;
material.roughness = 0;

10

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/871306.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[HarekazeCTF2019]baby_rop2(read的libc)

一个normal的栈溢出,没有system和binsh,为ret2libc 这里也没有常见的write和puts,所以我们用read泄露libc基址,并使用printf打印read的地址 这里注意printf的第一个参数必须是格式字符串,即Welcome to the Pwn World again(地址为0x0400770,第二个参数设为read_got(got表…

Living-Dream 系列笔记 第93期

最大流 EK & Dinic本文讲解 EK & Dinic 算法。 最大流 最大流的模型:特别注意:这个流量上限不是单次流量不超过它,而是多次的总和不超过它。 EK 显然这个问题是可以使用 dfs 解决的,但是效率低下。 考虑如下的图。我们发现 dfs 有可能走了 \(S \to A \to B \to T\)…

【每日一题】20250118

我是时间唯一的主人。成为自己的时间的主人是一种奢侈。我认为这是人类能够送给自己的最奢侈的东西之一。【每日一题】 1.(16分) \(\hspace{0.6cm}\)如图所示,在以坐标原点 \(O\) 为圆心、半径为 \(R\) 的半圆形区域内,有相互垂直的匀强电场和匀强磁场,磁感应强度为 \(B\),…

思通数科舆情监测系统:精准实现数据监测与实时预警的应用意义

随着信息化社会的深入发展,舆情管理变得愈加复杂,尤其是在社交媒体和网络平台的广泛应用下,信息传播的速度与影响力呈现出指数级增长。如何高效监测和分析这些海量数据,成为各级政府、企业和公共机构亟待解决的问题。思通数科的舆情监测系统,凭借强大的数据监控与分析能力…

中考英语优秀范文-热点话题-传统文化-009 Dragon Boat Festival 端午节

1 写作要求 为弘扬中华传统文化,增强文化自觉,学校将举行一次英语演讲比赛。请以“ ___________Festival”为题,写一篇演讲稿,介绍一个你最喜欢的中国传统节日。 提示问题: What is your favorite traditional festival? Can you say some basic facts about it? How do…

在线json调试工具

在线json格式化工具,无需登录,打开即用 https://json.openai2025.com/

在线base64工具

在线base64工具,不需登录,打开即用 base64编码和解码功能。 https://base64.openai2025.com/

图像的卷积处理

实验名称:图像的卷积处理 实验描述:包含图像的平滑卷积和边缘卷积,通过实验观察和理解三种平滑卷积的差异性、理解边缘卷积提取图像边缘特征的作用。 实验步骤 一、平滑卷积 1. 加载图像并可视化 2. 生成带有雪花噪声的图像 3. 用均值卷积去噪声 4. 用中值卷积去噪 5. 用高斯…

从单数据源到多数据源的探讨

今天我想简单地分享一下如何将一个老项目从单数据源切换为多数据源的过程。这个项目是一个使用 WAR 部署的传统 JSP Web 项目,运行在 JDK 1.7 环境下,项目中并没有使用 Spring Boot,而仅仅采用了 Spring MVC 框架。我的主要任务是将原本使用单一数据源的架构,升级为支持多数…

eclipse thymeleaf 离线安装

下载zip包 https://github.com/thymeleaf/thymeleaf-extras-eclipse-plugin/releases 选择zip包参考 https://www.cnblogs.com/jiduoduo/p/15525430.html

Cisco ISR 1000 Series IOS XE Release 17.16.1a ED

Cisco ISR 1000 Series IOS XE Release 17.16.1a EDCisco ISR 1000 Series IOS XE Release 17.16.1a ED 思科 1000 系列集成多业务路由器 IOS XE 系统软件 请访问原文链接:https://sysin.org/blog/cisco-isr-1000/ 查看最新版。原创作品,转载请保留出处。 作者主页:sysin.or…

Cisco ISR 4000 Series IOS XE Release 17.16.1a ED

Cisco ISR 4000 Series IOS XE Release 17.16.1a EDCisco ISR 4000 Series IOS XE Release 17.16.1a ED 思科 4000 系列集成服务路由器 IOS XE 系统软件 请访问原文链接:https://sysin.org/blog/cisco-isr-4000/ 查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org思…