Swift 无法将纹理图像添加到ARKit中的立方体

Swift 无法将纹理图像添加到ARKit中的立方体,swift,augmented-reality,arkit,Swift,Augmented Reality,Arkit,我无法使用Material对象向ARKit中的立方体添加图像 代码如下: import UIKit import SceneKit import ARKit class SimpleBoxViewController: UIViewController, ARSCNViewDelegate { var sceneView: ARSCNView! override func viewDidLoad() { super.viewDidLoad() self.sceneView

我无法使用Material对象向ARKit中的立方体添加图像

代码如下:

import UIKit
import SceneKit
import ARKit

class SimpleBoxViewController: UIViewController, ARSCNViewDelegate {

var sceneView: ARSCNView!

override func viewDidLoad() {
    super.viewDidLoad()

    self.sceneView = ARSCNView(frame: self.view.frame)
    self.view.addSubview(self.sceneView)

    sceneView.delegate = self
    sceneView.showsStatistics = true

    let scene = SCNScene()

    let box = SCNBox(width: 0.2, height: 0.2, length: 0.2, chamferRadius: 0)

    let material = SCNMaterial() 

    //This is not working
    material.diffuse.contents = UIImage(named: "<someImage>.png")

    let node = SCNNode() 
    node.geometry = box
    node.geometry?.materials = [material]
    node.position = SCNVector3(0, -0.1, -0.5)
    scene.rootNode.addChildNode(node)

    sceneView.scene = scene


}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    let configuration = ARWorldTrackingConfiguration()
    sceneView.session.run(configuration)
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)

    // Pause the view's session
    sceneView.session.pause()
}
我试图添加各种不同的图像,但没有效果。唯一有效的图像是名为textures.png的图像,该图像已预加载到ARKit项目中


是否对要加载的图像有特定要求

我对此不是100%确定,但问题可能是在imageName中包含.png,因为此图像应该在您的资产文件夹中

不管怎么说,这段代码对我来说很有用,并且在创建带有图像的多维数据集时尝试做同样的事情

var box = SCNBox(width: pd.width, height: pd.height, length: 0.01,
chamferRadius: 0.0)
var imageMaterial = SCNMaterial()
var image = UIImage(named: "image")
imageMaterial.diffuse.contents = image
box.materials = [imageMaterial, imageMaterial, imageMaterial, imageMaterial, imageMaterial, imageMaterial]
var cube = SCNNode(geometry: box)

我对此不是100%确定,但问题可能是在imageName中包含.png,因为此图像应该在您的资产文件夹中

不管怎么说,这段代码对我来说很有用,并且在创建带有图像的多维数据集时尝试做同样的事情

var box = SCNBox(width: pd.width, height: pd.height, length: 0.01,
chamferRadius: 0.0)
var imageMaterial = SCNMaterial()
var image = UIImage(named: "image")
imageMaterial.diffuse.contents = image
box.materials = [imageMaterial, imageMaterial, imageMaterial, imageMaterial, imageMaterial, imageMaterial]
var cube = SCNNode(geometry: box)

您必须添加如下路径:

 material.diffuse.contents = UIImage(named: "art.scnassets/textur")

这对我很有用。

您必须添加如下路径:

 material.diffuse.contents = UIImage(named: "art.scnassets/textur")

这对我来说很有效。

我也面临着同样的问题。我已经将png文件复制到Assets.xcsets文件夹中,它对我有用。

我也面临同样的问题。我已将png文件复制到Assets.xcsets文件夹中,并且它对我有用。

这是正确的:uiImageName:不需要扩展名,例如pngThats正确的:uiImageName:不需要扩展名,例如png