2017-09-03 6 views
0

"재질"개체를 사용하여 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() 
} 

나는 여러 다른 이미지 아무것도 작동하지를 추가하려고 : 여기

는 코드입니다. 유일하게 작동하는 이미지는 ARKit 프로젝트에 미리로드 된 "textures.png"라는 이미지입니다.

이미지를로드하기위한 특정 요구 사항이 있습니까?

답변

2

저는이 이미지가 100 % 확신 할 수 없지만이 이미지는 이미지 폴더에 있어야하므로 .png를 imageName과 함께 사용하는 것이 문제 일 수 있습니다.

어쨌든이 코드는 저에게 효과적이며 이미지가있는 큐브를 만드는 것과 관련하여 동일한 작업을 시도합니다. 이것은 나를 위해 작동

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

:

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) 
+1

정확함 : UIImage (이름 : "")는 확장을 필요로하지 않습니다. PNG –

0

당신은 같은 경로를 추가해야합니다.