Я хочу добиться эффекта тени, как IKEA Place, тень - это палка с виртуальным объектом,
Вот моя реализация.Я добавил направление света и плоскость тени к виртуальному объекту.Когда я перемещал виртуальный объект в сцене, тень не располагалась прямо под дном виртуального объекта.
Вот коды:
func setupShadows() {
let flourPlane = SCNFloor()
let groundPlane = SCNNode()
let groundMaterial = SCNMaterial()
groundMaterial.lightingModel = .constant
groundMaterial.writesToDepthBuffer = true
groundMaterial.readsFromDepthBuffer = true
groundMaterial.colorBufferWriteMask = []
flourPlane.materials = [groundMaterial]
groundPlane.geometry = flourPlane
addChildNode(groundPlane)
// Create a ambient light
let ambientLight = SCNNode()
ambientLight.light = SCNLight()
ambientLight.light?.shadowMode = .deferred
ambientLight.light?.color = UIColor.white
ambientLight.light?.type = .ambient
addChildNode(ambientLight)
// Create a directional light node with shadow
let directionalLightNode = SCNNode()
directionalLightNode.light = SCNLight()
directionalLightNode.light?.type = .directional
directionalLightNode.light?.color = UIColor.white
directionalLightNode.light?.castsShadow = true
directionalLightNode.light?.automaticallyAdjustsShadowProjection = true
directionalLightNode.light?.shadowMode = .deferred
directionalLightNode.light?.categoryBitMask = -1
directionalLightNode.light?.shadowColor = UIColor.black.withAlphaComponent(0.4)
directionalLightNode.rotation = SCNVector4(x: 1, y: 0, z: 0, w: .pi * 1.5)
addChildNode(directionalLightNode)
}