<!--
{
  "documentType" : "article",
  "framework" : "RealityKit",
  "identifier" : "/documentation/RealityKit/scene-content-models-and-meshes",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "Models and meshes"
}
-->

# Models and meshes

Display virtual objects in your scene with mesh-based models.

## Overview

Meshes are the building blocks for every visible geometric shape and model in RealityKit,
including those that come from a USDZ file.
Create primitive shapes by calling a [`MeshResource`](/documentation/RealityKit/MeshResource) factory method, such as
[`generateBox(size:cornerRadius:)`](/documentation/RealityKit/MeshResource/generateBox(size:cornerRadius:)-8em0v), or define your own mesh
by creating and configuring a [`MeshDescriptor`](/documentation/RealityKit/MeshDescriptor) or a [`LowLevelMesh`](/documentation/RealityKit/LowLevelMesh) instance.

Display meshes in your scene by creating a [`ModelComponent`](/documentation/RealityKit/ModelComponent) for each mesh,
and add that component to an entity.
You can also add [`Material`](/documentation/RealityKit/Material) instances to
your mesh by adding them to the same `ModelComponent` instance.

## Topics

### Model display

  <doc://com.apple.documentation/documentation/visionOS/creating-3d-entities-with-realitykit>

  <doc://com.apple.documentation/documentation/visionOS/creating-a-volumetric-window-in-visionos>

  <doc://com.apple.documentation/documentation/visionOS/creating-a-painting-space-in-visionos>

  <doc://com.apple.documentation/documentation/visionOS/tracking-and-visualizing-hand-movement>

  <doc://com.apple.documentation/documentation/visionOS/applying-mesh-to-real-world-surroundings>

  <doc://com.apple.documentation/documentation/visionOS/obscuring-virtual-items-in-a-scene-behind-real-world-items>

[Manipulating models with RealityKit](/documentation/RealityKit/manipulating-models-with-realitykit)

Interact with detailed 3D models using manipulation and clipping controls.

[`struct ModelComponent`](/documentation/RealityKit/ModelComponent)

A component that contains a mesh and materials for the visual appearance of an entity.

[`class MeshResource`](/documentation/RealityKit/MeshResource)

A high-level representation of a collection of vertices and edges that define a shape.

[`class ModelEntity`](/documentation/RealityKit/ModelEntity)

A representation of a physical object that RealityKit renders and optionally
simulates.

### Render configuration

[`struct ModelSortGroupComponent`](/documentation/RealityKit/ModelSortGroupComponent)

A component that configures the rendering order for an entity’s model.

[`struct ModelSortGroup`](/documentation/RealityKit/ModelSortGroup)

A group that you assign to multiple entities to tell the renderer what
order and how to render the entities in the group.

[`struct OpacityComponent`](/documentation/RealityKit/OpacityComponent)

A component that controls the opacity of an entity and its descendants.

[`struct AdaptiveResolutionComponent`](/documentation/RealityKit/AdaptiveResolutionComponent)

A component that provides the suggested pixels per meter necessary to render an object.

[`struct ModelDebugOptionsComponent`](/documentation/RealityKit/ModelDebugOptionsComponent)

A component that changes how RealityKit renders its entity to help with
debugging.

[`struct MeshInstancesComponent`](/documentation/RealityKit/MeshInstancesComponent)

A component that performs GPU instancing on the model of the same entity.

### Static meshes

[`struct MeshDescriptor`](/documentation/RealityKit/MeshDescriptor)

Defines a 3D mesh’s structure and data.

[`enum Primitives`](/documentation/RealityKit/MeshDescriptor/Primitives-swift.enum)

Indicates which primitive shape type a mesh applies to its vertex indices.

[`enum Materials`](/documentation/RealityKit/MeshDescriptor/Materials-swift.enum)

### Updatable meshes

[Integrating virtual objects with your environment](/documentation/RealityKit/integrating-virtual-objects-with-your-environment)

Create an immersive game using native anchor support, environmental blending, model manipulation, and mesh instance duplication.

[Creating a spatial drawing app with RealityKit](/documentation/RealityKit/creating-a-spatial-drawing-app-with-realitykit)

Use low-level mesh and texture APIs to achieve fast updates to a person’s brush
strokes by integrating RealityKit with ARKit and SwiftUI.

[Creating a plane with low-level mesh](/documentation/RealityKit/creating-a-plane-with-low-level-mesh)

Create a low-level mesh and set its vertex positions and normals to form a plane.

[`class LowLevelMesh`](/documentation/RealityKit/LowLevelMesh)

A container for vertex data that you can use to create and update meshes using your own format.

[`struct Descriptor`](/documentation/RealityKit/LowLevelMesh/Descriptor-swift.struct)

An object that describes the data format and layout of the buffers in a low-level mesh.

[`struct Part`](/documentation/RealityKit/LowLevelMesh/Part)

An object that describes a range of primitives to display, and their material index.

[`struct Layout`](/documentation/RealityKit/LowLevelMesh/Layout)

An object that describes a set of attributes that share a buffer index, offset,
and stride.

[`struct Attribute`](/documentation/RealityKit/LowLevelMesh/Attribute)

An object that determines how to store vertex attribute data in memory and map it to
RealityKit shader attributes.

[`enum VertexSemantic`](/documentation/RealityKit/LowLevelMesh/VertexSemantic)

Designates the intended usage of a vertex attribute.

[`struct PartsCollection`](/documentation/RealityKit/LowLevelMesh/PartsCollection)

An object that holds a mutable collection low-level mesh parts.

[`class LowLevelBuffer`](/documentation/RealityKit/LowLevelBuffer)

[`class LowLevelInstanceData`](/documentation/RealityKit/LowLevelInstanceData)

### Bounding box retrieval

[`struct BoundingBox`](/documentation/RealityKit/BoundingBox)

An axis-aligned bounding box (AABB).

[`struct OrientedBoundingBox`](/documentation/RealityKit/OrientedBoundingBox)

Representation for an oriented bounding box.
Uses a combination of an axis-aligned bounding box and a rotation vector around
the centroid of the said axis-aligned bounding box to represent an oriented bounding box.

### Text generation options

[`struct GenerateTextOptions`](/documentation/RealityKit/MeshResource/GenerateTextOptions)

A type that determines the configuration for rendering text in 2D,
before it is extruded.

[`typealias Font`](/documentation/RealityKit/MeshResource/Font)

A platform-specific type that represents a font for use in
generating a text mesh.

### 2D path extrusion for 3D mesh creation

[`struct ShapeExtrusionOptions`](/documentation/RealityKit/MeshResource/ShapeExtrusionOptions)

A type that determines the extrusion, chamfering,
and material assignment of
an extruded shape.

[`struct MaterialAssignment`](/documentation/RealityKit/MeshResource/ShapeExtrusionOptions/MaterialAssignment-swift.struct)

A type that determines the material assignments
for each part of an extruded shape.

[`enum ChamferMode`](/documentation/RealityKit/MeshResource/ShapeExtrusionOptions/ChamferMode-swift.enum)

Determines which part of the extrusion to chamfer.

[`enum CurveStrokeResolution`](/documentation/RealityKit/MeshResource/ShapeExtrusionOptions/CurveStrokeResolution)

Designates the resolution at which a smooth curve is discretized.

[`enum ExtrusionMethod`](/documentation/RealityKit/MeshResource/ShapeExtrusionOptions/ExtrusionMethod-swift.enum)

The options that determine the way in which to extrude a
swept shape in 3D.

### Mesh description

[`struct MeshBuffer`](/documentation/RealityKit/MeshBuffer)

Mesh buffer containing elements of any type.

[`protocol MeshBufferContainer`](/documentation/RealityKit/MeshBufferContainer)

Conforming objects contain a table of mesh buffers.

[`protocol MeshBufferSemantic`](/documentation/RealityKit/MeshBufferSemantic)

A protocol that holds an identifier value for mesh buffers.

[`enum MeshBuffers`](/documentation/RealityKit/MeshBuffers)

An object that holds the data for an model entity’s mesh.

[`struct AnyMeshBuffer`](/documentation/RealityKit/AnyMeshBuffer)

Mesh buffer stored in the container.

[`struct MeshInstanceCollection`](/documentation/RealityKit/MeshInstanceCollection)

An object that holds a collection of mesh resource instances.

[`struct MeshModelCollection`](/documentation/RealityKit/MeshModelCollection)

An object that holds a collection of mesh models.

[`struct MeshPartCollection`](/documentation/RealityKit/MeshPartCollection)

An object that holds a collection of mesh parts.

### Mesh skeletons

[`struct Skeleton`](/documentation/RealityKit/MeshResource/Skeleton)

A skeleton consists of a hierarchy of joints. Each joint defines a coordinate space.
Portions of a model may be thought of as having a position in a joint’s local space.

[`struct Joint`](/documentation/RealityKit/MeshResource/Skeleton/Joint)

A named joint in a [`MeshResource.Skeleton`](/documentation/RealityKit/MeshResource/Skeleton).

[`struct MeshSkeletonCollection`](/documentation/RealityKit/MeshSkeletonCollection)

An object that holds a collection of skeletons used by a mesh resource.

[`struct MeshJointInfluence`](/documentation/RealityKit/MeshJointInfluence)

A binding to a joint, which consists of the joint’s index and the weight of that joint’s
influence on a vertex.

[`struct JointInfluences`](/documentation/RealityKit/MeshResource/JointInfluences)

A buffer of vertex-joint influences which bind the mesh part’s vertices to a skeleton via a
skinning deformation.

### Mesh resource data

[`struct Contents`](/documentation/RealityKit/MeshResource/Contents-swift.struct)

Value of the contents of the resource.

[`struct Instance`](/documentation/RealityKit/MeshResource/Instance)

An object that transforms a model to a location.

[`struct Model`](/documentation/RealityKit/MeshResource/Model)

A model consists of a list of parts.

[`struct Part`](/documentation/RealityKit/MeshResource/Part)

A part of a model consisting of a single material.

### Blend shape management

[`struct BlendShapeWeightsComponent`](/documentation/RealityKit/BlendShapeWeightsComponent)

A component that provides access to the current weights associated with all blend shape meshes on an entity.

[`class BlendShapeWeightsMapping`](/documentation/RealityKit/BlendShapeWeightsMapping)

A mapping of blend weights to the target meshes that those weights affect.

[`struct BlendShapeWeights`](/documentation/RealityKit/BlendShapeWeights)

A set of animatable weight values that collectively represent
the blending amounts for all the blend shapes’ blend targets.

[`struct BlendShapeWeightsData`](/documentation/RealityKit/BlendShapeWeightsData)

A structure that encapsulates the blend shape name, blend shape weights and the names
of those weights to be stored by the blend shape weights set.

[`struct BlendShapeWeightsSet`](/documentation/RealityKit/BlendShapeWeightsSet)

A custom collection of named blend shape weights.

### Entity compliance

[`protocol HasModel`](/documentation/RealityKit/HasModel)

An interface that provides meshes and materials to define the visual
appearance of an entity.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)