three.js 后期处理,物体高亮

效果图

在这里插入图片描述

代码

  1. 引入资源文件,在初始化时创建后处理对象
    // 用于边缘高亮的插件// 引入后处理扩展库EffectComposer.jsimport { EffectComposer } from "three/addons/postprocessing/EffectComposer.js";// 引入渲染器通道RenderPassimport { RenderPass } from "three/addons/postprocessing/RenderPass.js";// 引入OutlinePass通道import { OutlinePass } from "three/addons/postprocessing/OutlinePass.js";// 伽马校正后处理Shaderimport { GammaCorrectionShader } from "three/addons/shaders/GammaCorrectionShader.js";// ShaderPass功能:使用后处理Shader创建后处理通道import { ShaderPass } from "three/addons/postprocessing/ShaderPass.js";// SMAA抗锯齿通道import { SMAAPass } from 'three/addons/postprocessing/SMAAPass.js';// 引入3D渲染器import { CSS3DRenderer, CSS3DObject,CSS3DSprite } from 'three/addons/renderers/CSS3DRenderer.js';// 创建后处理对象-用于选中高亮function createComposer(){//创建后处理对象EffectComposer,webGL渲染器作为参数composer=new EffectComposer(renderer);//创建一个渲染器通道,场景和相机作为参数const renderPass=new RenderPass(scene,camera);//设置renderPass通道composer.addPass(renderPass);//创建OutlinePass通道const v2=new THREE.Vector2(window.innerWidth,window.innerHeight);outlinePass=new OutlinePass(v2,scene,camera);//颜色outlinePass.visibleEdgeColor.set(0x00ffff);//厚度outlinePass.edgeThickness = 4;//亮度outlinePass.edgeStrength = 6;// 闪烁次数outlinePass.pulsePeriod  = 2;// 光晕[0,1]  边缘微光强度outlinePass.edgeGlow = 1; //添加到后处理对象中composer.addPass(outlinePass);//获取.setPixelRatio()设置的设备像素比const pixelRatio = renderer.getPixelRatio();// 抗锯齿const smaaPass = new SMAAPass(window.innerWidth * pixelRatio, window.innerHeight * pixelRatio);composer.addPass(smaaPass);// 创建伽马校正通道-用于模型颜色修正const gammaPass = new ShaderPass(GammaCorrectionShader);composer.addPass(gammaPass);}
  1. 配合点击事件,实现点击模型后高亮该模型
    // 点击事件document.addEventListener('mouseup', function (event) {const intersects = calcIntersects(event)let x2 = (event.clientX / window.innerWidth) * 2 - 1let y2 = -(event.clientY / window.innerHeight) * 2 + 1if(x == x2&&y==y2){// 判断是否有交点if (intersects.length > 0) {const pos = intersects[0].point;// 如果是我们要点击的模型let containsModelName = needClickModelList.some(item =>intersects[0].object.name.indexOf(item)!=-1);if(containsModelName){// 高亮被选中的模型outlinePass.selectedObjects = [intersects[0].object];var coords = intersects[0].point;coords.y = coords.y + 50clearDialog()createDialogHtml(coords,intersects[0].object.name) // 创建弹框}}}})
  1. 循环渲染
    // 循环渲染function animate() {requestAnimationFrame(animate)  // 重新更新性能composer.render() //修改渲染器函数渲染方法为后渲染函数controls.update()}

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

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

相关文章

Kafka-服务端-网络层-源码流程

整体架构如下所示: responseQueue不在RequestChannel中,在Processor中,每个Processor内部有一个responseQueue 客户端发送的请求被Acceptor转发给Processor处理处理器将请求放到RequestChannel的requestQueue中KafkaRequestHandler取出reque…

深度解析Java世界中的对象镜像:浅拷贝与深拷贝的奥秘与应用

在Java编程的浩瀚宇宙中,对象拷贝是一项既基础又至关重要的技术。它直接关系到程序的性能、资源管理及数据安全性。然而,提及对象拷贝,不得不深入探讨其两大核心类型:浅拷贝(Shallow Copy)与深拷贝&#xf…

防爆智能手机如何解决危险环境下通信难题?

在化工厂、石油行业、矿山等危险环境中,通信安全一直是难题。传统手机因不具备防爆功能,可能引发火花、爆炸等安全风险,让工作人员在关键时刻难以及时沟通。但如今,防爆智能手机的出现彻底改变了这一现状! 安全通信&am…

【Python】找Excel重复行

【背景】 找重复行虽然可以通过Excel实现,但是当数据量巨大时光是找结果就很费时间,所以考虑用Python实现。 【代码】 import pandas as pd# 读取Excel文件 file_path = your excel file path df = pd.read_excel(file_path)# 查找重复行 # 这里假设要检查所有列的重复项 …

手机如何充当电脑摄像头,新手使用教程分享(新)

手机如何充当电脑摄像头?随着科技的发展,智能手机已经成为我们日常生活中不可或缺的一部分。手机的摄像头除了拍摄记录美好瞬间之外,其实还有个妙用,那就是充当电脑的摄像头。手机摄像头充当电脑摄像头使用的话,我们就…

一分钟学习数据安全—自主管理身份SSI分布式加密密钥管理

在这篇之前,我们已经对SSI有了一个全局的了解。这个系列的文章可以作为一个学习笔记来参考,真正要实践其中的一些方案、协议,还需要参考专业的书籍和官方文档。作为一个SSI系列学习笔记的最后一篇,我们做一个简单的延伸&#xff0…

【中项第三版】系统集成项目管理工程师 | 第 9 章 项目管理概论① | 9.1 - 9.3

前言 第 9 章对应的内容选择题和案例分析都会进行考查,这一章节理论性较强,学习要以教材为准。本章分值预计在4-5分。 目录 9.1 PMBOK的发展 9.2 项目基本要素 9.2.1 项目基础 9.2.2 项目管理 9.2.3 项目成功的标准 9.2.4 项目、项目集、项目组合…

Lemo 的 AGI 应用实战博文导航

AGI系列(1):掌握AI大模型提示词优化术,提问准确率飙升秘籍 AGI系列(2):掌握AI大模型提示词优化术,从容应对各种提问场景 AGI系列(3):2024年国内最…

多态的优点

多态的优点 1、多态的优点1.1 可替换性(Substitutability)2、可扩充性(Extensibility) 2、总结 💖The Begin💖点点关注,收藏不迷路💖 1、多态的优点 在面向对象编程(OOP…

无服务器【Serverless】架构的深度剖析:组件介绍、优缺点与适用场景

🐇明明跟你说过:个人主页 🏅个人专栏:《未来已来:云原生之旅》🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、云计算的发展趋势 2、无服务器计算简介 二、无服务…

项目迭代中新老逻辑切流和对比 - 异步查询新接口

项目迭代中新老逻辑切流-切换入口项目迭代中新老逻辑切流 - 异步查询新接口项目迭代中新老逻辑切流 - 新老数据对比—待更新 前言 前面说到了 项目迭代中新老逻辑切换入口 ,有兴趣的可以先看一下,不知道大家有什么疑问吗? 怎么知道自己新接…

红海云签约海新域集团,产业服务运营领军企业加速人力资源数字化转型

北京海新域城市更新集团有限公司(以下简称“海新域集团”)是北京市海淀国有资产投资集团有限公司一级监管企业,致力于成为国内领先的产业服务运营商。集团积极探索城市和产业升级新模式,通过对老旧、低效等空间载体重新定位规划、…

FPGA基本资源介绍

文章目录 FPGA资源介绍1.可编程输入输出单元(IOB)2.可配置逻辑块(CLB)3.数字时钟管理模块(DCM)4.嵌入式块RAM(BLOCK RAM / BRAM)4.1其他ram 5.丰富的布线资源6.底层内嵌功能单元7.内嵌专用硬核软核、硬核、以及固核的概念 FPGA资源介绍 1.可编程输入输出单元(IOB) 可编程输入…

C++视觉开发 五.答题卡识别

答题卡识别主要步骤 (1)反二值化,选项处理为前景(白色),其它处理为背景(黑色)。 (2)每个选项提取出来,计算各选项白色像素点个数。 (3)筛选出白色像素点最多的选项作为考生答案。 (4)与标准答案…

【机器学习】连续字段的特征变换

介绍 除了离散变量的重编码外,有的时候我们也需要对连续变量进行转化,以提升模型表现或模型训练效率。在之前的内容中我们曾介绍了关于连续变量标准化和归一化的相关内容,对连续变量而言,标准化可以消除量纲影响并且加快梯度下降…

微信扫码进入小程序的webview页面,发现左上角没有home键

问题描述: 微信扫小程序二维码进到web-view内嵌h5页面,左上角没有返回小程序主页的home键,ios正常显示,Android 没有显示 导致的原因: 因为顶部导航栏我是自定义的 【如果是使用小程序原生的顶部导航栏是不会出现这种…

DiffSynth-Studio全面解析与应用示例

DiffSynth-Studio简介 1.1 DiffSynth-Studio的定义与目标用户 DiffSynth-Studio 是一个创新的扩散引擎,专门设计用于实现图片和视频的风格转换。它通过先进的机器学习技术,为用户提供了一种全新的创作方式,使得风格转换变得更加高效和直观。…

latex中引用参考文献的命令

在LaTeX中,常用于引用参考文献的命令有几种,它们的区别主要在于引用的风格和输出的格式。以下是几种常见的引用命令及其区别: 命令输出效果区别与特点\cite{key}[1]基本的引用命令,输出带方括号的引用编号\citet{key}Author (Yea…

循环序列模型

循环序列模型 1.为什么选择序列模型? 2.数学符号 3.循环神经网络模型 4.通过时间的反向传播 5.不同类型的循环神经网络 6.语言模型和序列生成 7.对新序列采样 8.循环神经网络的梯度消失 9.GRU单元 10.长短期记忆 11.双向循环神经网络 12.深层循环神经网…

年化达21%(K=1),最大回撤35%,K=3时,卡玛比最优,最大回撤20%(年化15.2%)| Quantlab5.0代码发布

原创文章第578篇,专注“AI量化投资、世界运行的规律、个人成长与财富自由"。 Quantlab5.0代码发布: 值得说明,Quantlab5与4没有继承关系,5开始的思路是: 1、尽量少封装,保留回测框架最原始的功能。…