2015-02-07 1 views
3

저는 SceneKit을 처음 사용했습니다 ... 지금까지별로 성공하지 못한 채 몇 가지 기본 작업을 수행하려고했습니다. 나는 CNBox에 png 텍스처를 적용하려고 할 때 왠지 어둡기 만합니다. 이처럼 보이는 끝나는 무엇SceneKit에서 큐브 주위에 PNG 텍스처를 프로그래밍 방식으로 래핑하는 방법

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 

검은 배경에 검은 큐브의 반영 백색 광원입니다 : 여기에 내가있는 viewDidLoad에있는 간단한 코드입니다. 내가 뭘 놓치고 있니? 모든 응답을 부탁드립니다

답변

0

큐브 맵을 만들기 위해 이미지 배열을 전달하는 것은 reflective 재질 속성과 장면의 background에 의해서만 지원됩니다. 귀하의 경우에는

는, 모든 이미지는 동일합니다, 그래서 당신은 당신이 다른 한 경우는 상자

+0

이 줄을 배열 대신 변경했을 때 작동하기 시작했습니다. 'mat.diffuse.contents = "sofb.png"' – Bret

3

의 모든면에 표시해야 할 내용에 이미지 (안 배열)을 할당해야 이미지는, 당신과 같이 각에서 다른 SCNMaterial 객체를 구축 할 것입니다 :

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

, CAPL 프로젝트의 Assets.xcassets 폴더에 저장되어있는 .PNG 파일을 참조. "boxGeometry는"더 나은 "상자"또는 "큐브"라는 것이라고

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

참고 : 다음과 같이 6 개 같은 객체를 구축 한 후에는 boxNode에 손. 당신은 다음과 같이 당신의 ViewController의있는 viewDidLoad 메소드에서 현대 스위프트와 부를 것이다

class BoxScene: SCNScene { 

:

let scnView = self.view as! SCNView 
scnView.scene = BoxScene() 
또한, 같은 건설 프로젝트에 새로운 클래스에 그 일을 할 수있는 좋은 생각 일 것입니다

(let 문이 작동하려면 Main.storyboard -> View Controller Scene -> View Controller -> View -> Identity 아이콘으로 이동 한 다음 사용자 정의 클래스에서 UIView에서 SCNView로 변경하십시오. 다음과 같은 메시지 :

'SCNView'에 'UIView'를 입력하십시오.

관련 문제