SCNGeometry
学习目标 1.了解SceneKit 游戏框架中系统包含的几何对象. 2.学习如何将几何形状物体绑定的节点上,显示到视图中.
系统提供的几何形状讲解
...
switch index {
case 0:
//长方体
let box = SCNBox(width: 1, height: 1, length: 1, chamferRadius: 0)
box.firstMaterial?.diffuse.contents = "art.scnassets/2.jpg"
let boxNode = SCNNode(geometry: box)
scnView?.scene?.rootNode.addChildNode(boxNode)
case 1:
//平面
let plane = SCNPlane(width: 1, height: 1)
plane.firstMaterial?.diffuse.contents = "art.scnassets/2.jpg"
let planeNode = SCNNode(geometry: plane)
scnView?.scene?.rootNode.addChildNode(planeNode)
case 2:
//三棱锥
let pyramid = SCNPyramid(width: 1, height: 1, length: 1)
pyramid.firstMaterial?.diffuse.contents = "art.scnassets/1.jpg"
let pyramidNode = SCNNode(geometry: pyramid)
scnView?.scene?.rootNode.addChildNode(pyramidNode)
case 3:
//球体
let shpere = SCNSphere(radius: 0.5)
shpere.firstMaterial?.diffuse.contents = "art.scnassets/1.jpg"
let shpereNode = SCNNode(geometry: shpere)
scnView?.scene?.rootNode.addChildNode(shpereNode)
case 4:
//圆柱体
let cylinder = SCNCylinder(radius: 0.5, height: 1)
cylinder.firstMaterial?.diffuse.contents = "art.scnassets/2.jpg"
let cylinderNode = SCNNode(geometry: cylinder)
scnView?.scene?.rootNode.addChildNode(cylinderNode)
case 5:
//圆锥体
let cone = SCNCone(topRadius: 0, bottomRadius: 0.5, height: 1)
cone.firstMaterial?.diffuse.contents = "art.scnassets/2.jpg"
let coneNode = SCNNode(geometry: cone)
scnView?.scene?.rootNode.addChildNode(coneNode)
case 6:
//管道
let tube = SCNTube(innerRadius: 0.4, outerRadius: 0.5, height: 1)
tube.firstMaterial?.diffuse.contents = "art.scnassets/1.jpg"
let tubeNode = SCNNode(geometry: tube)
scnView?.scene?.rootNode.addChildNode(tubeNode)
case 7:
//环面
let torus = SCNTorus(ringRadius: 0.5, pipeRadius: 0.2)
torus.firstMaterial?.diffuse.contents = "art.scnassets/2.jpg"
let torusNode = SCNNode(geometry: torus)
scnView?.scene?.rootNode.addChildNode(torusNode)
case 8:
//地板
let floor = SCNFloor()
floor.firstMaterial?.diffuse.contents = "art.scnassets/1.jpg"
let floorNode = SCNNode(geometry: floor)
scnView?.scene?.rootNode.addChildNode(floorNode)
case 9:
//文字模型
let text = SCNText(string: "Apple", extrusionDepth: 0.5)
text.firstMaterial?.diffuse.contents = UIColor.white
text.font = UIFont.systemFont(ofSize: 1)
let textNode = SCNNode(geometry: text)
textNode.position = SCNVector3Make(0, 0, 0)
textNode.scale = SCNVector3Make(0.5, 0.5, 0.5)
scnView?.scene?.rootNode.addChildNode(textNode)
case 10:
//自定义形状
let path = UIBezierPath.init(roundedRect: CGRect.init(x: 0, y: 0, width: 0.5, height:0.5), cornerRadius: 0.5)
let shape = SCNShape(path: path, extrusionDepth: 2)
shape.firstMaterial?.diffuse.contents = "art.scnassets/1.jpg"
let shapeNode = SCNNode(geometry: shape)
scnView?.scene?.rootNode.addChildNode(shapeNode)
default:
break
}
...