Releases & Changelogs

Needle Engine Blender Addon 1.0.2

  • Fix: Bumped Needle Engine dependency to 5.0.4 to fix issue with audio- and video playback
  • Fix: Environment opacity and strength wasn’t correctly exported from the Viewport Material Shading settings
  • Fix: when in Solide Shading mode, the environment settings wasn’t exported from the Viewport Material Shading settings

:bullseye: Download Blender Addon :light_bulb: Download Samples

Needle Engine Blender Addon 1.1.0

  • Added: Needle AI integration β€” Blender scene tools for AI assistants (hierarchy search, object details, scene settings)
  • Added: Collider gizmos for BoxCollider, SphereCollider and ViewBox
  • Added: isTrigger property for SphereCollider and BoxCollider
  • Fixed: Blender UI freezing periodically when Needle panel is visible (license check was blocking the main thread)
  • Fixed: Open Preferences button not working in Blender 5

Links

Download Blender Addon β€’ Download Samples β€’ Documentation β€’ Live Samples

Needle Engine Blender Addon 1.1.1

  • Add: more AI capabilities: object select, object transform, set component property, add component, component description
  • Changed: include component category for component search
  • Fixed: user components was missing type registration

:bullseye: Download Blender Addon :package: Download Samples
:light_bulb: Documentation :sparkles: Live Samples

Needle Engine 4.16.8

Needle Engine

  • Fix: MaterialPropertyBlock multi-material change from opaque to transparent not applied correctly
  • Fix: UI initialization bug caused by incorrect activeInHierarchy evaluation order (NE-6986)
  • Fix: NeedleXRSession β€” prevent spurious onLeaveXR calls for scripts that never entered XR
  • Fix: NeedleXRSession β€” inactive scripts no longer incorrectly detected as leaving XR

Unity Integration

  • Add: Extra confirmation dialogue when updating Needle Engine to prevent accidental updates to alpha or pre-release versions
  • Change: pin component compiler version-3

:bullseye: Download Unity Plugin :package: Install from NPM
:octopus: Changelog on Github :bookmark_tabs: Needle Engine API
:light_bulb: Get started :sparkles: Samples

Needle Engine 5.0.5

Needle Engine

  • Add: AudioSource spatial blend support via blend nodes
  • Fix: AudioSource rolloff factor for spatial audio
  • Fix: Animation β€” { exclusive: false } now correctly stops already-running animations when play() is called with the same clip
  • Fix: NeedleXRSession β€” prevent spurious onLeaveXR calls for scripts that never entered XR
  • Fix: NeedleXRSession β€” inactive scripts no longer incorrectly detected as leaving XR
  • Fix: NeedleXRSession.isTrackingImages now includes "emulated" state β€” reticle no longer hides when tracking state is not perfect
  • Fix: UI initialization bug caused by incorrect activeInHierarchy evaluation order (NE-6986)

Unity Integration

  • Fix: Component compiler pinned to version-3 tag
  • Bump: UnityGLTF to 2.19.4 β€” compatibility fixes for Unity 6.3–6.5

:bullseye: Download Unity Plugin :package: Install from NPM
:octopus: Changelog on Github :bookmark_tabs: Needle Engine API
:light_bulb: Get started :sparkles: Samples

Needle Engine Blender Addon 1.1.2

  • Addd: Audiosource Gizmo
  • Fixed: Bumped Needle Engine dependency to 5.0.5 to fix issue with audio playback
  • Fixed: XYZ space conversion for vec3 properties in Colliders, ReflectionProbe and Character Controller
  • Fixed: ensure a mesh has any vertices before adding a Renderer component on export

:bullseye: Download Blender Addon :package: Download Samples
:light_bulb: Documentation :sparkles: Live Samples

Needle Engine 4.16.9

Needle Engine

  • Fix: UI Text font URLs now resolve correctly when loading GLBs from external hosts (e.g. CDN or absolute URLs)

:bullseye: Download Unity Plugin :package: Install from NPM
:octopus: Changelog on Github :bookmark_tabs: Needle Engine API
:light_bulb: Get started :sparkles: Samples

5.0.6

Needle Engine

  • Fix: UI Text font URLs now resolve correctly when loading GLBs from external hosts (e.g. CDN or absolute URLs)
  • Add: UI Text default static font served from Needle CDN, allowing users to provide absolute font URLs
  • Add: DragControls EventList support
  • Fix: OrbitControls lookBounds lerp
  • Fix: CursorFollow no longer hits objects in self; fixed snapToSurface raycast

Unity Integration

  • Bump: UnityGLTF to 2.19.5 (compiler fix for Unity 6.3)
  • Improve: Editor connection stability β€” better error recovery, backoff, resource cleanup, and request debouncing

:bullseye: Download Unity Plugin :package: Install from NPM
:octopus: Changelog on Github :bookmark_tabs: Needle Engine API
:light_bulb: Get started :sparkles: Samples

Needle Engine 5.1.0 alpha.3

Needle Engine

Added

  • AudioClip type with standalone playback control β€” use with @serializable(AudioClip) for direct audio clip references
  • AudioSource spatial blend support via dual-path audio graph for smooth 2D/3D crossfade
  • UI Text default static font from Needle CDN with absolute font URL support
  • DragControls EventList support

Fixed

  • UI Text font URL resolution when loading GLBs from external hosts (e.g. CDN)
  • AudioSource spatial rolloff factor and play() reliability
  • Animation play() with { exclusive: false } not stopping already-running clips
  • XR lifecycle β€” spurious onLeaveXR calls for scripts that never entered XR
  • OrbitControls lookBounds lerp and distance-relative gizmo sizes
  • CursorFollow self-intersection and snapToSurface raycast direction
  • Vite makeFilesLocal and alias plugins now respect vite.config base
  • three-mesh-bvh worker failing to load in local dev server
  • VideoPlayer URL serializer tree-shaken out in code-only projects
  • ReflectionProbe not cleaning up overrides when removed

Unity Integration

  • Add: Extra confirmation dialog when updating to pre-release versions
  • Fix: npm utilities and component compiler handling of β€œversion-3” tag format
  • Fix: Vite utilities and codegen now respect vite.config base setting
  • Change: Bumped UnityGLTF to 2.19.5
  • Improve: Editor connection stability β€” better error recovery, backoff, resource cleanup, and request debouncing

:bullseye: Download Unity Plugin :package: Install from NPM
:octopus: Changelog on Github :bookmark_tabs: Needle Engine API
:light_bulb: Get started :sparkles: Samples

Needle Engine Blender Addon 1.1.3

  • Add: Gizmos for SeeThrough & Attractor components
  • Add: Gizmo toggle in Blender Gizmo panel
  • Fix: EXR compression causing color shift (e.g. yellow tint in some Blender built-in EXRs)
  • Change: Gizmos only show for visible objects and hide in edit mode
  • Change: Component property labels now format as readable title case

:bullseye: Download Blender Addon :package: Download Samples
:light_bulb: Documentation :sparkles: Live Samples

Needle Engine Blender Addon 1.1.4

  • Add: more AI capabilities: get scene settings
  • Add: selection support for properties of type: Light, Camera and Component (base class)
  • Fix: auto export on saving in B4.5

:bullseye: Download Blender Addon :package: Download Samples
:light_bulb: Documentation :sparkles: Live Samples

Needle Engine 5.0.7

Needle Engine

  • Fix: Projects deployed to sub-directories using SPA routing now load correctly (worker URLs, file aliases, and asset paths respect vite.config base)
  • Fix: MeshBVH worker now loads correctly in local development

Unity Integration

  • Fix: Codegen now works correctly for SPA routing (reads base from vite.config)

:bullseye: Download Unity Plugin :package: Install from NPM
:octopus: Changelog on Github :bookmark_tabs: Needle Engine API
:light_bulb: Get started :sparkles: Samples

Needle Engine 5.1.0 alpha.4

Needle Engine

Added

  • autoCleanup on Behaviour β€” register disposables or cleanup functions tied to the component lifecycle. Automatically cleaned up on disable or destroy depending on when registered:
    onEnable() {
        this.autoCleanup(on(window, "resize", () => { ... }));
        this.autoCleanup(this.context.connection.beginListen("my-event", () => { ... }));
    }
    
  • TimelineBuilder API for building timeline assets from code:
    const timeline = TimelineBuilder.create("MyTimeline")
        .animationTrack("Walk", animator).clip(walkClip, { duration: 2 })
        .activationTrack("FX", vfxObject).activate({ start: 1, duration: 0.5 })
        .build();
    director.playableAsset = timeline;
    
  • PlayableDirector: expose tracks and activationTracks getters, support runtime playableAsset assignment with automatic graph rebuild
  • PhysicsCollider: expose density property, add @validate decorator for automatic property updates at runtime
  • Timeline AudioTrack volume getter/setter
  • Networking: beginListen now returns an unsubscribe function (backwards compatible β€” stopListen still works):
    const unsub = this.context.connection.beginListen("my-event", (data) => { ... });
    unsub(); // or use this.autoCleanup(unsub)
    

Changed

  • Serialization: consolidated instantiate reference resolution into a unified system β€” fixes cloned timelines, EventLists, SignalReceivers, and deep component references not resolving correctly after instantiate()
  • Removed legacy AvatarLoader, AvatarBlink_Simple, AvatarEyeLook_Rotation, Avatar_Brain_LookAt, Avatar_MouthShapes, Avatar_MustacheShake components

Fixed

  • @validate decorator wrapping __internalAwake multiple times when components were re-activated
  • Instantiated scenes with timeline SignalReceiver not resolving EventList object references
  • instantiate() not including cloned Object3D GUIDs in the guids map
  • Light component throwing on unsupported light types (now logs error without breaking deserialization)
  • Worker URLs producing incorrect paths for SPA deployments
  • Vite license and project identifier error handling for non-500 status codes
  • Rapier physics dispose() not clearing internal state (freed world could cause crashes)

Unity Integration

  • Add: UPM packaging and signing for publish workflow
  • Fix: SceneSwitcher dropzone breaking inspector properties rendered above the list
  • Change: Version suggestions now prefer stable releases and respect major version boundaries

:bullseye: Download Unity Plugin :package: Install from NPM
:octopus: Changelog on Github :bookmark_tabs: Needle Engine API
:light_bulb: Get started :sparkles: Samples

Needle Engine 5.0.8

Needle Engine

  • Fix: Vite 8 compatibility

Unity Integration

  • Add: The Needle Engine package is now officially signed

:bullseye: Download Unity Plugin :package: Install from NPM
:octopus: Changelog on Github :bookmark_tabs: Needle Engine API
:light_bulb: Get started :sparkles: Samples

Needle Engine Blender Addon 1.2.0

  • Add: Gizmos for DeleteBox and ContactShadows components
  • Add: targetBound property and property groups for OrbitControls
  • Change: Draw specific component gizmos only on object selection
  • Change: Bumped Needle Engine version to 5.0.8
  • Fix: Component copy/paste wasn’t copied collection properties (like events)
  • Fix: Compression artefacts of some specific Blender HDRIs

:bullseye: Download Blender Addon :package: Download Samples
:light_bulb: Documentation :sparkles: Live Samples

Needle Engine 5.1.0 alpha.5

Needle Engine

Added

  • Context.events β€” typed event bus for decoupled component communication. Known events get autocomplete; custom events can be typed at the call site:
    context.events.on("scene-content-changed", e => console.log(e.object));
    context.events.emit<{ pts: number }>("scored", { pts: 10 });
    
  • ContactShadows auto-refit β€” when autoFit is enabled, shadows automatically refit when scene content changes (e.g. SceneSwitcher load, DropListener asset loading)
  • Input.addEventListener now returns an unsubscribe function (works with autoCleanup):
    this.autoCleanup(this.context.input.addEventListener("pointerdown", (evt) => { ... }));
    
  • AnimationBuilder β€” low-level API for defining animation tracks with typed keyframes and tween shorthands. Used by AnimatorControllerBuilder and TimelineBuilder for inline .track() calls
  • TimelineBuilder typed track builder interfaces per track type (AnimationTrackBuilder, AudioTrackBuilder, etc.) with inline .track() support for keyframe animation
  • AnimatorControllerBuilder: inline .track() for defining animation directly on states, support for TrackDescriptor arrays as clip sources, simplified exitTime (replaces separate hasExitTime flag)
  • Physics raycast includeTriggers option β€” opt-in to hitting trigger/sensor colliders (skipped by default)

Changed

  • Timeline track classes renamed for consistency: AnimationTrackHandler β†’ TimelineAnimationTrack, AudioTrackHandler β†’ TimelineAudioTrack, ActivationTrackHandler β†’ TimelineActivationTrack, ControlTrackHandler β†’ TimelineControlTrack, MarkerTrackHandler β†’ TimelineMarkerTrack, TrackHandler β†’ TimelineTrackHandler
  • OrbitControls.fitCamera deprecated overload removed from type declarations (runtime still accepts Object3D for backwards compat β€” use fitCamera({ objects: [...] }) instead)

Fixed

  • OrbitControls: programmatic camera transitions (e.g. fitCamera) no longer interrupted continuously during an ongoing drag β€” only at interaction start
  • fitCamera with centerCamera: "y" producing incorrect camera elevation when camera was above the scene center
  • Animator: switching runtimeAnimatorController now properly disposes the previous controller
  • AnimatorController.dispose() guard against missing mixer
  • CursorFollow.snapToSurface incorrect property description removed
  • Vite 8 compatibility fixes

Unity Integration

  • Fix: Compiler error caused by UPM signing
  • Change: Publish window secret key field now uses a password input

:bullseye: Download Unity Plugin :package: Install from NPM
:octopus: Changelog on Github :bookmark_tabs: Needle Engine API
:light_bulb: Get started :sparkles: Samples

Needle Engine 5.1.0 alpha.6

Needle Engine

Added

  • WebXRImageTracking.imageTracked event β€” invoked every frame an image is tracked, with typed access to the tracked object instance:
    imageTracking.imageTracked.addEventListener(evt => {
        console.log(evt.object, evt.image);
    });
    
  • ?stats URL parameter now also logs renderer info (DPR, window DPR, antialias, MSAA samples, drawing buffer resolution)

Unity Integration

  • Add: WebXRImageTracking component now exposes an imageTracked UnityEvent

:bullseye: Download Unity Plugin :package: Install from NPM
:octopus: Changelog on Github :bookmark_tabs: Needle Engine API
:light_bulb: Get started :sparkles: Samples