学习SceneKit之几何体概览
本系列所有文章目录
获取示例代码
什么是几何体
在序篇中,我们已经初步了解到了球形几何体,我们通过SCNSphere.init(radius: 0.3)可以方便的创建一个半径为0.3的球形几何体。SCNSphere是苹果为我们内置的几何体,当然苹果还为我们内置了很多其他几何体,包括SCNPlane, SCNBox, SCNSphere, SCNPyramid, SCNCone, SCNCylinder, SCNCapsule, SCNTube, SCNTorus,这些在例子中都有展示。在计算机的3D世界中,通常使用顶点数组去表示几何体,比如一个三角形可以表示为(-0.5,0.5, 0),(0.5,0.5, 0),(0,-0.5, 0),(x,y,z)是一个顶点的坐标。一个球体可以通过很多个三角形拼接而成,所以对于一个球体而言,表示它的数据就是这些三角形顶点的集合。当然以上只是一个简化的说明,如果你想知道底层显示几何体的方法和原理,可以去看我的OpenGL ES系列文章。
几个内置几何体的展示
下面为大家展示几个苹果内置的几何体。
SCNCone(圆锥体)
圆锥体接受三个参数上面的半径,下面的半径和高度。
SCNCone.init(topRadius: 0.1, bottomRadius: 0.5, height: 1)
计算机中的圆都是采用多边形接近的方式制作的,圆锥也不例外,圆锥体提供了radialSegmentCount属性控制组成圆锥的面数,默认是一圈48个面。如果把它调整为3,就会变成这样。
圆锥还提供了一个heightSegmentCount属性控制从上到下切成几份。这两个属性值越大,产生的顶点就越多,模型就越精致,但绘制的性能消耗也就越大。
SCNCapsule(胶囊)
胶囊其实就和我们平时吃的感冒胶囊长得一样,两头是半球形,中间是圆柱,生成它只需要提供半球半径和高度两个参数。
SCNCapsule.init(capRadius: 0.1, height: 1)
它也有控制生成模型精度的属性radialSegmentCount,capSegmentCount,heightSegmentCount。
SCNTube(管子)
管子是可以控制管壁厚度的管状几何体。需要提供内径,外径和高度三个参数。
SCNTube.init(innerRadius: 0.3, outerRadius: 0.5, height: 0.4)
SCNTorus(圆环)
圆环可以看作是圈成环的圆柱体,需要提供圆环的半径ringRadius和圆柱体的半径pipeRadius。
SCNTorus.init(ringRadius: 0.5, pipeRadius: 0.1)
3D文本
使用SceneKit可以方便的将文字转换成3D几何体,SCNText还支持设置斜切角,让文字模型的转角不那么生硬。使用起来也很方便。另外,SCNText还支持一个flatness属性,这个值越小,生成出来的文字线条越精细,默认为1,当然越精细性能负担也就越重。
let attrs: [NSAttributedStringKey: Any] = [ .font: UIFont.systemFont(ofSize: 1) ]
let textGeometry = SCNText.init(string: NSAttributedString.init(string: "handyTool", attributes: attrs), extrusionDepth: 0.4)
textGeometry.chamferRadius = 0.1
生成的文字默认不在中间,我根据文本模型的大小调整它的位置,将它放到中间的位置。具体代码在addGeometry方法中。
SCNShape
SCNShape可以将Path转换成3D模型,其实方式和3D文本一样,或者说3D文本就是利用这个原理生成的。因为文字可以先转换成Path,然后再用SCNShape转换成3D模型,读者可以自己试一试用SCNShape生成一些模型。
总结
系统提供的几何体可以说是简单易用,掌握它们也很轻松。不过对于几何体的学习不会止步于此,后面的文章中将会逐步为大家介绍如何自定义几何体,控制几何体的外观以及LOD技术。
相关阅读:
学习SceneKit之序篇
- 双师课堂榜样在你身边——优秀学员学习经验分享(一)
- 胡说有理 | 学习如何学习,成为高效率学习者!(一次演讲)
- 这些让人欲罢不能的学习方法,让学习从此停不下来!
- 期末考又要来检阅你的学习了,这份历史观备考资料助你拿到漂亮的
- 如何解决大规模机器学习的三大痛点?
- AWS DeepLens 先睹为快 | 10分钟搞定你的第一个深度学习项目!
- 倪海厦老师《伤寒论》讲解全套视频免费学习,不能错过的中医经典
- 怕学生生日喝酒出事,贵州宿管阿姨提供学习室聚会并炒菜做饭
- 中国这一创举震撼全球!英国、德国排着队来学习
- CIE推荐的A-level商务学习网站!等了好久终于等到今天!