Следуйте этому проекту AR, созданному инженерами Apple: Управление трехмерным взаимодействием и элементами управления пользовательским интерфейсом в дополненной реальности , чтобы узнать, как создать Focus Square
программным способом.
В верхней части веб-страницы есть синяя кнопка Загрузить .
Чтобы создать Focus Circle
как в приложении IKEA, я бы порекомендовал использовать png
файл с предварительно умноженными каналами RGBA, подобными этому (перетащите его на рабочий стол для тестирования):
Для создания shadow вам нужно добавить directional
light в вашу сцену.Чтобы сделать это программно, используйте следующий код:
let lightFixture = SCNNode()
lightFixture.light = SCNLight()
lightFixture.light!.type = .directional
lightFixture.light!.castsShadow = true
lightFixture.light!.shadowMode = .deferred
lightFixture.light!.shadowColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5)
lightFixture.position = SCNVector3(x: 0, y: 20, z: 0)
lightFixture.rotation = SCNVector4(x: -1, y: 0, z: 0, w: .pi/2)
scene.rootNode.addChildNode(lightFixture)
Затем вам необходимо создать невидимую плоскость для вашей полупрозрачной тени:
let shadowPlane = SCNNode()
shadowPlane.geometry = SCNFloor()
shadowPlane.geometry?.firstMaterial!.colorBufferWriteMask = []
shadowPlane.geometry?.firstMaterial!.readsFromDepthBuffer = true
shadowPlane.geometry?.firstMaterial!.writesToDepthBuffer = true
shadowPlane.geometry?.firstMaterial!.lightingModel = .constant
scene.rootNode.addChildNode(shadowPlane)
Вот и все,Надеюсь, это поможет.