Если вам нужны мягкие и полупрозрачные тени в вашей сцене , используйте осветительный прибор SpotLight
, который доступен при реализации протокола HasSpotLight
. По умолчанию SpotLight
ориентирован на север. На данный момент в RealityKit нет opacity
свойства экземпляра для теней.
outerAngleInDegrees
свойство экземпляра должно быть не более 179 degrees
.
import RealityKit
class Lighting: 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
}
}
Затем создайте shadow
экземпляр:
class ViewController: NSViewController {
@IBOutlet var arView: ARView!
override func awakeFromNib() {
arView.environment.background = .color(.black)
let spotLight = Lighting().light
let shadow = Lighting().shadow
let boxAndCurlAnchor = try! Experience.loadBoxAndCurl()
boxAndCurlAnchor.components.set(shadow!)
boxAndCurlAnchor.components.set(spotLight)
arView.scene.anchors.append(boxAndCurlAnchor)
}
}
Вот изображение, созданное без этой строки: boxAnchor.components.set(shadow!)
.
![enter image description here](https://i.stack.imgur.com/gHnxu.jpg)
Вот изображение, полученное со следующим значением outerAngleInDegrees = 140
:
![enter image description here](https://i.stack.imgur.com/7XXfm.jpg)
Вот изображение, полученное со следующим значением outerAngleInDegrees = 179
:
![enter image description here](https://i.stack.imgur.com/mTCCl.jpg)
В комнате держите прожектор SpotLight на высоте 2 ... 4 метра от модели.
Для более крупных объектов вы должны использовать более высокие значения для intensity
и attenuationRadius
:
self.light = SpotLightComponent(color: .white,
intensity: 625000,
innerAngleInDegrees: 10,
outerAngleInDegrees: 120,
attenuationRadius: 10000)
![enter image description here](https://i.stack.imgur.com/WkJB1.jpg)