Envision 6.0

June 1, 2026

web HOOPS Envision for Web desktop HOOPS Envision for Desktop

Breaking Changes

CAE-1636 Add support for Node.js 24 web

This release adds the support for Node.js v24 as well as deprecates the support for Node.js 20. Note that we will remove the support for Node.js 20 in one of the upcoming releases. Consequentially, we have updated all of the internal and external npm dependencies to their latest possible versions.

Possibly breaking changes:

  • All npm dependencies for the servers have been updated.
  • GeoServer: Static method ModelImportCgeo.importFromArrayBuffer now has an ArrayBufferLike parameter type, instead of ArrayBuffer.
  • UgServer, GeoServer: changed import type for the uuid package.
  • Removed the deprecated Buffer constructor and replaced it with static factory methods in various server’s distributed source files (not a public API change).
  • Part pieces for the UgServer are now grouped in packets using a single binary attachment, to get around socket.io’s newly imposed limit of 10 binary attachments per packet.

CAE-1690 Upgraded to oneTBB 2022.3.0 on all supported platforms desktop web

Upgraded to oneTBB 2022.3.0 for all supported platforms. Support for oneTBB on Intel Mac has now been dropped.

CAE-1658 Removed ug.Case class from the public API web

The ug.Case class has been removed from the public API since it has very limited usage in its current form.

CAE-1691 Removed info-box packet from UG streaming protocol and moved content generation to client web

Packet-format updates removed the dedicated info-box packet and moved info-box construction to the client. The info box now shows current frame counts when animation is not running, and stable animation-wide values (min/max when varying) during playback. The public property RemoteModel.modelInfoString has been removed.

New Features

CAE-1580 Added support for Python 3.14 desktop

Envision Desktop has updated its Python support to additionally include Python 3.14.

CAE-1626 New cee.pt module and PtServer for particle visualization web

A new cee.pt module enables client-side visualization of time-stepped particle simulation data. The module introduces:

  • cee.pt.ParticleModel - main model class for streaming pre-computed particle frames from the PtServer.
  • cee.pt.Animation - frame-based animation controller with playback and seeking.
  • PtServer - a stateless REST-based Node.js server (default port 8999) powered by the CeeParticleAddon native addon. Unlike UgServer’s socket-based architecture, PtServer uses HTTP REST endpoints, enabling horizontal scaling and multi-session support without server-side state.

Supported file formats:

  • PTFX - Ceetron binary particle format optimized for fast sequential frame access.
  • VTP - VTK PolyData XML format (particle subset).
  • Additional formats can be added via reader plugins (cpt_* shared libraries) discovered from CEW_PT_READER_PLUGIN_FOLDER.

REST API endpoints (enabled via CEW_PT_ENABLE_REST_API_QUERY / CEW_PT_ENABLE_REST_API_UPLOAD):

  • GET /api/v1/models - list available models.
  • GET /api/v1/models/:modelKey/info - dataset metadata (frame count, fields, bounding box).
  • GET /api/v1/models/:modelKey/frame/:frameIndex - fetch a particle frame (binary, with optional decimation).
  • PUT /api/v1/models/:modelKey/scalar/:fieldName - select active scalar field.
  • DELETE /api/v1/models/:modelKey/scalar - clear scalar selection.
  • POST /api/v1/models - upload a model (multipart).
  • DELETE /api/v1/models/:modelKey - remove an uploaded model.

Configuration is done via CEW_PT_* environment variables (port, HTTPS, CORS, cache limits, plugin folder, upload limits).

Limitations vs UgServer: PtServer streams pre-computed particle frames only. Server-side analytics (isovolumes, cutting planes, particle-trace computation) are not supported - use cee.ug.RemoteModel with UgServer for those use cases.

See the Programming Guide section /guide/server-particle-model for setup instructions and full configuration reference.

CAE-1641 New cee::pt::ParticleModel C++ library desktop

A new cee::pt component provides a C++ library for reading, writing, and rendering particle simulation data:

  • cee::pt::ParticleModel - main model class (inherits cee::vis::Model) for loading time-stepped particle datasets and iterating frames.
  • cee::pt::PtfxDatasetWriter - writes particle data to the PTFX binary format, enabling conversion from custom simulation outputs.
  • cee::pt::ParticleDatasetReader - abstract interface for implementing custom format readers. Pass a custom reader to ParticleModel::open(std::unique_ptr<ParticleDatasetReader>) for in-process format support.
  • cee::pt::ParticleReaderPluginManager - runtime discovery and loading of reader plugins using the cpt_* naming convention and the C plugin ABI defined in ParticleReaderPluginApi.h.
  • Built-in readers: PtfxDatasetReader (PTFX) and VtpDatasetReader (VTP).

See the Programming Guide topic Particle Component for usage examples and API details.

Fixed Bugs

CAE-1627 Fixed assert when using wrong geometry for precomputed feature extractions desktop

An assert could occur when using precomputed feature extractions (such as isosurfaces or cutting planes) if the geometry data provided during extraction did not match the geometry in the model.

This is a regression introduced in 5.0 (CAE-1561).

CAE-1673 Fixed missing nullptr check when accessing cutting plane data desktop

An access violation could occur when accessing cutting plane data CuttingPlaneData if source triangle and lines data was missing. This could occur when reading VTFx model files containing precomputed cutting planes.

CAE-1379 Fixed rayIntersect returning incorrect values for intersectPoint on a cutting plane web

On a cutting plane generated from a complex scene including boundary parts, the intersector could sometimes overestimate a line thickness to an amount so big that its result would be picked instead of the closest result to the intersection point. This bug could also cause some empty parts of the cutting plane to appear to have results.

CAE-1689 Fixed bug in CuttingPlane::alsoComputeFromUndeformedModel() desktop

Fixed a bug in the method cee::ug::CuttingPlane::alsoComputeFromUndeformedModel() which caused it to sometimes return an incorrect value.

CAE-1661 Fixed the gradient background sometimes not being captured in renderViewToImage() desktop

Fixed an internal rendering issue sometimes occurring when capturing a view with a gradient background to an image using renderViewToImage(). The gradient background could be lost and replaced by a black background if the model was internally modified during the capture, causing the render sequence to be recomposed mid-capture and retargeting the background pass away from the offscreen framebuffer.