3.js - 反射率(reflectivity) 、折射率(ior)

没啥太大的感觉

反射率 reflectivity

  • 概念

    反射率:指的是,材质表面反射光线的能力反射率,用于控制材质对环境光,或光源的反射程度反射率越高,材质表面反射的光线越多,看起来就越光亮
  • 使用

    适用于,需要表现高反表面的材质,如:金属、镜子可以通过,调整反射率,来模拟不用材质的光泽度
  • 注意事项

    1、反射率的具体实现效果,可能与three.js的版本和材质类型而异,在某些材质中,如:Mesh-Standard-Material,可能不直接提供'reflectivity'属性,而是通过其他方式(如:环境贴图、反射贴图)来间接控制反射效果2、在使用反射率时,需要考虑光源、材质的其他属性(如:金属度、粗糙度),以达到逼真的效果


折射率 ior

  • 概念

    折射率,是指,光从一种介质进入另一种介质时,光线的传播方向会发生改变的现象;'折射率决定了'光线从一个介质进入另一个介质时的弯曲程度。'不同的材料有不同的折射率'另:`物体有了厚度,才会有折射效果`3.js中,折射率用于,模拟透明、半透明材质(如:玻璃、水)对光线的折射效果,不同的材质具有不同的折射率;
  • 使用

    适用于,需要表现,透明、半透明效果的材质通过设置折射率属性,可以模拟真实世界中,光线穿过透明材质时的弯曲现象
  • 注意事项

    折射率属性的效果,通常在支持透明、半透明渲染的材质中体现,如:Mesh-Physical-Material在使用反射率时,需要考虑光源、材质的其他属性(如:透光率、粗糙度),以达到逼真的效果

代码自己看吧


// @ts-nocheck
// 引入three.js
import * as THREE from 'three'
// 导入轨道控制器
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'
// 导入lil.gui
import { GUI } from 'three/examples/jsm/libs/lil-gui.module.min.js'
// 导入tween
import * as TWEEN from 'three/examples/jsm/libs/tween.module.js'
// 导入hdr加载器(专门加载hdr的)
import { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader.js'
// 导入gltf加载器
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js'//#region
const scence = new THREE.Scene()const camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000)
camera.position.set(2, 2, 5) // 设置相机位置
camera.lookAt(0, 0, 0)const renderer = new THREE.WebGLRenderer({antialias: true // 开启抗锯齿
})
renderer.setSize(window.innerWidth, window.innerHeight)
document.body.appendChild(renderer.domElement)
//#endregion//#region
// 添加世界坐标辅助器,红色-X轴; 绿色-Y轴; 蓝色-Z轴
const axesHelper = new THREE.AxesHelper(5)
scence.add(axesHelper)const controls = new OrbitControls(camera, renderer.domElement)
// 设置带阻尼的惯性
// controls.enableDamping = true
// 设置阻尼系数
controls.dampingFactor = 0.05// 每一帧根据控制器更新画面
function animate() {// 如果,需要控制器带有阻尼效果,或者自动旋转等效果,就需要加入`controls.update()`controls.update()// `requestAnimationFrame`:在屏幕渲染下一帧画面时,触发回调函数来执行画面的渲染requestAnimationFrame(animate)// 渲染renderer.render(scence, camera)// 更新tweenTWEEN.update()
}
animate()
//#endregion// --------------------------------------------------------------
// --------------------------------------------------------------// 设置贴图
const rgbeLoader = new RGBELoader()
rgbeLoader.load('/public/assets/texture/Alex_Hart-Nature_Lab_Bones_2k.hdr', envMap => {// 设置球形贴图,否则,环境贴图就像一个背景图片似的// envMap.mapping = THREE.EquirectangularReflectionMapping // 反射envMap.mapping = THREE.EquirectangularRefractionMapping // 折射(核心-1)// 给场景添加环境贴图scence.background = envMapscence.environment = envMap
})let thicknessMap = new THREE.TextureLoader().load('../public/assets/texture/diamond/diamond_emissive.png')
// 创建立方体
const geomary = new THREE.BoxGeometry(1, 1, 1)
const material = new THREE.MeshPhysicalMaterial({transparent: true, // 透明transmission: 0.95, // 材质的透光率,范围:0(不透明)~ 1(透明)roughness: 0.1, // 材质的粗糙度,范围:0(光滑)~ 1(粗糙),粗糙程度,影响材质的反射光泽度// 衰减颜色:白光在达到衰减距离时由于吸收而变成的颜色;默认值为白色attenuationColor: new THREE.Color(0.9, 0.9, 0),// 衰减距离:光在与粒子相互作用之前,在介质中传播的平均距离。该值以世界空间单位给出,并且必须大于零;默认值为“无限”;attenuationDistance: 1,thickness: 2 // 立方体的厚度// thicknessMap: thicknessMap, // 厚度纹理图
})
const cube = new THREE.Mesh(geomary, material)
scence.add(cube)const gui = new GUI()
gui.add(cube.material, 'attenuationDistance', 0, 10).name('衰减距离')
gui.add(cube.material, 'thickness', 0, 2).name('厚度')
gui.add(cube.material, 'ior', 0, 2).name('折射率')
gui.add(cube.material, 'reflectivity', 0, 1).name('反射率')

在这里插入图片描述

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

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

相关文章

【OCPP】ocpp1.6协议第5.1章节Cancel Reservation的介绍及翻译

目录 5.1 取消预约Cancel Reservation-概述 Cancel Reservation CancelReservation.req 请求消息 CancelReservation.conf 确认消息 取消预定的流程 应用场景 示例消息 CancelReservation.req 示例 CancelReservation.conf 示例 总结 5.1 取消预约Cancel Reservation…

VScode 常用插件

基础开发插件 Chinese (Simplified)(简体中文语言包):这是适用于VS Code的中文(简体)语言包,适用于英语不太流利的用户。Auto Rename Tag:这个插件可以同步修改HTML/XML标签,当用户修…

【PYG】Cora数据集分类任务计算损失,cross_entropy为什么不能直接替换成mse_loss

cross_entropy计算误差方式,输入向量z为[1,2,3],预测y为[1],选择数为2,计算出一大坨e的式子为3.405,再用-23.405计算得到1.405MSE计算误差方式,输入z为[1,2,3],预测向量应该是[1,0,0]&#xff0…

Dify入门指南

一.Dify介绍 生成式 AI 应用创新引擎,开源的 LLM 应用开发平台。提供从 Agent 构建到 AI workflow 编排、RAG 检索、模型管理等能力,轻松构建和运营生成式 AI 原生应用,比 LangChain 更易用。一个平台,接入全球大型语言模型。不同…

CesiumJS【Basic】- #050 绘制扫描线(Primitive方式)

文章目录 绘制扫描线(Primitive方式)- 需要自定义着色器1 目标2 代码2.1 main.ts绘制扫描线(Primitive方式)- 需要自定义着色器 1 目标 使用Primitive方式绘制扫描线 2 代码 2.1 main.ts import * as Cesium from cesium;const viewer = new Cesium.Viewer(cesiumConta…

自我反思与暑假及大三上学期规划

又要放暑假了,依稀记得上个暑假一边练车,一边试图拿捏C语言,第一次感觉暑假也可以如此忙碌。但是开学以后,我并没有把重心放在期望自己应该做的事情上,更多的时间花费在了处理学院的相关事务。现在看来,大二…

《昇思 25 天学习打卡营第 9 天 | FCN 图像语义分割 》

活动地址:https://xihe.mindspore.cn/events/mindspore-training-camp 签名:Sam9029 这一章节 出现了一个 深度学习 中经常出现的概念 全卷积网络(Fully Convolutional Networks) : 官话:FCN 主要用于图像分割领域&…

德璞资本:桥水公司如何利用AI实现投资决策的精准提升?

摘要: 在金融科技的浪潮中,桥水公司推出了一只依靠机器学习决策的创新基金,吸引了大量投资者的关注。本文将深入探讨该基金的背景、AI技术的应用、对桥水公司转型的影响,以及未来发展的前景。 新基金背景:桥水公司的创…

2024年7月2日 (周二) 叶子游戏新闻

老板键工具来唤去: 它可以为常用程序自定义快捷键,实现一键唤起、一键隐藏的 Windows 工具,并且支持窗口动态绑定快捷键(无需设置自动实现)。 卸载工具 HiBitUninstaller: Windows上的软件卸载工具 经典名作30周年新篇《恐怖惊魂夜…

MyBatis入门案例

实施前的准备工作: 1.准备数据库表2.创建一个新的springboot工程,选择引入对应的起步依赖(mybatis、mysql驱动、lombok)3.在application.properties文件中引入数据库连接信息4.创建对应的实体类Emp(实体类属性采用驼峰…

throw 和return的区别,A函数里面执行B函数 B函数异常后 不再执行A函数

function aFun() {try {bFun();console.log(22222222222);} catch (e) {// 如果bFun中抛出异常,中止aFun的执行console.log(e.message);} }function bFun() {let a 1, b 1;if (a b) {throw new Error(Stopped by bFun); // 抛出异常,停止aFun}// bFun…

python3递归目录删除N天前的文件(带有日志记录)

本来想用linux find去处理,为了装逼,写了py玩玩,删除2w个文件总共用了2毫秒。因为这个脚本有记录删除时间,你可以看到开始时间和最后删除的时间。由于只用了2毫秒,把我吓了一跳以为删错文件了!! #!/usr/bin/env python3 # -*- encoding: utf-8 -*-@File : del_N…

补浏览器环境

一,导言 // global是node中的关键字(全局变量),在node中调用其中的元素时,可以直接引用,不用加global前缀,和浏览器中的window类似;在浏览器中可能会使用window前缀:win…

校园水质信息化监管系统——水质监管物联网系统

随着物联网技术的发展越来越成熟,它不断地与人们的日常生活和工作深入融合,推动着社会的进步。其中物联网系统集成在高校实践课程中可以应用到许多项目,如环境气象检测、花卉种植信息化监管、水质信息化监管、校园设施物联网信息化改造、停车…

C++编程(八)多态

文章目录 一、多态(一)概念1. 多态2. 函数重写3. 虚函数 (二)实现多态的条件1. 继承关系2. 父类中写虚函数3. 在子类中重写父类的虚函数4.父类的指针或引用指向子类的对象5. 使用示例 (三)虚析构函数&#…

springboot项目jar包修改数据库配置运行时异常

一、背景 我将软件成功打好jar包了,到部署的时候发现jar包中数据库配置写的有问题,不想再重新打包了,打算直接修改配置文件,结果修改配置后,再通过java -jar运行时就报错了。 二、问题描述 本地项目是springBoot项目…

【计算机图形学 | 基于MFC三维图形开发】期末考试知识点汇总(上)

文章目录 视频教程第一章 计算机图形学概述计算机图形学的定义计算机图形学的应用计算机图形学 vs 图像处理 vs模式识别图形显示器的发展及工作原理理解三维渲染管线 第二章 基本图元的扫描转换扫描转换直线的扫描转换DDA算法Bresenham算法中点画线算法圆的扫描转换中点画圆算法…

Java中的持续集成与持续部署

Java中的持续集成与持续部署 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨Java中的持续集成(Continuous Integration&#xff…

熟练掌握Docker及linux常用命令排查线上问题。熟悉Git, Maven等项目管理及构建工具,熟悉微服务中基于Jenkins的CI/CD

掌握Docker、Linux命令、项目管理及构建工具,以及CI/CD流程是现代软件开发和运维的关键技能。以下是对这些技能的概述和一些实践建议: ### Docker - **概述**:Docker是一个开源的容器化平台,允许开发者打包应用及其依赖到一个可移…

【Godot4.2】Godot中的贝塞尔曲线

概述 通过指定平面上的多个点,然后顺次连接,我们可以得到折线段,如果闭合图形,就可以获得多边形。通过向量旋转我们可以获得圆等特殊图形。 但是对于任意曲线,我们无法使用简单的方式来获取其顶点,好在计…