我想创建一个类似镜子的效果,只反映虚拟网格,而不是现实生活场景。 唯一反映环境的材质是“金属”,但不幸的是这还不够。虚拟网格上的文本应该清晰易读。金属材质太模糊了。
Shader Graph 可以实现这一点吗?还是我需要查看 Apple 的 Metal Graphics Library?
我已经尝试了苹果提供的所有材料: 苹果材料
默认情况下,RealityKit 渲染引擎强制所有具有
reflection
通道的着色器仅反射基于 AR 探针的环境,不允许自反射或场景中其他 VR 模型的反射。不幸的是,没有一个方便的高级“按钮”来打开它。要打开 VR 反射,请使用低级 Compositor Services。
尽管如此,要创建类似镜像的 PBR 着色器,您只需将
metallic
通道的值设置为 1,将 roughness
通道的值设置为 0。基色应为 white
。这是以编程方式创建的一面镜子和一个红球。
import SwiftUI
import RealityKit
struct ContentView: View {
let mirror = ModelEntity(mesh: .generatePlane(width: 0.9, height: 1.4))
let sphere = ModelEntity(mesh: .generateSphere(radius: 0.2))
init() {
mirror.position = [0.0, 1.0,-2.0]
sphere.position = [0.0, 1.0,-1.5]
}
var body: some View {
RealityView { rvc in
var mirrorMaterial = PhysicallyBasedMaterial()
mirrorMaterial.baseColor.tint = .white
mirrorMaterial.metallic = 1.0
mirrorMaterial.roughness = 0.0
mirror.model?.materials = [mirrorMaterial]
var ballMaterial = PhysicallyBasedMaterial()
ballMaterial.baseColor.tint = .red
sphere.model?.materials = [ballMaterial]
rvc.add(mirror)
rvc.add(sphere)
}
}
}
在 Reality Composer Pro 2.0 中,镜子材质设置就这么简单: