ShadowNodeMaterial
ShadowNodeMaterial
一种用于在透明表面上接收和渲染阴影的节点材质。它使应用该材质的物体本身不可见,但能显示出其他物体投射到其上的阴影,从而实现“阴影捕捉器”(shadow catcher)的效果。 [1] 它是 ShadowMaterial 的节点版本。
核心优势
其核心价值在于能够创建一个“阴影捕捉器”,可以在一个完全透明的平面上接收阴影。这对于将 3D 模型无缝地合成到真实世界的照片或视频背景中(例如 AR 应用)至关重要,因为它允许物体在背景上投下逼真的阴影,而无需一个可见的地面。 [1]
常见用途
创建一个仅用于接收阴影的不可见地面
在增强现实(AR)应用中,使虚拟物体在真实表面上投下阴影
在产品展示场景中,让产品在背景图片上投下阴影
将 3D 渲染对象与 2D 背景无缝合成
如何调整
该材质的外观主要由场景中的光照和投射阴影的物体决定,而非其自身属性。你可以通过调整 `color` 属性来给阴影着色(默认为黑色)。`opacity` 属性可以控制阴影的强度或暗度,值越低,阴影越淡。为了获得更好的阴影质量,你可能需要调整投射阴影的光源的阴影属性(如 `light.shadow.mapSize` 和 `light.shadow.bias`)。
代码示例
1{/* 这个平面将是不可见的,但会捕捉阴影 */}
2<mesh receiveShadow position-y={-1}>
3 <planeGeometry args={[10, 10]} />
4 {/* opacity 控制阴影的暗度 */}
5 <shadowNodeMaterial transparent opacity={0.5} />
6</mesh>