Needle Engine is a web-based runtime for 3D apps. It runs on your machine for development, and can be deployed anywhere. It is flexible, extensible and includes networking and XR - across platforms. Documentation at https://docs.needle.tools
Bot releases are hidden (Show)
Published by marwie 6 months ago
enterVR
, enterAR
, exitXR
)Download for Unity • Download for Blender • Documentation • API • Live Samples
Published by marwie 6 months ago
EventList.invoke
autoExportAnimation
and autoExportAudioSources
by defaultDownload for Unity • Download for Blender • Documentation • API • Live Samples
Published by marwie 6 months ago
mesh
and material
properties to simplify creating a new sprite object.glb
or .gltf
extension but the correct mime typeneedle.config.json
for build folder (support for e.g. Sveltekit deployment to glitch)Download for Unity • Download for Blender • Documentation • API • Live Samples
Published by marwie 6 months ago
This release comes with numerous new features on our path to providing the best foundations for the spatial web.
We have rewritten our underlying WebXR support with ease of use and flexibility in mind,
added a new cross-platform Menu component for quickly adding custom functionality to apps, and introduced a novel automatic mesh simplification and level of detail system.
Needle Engine now supports VisionOS, with improvements to hand tracking, transient pointers, and support
for both Fully Immersive apps using WebXR, and Immersive Volume experiences based on Everywhere Actions and USD.
We're also introducing the next step on our road to ubiquitous 3D content with automatic mesh simplification and sophisticated level of detail selection at runtime.
Apps now are smaller, load faster, and run smoother – heavy models and large worlds benefit the most.
We've rewritten our WebXR API to be more intuitive, easier to use, and better integrated with the rest of the engine. XR controllers, hands, and eye tracking now flow seamlessly through our Event System, so that events like onPointerClick
just work – no matter the input source.
We've also made sure controllers are fully accessible for advanced use cases, with low-level access to the underlying WebXR API.
Our new spatial preloader allows scenes to enter XR sessions more quickly, unlocking immersive navigation using sessiongranted
(supported on Quest 2/3) for larger scenes.
Drag Controls now have support for multiple hands/controllers/touches and have modes for different interaction types.
This new release also brings support for mesh tracking
, depth sensing
, offer session
, a spatial debugging console, and more.
Existing scenes will upgrade to the new WebXR API automatically.
The new Needle Menu
component allows for easy creation of custom menus in your apps. It brings together a number of often-used features like fullscreen, audio and networking settings, and sharing options under one unified user interface.
Sharing experiences with others is now even easier through automatic QR code generation and Direct-to-Quest links.
AR, VR and QuickLook buttons are integrated into the menu as well – and Needle Menu is supported in WebXR too.
Needle Engine supported automatic compression and progressive loading for textures for a while, and now we're introducing automatic LOD generation, progressive loading, and runtime switching.
Detail levels are chosen based on screen density, which means that in complex scenes only load mesh levels that are actually needed are ever downloaded.
Additionally, automatic compression of meshes and textures paired with our compression cache is now fast enough to be enabled by default while working on projects, not just for production builds.
Besides readable source and documentation, we now have a dedicated API docs page that contains documentation for all previous and future versions: https://engine.needle.tools/api.
VisionOS is now a fully supported platform for Needle Engine.
We support both Immersive Volume experiences and Fully Immersive (VR) experiences.
Immersive Volumes are enabled by our Everywhere Actions and on-the-fly USD generation, and can even be shared via SharePlay to other users. Take a look at our collection of interactive USD samples at https://engine.needle.tools/projects/ar-showcase.
While we had VisionOS support since day 1 due to building on open standards like WebXR, we improved the experience with better hand tracking, transient pointers for eye tracking, and performance improvements.
A great example is https://engine.needle.tools/samples/bow-&-arrow/ – make sure to enable the WebXR flag in your Safari settings on VisionOS.
When using our built-in FTP deployment, we now keep track of previously uploaded files.
This makes repeat deployments much faster since it allows us to upload only those files that have changed.
This release ships with hundreds of bug fixes and improvements in the runtime, build pipeline, and integrations.
Thanks to all of our customers who send us feedback and reported bugs – we appreciate each and every report, keep them coming!
Among the improvements are preload support for video and audio, better gizmo rendering and handling for lines, texts, meshes, and many new debug flags for an in-depth look at the engine's inner workings. We also ship experimental support for single-line PWA setup – more on that in a future release.
needle-engine
element into fullscreenDownload for Unity • Download for Blender • Documentation • API • Live Samples
Published by marwie 7 months ago
getCurrentStateInfo()
and currentAction
getter which returns the currently playing three action.compileAsync
for prewarming newly loaded objectsPublished by hybridherbst 7 months ago
Button.animationTriggers
@serializable()
Published by marwie 8 months ago
this.context.input.addEventListener
now exposes options for once
(remove event listener after the first invocation) and signal
(remove event listener when signal is aborted)this.context.time
now has deltaTimeUnscaled
session granted
needle.buildinfo.json
(this is automatically generated via a vite plugin during building)Published by marwie 8 months ago
Mute
and Fullscreen
buttons.postMessage
support to inject buttons to open an URLJoin Room
button to the menu (or Leave Room
button)sessiongranted
when the main content is still loadingreset
methodPublished by marwie 8 months ago
Published by marwie 8 months ago
auto compress
option on ExportInfo now also generated progressive texture variantsPublished by marwie 8 months ago
addEventListener
can now take options as a third argumentPublished by marwie 8 months ago
6.34.3
Published by marwie 8 months ago
NeedleWebXRHtmlElement
has been renamed to WebXRButtonFactory
6.34.3
Published by marwie 8 months ago
onControllerAdded
being called twice at the start of a session?console
in the URL)Published by marwie 8 months ago
?console
url parameter to get a debug console in XR floating before the camera viewmailto:
prefix, just enter your email address in the url field)Progress.start
, Progress.report
and Progress.end
)Published by marwie 8 months ago
FileReference
support to reference, export and load almost any file:
@serializable(FileReference)
myFile?: FileReference;
vite-plugin-pwa
videoElement
getteruserScale
value)Published by marwie 8 months ago
build:dev
for production builds as well since the compression is handled by the new needle build-pipeline vite pluginInstall
in ExportInfo now runs install in all locally installed packages (e.g. all references npmdef packages)Published by marwie 8 months ago
displayName
support for nodes and materialslinearVelocity
exists on XRPose to prevent typecheck error in CI environmentFix
buttonPublished by marwie 8 months ago
navigator.xr
which can happen in iframe without spatial-tracking permissionsgetPointerDelta(pointerId)
did not return data when using multitouch except for the first touchpointbackgroundBlurriness
and backgroundIntensity
would not be reset to the default when enabling a camera that didnt have explicit settings (NE-4243)getComponentsInChildren
and getComponentsInParents
now clear the optionally provided buffer arrays by defaultPublished by marwie 8 months ago
createNewRenderer()
on context