前言
本篇文章和大家简单分享一下如何利用postprocessing,screen-space-reflections实现一些3D后期效果。这个有点烧电脑,大家酌情学习。
官网地址
https://github.com/pmndrs/postprocessing
https://github.com/0beqz/screen-space-reflections
文档地址
https://pmndrs.github.io/postprocessing/public/docs/
初始化项目
先用vite初始化个vue3的项目,安装three,这个我就不过多展开了。
初始化样式
这里简单初始化一下样式,让canvas全屏显示。
1 | * { |
导入模型和写入其他基础代码
这里我也不多阐述了,就是需要把draco从node_modules中的three模块里面拷贝到public里面
1 | <template> |
此时的效果如下
添加聚光灯充当太阳实现阴影效果
1 | // 添加聚光灯充当太阳 |
模型添加阴影
此时我们并没有看到阴影,这是因为我们的模型没有开启接收阴影和投射阴影,我们导入模型的时候需要设置一下
1 | gltfLoader.load("./model/court-transformed.glb", (gltf) => { |
此时效果如下
调整亮度
这时候我们的场景太亮了,我们将模型的材质亮度改暗一点
1 | gltfLoader.load("./model/court-transformed.glb", (gltf) => { |
这样就稍微有一点点感觉了
添加辉光效果
安装postprocessing
这里先安装一下postprocessing
1 | npm install postprocessing |
导入
1 | import { |
实例化后期处理效果
1 | // 实例化后期处理效果 |
渲染函数修改
1 | // 设置渲染函数 |
此时的效果如下,我们的光照和打在模型上的光都有了辉光效果
这里放一张同角度的对比图,大家可以看看区别
添加抗锯齿效果
导入部分就省略了
1 | // 提升抗锯齿效果 |
添加环境光遮蔽
导入部分就省略了
1 | // 添加环境光遮蔽 |
这个主要就是添加一些环境光遮蔽效果
添加屏幕空间反射
安装屏幕空间反射
1 | npm install screen-space-reflections |
导入
1 | import { SSREffect } from "screen-space-reflections"; |
使用
1 | // 添加屏幕空间反射 |
这样我们就添加了屏幕空间反射效果
这时候我们发现我们的场景都亮了起来,地板也反射墙面等一些东西,但是天花板我们是不需要反射的,我们可以在导入模型的时候设置一下
设置天花板不反射地板
这里我们可以在导入模型的时候设置一下,如果是地板就换一个环境贴图
1 | gltfLoader.load("./model/court-transformed.glb", (gltf) => { |
设置GUI
然后屏幕空间反射我们可以自己的喜好来进行设置,将官网的DEMO中的GUI部分拷贝过来这里需要安装一个tweakpane
1 | import { defaultSSROptions } from "screen-space-reflections"; |
然后在项目中导入
1 | import { SSRDebugGUI } from "./SSRDebugGUI"; |
这里我把屏幕空间反射强度调整了一下,就感觉好看多了,大家也可以自己去玩一下
结语
本篇文章简单的分享了一下如何实现一些3D后期效果.更多内容敬请期待,债见~