如何减少RealityKit中阴影的不透明度? [英] How can I reduce the opacity of the shadows in RealityKit?

查看:172
本文介绍了如何减少RealityKit中阴影的不透明度?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Reality Composer中组成了一个场景,并在其中添加了3个对象.问题在于阴影太浓(暗).

I composed a scene in Reality Composer and added 3 objects in it. The problem is that the shadows are too intense (dark).

我尝试从

I tried using the Directional Light in RealityKit from this answer rather than a default light from Reality Composer (since you don't have an option to adjust light in it).

更新 我按照答案中的@AndyFedo的说明实施了聚光灯照明.阴影仍然很暗.

Update I implemented the spotlight Lighting as explained by @AndyFedo in the answer. The shadow is still so dark.

推荐答案

当我在场景开始"上使用隐藏"动作序列并发布通知以在点击手势上调用显示"动作序列时,阴影显得更暗. 当我将Object缩放到0%并发布Notification以便在轻击手势上调用"Move,Rotate,Scale to"动作序列时,阴影已修复.

The shadows appear darker when I use "Hide" action sequence on "Scene Start" and post a notification to call "Show" action sequence on tap gesture. The shadows were fixed when I scaled the Object to 0% and post Notification to call "Move,Rotate,Scale to" action sequence on tap gesture.

缩放图像

取消隐藏图片

具有隐藏动作和缩放动作的对象差异

import UIKit

import RealityKit

import ARKit


class Lighting: Entity, HasDirectionalLight {
    required init() {
        super.init()
        self.light = DirectionalLightComponent(color: .red, intensity: 1000, isRealWorldProxy: true)
    }
}

class SpotLight: Entity, HasSpotLight {

    required init() {
        super.init()
        self.light = SpotLightComponent(color: .yellow,
                                        intensity: 50000,
                                        innerAngleInDegrees: 90,
                                        outerAngleInDegrees: 179, // greater angle – softer shadows
            attenuationRadius: 10) // can't be Zero

    }
}

class ViewController: UIViewController {

    @IBOutlet var arView: ARView!

    enum TapObjects {
        case None
        case HiddenChair
        case ScaledChair
    }    
    var furnitureAnchor : Furniture._Furniture!
    var tapObjects : TapObjects = .None

    override func viewDidLoad() {
        super.viewDidLoad()

        furnitureAnchor = try! Furniture.load_Furniture()
        arView.scene.anchors.append(furnitureAnchor)

        addTapGesture()

    }

    func addTapGesture() {
        let tapGesture = UITapGestureRecognizer(target: self, action: #selector(onTap))
        arView.addGestureRecognizer(tapGesture)
    }

    @objc func onTap(_ sender: UITapGestureRecognizer) {

        switch tapObjects {
        case .None:
            furnitureAnchor.notifications.unhideChair.post()
            tapObjects = .HiddenChair
        case .HiddenChair:
            furnitureAnchor.notifications.scaleChair.post()
            tapObjects = .ScaledChair
        default:
            break
        }

    }
}

这篇关于如何减少RealityKit中阴影的不透明度?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆