2014-12-10 1 views
0
import UIKit 
import SceneKit 

class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let scnView = self.view as SCNView 

     scnView.backgroundColor = UIColor.blackColor() 

     let sizeScnView = CGSize(width: 100.0, height: 100.0) 
     let centerView = CGPoint(x: CGRectGetMidX(self.view.frame) - sizeScnView.width/2, y: CGRectGetMidY(self.view.frame) - sizeScnView.height/2) 
     let scene = Tile(frame: CGRect(origin: centerView, size: sizeScnView)) 
     scnView.scene = scene 
    } 
} 





import UIKit 
import SceneKit 

class Tile: SCNScene { 

    override init() { 
     super.init() 

     let ball = SCNSphere(radius: 0.5) 
     let ballNode = SCNNode(geometry: ball) 
     ball.firstMaterial?.diffuse.contents = UIColor.orangeColor() 
     self.rootNode.addChildNode(ballNode) 

    } 

    required init(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 
} 
+0

다른 어떤 결과 현재 코드에 대해 작동하지 않는 것을 설명하고, 잘 작동하는 것 같다 읽기 네가 원해. (코드처럼 보이지 않는 일부 줄에는 서식 문제가 있습니까?) – RobP

+0

"let scene ="줄에 오류 메시지가 나타납니다. 오류 메시지 : 호출에서 추가 인수 'frame' – swl

+0

let scene = Tile (프레임 : CGRect (x : 0, y : 0, width : 100, height : 100)) // 작동하지 않음 – swl

답변

1

그냥 질문 아직도 내가 작은 시험에서 이것을 실행하고 열려있는 경우 모르는이 기사를

class ViewController: UIViewController { 
    var sceneView: SCNView! 
    var camera: SCNNode! 
    var light: SCNNode! 
    var sphere1: SCNNode! 
    override func viewDidLoad() { 
    super.viewDidLoad() 
    let sizeScnView = CGSize(width: 420.0, height: 580.0) 
    let centerView = CGPoint(x: CGRectGetMidX(self.view.frame) - sizeScnView.width/2, y: CGRectGetMidY(self.view.frame) - sizeScnView.height/2) 
    sceneView = SCNView(frame: CGRect(origin: centerView, size: sizeScnView)) 
    sceneView.scene = SCNScene() 
    self.view.addSubview(sceneView) 
    sceneView.backgroundColor = UIColor.blackColor() 
    let camera = SCNCamera() 
    camera.zFar = 10000 
    self.camera = SCNNode() 
    self.camera.camera = camera 
    self.camera.position = SCNVector3(x: -20, y: 55, z: 20) 
    let constraint = SCNLookAtConstraint(target: ground) 
    constraint.gimbalLockEnabled = true 
    self.camera.constraints = [constraint] 

    let ambientLight = SCNLight() 
    ambientLight.color = UIColor.darkGrayColor() 
    ambientLight.type = SCNLightTypeAmbient 
    self.camera.light = ambientLight 

    let spotLight = SCNLight() 
    spotLight.type = SCNLightTypeSpot 
    spotLight.castsShadow = true 
    spotLight.spotInnerAngle = 70.0 
    spotLight.spotOuterAngle = 90.0 
    spotLight.zFar = 500 
    light = SCNNode() 
    light.light = spotLight 
    light.position = SCNVector3(x: 0, y: 25, z: 25) 
    light.constraints = [constraint] 

    let sphereGeometry = SCNSphere(radius: 1.5) 
    let sphereMaterial = SCNMaterial() 
    sphereMaterial.diffuse.contents = UIColor.greenColor() 
    sphereGeometry.materials = [sphereMaterial] 
    sphere1 = SCNNode(geometry: sphereGeometry) 
    sphere1.position = SCNVector3(x: -15, y: 1.5, z: 0) 

    sceneView.scene?.rootNode.addChildNode(self.camera) 
    sceneView.scene?.rootNode.addChildNode(light) 
    sceneView.scene?.rootNode.addChildNode(sphere1) 


    } 
} 
+0

그라운드 란 무엇입니까? – swl

+0

그라운드를 루트 장면에 추가 할 수 있습니다. 줄을 지우지 않아서 죄송합니다. ///// let let constraint = SCNLookAtConstraint (target : ground) ////////// constraint.gimbalLockEnabled = true –

1

다른 UIView 당신이 (View Programming Guide for iOS 참조) SCNViewframe 설정할 수 있습니다.

SCNScene 인스턴스에는 2D 크기가 없습니다 (루트 노드의 경계 상자를 계산할 수 있지만 그 다른 것).

관련 문제