ThreeJs-05纹理材质高级操作
1.纹理操作
1.1 重复、旋转、位移、缩放
重复

但是要在水平方向上重复,还得允许





按照刚才的重复方式

如果设置为镜像重复


位移



旋转



1.2 翻转与alpha生成颜色

正常的图

不翻转默认是翻转的


预乘透明度

预先乘透明度
主要是会有一个描边的效果


2.纹理属性
2.1 纹理过滤
比如一张原图很大,但是到3D场景中要变小,两个分辨率是不一样的

放大两种方法

第一种方式是最近邻

直接取的是像素来放大
最近邻就是由原图附近去找然后模拟一些颜色

设为线性,这个就比较光滑



缩小

最接近的像素,较粗糙


线性,求平均

但是这两种都还是有瑕疵,所以诞生了
mipmap解决摩尔纹条纹
mipmap原理是先算好缩小一倍的样子,再算缩小一倍的样子,再算,以此循环


这是默认的方式


注意这四种生成mipmap要开起,不然又会产生魔纹


剩下三种见上,无非就是性能消耗
各项异性anisotropy解决倾斜模糊问题



3.jpg_png_webp_dds_ktx_hdr_exr格式纹理
同一个鱼眼图不同格式

这些格式里面最小的是ktx2,最大是hdr,主要就是曝光不同,没有太大曝光要求,肯定越小越好

3.1 英伟达导出优化压缩

打开软件,打开图片,正常第一步选择8bit,rgba

也可以选择其他比如第二个就是hdr
右下角导出

可选格式

后面用到可以回看视频教程
3.2 threejs中使用KTX2_DDS_TGA纹理
要使用ktx要导入加载器

使用加载器要先实例化一个文件,文件位置在


移动到public下面
导出为etx2图片最好采用编码

是否翻转图片,在导出时设置

因为设置代码会不起效果

导出的时候如果点击了生成mipmap,那么久不能成为场景贴图,这句代码失去效果


所以最好不勾选
其他的图片就类似


3.3设置高动态范围全景背景色调映射和色调曝光
这是针对于hdr图的
加载hdr

背景色调
是给渲染器加

值有

第三个一般用于室外更柔和,四五个模拟电影质感


曝光


3.4 高动态范围EXR_TIF_PNG加载使用
这三个都可以使用hdr的功能

跨平台

tif类似于hdr也可以调节曝光


4.材质深度模式
离相机远近叫做深度

深度图用到的z-buffer算法
说白了深度效果就是为了在3D中实现遮挡效果

要完成深度,就需要两张图,一张绘制出来的渲染图,一张顺带用代码生成的深度图,那么两者结合深度图越白色的地方就会渲染的比较黑,实现阴影效果,深度越黑的地方实现遮挡效果

深度设置有三种

用在函数里面的有
一般小于等于用的多
输入像素就是渲染图,缓冲器就是深度图

当前有两个平面



不写入

总是写入

深度写入和深度测试代码
深度写入就是深度图会写入进来,虽然看不到但是存在于内存中

深度测试就是检不检测深度,比如这里设置的是比他小就会被大的遮挡,这个红色要比有光的要大,那么从红色望过去按理说会遮挡住有光,那么此时不开启有光的深度测试,就不再检测深度,同时渲染比红色后渲染,那么就会看到此时深度不生效

如果做深度测试

5.材质混合模式
混合模式可用值

设置混合模式,前面都是定义好的,只有最后一种自定义选择的时候,才能去选择blending下面的设置

不混合
完全不透明,透明区域用白色覆盖

additive
两个颜色直接相加,比如背景墙的黄色和平面的红色相加 ,白色加上任何颜色还是白色
这种用在光上常见,两个光结合

目标颜色也就是背景减去原颜色也就是红色,那就是绿色
其他颜色减去白色都是黑色

直接相乘
两个颜色相乘会得到一个更暗的颜色
透明乘任何都是白色

剩下就是自定义
5.1透明冰块透明液体透明杯子多个透明物体混合渲染
一个模型杯子

里面是装有水的,但是外面看不见

原因是水是透明的,透明跟玻璃混合有一些问题
加载模型微调数据
先渲染冰块再水再杯子

隐藏杯子和水,把冰块材质变为透明



显示水,发现冰块不见

拿到水的材质,重新设置材质,并且为透明,透明度为0.5


其原因就是这里没有设置混合,所以默认就是原先水的透明度就是1,很透明,和里面透明物体相乘就还是很透明1,那就完全看不到里面,所以如果要解决,就把水的透明度调低
然后同样设置杯子材质透明度

此时能够勉强看到水和冰块

第二种解决办法就是混合
首先先把水混合调为自定义

此时就可以gui去调节



同理设置杯子

6.裁剪
6.1 裁剪平面
比如现在有这个一个物体
这是一个


裁剪是材质的属性,一共三个

首先创建一个平面,这个平面是一个数学库,不会真正大小,第一个参数是什么位置,比如下面这个例子就是一个三围向量,但是平行于y轴
第二个参数就是与原点的距离


然后设置材质的裁剪平面,并且在渲染器打开裁剪平面


然后就可以通过设置刚才的两个属性,单独来设置就是这么设置,来达到一个裁剪的不同效果


裁剪也可以创建多个裁剪平面放入数组

第一个是平行于y轴,第二个是平行于x轴,也就是第一个右边,第二个上面会保留
而并集就是所有,也就是两个都满足的才会保留

默认的效果是并集,也可以交集,但是交集就是各满足各的都可以保留


6.2 裁剪场景
裁剪场景就要用到渲染器的属性

xy从什么地方开始,裁剪宽高多少


那么此时另外一边,就可以空出来去弄其他的场景,甚至相机都可以再来一个
比如现在再来一个场景



7.模板渲染
现在有一个平面一个球

现在实现一个效果,让小球只渲染在平面上,没了平面,就没了小球,这时候就需要平面作为一个模板

首先需要开启


首先两个都要设置属性允许写入
然后在模板(平面处)设置mask代表者写入值允许范围多少
ref是一个基准值,模板和写入模板的应该保持一致,并且要在范围内

然后是缓冲区判断,就是什么时候允许写入,这个值表示当他们相等时写入


最后当深度值和缓冲都相等时,在模板处设置通过写入方式,固定的值



7.1 实现金属切割面
前面裁剪物体后,会发现裁剪到的区域是空心的,如果想要实心呢

实现效果,创建平面,材质,注意属性metalness是金属度,roughness是粗糙度




那现在就可以用到模板了,只要切面才显示
两个物体首先是里面这个物体



ThreeJs-05纹理材质高级操作的更多相关文章
- 数据分析05 /pandas的高级操作
数据分析05 /pandas的高级操作 目录 数据分析05 /pandas的高级操作 1. 替换操作 2. 映射操作 3. 运算工具 4. 映射索引 / 更改之前索引 5. 排序实现的随机抽样/打乱表 ...
- pandas高级操作
pandas高级操作 import numpy as np import pandas as pd from pandas import DataFrame,Series 替换操作 替换操作可以同步作 ...
- [Session] SessionHelper2---C#关于Session高级操作帮助类 (转载)
点击下载 SessionHelper2.rar 这个类是关于Session的一些高级操作1.添加时限制时间2.读取对象3.读取数据等等看下面代码吧 /// <summary> /// 联系 ...
- cassandra高级操作之索引、排序以及分页
本次就给大家讲讲cassandra的高级操作:索引.排序和分页:处于性能的考虑,cassandra对这些支持都比较简单,所以我们不能希望cassandra完全适用于我们的逻辑,而是应该将我们的逻辑设计 ...
- MySQL学习笔记_9_MySQL高级操作(上)
MySQL高级操作(上) 一.MySQL表复制 create table t2 like t1; #复制表结构,t2可以学习到t1所有的表结构 insert into t2 ...
- MySQL学习笔记_10_MySQL高级操作(下)
MySQL高级操作(下) 五.MySQL预处理语句 1.设置预处理stmt,传递一个数据作为where的判断条件 prepare stmt from "select * from table ...
- python列表(list)的使用技巧及高级操作
python列表(list)的使用技巧及高级操作置顶 2018年03月25日 13:39:41 顽劣的石头 阅读数:5478 标签: python extend bisect list enumera ...
- C语言指针的高级操作
C语言指针的高级操作 指针 指针 在上篇博客中我介绍了C语言指针的最基本操作,那么我在这篇博客中会介绍一下C语言指针的一些骚操作. 指向指针的指针 这名字乍一听有点拗口,再次一听就更加拗口了.先看定 ...
- django之创建第8-3个项目-数据库数据提取之高级操作
1.配置test2.html <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- SpringMVC整合Mongodb开发,高级操作
开发环境: 操作系统:windows xpMongodb:2.0.6依 赖 包:Spring3.2.2 + spring-data-mongodb-1.3.0 + Spring-data-1.5 + ...
随机推荐
- ASP.NET Core C# 反射 & 表达式树 (第一篇)
前言 以前就写过几篇关于反射和表达式树的学习笔记, 但是写的很乱. 最近常用到反射和表达式树, 所以特别写一篇做一个整理吧. 泛型和反射 表达式树 学习笔记 c# 常用反射和表达式树整理 反射在项目中 ...
- 利用PaddleHub 进行人脸检测识别、并对图片进行抠图
利用PaddleHub 进行人脸检测识别.并对图片进行抠图 本文是利用百度的飞桨平台的paddle进行人脸的检测和抠图,但是里面也有一些小问题,特记录一下笔记,以便以后观看学习. 环境:pytho ...
- dfs 【XR-2】奇迹——洛谷5440
问题描述: 现有一个八位数,从左往右分别代表年月日,例如20240919,代表2024年9月19日,现将该八位数蒙住几位数,问填入数字之后有几种情况是的日为质数,月+日为质数,年+月+日为质数 输入: ...
- 线段树 ----洛谷p3372
问题描述: 已知一个数列,对数列进行两种操作:1,对数列某个区间中的所有数加d:2,查询数列某区间的区间和 输入: 第一行输入两个整数n和m,分别代表数列中元素个数和对数列的操作次数,第二行输入n个用 ...
- 智慧医院IT运维方案,全局网络态势感知
随着医疗卫生体制改革不断深化,卫生行业信息化应用不断普及,大数据.AI.医疗物联网等技术的应用,快速推动"智慧医院"建设.以HIS(医院信息系统).EMRS(电子病历系统).PAC ...
- “全栈合一 智慧运维”智和网管平台SugarNMS V9版本发布
以"管控万物 无所不能 无处不"在为产品创新理念,智和信通打造"全栈式"网络安全运维平台-智和网管平台SugarNMS.立足数字化.智能化.可视化.自动化,整合 ...
- Element PRO 破解版 3.18.1版插件
百度网盘提取 链接:https://pan.baidu.com/s/1KKOm7O1ghhIoYNiQPdzG_Q 提取码:1234
- Java如何将Object转换成指定Class对象
在Java中,将Object转换为指定类型的Class对象实际上是两个不同概念的操作: 将Object实例转换为特定类型的实例:这通常涉及到类型转换(如(MyType) myObject)或者通过反射 ...
- 进程管理中的active_mm是做什么的?
在Linux内核中,进程管理涉及到许多复杂的数据结构和机制,其中active_mm是与内存管理相关的一个关键概念.理解active_mm需要先了解与之相关的一些基本内核结构和概念. 基本概念 mm_s ...
- linux kernel 中tracing buffer
Linux内核的tracing buffer是一种用于存储内核跟踪数据的特殊缓冲区.它用于记录内核中发生的事件和活动,以帮助开发人员进行性能分析和故障排查.该缓冲区可以在内核运行时启用,并且可以通过特 ...