Three.js中文网 Three.js中文网
首页
免费视频
系统课 (opens new window)
  • Three.js基础课程
  • Vue3+Threejs 3D可视化
  • Threejs进阶课程
  • 展厅3D预览漫游
  • Threejs Shader
  • Blender建模基础
  • Three.js基础课程(旧版本) (opens new window)
  • 文章
WebGPU教程
  • WebGL教程
  • WebGL教程(旧版本) (opens new window)
3D案例
  • 本站部署(打开快) (opens new window)
  • 原英文官网文档 (opens new window)
首页
免费视频
系统课 (opens new window)
  • Three.js基础课程
  • Vue3+Threejs 3D可视化
  • Threejs进阶课程
  • 展厅3D预览漫游
  • Threejs Shader
  • Blender建模基础
  • Three.js基础课程(旧版本) (opens new window)
  • 文章
WebGPU教程
  • WebGL教程
  • WebGL教程(旧版本) (opens new window)
3D案例
  • 本站部署(打开快) (opens new window)
  • 原英文官网文档 (opens new window)
Web3D系统课程视频
  • 0.学前说明

  • 1.Three.js快速入门

  • 2.几何体BufferGeometry

  • 3.模型对象、材质

  • 4.层级模型

  • 5.顶点UV坐标、纹理贴图

  • 6.加载外部三维模型(gltf)

  • 7.PBR材质与纹理贴图

  • 8.渲染器和前端UI界面

  • 9.生成曲线、几何体

  • 10.相机基础

  • 11.光源和阴影

  • 12.精灵模型Sprite

  • 13.后处理EffectComposer

    • 1. 后处理(发光描边OutlinePass)
    • 2. OutlinePass描边样式
    • 3. Bloom发光通道
    • 4. 多通道组合(GlitchPass和描边)
    • 5. gltf工厂模型设置发光描边
      • 6. gltf后处理颜色异常(伽马校正)
      • 7. 抗锯齿后处理
    • 14.射线拾取模型

    • 15.场景标注标签信息

    • 16.关键帧动画

    • 17.动画库tween.js

    • Three.js教程
    • 13.后处理EffectComposer
    郭隆邦
    2023-03-03
    目录

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

    # gltf工厂模型设置发光描边

    本节课算是一个发光描边OutlinePass后处理的练习题,通过按钮点击选择gltf工厂的某个设备模型,添加发光描边效果。

    课件演示文件提供了加载gltf工厂模型的源码,你可以在此基础上,利用13.1和13.2节讲解过的OutlinePass知识给工厂设备添加发光描边效果。

    # 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];
    })
    
    4. 多通道组合(GlitchPass和描边)
    6. gltf后处理颜色异常(伽马校正)

    ← 4. 多通道组合(GlitchPass和描边) 6. gltf后处理颜色异常(伽马校正)→

    Theme by Vdoing | Copyright © 2016-2025 豫ICP备16004767号-2
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式