Текстура изображения в SCNMaterial всегда серого цвета. Как применить цвет? - PullRequest
2 голосов
/ 18 апреля 2019

Я пишу приложение для распознавания изображений, следуя этому примеру из документации Apple: https://developer.apple.com/documentation/arkit/detecting_images_in_an_ar_experience

Пока все работает нормально, теперь я хотел бы изменить наложение прозрачной плоскости на изображение.Я установил материал плоскости следующим образом.

let image = "overlay"
let material = SCNMaterial()
material.locksAmbientWithDiffuse = true;
material.isDoubleSided = false
material.diffuse.contents = image
material.ambient.contents = UIColor.white

let planeNode = SCNNode(geometry: plane)
planeNode.geometry?.materials = [material]

Изображение загружается и отображается, только в том, что ему всегда не хватает цвета.Исходное изображение красного цвета, наложение ч / б.Я уже пробовал много разных настроек для ambient и diffuse безуспешно.Что мне здесь не хватает?

Спасибо

Ответы [ 2 ]

1 голос
/ 19 апреля 2019

В вашем коде следующая строка имеет тип String, а не UIImage тип:

let image: String = "overlay"

Попробуйте следующий код:

let plane = SCNPlane(width: 10, height: 10)

let image = UIImage(named: "art.scnassets/texture")
// let image = UIColor.red
// let image = UIColor(hue: 0.25, saturation: 0.5, brightness: 0.75, alpha: 1)

let material = SCNMaterial()
material.locksAmbientWithDiffuse = true
material.isDoubleSided = false
material.diffuse.contents = image
material.ambient.contents = UIColor.white

let planeNode = SCNNode(geometry: plane)
planeNode.geometry?.materials = [material]

scene.rootNode.addChildNode(planeNode)

Кроме того, сохраните ваше изображение для diffuse слота материала в формате PNG.

enter image description here

Надеюсь, это поможет.

0 голосов
/ 25 апреля 2019

Для дальнейшего использования вот что я узнал: изображения не должны иметь одинаковое имя, даже если они сохранены в разных группах или папках.Я использовал имя изображения в качестве ссылки для загрузки наложения.Когда я изменил имя и получил ссылку вручную (переключателем / регистром), все работало просто отлично.

...