newEllipsoid(withRadii:radialSegments:verticalSegments:geometryType:inwardNormals:hemisphere:allocator:)
Creates a mesh in the shape of an ellipsoid or sphere.
Declaration
class func newEllipsoid(withRadii radii: vector_float3, radialSegments: Int, verticalSegments: Int, geometryType: MDLGeometryType, inwardNormals: Bool, hemisphere: Bool, allocator: (any MDLMeshBufferAllocator)?) -> SelfParameters
- radii:
A vector containing the width (x-component), height (y-component), and depth (z-component) of the bounding box of the ellipsoid to generate. If all components are equal, this method generates a sphere.
- radialSegments:
The number of points to generate around the horizontal circumference of the ellipsoid (that is, its cross-section in the xz-plane). A larger number of points increases rendering fidelity but decreases rendering performance.
- verticalSegments:
The number of points to generate along the height of the ellipsoid. A larger number of points increases rendering fidelity but decreases rendering performance.
- geometryType:
The type of geometric primitive — triangles or quads — from which to construct the mesh.
- inwardNormals:
True to generate normal vectors pointing toward the center of the ellipsoid; False to generate normal vectors pointing outward.
- hemisphere:
True to generate only the upper half of the ellipsoid or sphere (a dome); False to generate a complete ellipsoid or sphere.
- allocator:
An object responsible for allocating mesh vertex data. If
nil, Model I/O uses an internal allocator object.
Return Value
A new mesh object.
Discussion
This method generates vertex data for an ellipsoid centered at the origin of its local coordinate system.
The inwardNormals parameter determines the direction of generated vertex normal vectors for the mesh. Specify true if the mesh will be viewed from inside (for example, for use in a sky effect), or false if the mesh will be viewed from outside.
The allocator parameter controls vertex data allocation for the mesh. For example, to use the MetalKit framework for loading vertex data into GPU buffers for rendering using Metal, pass a MTKMeshBufferAllocator object. By specifying an allocator, you can ensure that mesh data is copied a minimal number of times between being read from a file and being loaded into GPU memory for rendering.
See Also
Creating Parametric Meshes
newBox(withDimensions:segments:geometryType:inwardNormals:allocator:)newCylinder(withHeight:radii:radialSegments:verticalSegments:geometryType:inwardNormals:allocator:)newEllipticalCone(withHeight:radii:radialSegments:verticalSegments:geometryType:inwardNormals:allocator:)newPlane(withDimensions:segments:geometryType:allocator:)newCapsule(withHeight:radii:radialSegments:verticalSegments:hemisphereSegments:geometryType:inwardNormals:allocator:)newIcosahedron(withRadius:inwardNormals:allocator:)newIcosahedron(withRadius:inwardNormals:geometryType:allocator:)init(boxWithExtent:segments:inwardNormals:geometryType:allocator:)init(sphereWithExtent:segments:inwardNormals:geometryType:allocator:)init(cylinderWithExtent:segments:inwardNormals:topCap:bottomCap:geometryType:allocator:)init(coneWithExtent:segments:inwardNormals:cap:geometryType:allocator:)init(planeWithExtent:segments:geometryType:allocator:)init(icosahedronWithExtent:inwardNormals:geometryType:allocator:)init(capsuleWithExtent:cylinderSegments:hemisphereSegments:inwardNormals:geometryType:allocator:)init(hemisphereWithExtent:segments:inwardNormals:cap:geometryType:allocator:)