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



我无法使用"材料"对象将图像添加到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%确定的,但是问题可能在于将.png与Imagename一起包含,因为此图像应该在您的资产文件夹中。

无论如何,此代码对我有用,并且在使用图像创建立方体方面尝试了同一件事。

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")

这对我有用。

我也面临同一问题。我已将PNG文件复制到Assets.xcassets文件夹及其为我的作品中。

最新更新