我正在按照苹果文档中的示例编写一个图像识别应用程序: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]图像被加载和渲染,只是它总是缺少颜色。原始图像是红色的,覆盖是黑白的。我已经尝试了许多不同的环境光和漫反射设置,但都没有成功。这里我漏掉了什么?
谢谢
发布于 2019-04-25 22:41:39
为了将来参考,这里是我发现的:图像不应该具有相同的名称,即使保存在不同的组或文件夹中。我使用图像的名称作为引用来加载覆盖图。当我手动(通过开关/大小写)更改名称并获取引用时,一切都很正常。
发布于 2019-04-19 13:17:49
在您的代码中,以下行是一个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格式。

https://stackoverflow.com/questions/55747744
复制相似问题