Three.js 截图功能
提示词
使用 Three.js 的 WebGLRenderer 和 EffectComposer 实现截图功能,支持后处理效果的截图。
效果描述
这是一个展示如何实现截图功能的示例,包括基础渲染和后处理效果的截图。
效果特性
- 基础截图:使用 WebGLRenderer 截图
- 后处理截图:使用 EffectComposer 截图
- Bloom 效果:使用 UnrealBloomPass 创建发光效果
- GUI 控制:使用 lil-gui 控制截图
- PNG 格式:导出 PNG 格式图片
- 自动下载:自动触发下载
核心参数
| 参数 |
值 |
说明 |
| Bloom 阈值 |
1.5 |
Bloom 效果阈值 |
| Bloom 强度 |
0 |
Bloom 效果强度 |
| Bloom 半径 |
0 |
Bloom 效果半径 |
| 图片格式 |
image/png |
PNG 格式 |
| 图片质量 |
0.8 |
图片质量 |
核心代码解析
创建后处理
const composer = new EffectComposer(renderer);
const renderPass = new RenderPass(scene, camera);
composer.addPass(renderPass);
const bloomPass = new UnrealBloomPass(
new THREE.Vector2(window.innerWidth, window.innerHeight),
1.5,
0,
0
);
composer.addPass(bloomPass);
截图函数
function screenShot() {
renderer.render(scene, camera);
composer.render();
const base64 = renderer.domElement.toDataURL(["image/png", "0.8"]);
const link = document.createElement("a");
link.href = base64;
link.download = "myImage.png";
link.click();
}
GUI 控制
new GUI().add({ 截图: screenShot }, "截图");
渲染循环
function animate() {
requestAnimationFrame(animate);
composer.render();
}
技术亮点
- EffectComposer:使用 EffectComposer 管理后处理
- UnrealBloomPass:创建发光效果
- toDataURL:将 canvas 转换为 base64 图片
- 自动下载:创建链接自动触发下载
- 双重渲染:先渲染基础场景再渲染后处理
调试技巧
- 截图时机:确保在渲染完成后截图
- 图片质量:调整 toDataURL 的质量参数
- Bloom 参数:调整 Bloom 效果参数
- 图片格式:选择合适的图片格式
- 文件名:自定义截图文件名
扩展方向
- 截图预览:添加截图预览功能
- 多格式:支持多种图片格式
- 分辨率控制:控制截图分辨率
- 截图区域:截取指定区域
- 批量截图:批量截图功能
本文档由 ThreeLab 编辑整理,如需转载,请注明出处。
💬 评论区
评论功能即将上线,敬请期待!