一.matcap材质

这个材质不会受到光照影响,但是如果图片本身有光就可以一直渲染这个图片本来的样子,用来将一个图片纹理渲染到物体上的材质

代码实现

加载模型后,开启纹理渲染,并把它的材质变为这个材质,并且贴上纹理图

二.Lambert材质

Lambert网格材质是Three.js中最基本和常用的材质之一。本文将详细介绍Lambert网格材质的定义、特点、应用以及使用方法。

简单来说就是这个材质当你设置好各种贴图之后 实现凹凸不平地面等是比较好的

设置好Lambert材质后,打一个光进来,会发现是漫反射哑光的反射类似于

三.phong材质

PHONG材质是Three.js中常用的一种材质,它是一种基于Phong光照模型的材质,可以用于实现高光和阴影效果。Phong光照模型是一种基于漫反射、镜面反射和环境反射的光照模型,可以用于模拟真实物体的光照效果。

比如涂了漆面的木材,光滑的材质

设置为phone材质,在设置高光颜色就可以形成对点光源的反射

设置好环境贴图后

代码操作

创建光源,把一个平面设置成phone材质

添加环境贴图

光滑的反射就出来了

1.实现玻璃水晶效果

加载模型,设置环境光,把这个模型改为phone材质,并且设置两个折射率

envmap是环境贴图

如果想要折射效果还需要把环境贴图改为折射球形,上下不一样注意

当把上面的反射变为折射后,这里的反射率也变为了折射率

四.基础材质详解

1.标准网格材质

在 Three.js 中,MeshBasicMaterial 是一个用于创建基本材质的类。它能够让您快速创建不需要光照效果的几何体,并且配置非常简单,可以使用颜色、透明度和纹理等属性来自定义材质。MeshBasicMaterial 在 Three.js 中非常重要,因为它是创建简单3D图形的常用材质之一,而且渲染速度很快,能够让您的应用程序保持流畅的交互体验。如果您想要创建更复杂的3D图形,了解 MeshBasicMaterial 是非常有用的,因为它是其他更复杂材质的基础。

注意:标准网格材质需要设定环境贴图

这里做一个记录,系统性的介绍一下各种贴图的作用,在之前的材质也有各种贴图,但是标准是最齐全的能够达到漫反射也能镜反射

加载一个剑的模型

先上环境贴图

粗糙度为1,漫反射

粗糙度为0,镜反射

金属度为0

金属度为1

还原默认,先贴上贴图

金属度贴图和金属度是一个相乘的关系,越大就越金属

法线贴图实现凹凸不平的效果

凹凸贴图同理,两个只能设置一个

置换贴图可以让顶点有一个起伏的效果,上面是看起来,这个是真起来

粗糙度贴图可以让其光滑

注意:真实环境只需要导入进来就是这个样子,不需要一个一个贴图,只是有时候改可以了解

代码实现

创建环境贴图,背景一定要添加

2.物理网格材质

物理材质就是能够在刚才标准材质的基础上新增更多的功能

透光率

当粗糙度为0,很光滑的时候就完全透明了

厚度

折射率,反射率

衰减颜色,距离

衰减距离越小,就越快到达衰减颜色

偏红色

注意:衰减颜色最好都设置1以下不要整的

厚度贴图

呈现一个不均匀的厚度

清漆效果与清漆透明度

单纯设置一个清漆强度为1后

清漆光滑度,1漫反射,0镜反射

map就是通过纹理决定哪些地方要清漆哪些地方不要

中间光滑,周围不清漆

注意此时应该粗糙度为1,到时候纹理会乘以粗糙度,如果为0始终 都是光滑

法线贴图

3. 布料织物材料光泽效果

创建一个物理材质球体

设置光泽及颜色后

光泽粗糙程度

设置纹理贴图

4.肥皂泡、油滴、蝴蝶翅膀等薄膜的虹彩效应

反射出各种颜色的材质

这种效果实际是有两层组成,外面一层负责反射折射

创建一个基本球体,有粗糙度,透明度,还有一层厚度

设置彩虹色,反射率和彩虹色折射率

薄膜厚度范围

默认

设置薄膜厚度贴图

5.清除物体_几何体_材质_纹理保证性能和内存不泄漏

比如这里不断创建一个随机材质,随机几何体的物体,不断回调自身

此时cpu使用率和内存大小都在不断增加,到一定程度就会网页崩溃

要优化这种情况就是

每一帧渲染完毕,render.render就是渲染的语句,就去清除掉物体几何体等

6.巧用物理发光属性打造逼真IPHONE产品

在很多建模软件直接导出来给到3D导入会发现有些属性发光等会缺失,这是因为两者有些内容并不兼用,所以这个时候通常是加载到three的编辑器里面,进行编辑之后,满意之后再导出到three里面进行模型加载

刚加载进来

找到屏幕材质,设置好之后导出

加载进来就行了

7.修改模型光泽效果打造逼真室内场景

刚导入进来

设置光泽光泽颜色

毛绒效果,法线贴图

控制角度

如果让用户随意去转动很容易穿帮

首先设置起始位置

可以添加轨道控制器来辅助查看

设置相机初始位置,以及一开始看向的角度,x轴是横向看多宽,y是看多高,要设置lookat一开始看的角度还得配合控制器

垂直的最小角度是网上旋转,最大角度是往下旋转

水平左右的角度

ThreeJs-04详解材质与纹理的更多相关文章

  1. 一文详解 OpenGL ES 纹理颜色混合

    在OpenGL中绘制的时候,有时候想使新画的颜色和已经有的颜色按照一定的方式进行混合.例如:想使物体拥有半透明的效果,或者绘制叠加光亮的效果,这时候就需要用到OpenGLES混合. 如上图所示,为石头 ...

  2. ThreeJS系列1_CinematicCameraJS插件详解

    ThreeJS系列1_CinematicCameraJS插件详解 接着上篇 ThreeJS系列1_CinematicCameraJS插件介绍 看属性的来龙去脉 看方法作用 通过调整属性查看效果 总结 ...

  3. Windows XP硬盘安装Ubuntu 12.04双系统图文详解

    Windows XP硬盘安装Ubuntu 12.04双系统图文详解 Ubuntu 12.04 LTS版本于2012年4月26日发布,趁着五一放假,赶紧在自己的Windows XP的电脑上安装下Ubun ...

  4. iOS回顾笔记(04) -- UIScrollView的基本使用详解

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  5. ubuntu14.04 server ftp 服务安装配置详解

    ubuntu14.04 server ftp 服务安装配置详解 cheungmine 2016-01-27 http://wiki.ubuntu.com.cn/Vsftpd 0 安装好vsftpd服务 ...

  6. Ubuntu 系统安装详解 19.04最新版本

    Ubuntu 19.04版本系统安装详解 1 .镜像的下载 推荐 阿里云镜像下载 2.安装 1.1.新建虚拟机 注意硬件的兼容性问题 当前只有5.x可以用,其他兼容各位可以尝试下,我也都试过,但只有5 ...

  7. 什么是渲染目标(render target)&& 渲染到纹理(Render To Texture, RTT)详解

    渲染到纹理(Render To Texture, RTT)详解 RTT是现在很多特效里面都会用到的一项很基本的技术,实现起来很简单,也很重要.但是让人不解的是网上搜索了半天只找到很少的文章说这个事儿, ...

  8. Ubuntu14.04下Mongodb(离线安装方式|非apt-get)安装部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 说在前面的话  首先,查看下你的操作系统的版本. root@zhouls-virtual-machine:~# cat /etc/issue Ubuntu LTS \n \l r ...

  9. Ubuntu16.04下Neo4j图数据库官网安装部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 说在前面的话  首先,查看下你的操作系统的版本. root@zhouls-virtual-machine:~# cat /etc/issue Ubuntu LTS \n \l r ...

  10. Ubuntu14.04下Neo4j图数据库官网安装部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 说在前面的话  首先,查看下你的操作系统的版本. root@zhouls-virtual-machine:~# cat /etc/issue Ubuntu 14.04.4 LTS ...

随机推荐

  1. 简单聊聊 CORS 攻击与防御

    我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 本文作者:霁明 什么是CORS CORS(跨域资源共享)是一种基于H ...

  2. ASP.NET Core – Middleware

    前言 MIddleware 就是中间件, ASP.NET Core 是用来处理 http request 的. 当 request 抵到 server 就进入了 Middleware pipe. 每个 ...

  3. [rCore学习笔记 027]地址空间

    写在前面 本随笔是非常菜的菜鸡写的.如有问题请及时提出. 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 引言 ...

  4. Spring —— (Spring管理第三方资源)数据源对象管理

    数据源对象管理      (用户名密码等敏感的数据不会直接放在bean中 而是放在properties文件中进行管理)    加载properties文件      在resource中创建 jdbc ...

  5. SQL limit字句

    limit用法介绍 limit子句可以返回检索查询行的某一连续的部分 用法介绍: SELECT column_list FROM table1 ORDER BY column_list LIMIT r ...

  6. ConcurrentLinkedQueue详解(图文并茂)

    前言 ConcurrentLinkedQueue是基于链接节点的无界线程安全队列.此队列按照FIFO(先进先出)原则对元素进行排序.队列的头部是队列中存在时间最长的元素,而队列的尾部则是最近添加的元素 ...

  7. 使用 fabric.js 开发移动端 H5 图片编辑器

    大家好,我是开源图片编辑器的 https://github.com/ikuaitu/vue-fabric-editor 的作者,它是一款基于 PC 版本的开源图片编辑器. 最近很多开发者咨询,是否可以 ...

  8. 【赵渝强老师】Flink的DataSet算子

    Flink为了能够处理有边界的数据集和无边界的数据集,提供了对应的DataSet API和DataStream API.我们可以开发对应的Java程序或者Scala程序来完成相应的功能.下面举例了一些 ...

  9. 【赵渝强老师】大数据分析引擎:Presto

    一.什么是Presto? 背景知识:Hive的缺点和Presto的背景 Hive使用MapReduce作为底层计算框架,是专为批处理设计的.但随着数据越来越多,使用Hive进行一个简单的数据查询可能要 ...

  10. .net6 中 Blazor PageTitle 设置无效的解决方法

    直接在 razor 页面里添加 <PageTitle>xxx</PageTitle> 标签无效时的解决方法 For using the <PageTitle> ta ...