three模型高亮外发光效果
2021/12/29 23:07:13
本文主要是介绍three模型高亮外发光效果,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
页面效果如下:
vue3+three完整代码如下:
<template> </template> <script setup> import * as THREE from 'three'; import { EffectComposer } from "three/examples/jsm/postprocessing/EffectComposer.js" import { RenderPass } from "three/examples/jsm/postprocessing/RenderPass.js" import { OutlinePass } from "three/examples/jsm/postprocessing/OutlinePass.js" import { ShaderPass } from "three/examples/jsm/postprocessing/ShaderPass.js" import { FXAAShader } from "three/examples/jsm/shaders/FXAAShader.js" import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js'; const scene = new THREE.Scene(); const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 ); const renderer = new THREE.WebGLRenderer(); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); const geometry = new THREE.BoxGeometry(); const material = new THREE.MeshBasicMaterial( { color: 0xffffff } ); const cube = new THREE.Mesh( geometry, material ); const cube2 = cube.clone() cube2.position.set(2,2,1) scene.add( cube ); scene.add( cube2 ); console.log(scene, 'scene') camera.position.z = 5; // 轨道控制器 const controls = new OrbitControls( camera, renderer.domElement ); // 后处理效果代码 let composer = null let outlinePass = null let renderPass = null //高亮显示模型(呼吸灯) function outlineObj (selectedObjects) { // 创建一个EffectComposer(效果组合器)对象,然后在该对象上添加后期处理通道。 composer = new EffectComposer(renderer) // 新建一个场景通道 为了覆盖到原理来的场景上 renderPass = new RenderPass(scene, camera) composer.addPass(renderPass); // 物体边缘发光通道 outlinePass = new OutlinePass(new THREE.Vector2(window.innerWidth, window.innerHeight), scene, camera, selectedObjects) outlinePass.selectedObjects = selectedObjects outlinePass.edgeStrength = 10.0 // 边框的亮度 outlinePass.edgeGlow = 1// 光晕[0,1] outlinePass.usePatternTexture = false // 是否使用父级的材质 outlinePass.edgeThickness = 1.0 // 边框宽度 outlinePass.downSampleRatio = 1 // 边框弯曲度 outlinePass.pulsePeriod = 5 // 呼吸闪烁的速度 outlinePass.visibleEdgeColor.set(parseInt(0x00ff00)) // 呼吸显示的颜色 outlinePass.hiddenEdgeColor = new THREE.Color(0, 0, 0) // 呼吸消失的颜色 outlinePass.clear = true composer.addPass(outlinePass) // 自定义的着色器通道 作为参数 var effectFXAA = new ShaderPass(FXAAShader) effectFXAA.uniforms.resolution.value.set(1 / window.innerWidth, 1 / window.innerHeight) effectFXAA.renderToScreen = true composer.addPass(effectFXAA) } outlineObj([cube]) function animate() { requestAnimationFrame( animate ); renderer.render( scene, camera ); controls.update(); if (composer) { composer.render() } } animate(); </script>
这篇关于three模型高亮外发光效果的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27消息中间件底层原理资料详解
- 2024-11-27RocketMQ底层原理资料详解:新手入门教程
- 2024-11-27MQ底层原理资料详解:新手入门教程
- 2024-11-27MQ项目开发资料入门教程
- 2024-11-27RocketMQ源码资料详解:新手入门教程
- 2024-11-27本地多文件上传简易教程
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器