SceneKit已经封装好了很多模型类,为了方便我们可以直接调用这些模型类进行建模,这些模型类都是用于创建一些有一定规律的模型,对于一些不规则的模型是没有办法了。
考虑到这种情况,SceneKit就给我们提供了SCNGeometry这个类的四个个十分有用的方法,
+ (instancetype)geometrySourceWithVertices:(const SCNVector3 *)verticescount:(NSInteger)count;
+ (instancetype)geometrySourceWithNormals:(const SCNVector3 *)normals count:(NSInteger)count;
+ (instancetype)geometrySourceWithTextureCoordinates:(const CGPoint *)texcoord count:(NSInteger)count;
这三个个方法是根据有效的顶点坐标集、法向量集以及贴图坐标集分别创建一个几何体资源对象。
+ (instancetype)geometryElementWithData:(NSData *)dataprimitiveType:(SCNGeometryPrimitiveType)primitiveTypeprimitiveCount:(NSInteger)primitiveCountbytesPerIndex:(NSInteger)bytesPerIndex;
这个方法是根据有效的顶点索引集创建一个几何体元素,学过OpenGl的朋友应该一看就知道怎么用了,没学过也没关系,下面我解释一下。
在Opengl显示一个几何图形需要顶点坐标集,法向量集,贴图坐标集以及顶点索引集,至于什么是顶点坐标,法向量以及贴图坐标可以百度一下。
在Opengl中,所有的图形都是由一些三角形组成的,而三角形是由三个顶点构成的,例如一个正方形,它是由两个三角形组成,而这两个三角形分别由三个顶点构成,示意图我懒得画了,大家可以自己想象。
上面是一个正方形顶点集,将它分解成两个三角形就是生成顶点索引,
如上面的索引数组,里面的数字分别代表顶点集中顶点的位置,也可以看成是顶点的连接顺序,opengl会按照这个顺序连接顶点并生成正方形。
上面分别是法向量和贴图坐标,与顶点集一一对应,下面上代码生成一个正方形
SCNGeometryPrimitiveTypeTriangles表示顶点连接成三角形,primitiveCount为什么是6/3,表示一共生成多少个三角形
下面是结果
今天就介绍到这里,大家可以尝试一下,有问题可以留言或加Q289193866交流一下