Envision 6.1

July 16, 2026

web HOOPS Envision for Web desktop HOOPS Envision for Desktop

Fixed Bugs

CAE-1662 Fix a UgServer crash on locales which use decimal comma web

Fixed a crash related to locales with decimal commas in the number formatting. The locale is now set consistently to “C” for the servers using a native C++ addon.

New Features

CAE-1250 Added support for CAD surface groups desktop

Added end-to-end support for CAD surface groups, named collections of element faces that originate from the individual faces/surfaces of a CAD model imported via the HOOPS Exchange data provider. A CAD model can now be imported with each CAD surface preserved as a queryable group, those groups can be persisted to VTFx, and they can be accessed through the public C++ API and the C#/Python bindings.

  • New public DataSurfaceGroup (ref-counted) and DataSurfaceGroupItem (value) classes, each group mapping a CAD surface id to the element faces that belong to it.
  • New public SurfaceGroupQuery helper with availableCadSurfaceIds() and getTriangulation(cadSurfaceId, ...) for enumerating and retrieving the geometry of the imported surface groups.
  • DataSource::addSurfaceGroup() for programmatic construction of surface groups.
  • Surface groups are persisted to VTFx, so they survive a save/load round-trip.
  • All new classes are available through the C#/Python bindings.

The DataProvider framework (API version 7.4) was extended to support this feature. A new CDP_SET_CAD_SURFACES set type lets a data provider expose each CAD face as a selectable set of element faces, populated via CDPSet::addSurfaceItem(). The HOOPS Exchange data provider now uses this to publish each tessellated CAD face as a surface set on import.

CAE-1644 New cee_envision.pt Python module for particle visualization desktop

A new cee_envision.pt Python module exposes the CeeParticleModel C++ library to Python via SWIG bindings. It covers loading and visualizing time-stepped particle cloud data, reading and writing PTFX and VTP files, scalar mapping, and frame animation.

Four example scripts are provided in Examples/ParticleExamples/ together with demo particle datasets in Examples/DemoFiles/particles/.

See Using the Particle Module in Python for usage and examples.

CAE-1645 Added back-face scalar coloring desktop

Surfaces can now display a different scalar result on their back faces than on their front faces, making it possible to visualize two results at once on two-sided geometry such as cutting planes and model surfaces. Each side keeps its own color legend and scalar settings.

  • CuttingPlane::setMapBackScalarResultId / mapBackScalarResultId set the scalar mapped to the back face of a cutting plane.
  • ModelSpec::setBackFringesResultId sets the model-wide back-face fringes result, with per-part overrides via setOverridePartBackFringesResultId.
  • UnstructGridModel::backScalarSettings exposes an independent ScalarSettings object (and legend) for the back scalar, separate from the front-face settings.

When no back scalar is configured, rendering falls back to single-sided fringes and no extra work is performed.

CAE-1703 Color legend performance improvements web

The Color legends’ network load has been reduced by sending only the necessary data and reconstructing the color table on the client side. In practice, this means that some colors for continuous legends may be ever so slightly different from the previous version, but visually appear identical as a result of rounding and interpolation errors. Additionally, users may see an improvement in performance in the range of about 100-200 ms when updating the color legend or scalar settings properties, especially when setting up the model for the first time.

Several ug.ScalarSettings properties that only affect the color legend now update the legend directly on the client, without requiring a round-trip to the server. This makes changes to these properties apply faster and reduce server load. The affected properties are:

  • ScalarSettings.numericFormat
  • ScalarSettings.numericPrecision
  • ScalarSettings.setCustomContinuousTickMarks() (customContinuousTickMarkArr)
  • ScalarSettings.scalingConstantTerm
  • ScalarSettings.scalingFirstDegreeTerm

Internally, the format and delivery of color legends has been updated. Color legends are now self-contained and delivered together with the visualization update packet, with no change to the public API.