Module Built-in Components

Contains Needle Engine Core Components.

This includes

All these components are available wherever Needle Engine is used.

Animation

AnimationCurve

AnimationCurve is a representation of a curve that can be used to animate values over time.

Animation and Sequencing

ClipExtrapolation
TrackType
Animation

Plays animations from AnimationClips

Animator

Plays and manages animations on a GameObject based on an AnimatorController

AnimatorController

Controls the playback of animations using a state machine architecture.

BasicIKConstraint

Two-bone inverse kinematics constraint

MarkerModel
PlayableDirector

Controls and plays TimelineAssets

SignalMarkerModel
SignalReceiver

Receives signals and invokes reactions

AnimationClipModel
AudioClipModel
ClipModel
ControlClipModel
ScrollMarkerModel

Marker with a name, used for scroll-driven timelines. It is used together with elements in your HTML to define what time in the timeline should be active when the element is in the scroll view.

TimelineAssetModel
TrackModel
TrackOffset

Asset Management

DropListener

Drag-and-drop file loading for 3D assets

GltfExport

Export selected 3D objects to glTF format

NestedGltf

Loads and instantiates a nested glTF file

SceneSwitcher

Dynamically loads and switches between multiple scenes

Camera and Controls

Camera

Rendering scenes from a specific viewpoint

LookAtConstraint

Look At Constraint for camera targeting

OrbitControls

Camera controller using three.js OrbitControls

ViewBox

Automatically fits a box area into the camera view

Character

CharacterController

Character Movement Controller

CharacterControllerInput

User Input for Character Controller

Constraints

AlignmentConstraint

Aligns and scales object between two targets

OffsetConstraint

Maintains positional/rotational offset relative to target

Effects

Antialiasing

Antialiasing provides SMAA (Subpixel Morphological Antialiasing) post-processing effect to smooth edges in the rendered scene.

BloomEffect

Bloom Post-Processing Effect

ChromaticAberration

Chromatic Aberration Post-Processing Effect

ColorAdjustments

Color Adjustments Post-Processing Effect

DepthOfField

Depth of Field Post-Processing Effect

EffectWrapper

EffectWrapper wraps a custom postprocessing effect to integrate it with the Needle Engine post-processing pipeline.

PixelationEffect

Pixelation Post-Processing Effect

PostProcessingEffect

PostProcessingEffect is a base class for post processing effects that can be applied to the scene.
To create a custom post processing effect, extend this class and override the onCreateEffect method and call registerCustomEffectType to make it available in the editor.

ScreenSpaceAmbientOcclusion

ScreenSpaceAmbientOcclusion is a screenspace ambient occlusion post-processing effect.
We recommend using ScreenSpaceAmbientOcclusionN8 instead.

ScreenSpaceAmbientOcclusionN8

Screen Space Ambient Occlusion (SSAO) Post-Processing Effect

SharpeningEffect

Sharpening Post-Processing Effect

TiltShiftEffect

Tilt Shift Post-Processing Effect

ToneMappingEffect

Tonemapping Post-Processing Effect

Vignette

Vignette Post-Processing Effect

Volume

Manage Post-Processing Effects

Events

EventList

EventList manages a list of callbacks that can be invoked together.
Used for Unity-style events that can be configured in the editor (Unity or Blender).

Everywhere Actions

ChangeMaterialOnClick

Changes the material of objects when clicked

ChangeTransformOnClick

Moves an object to a target transform upon click

EmphasizeOnClick

Emphasizes the target object when clicked

HideOnStart

Hides the object on scene start

LookAt

Makes the object look at a target object or the camera

PlayAnimationOnClick

Plays an animation when clicked

PlayAudioOnClick

Plays an audio clip when clicked

SetActiveOnClick

Sets the active state of an object when clicked

TapGestureTrigger

Triggers an action when the object is tapped/clicked

VisibilityAction

Hides or shows the object when clicked

Helpers

AxesHelper

Visualizes object axes (X=red, Y=green, Z=blue)

BoxGizmo

Display a box around the object

BoxHelperComponent

Bounding box helper with intersection tests

GltfExportBox

Bounding box helper with intersection tests

GridHelper

The GridHelper displays a flat grid in the scene for visual reference. Useful for debugging, level design, or providing spatial context.

TransformGizmo

Object manipulation gizmo for translate/rotate/scale

Interactivity

CursorFollow

Makes objects follow the cursor/touch position in 3D space

Deletable

Marks object as destroyable by DeleteBox

DeleteBox

Box area that deletes objects entering it

DragControls

Enables dragging of objects in 2D or 3D space

Duplicatable

Duplicates a GameObject on pointer events

EventTrigger

Triggers events on pointer interactions

HoverAnimation

Plays animations on pointer hover enter/exit events

LookAt

Makes the object look at a target object or the camera

ObjectRaycaster

ObjectRaycaster enables pointer interactions with 3D objects.
Add this component to any object that needs click/hover detection.

OpenURL

OpenURL behaviour opens a URL in a new tab or window when the object (or any if it's children) is clicked.

SmoothFollow

Smoothly follows a target object's position and/or rotation

SpatialTrigger

Define a trigger zone that detects entering objects

SpatialTriggerReceiver

Receives spatial trigger events

UsageMarker

Marks object as currently being interacted with

Multimedia

AudioListener

Receives audio in the scene and outputs it to speakers

AudioSource

Plays audio clips from files or media streams

ScreenCapture

Share screen, camera or microphone in a networked room

VideoPlayer

Plays video clips from URLs or streams

Networking

Avatar

WebXR Avatar component for head and hands synchronization

AvatarMarker

Internal marker for player-controlled objects in networked sessions

Networking

Networking configuration

PlayerColor

Assigns a unique color to the player object

ScreenCapture

Share screen, camera or microphone in a networked room

SpectatorCamera

Spectator camera for following other users

SyncedCamera

Syncs camera position and rotation of users in a networked room

SyncedRoom

Joins a networked room based on URL parameters or a random room

SyncedTransform

Synchronizes object transform over the network with ownership management

Voip

Voice over IP for networked audio communication

Physics

BoxCollider

Box-shaped physics collider

CapsuleCollider

CapsuleCollider represents a capsule-shaped collision volume (cylinder with hemispherical ends).
Ideal for character controllers and objects that need a rounded collision shape.

Collider

Physics collider base class

FixedJoint

Lock two Rigidbodies together rigidly

HingeJoint

Connect two Rigidbodies with a rotating hinge

MeshCollider

MeshCollider creates a collision shape from a mesh geometry.
Allows for complex collision shapes that match the exact geometry of an object.

Rigidbody

Enables physics simulation with forces, gravity, and collisions

SphereCollider

Sphere-shaped physics collider

Rendering

ContactShadows

Display contact shadows on the ground

Fog

Adds fog effect to the scene

GroundProjectedEnv

Projects the environment map onto the ground

Light

Light component for various light types and shadow settings

LODGroup

Level of Detail Group for optimizing rendering

MeshRenderer

The Renderer component controls rendering properties of meshes including materials,
lightmaps, reflection probes, and GPU instancing.

ParticleSystem

Handles the motion and rendering of many individual particles

ReflectionProbe

Provides reflection data to materials

RemoteSkybox

Sets the skybox or environment texture of a scene

Renderer

The Renderer component controls rendering properties of meshes including materials,
lightmaps, reflection probes, and GPU instancing.

RendererLightmap

This component is automatically added by the Renderer component if the object has lightmap uvs AND we have a lightmap.

SeeThrough

Fades objects when they obscure the camera's view of a reference point

ShadowCatcher

Renders real-time shadows from lights onto surfaces

SkinnedMeshRenderer

Renderer for deformable meshes

Sprite

2D image renderer

SpriteRenderer

Renders 2D images from a sprite sheet

Volume

Manage Post-Processing Effects

Splines

SplineUtils
SplineContainer

Manages smooth spline curves defined by control point knots

SplineWalker

Moves an object along a spline

Sprites

SpriteData

Used by the SpriteRenderer to hold the sprite sheet and the currently active sprite index.

SpriteSheet

User Interface

BaseUIComponent

Derive from this class if you want to implement your own UI components.
It provides utility methods and simplifies managing the underlying three-mesh-ui hierarchy.

Button

UI Button that can be clicked to perform actions

Canvas

Root component for UI elements, managing layout and rendering settings

CanvasGroup

Group UI elements to control transparency and interactivity

EventSystem

Manages and dispatches input events to UI components

Graphic

Graphic provides basic rendering for UI elements with color, opacity, and texture support.

GraphicRaycaster

Raycaster for UI elements

GridLayoutGroup

GridLayoutGroup arranges child UI elements in a grid pattern.

HorizontalLayoutGroup

HorizontalLayoutGroup arranges child UI elements horizontally with spacing, padding, and alignment options.

Image

Display a 2D image in the UI

InputField

Text field for user input

MaskableGraphic
NeedleMenu

Configuration component for the Needle Menu overlay

Outline

Add an outline effect to UI elements

RawImage
RectTransform

UI Rectangle Transform

SpatialHtml

Render HTML elements as 3D objects in the scene

Text

Display text in the UI

UIRootComponent

Derive from this class if you want to implement your own UI components.
It provides utility methods and simplifies managing the underlying three-mesh-ui hierarchy.

VerticalLayoutGroup

VerticalLayoutGroup arranges child UI elements vertically with spacing, padding, and alignment options.

Utilities

DeviceFlag

Show or hide GameObject based on device type

XRFlag

XRFlag shows or hides GameObjects based on the current XR state or session.
Use for XR-responsive content that should only appear in specific modes.

Web

ClickThrough

Enables pointer events to pass through canvas to HTML elements behind it

ScrollFollow

Links scroll position to target objects

XR

Avatar

WebXR Avatar component for head and hands synchronization

AvatarMarker

Internal marker for player-controlled objects in networked sessions

SpatialGrabRaycaster

SpatialGrabRaycaster enables direct grab interactions in VR/AR. Uses sphere overlap detection around the controller/hand position to allow grabbing objects by reaching into them.

TeleportTarget

Marker component for valid VR teleportation destinations

USDZExporter

Export 3D objects as USDZ files for Apple QuickLook AR

WebARCameraBackground

Displays the camera feed as background in WebAR sessions

WebARSessionRoot

Root object for WebAR sessions, managing scene placement and user scaling in AR.

WebXR

WebXR Component for VR and AR support

WebXRImageTracking

The easiest way to create cross-platform AR image tracking experiences

WebXRImageTrackingModel

Configuration for a single trackable image marker

WebXRPlaneTracking

WebXRPlaneTracking tracks planes and meshes in the real world when in immersive-ar (e.g. on Oculus Quest).

WebXRTrackedImage

Runtime data for a detected marker image in WebXR

XRControllerFollow

Makes the object follow a specific XR controller or hand

XRControllerModel

Displays controller or hand models in XR

XRControllerMovement

Move the XR rig using controller input

XRFlag

XRFlag shows or hides GameObjects based on the current XR state or session.
Use for XR-responsive content that should only appear in specific modes.

XRRig

A user in XR (VR or AR) is parented to an XR rig during the session.
When moving through the scene the rig is moved instead of the user.

Other

ClearFlags

The ClearFlags enum is used to determine how the camera clears the background

DragMode

The DragMode determines how an object is dragged around in the scene.

__Ignore
ActionBuilder
ActionCollection
ActionModel
AnimationExtension
AnimationTrackHandler

A TrackHandler is responsible for evaluating a specific type of timeline track.
A timeline track can be an animation track, audio track, signal track, control track etc and is controlled by a PlayableDirector.

Attractor

Used to attract Rigidbodies towards the position of this component. Add Rigidbodies to the targets array to have them be attracted.
You can use negative strength values to create a repulsion effect.

AudioExtension
AudioTrackHandler

A TrackHandler is responsible for evaluating a specific type of timeline track.
A timeline track can be an animation track, audio track, signal track, control track etc and is controlled by a PlayableDirector.

AvatarLoader

Handles loading and instantiating avatar models from various sources. Provides functionality to find and extract important parts of an avatar (head, hands).

AvatarModel

Represents an avatar model with head and hands references. Used for representing characters in 3D space.

BehaviorExtension

internal USDZ behaviours extension

BehaviorModel
Behaviour

Needle Engine component's are the main building blocks of the Needle Engine.
Derive from Behaviour to implement your own using the provided lifecycle methods.
Components can be added to any Object3D using addComponent or GameObject.addComponent.

CallInfo

CallInfo represents a single callback method that can be invoked by the EventList.

CameraTargetReachedEvent
ColorBySpeedModule
ColorOverLifetimeModule
ControlTrackHandler

A TrackHandler is responsible for evaluating a specific type of timeline track.
A timeline track can be an animation track, audio track, signal track, control track etc and is controlled by a PlayableDirector.

CustomBranding

Custom branding for the QuickLook overlay, used by USDZExporter.

DocumentExtension
EmissionModule
EnvironmentScene
EventListEvent
FieldWithDefault
GameObject

Base class for objects in Needle Engine. Extends Object3D from three.js. GameObjects can have components attached to them, which can be used to add functionality to the object. They manage their components and provide methods to add, remove and get components.

Gradient
GroupActionModel
InheritVelocityModule
InstanceHandle

The instance handle is used to interface with the mesh that is rendered using instancing.

InstancingHandler

Handles instancing for Needle Engine.

Interactable
Keyframe

Keyframe is a representation of a keyframe in an AnimationCurve.

LimitVelocityOverLifetimeModule
LODModel

Defines a single LOD level with its transition distance and associated renderers. Used by LODGroup to configure level of detail switching.

MainModule
MarkerTrackHandler

A TrackHandler is responsible for evaluating a specific type of timeline track.
A timeline track can be an animation track, audio track, signal track, control track etc and is controlled by a PlayableDirector.

MinMaxCurve
MinMaxGradient
NeedleUSDZExporter
NoiseModule
Padding
ParticleBurst
ParticleSubEmitter
ParticleSystemBaseBehaviour

Base class for custom particle behaviors. Extend this to create custom particle logic.

PhysicsExtension
PointerEventData

PointerEventData This pointer event data object is passed to all event receivers that are currently active
It contains hit information if an object was hovered or clicked
If the event is received in onPointerDown or onPointerMove, you can call setPointerCapture to receive onPointerMove events even when the pointer has left the object until you call releasePointerCapture or when the pointerUp event happens
You can get additional information about the event or event source via the event property (of type NEPointerEvent)

PostProcessingHandler

PostProcessingHandler Is responsible for applying post processing effects to the scene. It is internally used by the Volume component

PreliminaryAction

Needle Engine component's are the main building blocks of the Needle Engine.
Derive from Behaviour to implement your own using the provided lifecycle methods.
Components can be added to any Object3D using addComponent or GameObject.addComponent.

PreliminaryTrigger

Needle Engine component's are the main building blocks of the Needle Engine.
Derive from Behaviour to implement your own using the provided lifecycle methods.
Components can be added to any Object3D using addComponent or GameObject.addComponent.

Rect
RegisteredAnimationInfo
RotationBySpeedModule
RotationOverLifetimeModule
ShapeModule
SignalAsset

Used to reference a signal asset in a SignalReceiver. This is internally used by the SignalReceiverEvent.

SignalReceiverEvent

An event that links a signal to a reaction. Used internally by SignalReceiver.

SignalTrackHandler

A TrackHandler is responsible for evaluating a specific type of timeline track.
A timeline track can be an animation track, audio track, signal track, control track etc and is controlled by a PlayableDirector.

Size
SizeBySpeedModule
SizeOverLifetimeModule
SplineData

Represents a single knot (control point) in a spline curve.

TextBuilder
TextExtension
TextureSheetAnimationModule
TrackHandler

A TrackHandler is responsible for evaluating a specific type of timeline track.
A timeline track can be an animation track, audio track, signal track, control track etc and is controlled by a PlayableDirector.

TrailModule
TransformData
TriggerBuilder
TriggerModel
UIRaycastUtils
USDDocument
USDObject
USDWriter
USDZExporterContext
USDZText
USDZUIExtension
VariantAction
VelocityOverLifetimeModule
VolumeParameter
XRState
IEffectProvider
IInputEventArgs
IPointerClickHandler
IPointerDownHandler
IPointerEnterHandler
IPointerEventHandler

Implement on your component to receive input events via the EventSystem component

IPointerExitHandler
IPointerMoveHandler
IPointerUpHandler
ISceneEventListener

The ISceneEventListener is called by the SceneSwitcher when a scene is loaded or unloaded.
It must be added to the root object of your scene (that is being loaded) or on the same object as the SceneSwitcher
It can be used to e.g. smooth the transition between scenes or to load additional content when a scene is loaded.

ITimelineAnimationOverride

Interface for receiving callbacks during timeline animation evaluation.
Allows modification of position/rotation values before they are applied.

UsdzBehaviour
DropListenerNetworkEventArguments

Network event arguments passed between clients when using the DropListener with networking

DropListenerOnDropArguments

Arguments provided to handlers when an object is dropped or added to the scene

ViewBoxMode

Defines how the ViewBox component applies camera framing adjustments.

WebXRPlaneTrackingEvent

Used by WebXRPlaneTracking to track planes in the real world.

XRPlaneContext

Used by WebXRPlaneTracking to track planes in the real world.

PostProcessingEffectOrder

Default order for post-processing effects. This can be used to sort effects by their rendering order when creating custom effects. E.g. in your custom effect, you can set order: PostProcessingEffectOrder.Bloom + 1; to ensure it gets rendered after the bloom effect. OR order: PostProcessingEffectOrder.Bloom - 1; to ensure it gets rendered before the bloom effect.

decompressGpuTexture

Reads back a texture from the GPU (can be compressed, a render texture, or anything), optionally applies RGBA colorScale to it, and returns CPU data for further usage. Note that there are WebGL / WebGPU rules preventing some use of data between WebGL contexts.

imageToCanvas

This method uses a '2d' canvas context for pixel manipulation, and can apply a color scale or Y flip to the given image. Unfortunately, canvas always uses premultiplied data, and thus images with low alpha values (or multiplying by a=0) will result in black pixels.

makeNameSafeForUSD
registerCustomEffectType