我正在按照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]
图像被加载和渲染,只是它总是缺少颜色。原始图像为红色,覆盖图为黑白。 我已经尝试了许多不同的环境和漫反射设置,但没有成功。我在这里想念什么?
谢谢
答案 0 :(得分:1)
在您的代码中,以下行是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
格式。
希望这会有所帮助。
答案 1 :(得分:0)
为以后的参考,这是我发现的内容: 即使将图像保存在不同的组或文件夹中,其名称也不得相同。我使用图像名称作为加载覆盖的参考。当我更改名称并手动(通过开关/大小写)获得引用时,一切正常。