threejs 辉光的使用 在vue

引入插件

import {
		EffectComposer
	} from "three/examples/jsm/postprocessing/EffectComposer.js";

import {
		UnrealBloomPass
	} from 'three/examples/jsm/postprocessing/UnrealBloomPass'
import {
		RenderPass
	} from "three/examples/jsm/postprocessing/RenderPass.js";

辉光配置

addBloomPass() {
				// https://threejs.org/examples/?q=un#webgl_postprocessing_unreal_bloom
				let params = {
					// 强度
					bloomStrength: 1.2,
					// 阈值
					bloomThreshold: 0,
					// 半径
					bloomRadius: 2
				}

				// const gui = new GUI()
				// window.gui = gui


				var width = this.$refs.myThreeRef.clientWidth;
				var height = this.$refs.myThreeRef.clientHeight;
				const renderScene = new RenderPass(scene, camera)
				// this.SCREEN_WIDTH = this.$refs.myThreeRef.clientWidth;
				// this.SCREEN_HEIGHT = this.$refs.myThreeRef.clientHeight;

				console.log(width)

				//创建辉光bloom通道, 强度1.5,半径0,阈值0
				var bloomPass = new UnrealBloomPass(new THREE.Vector2(width, height), params.bloomStrength, params
					.bloomRadius, params.bloomThreshold)
				bloomPass.renderToScreen = true;

				console.log(bloomPass, 'bloomPass')

				composerglow = new EffectComposer(renderer)
				composerglow.setSize(width, height);
				composerglow.addPass(renderScene)
				composerglow.addPass(bloomPass)
			},

layers 分层

	groupObj.children[0].children.map((item) => {
					
					
					
					if (faguang.indexOf(item.material.name) != -1) {
						item.layers.set(1);
						selectedObjects.push(item);
						// return true;
					} else {
						item.material.visible=false;
						item.layers.set(0);

						selectedObjects2.push(item);
					}
				});

				this.addBloomPass()

render

	animate() {
				// 进行渲染
				let layers = new THREE.Layers();
				const delta = this.clock.getDelta() // 获取自上次调用的时间差
				if (renderer) {


					renderer.autoClear = false;
					controls.update();
					renderer.clear();
					ambient.layers.set(1);
					camera.layers.set(1)
					if (composer) {
						composer.render();
					}
					if (composerglow) {
						composerglow.render(delta)
					}
					renderer.clearDepth(); // 清除深度缓存
					ambient.layers.set(0);
					camera.layers.set(0)
					renderer.render(scene, camera);



					requestAnimationFrame(this.animate);


				}
			},

WebGLRenderer 配置

renderer = new THREE.WebGLRenderer({
						autoClear: false, //辉光需要关闭
						antialias: true, // true/false表示是否开启反锯齿
						alpha: true, // true/false 表示是否可以设置背景色透明
						precision: "highp", // highp/mediump/lowp 表示着色精度选择
						premultipliedAlpha: true, // true/false 表示是否可以设置像素深度(用来度量图像的分辨率)
						preserveDrawingBuffer: true, // true/false 表示是否保存绘图缓冲
						logarithmicDepthBuffer: true, //是否使用对数深度缓存。如果要在单个场景中处理巨大的比例差异,就有必要使用。 默认是false。
						maxLights: 10, // 最大灯光数
						gammaInput: true, //默认为 false. 如果设置了该参数,表示所有纹理和颜色应当使用预乘的gamma值来输入。
						gammaOutput: true, //默认为 false. 如果设置了该参数,表示所有纹理和颜色应当使用预乘的gamma值来输出。
						// renderer.shadowMap.enabled = true;//实现阴影贴图(或阴影映射)的组件的引用。

						stencil: true, // false/true 表示是否使用模板字体或图案
					});
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

圣京都

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值