Surfaces are created to be rendered using a
primitive, which may be any of the values defined in [enum Mesh.PrimitiveType].
The
arrays argument is an array of arrays. Each of the [constant Mesh.ARRAY_MAX] elements contains an array with some of the mesh data for this surface as described by the corresponding member of [enum Mesh.ArrayType] or
null if it is not used by the surface. For example,
arrays[0] is the array of vertices. That first vertex sub-array is always required; the others are optional. Adding an index array puts this surface into "index mode" where the vertex and other arrays become the sources of data and the index array defines the vertex order. All sub-arrays must have the same length as the vertex array (or be an exact multiple of the vertex array's length, when multiple elements of a sub-array correspond to a single vertex) or be empty, except for [constant Mesh.ARRAY_INDEX] if it is used.
The
blend_shapes argument is an array of vertex data for each blend shape. Each element is an array of the same structure as
arrays, but [constant Mesh.ARRAY_VERTEX], [constant Mesh.ARRAY_NORMAL], and [constant Mesh.ARRAY_TANGENT] are set if and only if they are set in
arrays and all other entries are
null.
The
lods argument is a dictionary with
float keys and
PackedInt32Array values. Each entry in the dictionary represents an LOD level of the surface, where the value is the [constant Mesh.ARRAY_INDEX] array to use for the LOD level and the key is roughly proportional to the distance at which the LOD stats being used. I.e., increasing the key of an LOD also increases the distance that the objects has to be from the camera before the LOD is used.
The
flags argument is the bitwise OR of, as required: One value of [enum Mesh.ArrayCustomFormat] left shifted by
ARRAY_FORMAT_CUSTOMn_SHIFT for each custom channel in use, [constant Mesh.ARRAY_FLAG_USE_DYNAMIC_UPDATE], [constant Mesh.ARRAY_FLAG_USE_8_BONE_WEIGHTS], or [constant Mesh.ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY].
Note: When using indices, it is recommended to only use points, lines, or triangles.