axiom-realitykit-ref

安装量: 93
排名: #8736

安装

npx skills add https://github.com/charleswiltgen/axiom --skill axiom-realitykit-ref
RealityKit API Reference
Complete API reference for RealityKit organized by category.
When to Use This Reference
Use this reference when:
Looking up specific RealityKit API signatures or properties
Checking which component types are available
Finding the right anchor type for an AR experience
Browsing material properties and options
Setting up physics body parameters
Looking up animation or audio API details
Checking platform availability for specific APIs
Part 1: Entity API
Entity
// Creation
let
entity
=
Entity
(
)
let
entity
=
Entity
(
components
:
[
TransformComponent
(
)
,
ModelComponent
(
...
)
]
)
// Async loading
let
entity
=
try
await
Entity
(
named
:
"scene"
,
in
:
.
main
)
let
entity
=
try
await
Entity
(
contentsOf
:
url
)
// Clone
let
clone
=
entity
.
clone
(
recursive
:
true
)
Entity Properties
Property
Type
Description
name
String
Identifier for lookup
id
ObjectIdentifier
Unique identity
isEnabled
Bool
Local enabled state
isEnabledInHierarchy
Bool
Effective enabled (considers parents)
isActive
Bool
Entity is in an active scene
isAnchored
Bool
Has anchoring or anchored ancestor
scene
RealityKit.Scene?
Owning scene
parent
Entity?
Parent entity
children
Entity.ChildCollection
Child entities
components
Entity.ComponentSet
All attached components
anchor
HasAnchoring?
Nearest anchoring ancestor
Entity Hierarchy Methods
entity
.
addChild
(
child
)
entity
.
addChild
(
child
,
preservingWorldTransform
:
true
)
entity
.
removeChild
(
child
)
entity
.
removeFromParent
(
)
entity
.
findEntity
(
named
:
"name"
)
// Recursive search
Entity Subclasses
Class
Purpose
Key Component
Entity
Base container
Transform only
ModelEntity
Renderable object
ModelComponent
AnchorEntity
AR anchor point
AnchoringComponent
PerspectiveCamera
Virtual camera
PerspectiveCameraComponent
DirectionalLight
Sun/directional
DirectionalLightComponent
PointLight
Point light
PointLightComponent
SpotLight
Spot light
SpotLightComponent
TriggerVolume
Invisible collision zone
CollisionComponent
ViewAttachmentEntity
SwiftUI view in 3D
visionOS
BodyTrackedEntity
Body-tracked entity
BodyTrackingComponent
Part 2: Component Catalog
Transform
// Properties
entity
.
position
// SIMD3, local
entity
.
orientation
// simd_quatf
entity
.
scale
// SIMD3
entity
.
transform
// Transform struct
// World-space
entity
.
position
(
relativeTo
:
nil
)
entity
.
orientation
(
relativeTo
:
nil
)
entity
.
setPosition
(
pos
,
relativeTo
:
nil
)
// Utilities
entity
.
look
(
at
:
target
,
from
:
position
,
relativeTo
:
nil
)
ModelComponent
let
component
=
ModelComponent
(
mesh
:
MeshResource
.
generateBox
(
size
:
0.1
)
,
materials
:
[
SimpleMaterial
(
color
:
.
red
,
isMetallic
:
true
)
]
)
entity
.
components
[
ModelComponent
.
self
]
=
component
MeshResource Built-in Generators
Method
Parameters
.generateBox(size:)
SIMD3
or single
Float
.generateBox(size:cornerRadius:)
Rounded box
.generateSphere(radius:)
Float
.generatePlane(width:depth:)
Float
,
Float
.generatePlane(width:height:)
Vertical plane
.generateCylinder(height:radius:)
Float
,
Float
.generateCone(height:radius:)
Float
,
Float
.generateText(_:)
String
, with options
CollisionComponent
let
component
=
CollisionComponent
(
shapes
:
[
.
generateBox
(
size
:
SIMD3
(
0.1
,
0.2
,
0.1
)
)
,
.
generateSphere
(
radius
:
0.05
)
,
.
generateCapsule
(
height
:
0.3
,
radius
:
0.05
)
,
.
generateConvex
(
from
:
meshResource
)
]
,
mode
:
.
default
,
// .default or .trigger
filter
:
CollisionFilter
(
group
:
CollisionGroup
(
rawValue
:
1
)
,
mask
:
.
all
)
)
ShapeResource Types
Method
Description
Performance
.generateBox(size:)
Axis-aligned box
Fastest
.generateSphere(radius:)
Sphere
Fast
.generateCapsule(height:radius:)
Capsule
Fast
.generateConvex(from:)
Convex hull from mesh
Moderate
.generateStaticMesh(from:)
Exact mesh
Slowest (static only)
PhysicsBodyComponent
let
component
=
PhysicsBodyComponent
(
massProperties
:
.
init
(
mass
:
1.0
,
inertia
:
SIMD3
(
repeating
:
0.1
)
,
centerOfMass
:
.
zero
)
,
material
:
.
generate
(
staticFriction
:
0.5
,
dynamicFriction
:
0.3
,
restitution
:
0.4
)
,
mode
:
.
dynamic
// .dynamic, .static, .kinematic
)
Mode
Behavior
.dynamic
Physics simulation controls position
.static
Immovable, participates in collisions
.kinematic
Code-controlled, affects dynamic bodies
PhysicsMotionComponent
var
motion
=
PhysicsMotionComponent
(
)
motion
.
linearVelocity
=
SIMD3
(
0
,
5
,
0
)
motion
.
angularVelocity
=
SIMD3
(
0
,
.
pi
,
0
)
entity
.
components
[
PhysicsMotionComponent
.
self
]
=
motion
CharacterControllerComponent
entity
.
components
[
CharacterControllerComponent
.
self
]
=
CharacterControllerComponent
(
radius
:
0.3
,
height
:
1.8
,
slopeLimit
:
.
pi
/
4
,
stepLimit
:
0.3
)
// Move character with gravity
entity
.
moveCharacter
(
by
:
SIMD3
(
0.1
,
-
0.01
,
0
)
,
deltaTime
:
Float
(
context
.
deltaTime
)
,
relativeTo
:
nil
)
AnchoringComponent
// Plane detection
AnchoringComponent
(
.
plane
(
.
horizontal
,
classification
:
.
table
,
minimumBounds
:
SIMD2
(
0.2
,
0.2
)
)
)
AnchoringComponent
(
.
plane
(
.
vertical
,
classification
:
.
wall
,
minimumBounds
:
SIMD2
(
0.5
,
0.5
)
)
)
// World position
AnchoringComponent
(
.
world
(
transform
:
float4x4
(
...
)
)
)
// Image anchor
AnchoringComponent
(
.
image
(
group
:
"AR Resources"
,
name
:
"poster"
)
)
// Face tracking
AnchoringComponent
(
.
face
)
// Body tracking
AnchoringComponent
(
.
body
)
Plane Classification
Classification
Description
.table
Horizontal table surface
.floor
Floor surface
.ceiling
Ceiling surface
.wall
Vertical wall
.door
Door
.window
Window
.seat
Chair/couch
Light Components
// Directional
let
light
=
DirectionalLightComponent
(
color
:
.
white
,
intensity
:
1000
,
isRealWorldProxy
:
false
)
light
.
shadow
=
DirectionalLightComponent
.
Shadow
(
maximumDistance
:
10
,
depthBias
:
0.01
)
// Point
PointLightComponent
(
color
:
.
white
,
intensity
:
1000
,
attenuationRadius
:
5
)
// Spot
SpotLightComponent
(
color
:
.
white
,
intensity
:
1000
,
innerAngleInDegrees
:
30
,
outerAngleInDegrees
:
60
,
attenuationRadius
:
10
)
Accessibility
var
accessibility
=
AccessibilityComponent
(
)
accessibility
.
label
=
"Red cube"
accessibility
.
value
=
"Interactive 3D object"
accessibility
.
traits
=
.
button
accessibility
.
isAccessibilityElement
=
true
entity
.
components
[
AccessibilityComponent
.
self
]
=
accessibility
Additional Components
Component
Purpose
Platform
OpacityComponent
Fade entity in/out
All
GroundingShadowComponent
Contact shadow beneath entity
All
InputTargetComponent
Enable gesture input
visionOS
HoverEffectComponent
Highlight on gaze/hover
visionOS
SynchronizationComponent
Multiplayer entity sync
All
ImageBasedLightComponent
Custom environment lighting
All
ImageBasedLightReceiverComponent
Receive IBL from source
All
Part 3: System API
System Protocol
protocol
System
{
init
(
scene
:
RealityKit
.
Scene
)
func
update
(
context
:
SceneUpdateContext
)
}
SceneUpdateContext
Property
Type
Description
deltaTime
TimeInterval
Time since last update
scene
RealityKit.Scene
The scene
// Query entities
context
.
entities
(
matching
:
query
,
updatingSystemWhen
:
.
rendering
)
EntityQuery
// Has specific component
EntityQuery
(
where
:
.
has
(
HealthComponent
.
self
)
)
// Has multiple components
EntityQuery
(
where
:
.
has
(
HealthComponent
.
self
)
&&
.
has
(
ModelComponent
.
self
)
)
// Does not have component
EntityQuery
(
where
:
.
has
(
EnemyComponent
.
self
)
&&
!
.
has
(
DeadComponent
.
self
)
)
Scene Events
Event
Trigger
SceneEvents.Update
Every frame
SceneEvents.DidAddEntity
Entity added to scene
SceneEvents.DidRemoveEntity
Entity removed from scene
SceneEvents.AnchoredStateChanged
Anchor tracking changes
CollisionEvents.Began
Two entities start colliding
CollisionEvents.Updated
Collision continues
CollisionEvents.Ended
Collision ends
AnimationEvents.PlaybackCompleted
Animation finishes
scene
.
subscribe
(
to
:
CollisionEvents
.
Began
.
self
,
on
:
entity
)
{
event
in
// event.entityA, event.entityB, event.impulse
}
Part 4: RealityView API
Initializers
// Basic (iOS 18+, visionOS 1.0+)
RealityView
{
content
in
// make: Add entities to content
}
// With update
RealityView
{
content
in
// make
}
update
:
{
content
in
// update: Called when SwiftUI state changes
}
// With placeholder
RealityView
{
content
in
// make (async loading)
}
placeholder
:
{
ProgressView
(
)
}
// With attachments (visionOS)
RealityView
{
content
,
attachments
in
// make
}
update
:
{
content
,
attachments
in
// update
}
attachments
:
{
Attachment
(
id
:
"label"
)
{
Text
(
"Hello"
)
}
}
RealityViewContent
content
.
add
(
entity
)
content
.
remove
(
entity
)
content
.
entities
// EntityCollection
// iOS/macOS — camera content
content
.
camera
// RealityViewCameraContent (non-visionOS)
Gestures on RealityView
RealityView
{
content
in
...
}
.
gesture
(
TapGesture
(
)
.
targetedToAnyEntity
(
)
.
onEnded
{
value
in
let
entity
=
value
.
entity
}
)
.
gesture
(
DragGesture
(
)
.
targetedToAnyEntity
(
)
.
onChanged
{
value
in
value
.
entity
.
position
=
value
.
convert
(
value
.
location3D
,
from
:
.
local
,
to
:
.
scene
)
}
)
.
gesture
(
RotateGesture
(
)
.
targetedToAnyEntity
(
)
.
onChanged
{
value
in
// Handle rotation
}
)
.
gesture
(
MagnifyGesture
(
)
.
targetedToAnyEntity
(
)
.
onChanged
{
value
in
// Handle scale
}
)
Part 5: Model3D API
// Simple display
Model3D
(
named
:
"robot"
)
// With phases
Model3D
(
named
:
"robot"
)
{
phase
in
switch
phase
{
case
.
empty
:
ProgressView
(
)
case
.
success
(
let
model
)
:
model
.
resizable
(
)
.
scaledToFit
(
)
case
.
failure
(
let
error
)
:
Text
(
"Failed:
(
error
.
localizedDescription
)
"
)
@unknown
default
:
EmptyView
(
)
}
}
// From URL
Model3D
(
url
:
modelURL
)
Part 6: Material System
SimpleMaterial
var
material
=
SimpleMaterial
(
)
material
.
color
=
.
init
(
tint
:
.
blue
)
material
.
metallic
=
.
init
(
floatLiteral
:
1.0
)
material
.
roughness
=
.
init
(
floatLiteral
:
0.3
)
PhysicallyBasedMaterial
var
material
=
PhysicallyBasedMaterial
(
)
material
.
baseColor
=
.
init
(
tint
:
.
white
,
texture
:
.
init
(
try
.
load
(
named
:
"albedo"
)
)
)
material
.
metallic
=
.
init
(
floatLiteral
:
0.0
)
material
.
roughness
=
.
init
(
floatLiteral
:
0.5
)
material
.
normal
=
.
init
(
texture
:
.
init
(
try
.
load
(
named
:
"normal"
)
)
)
material
.
ambientOcclusion
=
.
init
(
texture
:
.
init
(
try
.
load
(
named
:
"ao"
)
)
)
material
.
emissiveColor
=
.
init
(
color
:
.
blue
)
material
.
emissiveIntensity
=
2.0
material
.
clearcoat
=
.
init
(
floatLiteral
:
0.8
)
material
.
clearcoatRoughness
=
.
init
(
floatLiteral
:
0.1
)
material
.
specular
=
.
init
(
floatLiteral
:
0.5
)
material
.
sheen
=
.
init
(
color
:
.
white
)
material
.
anisotropyLevel
=
.
init
(
floatLiteral
:
0.5
)
material
.
blending
=
.
transparent
(
opacity
:
.
init
(
floatLiteral
:
0.5
)
)
material
.
faceCulling
=
.
back
// .none, .front, .back
UnlitMaterial
var
material
=
UnlitMaterial
(
)
material
.
color
=
.
init
(
tint
:
.
red
,
texture
:
.
init
(
try
.
load
(
named
:
"texture"
)
)
)
material
.
blending
=
.
transparent
(
opacity
:
.
init
(
floatLiteral
:
0.8
)
)
Special Materials
// Occlusion — invisible but hides content behind it
let
occlusionMaterial
=
OcclusionMaterial
(
)
// Video
let
videoMaterial
=
VideoMaterial
(
avPlayer
:
avPlayer
)
TextureResource Loading
// From bundle
let
texture
=
try
await
TextureResource
(
named
:
"texture"
)
// From URL
let
texture
=
try
await
TextureResource
(
contentsOf
:
url
)
// With options
let
texture
=
try
await
TextureResource
(
named
:
"texture"
,
options
:
.
init
(
semantic
:
.
color
)
)
// .color, .raw, .normal, .hdrColor
Part 7: Animation
Transform Animation
entity
.
move
(
to
:
Transform
(
scale
:
.
one
,
rotation
:
targetRotation
,
translation
:
targetPosition
)
,
relativeTo
:
entity
.
parent
,
duration
:
1.5
,
timingFunction
:
.
easeInOut
)
Timing Functions
Function
Curve
.default
System default
.linear
Constant speed
.easeIn
Slow start
.easeOut
Slow end
.easeInOut
Slow start and end
Playing Loaded Animations
// All animations from USD
for
animation
in
entity
.
availableAnimations
{
let
controller
=
entity
.
playAnimation
(
animation
)
}
// With options
let
controller
=
entity
.
playAnimation
(
animation
.
repeat
(
count
:
3
)
,
transitionDuration
:
0.3
,
startsPaused
:
false
)
AnimationPlaybackController
let
controller
=
entity
.
playAnimation
(
animation
)
controller
.
pause
(
)
controller
.
resume
(
)
controller
.
stop
(
)
controller
.
speed
=
0.5
// Half speed
controller
.
blendFactor
=
1.0
// Full blend
controller
.
isComplete
// Check completion
Part 8: Audio
AudioFileResource
// Load
let
resource
=
try
AudioFileResource
.
load
(
named
:
"sound.wav"
,
configuration
:
.
init
(
shouldLoop
:
true
,
shouldRandomizeStartTime
:
false
,
mixGroupName
:
"effects"
)
)
Audio Components
// Spatial (3D positional)
entity
.
components
[
SpatialAudioComponent
.
self
]
=
SpatialAudioComponent
(
directivity
:
.
beam
(
focus
:
0.5
)
,
distanceAttenuation
:
.
rolloff
(
factor
:
1.0
)
,
gain
:
0
// dB
)
// Ambient (non-positional, uniform)
entity
.
components
[
AmbientAudioComponent
.
self
]
=
AmbientAudioComponent
(
gain
:
-
6
)
// Channel (multi-channel output)
entity
.
components
[
ChannelAudioComponent
.
self
]
=
ChannelAudioComponent
(
gain
:
0
)
Playback
let
controller
=
entity
.
playAudio
(
resource
)
controller
.
pause
(
)
controller
.
stop
(
)
controller
.
gain
=
-
3
// Adjust volume (dB)
controller
.
speed
=
1.5
// Pitch shift
entity
.
stopAllAudio
(
)
Part 9: RealityRenderer (Metal Integration)
// Low-level Metal rendering of RealityKit content
let
renderer
=
try
RealityRenderer
(
)
renderer
.
entities
.
append
(
entity
)
// Render to Metal texture
let
descriptor
=
RealityRenderer
.
CameraOutput
.
Descriptor
(
colorFormat
:
.
bgra8Unorm
,
depthFormat
:
.
depth32Float
)
try
renderer
.
render
(
viewMatrix
:
viewMatrix
,
projectionMatrix
:
projectionMatrix
,
size
:
size
,
colorTexture
:
colorTexture
,
depthTexture
:
depthTexture
)
Resources
WWDC
2019-603, 2019-605, 2021-10074, 2022-10074, 2023-10080, 2024-10103, 2024-10153
Docs
/realitykit, /realitykit/entity, /realitykit/component, /realitykit/system, /realitykit/realityview, /realitykit/model3d, /realitykit/modelentity, /realitykit/anchorentity, /realitykit/physicallybasedmaterial
Skills
axiom-realitykit, axiom-realitykit-diag, axiom-scenekit-ref
返回排行榜