当前位置: 首页 > article >正文

120. gltf工厂模型设置发光描边

1.引入扩展库

具体参考13.1节讲解

// 引入后处理扩展库EffectComposer.js
import { EffectComposer } from 'three/addons/postprocessing/EffectComposer.js';
// 引入渲染器通道RenderPass
import { RenderPass } from 'three/addons/postprocessing/RenderPass.js';
// 引入OutlinePass通道
import { OutlinePass } from 'three/addons/postprocessing/OutlinePass.js';

2.设置后期处理通道

具体参考13.1和13.2节讲解

注意outlinePass.selectedObjects先不用设置,后面通过UI按钮鼠标事件触发的的函数设置。

// 创建后处理对象EffectComposer,WebGL渲染器作为参数
const composer = new EffectComposer(renderer);
const renderPass = new RenderPass(scene, camera);
composer.addPass(renderPass);

// 创建OutlinePass通道
const v2 = new THREE.Vector2(window.innerWidth, window.innerHeight);
const outlinePass = new OutlinePass(v2, scene, camera);
// outlinePass.selectedObjects = [mesh];
outlinePass.visibleEdgeColor.set(0x00ffff);
outlinePass.edgeThickness = 4;
outlinePass.edgeStrength = 6;
composer.addPass(outlinePass);

3.渲染循环执行EffectComposer.render()

// 渲染循环
function render() {
    composer.render();
    // renderer.render(scene, camera);
    requestAnimationFrame(render);
}
render();

4. UI界面控制outlinePass.selectedObjects

用于和3D场景交互的UI按钮,具体参考课件中index.html文件中HTML和CSS代码。

<div id="A" class="bu">设备A</div>
<div id="B" class="bu" style="margin-left: 10px;">设备B</div>

通过UI按钮控制,哪个模型添加发光描边效果

document.getElementById('A').addEventListener('click',function(){
    const A = model.getObjectByName ('设备A');
    outlinePass.selectedObjects = [A];
})
document.getElementById('B').addEventListener('click',function(){
    const B = model.getObjectByName ('设备B');
    outlinePass.selectedObjects = [B];
})

http://www.kler.cn/a/381655.html

相关文章:

  • Naive UI 多选框自定义tag和label
  • http协议的状态码
  • iLoveIMG:强大的在线图片编辑工具分享
  • 【Mysql】truncate 和 delete的区别
  • ubuntu 24.04-无域名创建本机和局域网和同网段局域网机器可访问的https网页服务
  • ubuntu22.04安装PaddleX3
  • SpringBoot2~~~
  • 什么是区块链中的不可能三角?
  • MySQL数据迁移到SQLServer数据库
  • 数据分析的基本过程
  • 数据中台一键大解析!
  • 《常用深度学习神经网络及其原理与应用场景》
  • [出海记录]开发新手的第 11 个站点上线
  • mysql 和 java 对应数据类型
  • 【java】ArrayList与LinkedList的区别
  • 健身中心运营优化:SpringBoot管理系统
  • 华为HarmonyOS打造开放合规的广告生态 - Banner广告
  • 开源ISP(Infinite-ISP)介绍
  • Rust 力扣 - 2841. 几乎唯一子数组的最大和
  • Ubuntu 20.04 部署向量数据库 Milvus + Attu
  • 【数据结构】哈希思想详解
  • 工作流之Flowable
  • 掌握ElasticSearch(八):聚集、文档间的关系
  • 解决阿里云三个月证书过期 免费SSL证书部署教程
  • Pytest参数详解 — 基于命令行模式!
  • 高级 <HarmonyOS主题课>让您的应用拥有领先的位置服务能力的课后习题