自定义遮罩通道

Three.js 自定义遮罩通道效果 | 三维可视化 / AI 提示词
📋 AI 提示词
prompt
1
使用 Three.js 创建自定义遮罩通道,使用 ShaderPass 实现屏幕遮罩效果。
🖼️ 效果预览
🎮 案例演示
效果描述
这是一个展示如何创建自定义遮罩通道的示例,使用 ShaderPass 实现屏幕遮罩效果。
效果特性
- 自定义遮罩:创建自定义遮罩
- ShaderPass:使用 ShaderPass
- 径向渐变:径向渐变遮罩
- 遮罩颜色:可调遮罩颜色
- 遮罩强度:可调遮罩强度
- 后处理:使用 EffectComposer
核心参数
| 参数 | 值 | 说明 |
|---|---|---|
| 遮罩半径 | 0.1 | 遮罩半径 |
| 遮罩强度 | 2.0 | 遮罩强度 |
| 遮罩颜色 | (1, 1, 1) | 遮罩颜色 |
| 遮罩开始 | 1.2 | 遮罩开始 |
| 透明度 | 1.0 | 透明度 |
核心代码解析
创建自定义遮罩通道
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class ScreenMaskPass extends ShaderPass {
constructor() {
super({
name: "ScreenMaskShader",
uniforms: {
tDiffuse: { value: null },
opacity: { value: 1.0 },
intensity: { value: 2.0 },
maskColor: { value: new THREE.Color(1, 1, 1) },
R: { value: 0.1 },
sr: { value: 1.2 },
},
vertexShader: `
varying vec2 vUv;
void main() {
vUv = uv;
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
}
`,
fragmentShader: `
uniform float opacity;
uniform float intensity;
uniform sampler2D tDiffuse;
uniform vec3 maskColor;
uniform float R;
uniform float sr;
varying vec2 vUv;
void main() {
vec4 texel = texture2D(tDiffuse, vUv);
float dist = sqrt((vUv.x-0.5)*(vUv.x-0.5)+(vUv.y-0.5)*(vUv.y-0.5));
float rr = (sr - smoothstep(R, R + 0.5, dist));
texel *= vec4(maskColor * rr * vec3(intensity,intensity,intensity), 1.0);
gl_FragColor = opacity * texel;
}
`,
});
}
}
创建后处理
javascript
1
2
3
4
5
const composer = new EffectComposer(renderer);
const renderPass = new RenderPass(scene, camera);
composer.addPass(renderPass);
const screenMaskPass = new ScreenMaskPass();
composer.addPass(screenMaskPass);
创建场景
javascript
1
2
3
4
5
6
7
8
9
scene.add(new THREE.AxesHelper(500), new THREE.GridHelper(500, 50));
const urls = [0, 1, 2, 3, 4, 5].map(
(k) =>
"https://z2586300277.github.io/three-editor/dist/files/scene/skyBox0/" +
(k + 1) +
".png"
);
const textureCube = new THREE.CubeTextureLoader().load(urls);
scene.background = textureCube;
技术亮点
- 自定义遮罩:创建自定义遮罩
- ShaderPass:使用 ShaderPass
- 径向渐变:径向渐变遮罩
- 遮罩颜色:可调遮罩颜色
- 遮罩强度:可调遮罩强度
调试技巧
- 遮罩半径:调整遮罩半径改变遮罩范围
- 遮罩强度:调整遮罩强度改变遮罩效果
- 遮罩颜色:调整遮罩颜色改变显示
- 遮罩开始:调整遮罩开始改变渐变
- 透明度:调整透明度改变显示
扩展方向
- 复杂遮罩:创建更复杂的遮罩效果
- 动画效果:添加动画效果
- 交互控制:添加交互控制
- 多种遮罩:支持多种遮罩
- 自定义遮罩:支持自定义遮罩
本文档由 ThreeLab 编辑整理,如需转载,请注明出处。







京公网安备 11010502038735号
💬 评论区
评论功能即将上线,敬请期待!