【问题标题】:Adding a Point Light in RealityKit在 RealityKit 中添加点光源
【发布时间】:2021-01-28 21:26:16
【问题描述】:

我有一个非常简单的 RealityKit 场景(没有 AR),上面有一个盒子。虽然盒子的侧面是彩色的(我假设是默认灯),但正面是黑色的。所以我决定在相机的位置添加一个点光源(基于其他 StackOverflow 答案,以及与框相同的锚点),但框仍然是黑色的。我错过了什么?

override func viewDidLoad() {
        super.viewDidLoad()
        
        myARView.environment.background = .color(.black)

        let anchor = AnchorEntity()
        myARView.scene.anchors.append(anchor)
        
        let box = MeshResource.generateBox(size: 0.3) // Generate mesh
        let material = SimpleMaterial(color: .blue, isMetallic: true)

        let entity = ModelEntity(mesh: box, materials: [material])
        entity.name="My Box"
        entity.generateCollisionShapes(recursive: true)
        entity.position=SIMD3(x: 0.2, y: 0.8, z: -1)
        anchor.addChild(entity)
        
        let pointLight = PointLight()
        pointLight.light.color = .red
        pointLight.light.intensity = 15000000
        pointLight.light.attenuationRadius = 7.0
        pointLight.position = myARView.cameraTransform.translation // 0, 0, 2
        
        anchor.addChild(pointLight)
    }

【问题讨论】:

    标签: ios swift lighting realitykit


    【解决方案1】:

    这里有几件事,最引人注目的是您的材质设置为 .blue,并且您尝试使用 .red 灯点亮它。由颜色制成的材料包含零红色(以 rgb 形式),因此光线对其没有影响。如果您使用的是带有红色滤光片的眼镜,绿色和蓝色只会显示为黑色,只有红色会透过。

    即使您将其更改为.white 灯,它看起来也不会有太大不同。这就是将 isMetallic 设置为 true 的默认 SimpleMaterial 的样子;您将看到的只是光的反射,而不是看到光线照射到它。

    这是因为材质的粗糙度设置为 0,稍微增加一点你会看到立方体被点光源点亮。

    var material = SimpleMaterial(color: .blue, isMetallic: true)
    material.roughness = 0.1
    

    另外值得注意的是,你的光强度相当高,我认为这只是因为你之前没有看到效果!

    【讨论】:

    • 谢谢,我现在确实可以看到反射中的光了。然而它是一个小点,有没有办法获得更大的视光尺寸?
    • 增加强度可以增加我认为您所指的点的大小。但可能SpotLight 更适合您的用例
    猜你喜欢
    • 2023-01-24
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    相关资源
    最近更新 更多