Needle Engine

Needle Engine is a fast web engine for complex and simple 3D applications alike.
It is flexible, extensible and has built-in support for collaboration and XR! It is built around the glTF standard for 3D assets and is using three.js under the hood - so all your existing knowledge applies.

→ 📑 Documentation
→ 💎 Samples
→ 🏓 Changelog

  • Components System: Add your custom components with easy
  • WebXR support & iOS Quicklook support for interactive AR
  • Networking is built-in
  • Advanced PBR Rendering
  • Animate Everything
  • Animation Statemachines & Timeline Animations
  • Lightmaps
  • Physics
  • Postprocessing
  • Texture & Mesh LOD Generation
  • Progressive Texture and Mesh Loading
    Higher resolution assets are loaded on demand
  • Dynamic Content Loading & Multi-Scene support
  • Integrations for Unity or Blender
  • Commercial & Educational Licenses
  • ↪ more features

Powerful integrations for Unity and Blender allow artists and developers to collaborate and manage web applications inside battle-tested 3d editors. Needle Engine integrations allow you to use editor features for exporting models, author materials, animate and sequence animations, bake lightmaps and more.

Follow the Getting Started Guide to download and install Needle Engine or try one of our samples

👋 Find more examples on samples.needle.tools, docs.needle.tools and in the Needle Engine Stackblitz Collection


Contact ✒️

🌵 NeedleGithubTwitterDiscordForumYoutube



Recent Changes

  • Fix: iOS AR image tracking bug where having multiple WebXRImageTracking components in the scene cause unexpected behaviour or invalid USDZ files
  • Fix: DropListener loadFromURL now returns the promise to make awaiting the loaded asset much easier
  • Fix: Issue where <needle-engine autoplay> would play animations faster than expected
  • Change: OrbitControls with locked target constraint is now updating the constraint position when calling e.g. setTargetPosition
  • Add: setCameraFocusRect method on Needle Context for easier responsive layouting.
    With this you can e.g. overlay the webgl scene with HTML elements and pass in a div element for keeping important elements visible.
    Example 1 Website | Code on Stackblitz

    Example 2 Website | Code on Stackblitz
  • Bump three dependency to fix issue caused by KTX2Exporter
  • Add: Much faster loading for skyboxes and environment maps when using presets. E.g. <needle-engine environment-image="studio"></needle-engine>. Supported values are studio, blurred-skybox, quicklook, quicklook-ar
  • Change: TransformControls now also enable fastMode on the SyncedTransform component
  • Change: The mobile javascript console now needs to be explictly enabled using the ?console flag. This change has been made to improve the local development experience. Previously the javascript console would be initialized in local development environments but stay invisible until e.g. an error would be detected. This did sometimes cause performance issues when very large objects would be logged in development