Envision 6.0
June 1, 2026
HOOPS Envision for Web
HOOPS Envision for Desktop
Breaking Changes
CAE-1636 Add support for Node.js 24
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.importFromArrayBuffernow has anArrayBufferLikeparameter type, instead ofArrayBuffer. - UgServer, GeoServer: changed import type for the
uuidpackage. - Removed the deprecated
Bufferconstructor 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
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
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
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
Envision Desktop has updated its Python support to additionally include Python 3.14.
CAE-1626 New cee.pt module and PtServer for particle visualization
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
CeeParticleAddonnative 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 fromCEW_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
A new cee::pt component provides a C++ library for reading, writing, and rendering particle simulation data:
cee::pt::ParticleModel- main model class (inheritscee::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 toParticleModel::open(std::unique_ptr<ParticleDatasetReader>)for in-process format support.cee::pt::ParticleReaderPluginManager- runtime discovery and loading of reader plugins using thecpt_*naming convention and the C plugin ABI defined inParticleReaderPluginApi.h.- Built-in readers:
PtfxDatasetReader(PTFX) andVtpDatasetReader(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
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
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
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()
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()
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.