Cómo progtwigr envolver png textura alnetworkingedor del cubo en SceneKit

Soy nuevo en SceneKit … intentando que algunas cosas básicas funcionen sin mucho éxito hasta ahora. Por alguna razón, cuando trato de aplicar una textura png a un CNBox termino con nada más que negrura. Aquí está el fragment de código simple que tengo en viewDidLoad:

let sceneView = (view as SCNView) let scene = SCNScene() let boxGeometry = SCNBox(width: 10.0, height: 10.0, length: 10.0, chamferRadius: 1.0) let mat = SCNMaterial() mat.locksAmbientWithDiffuse = true mat.diffuse.contents = ["sofb.png","sofb.png","sofb.png","sofb.png","sofb.png", "sofb.png"] mat.specular.contents = UIColor.whiteColor() boxGeometry.firstMaterial = mat let boxNode = SCNNode(geometry: boxGeometry) scene.rootNode.addChildNode(boxNode) sceneView.scene = scene sceneView.autoenablesDefaultLighting = true sceneView.allowsCameraControl = true 

Lo que termina pareciendo es una fuente de luz blanca que se refleja en un cubo negro sobre un background negro. ¿Qué me estoy perdiendo? Aprecio todas las respuestas

Pasar una matriz de imágenes (para crear un map de cubo) solo es compatible con la propiedad de material reflective y el background la escena.

En su caso, todas las imágenes son iguales, por lo que solo tendría que asignar la image (no una matriz) a los contenidos para que aparezca en todos los lados de la caja

Si tuvieras imágenes diferentes, buildías un object diferente de SCNMaterial de cada uno de manera similar:

 let material_L = SCNMaterial() material_L.diffuse.contents = UIImage(named: "CapL") 

Aquí, CapL se refiere a un file .png que se ha almacenado en la carpeta Assets.xcassets del proyecto. Después de crear 6 objects de este tipo, entrégalos a boxNode de la siguiente manera:

 boxGeometry.materials = [material_L, material_green_r, material_K, material_purple_r, material_g, material_j] 

Tenga en count que "boxGeometry" se denominaría mejor "cuadro" o "cubo". Además, sería una buena idea hacer ese trabajo en una nueva class en su proyecto, construido como:

 class BoxScene: SCNScene { 

Entonces, usted llamaría con Swift moderno en su vista. Método de viewDidLoad como este:

 let scnView = self.view as! SCNView scnView.scene = BoxScene() 

(Para que la instrucción deje funcionar, vaya a Main.storyboard -> View Controller Scene -> View Controller -> View -> Identity icon Luego, en Custom Class, cámbielo de UIView a SCNView. De lo contrario, recibirá un post de error, como :

No se pudo convertir el valor del tipo 'UIView' a 'SCNView'