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
}

...

results matching ""

    No results matching ""