SCNGeometryElement
索引数据的容器,用于描述顶点如何连接以定义三维对象或几何。
您可以将几何元素与SCNGeometrySource对象一起使用来定义自定义SCNGeometry对象或检查组成现有几何的数据。使用三步过程创建自定义几何:
创建一个或多个SCNGeometrySource对象,每个对象都定义每个顶点信息,例如几何中所有顶点的位置,表面法线或纹理坐标。
创建至少一个SCNGeometryElement对象,该对象包含一组索引,这些索引用于标识几何图形源中的顶点并描述SceneKit在渲染几何图形时用于连接顶点的图形基元。
从几何源和几何元素创建SCNGeometry实例。
当SceneKit渲染几何图形时,每个几何图形元素都对应于发送到GPU的绘制命令。由于不同的渲染状态需要单独的绘制命令,因此可以使用多个几何元素定义一个几何。例如,下面显示的茶壶几何具有四个几何元素,因此您最多可以分配四个SCNMaterial对象,以使每个元素具有不同的外观。但是由于渲染时每个绘图命令都会占用CPU时间,因此,最小化自定义几何图形中的元素数量可以提高渲染性能。
convenience init(data: Data?, primitiveType: SCNGeometryPrimitiveType, primitiveCount: Int, bytesPerIndex: Int)
使用指定的数据和选项来创建对象
渲染几何元素时连接顶点的图形基元。 有关可能的值,请参见SCNGeometryPrimitiveType。
case triangles = 0
三角形
case triangleStrip = 1
几何元素的数据是一系列三角形,每个三角形由一个新顶点和前一个三角形的两个顶点描述。
case line = 2
线段
case point = 3
点
var primitiveCount: Int { get }
图形基源的数量
var primitiveRange: NSRange { get set }
几何元素 图形基源的渲染的范围
使用这些属性可以将几何图形显示为点的集合,而不是实体表面或线框。
var pointSize: CGFloat { get set }
几何元素中每个点的宽度,以几何的局部3D坐标空间为单位
var minimumPointScreenSpaceRadius: CGFloat { get set }
以屏幕点为单位测量的最小半径,在该最小半径处可以渲染几何元素中的任何点。
一些视觉效果要求将几何图形呈现为单个点的集合,即点云,而不是实体表面或线框网格。使用此选项时,SceneKit可以将每个点渲染为始终面向相机的小的2D曲面。通过在该表面上应用纹理或自定义着色器,可以一次高效地渲染许多小对象。
要将几何元素渲染为点云,必须设置三个属性:pointSize,minimumPointScreenSpaceRadius和maximumPointScreenSpaceRadius。使用pointSize可以确定每个点在世界空间中显示的大小,以便更远的点显示为较小的2D曲面。使用最小和最大半径属性可确保每个点的屏幕渲染都在像素大小的特定范围内。
例如,要渲染一个点云,其中每个点始终都是一个像素宽(如星空),请将最小和最大大小都设置为一个像素。要渲染屏幕尺寸随视角变化的一组对象(例如代表行星的一组图像),请将最小尺寸设置为一个像素,将最大尺寸设置为更大的值。
网友评论