在 Vision Pro / RealityKit API 中,我可以通过编程方式将纹理贴图添加到网格中:
let planeMeshResource = MeshResource.generatePlane(width: W, height: H))
var planeMaterial = UnlitMaterial(color: .white)
let texture = try! await TextureResource(named: "LeftEyeImage")
planeMaterial.baseColor = MaterialColorParameter.texture(texture)
let viewPlaneEntity = ModelEntity(mesh: planeMeshResource,
materials: [planeMaterial])
如何以编程方式为每只眼睛指定不同的纹理贴图 立体视觉?我可以想象类似下面的内容,其中我指定了 基于渲染通道的不同材质:
planeMaterial.leftEyeBaseColor = MaterialColorParameter.texture(LeftTexture)
planeMaterial.rightEyeBaseColor = MaterialColorParameter.texture(RightTexture)
然后在左眼渲染通道中将使用左侧纹理,类似地 右眼渲染通道。我怎样才能做到这一点?我希望我能做到这一点无需 自定义材质/着色器。
更新:我确实在这个随机站点的RealityKit节点下找到了相机索引开关(RealityKit)。也许这是什么 可以在表面着色器或 Reality Composer 中使用。
在 https://developer.apple.com/forums/thread/733813 找到的着色器图非常适合我。
使用该图形定义一个着色器,为其命名,然后将该名称指定为 RCP 中对象的
Material
Scene
。您将看到渲染到该对象上的立体对。
让我困惑的是,在 Reality Composer Pro 编辑器中,着色器预览是纯黑色的。在 RCP 编辑窗口中,物体的表面几乎是纯黑色的(尽管您几乎看不到物体后面的材质)。
在设备上预览可以在 AVP 上很好地渲染场景。如果您没有实际的 Apple Vision Pro 来测试,那么您就会陷入困境。摄像机索引开关的
Mono
输入在 RCP 编辑器中正确渲染其图像(如果未设置 Left
和 Right
输入)。因此,在开发过程中可能需要进行一些程序化切换。
我已提交反馈 FB13688396,请求在编辑器中使用更明显的占位符,并请求文档。