From c2302683cd4bd4c1bb4e09cd3696e11946872544 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期六, 30 三月 2024 16:01:42 +0800 Subject: [PATCH] # --- zy-asrs-flow/src/pages/map/drawer/shelf/shelfThree.js | 26 +++++++++++++++++++++++++- 1 files changed, 25 insertions(+), 1 deletions(-) diff --git a/zy-asrs-flow/src/pages/map/drawer/shelf/shelfThree.js b/zy-asrs-flow/src/pages/map/drawer/shelf/shelfThree.js index 7d6262f..3f68b9c 100644 --- a/zy-asrs-flow/src/pages/map/drawer/shelf/shelfThree.js +++ b/zy-asrs-flow/src/pages/map/drawer/shelf/shelfThree.js @@ -2,6 +2,9 @@ import Stats from 'three/addons/libs/stats.module.js'; import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls' import TWEEN from '@tweenjs/tween.js'; +import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer'; +import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass'; +import { OutlinePass } from 'three/examples/jsm/postprocessing/OutlinePass'; const help = false; @@ -19,6 +22,7 @@ this.renderer = this.initRenderer(); this.controls = this.initControls(); this.stats = this.initStats(); + this.composer = this.initComposer(); this.windowResize(); this.initRaycaster(); initLight(this.scene); @@ -34,7 +38,8 @@ render = () => { this.renderer.shadowMap.enabled = true; - this.renderer.render(this.scene, this.camera); + // this.renderer.render(this.scene, this.camera); + this.composer.render(); // use special effects this.stats.update(); // Rotate the scene this.controls.update() @@ -83,6 +88,15 @@ renderer.setSize(this.getFullWidth(), this.getFullHeight()); this.dom.appendChild(renderer.domElement); return renderer; + } + + initComposer = () => { + const composer = new EffectComposer(this.renderer); + const renderPass = new RenderPass(this.scene, this.camera); + composer.addPass(renderPass); + this.outlinePass = new OutlinePass(new THREE.Vector2(this.getFullWidth(), this.getFullHeight()), this.scene, this.camera); + composer.addPass(this.outlinePass); + return composer; } initControls = () => { @@ -141,8 +155,10 @@ raycaster.setFromCamera(mouse, that.camera); let intersects = raycaster.intersectObjects(that.objects, true); if (intersects.length === 0) { + this.outlinePass.selectedObjects = []; return; } + this.outlinePass.selectedObjects = [intersects[0].object]; let objName = intersects[0].object.name; if (objName && this.handleClick) { this.handleClick(objName, x, y); @@ -171,6 +187,14 @@ this.renderer.domElement = null; this.renderer = null; } + if (this.composer) { + this.composer.passes.forEach(pass => { + if (pass.dispose) { + pass.dispose(); + } + }); + this.composer = null; + } if (this.controls) { this.controls.dispose(); this.controls = null; -- Gitblit v1.9.1