# Envision 2.2

May 29, 2024 - SHA: 3c2a0344

Updated Supported Platforms

Envision is now build on the following configuration:

Supported platforms | Operating system | Compiler
--- | --- | ---
Windows | Windows 10 | MSVC 2019 (142 toolset)
Linux | Rocky 8.9 (glibc 2.28) | gcc 8.5

Envision for Web Envision for Desktop

## New Features

### CAE-1181 Operator Mechanism and Operator Examples

Operators allow developers to more easily hook into the browser event loop and fire custom actions in response to user inputs. They encapsulate the logic of handling `Viewer` user input in a single place, and to make it easier to switch between different modes of interaction (i.e. - Navigation, Picking, Transformations). Before operators, these interactions were either hard-coded and internal to the product, or setup by a developer using DOM event listeners. Multiple operators can be written and used together in your application. Any operator on a `View.operatorStack` will be active for your scene, meaning it will respond to any input event you may have set up for it. The `operatorStack` can push, pop, set, find, and reorder any number of operators, so you can quickly enable and manage different modes of interaction in your scene.

You can read more about Operators and how to use them on our Operators documentation page: https://docs.techsoft3d.com/hoops/latest/envision-web/operators.html

There is also a exploratory app in Examples/Operators where you can find sample code for different operators we have written, and how they may be used in a scene.

### CAE-1355 Create Envision distributions on Rocky Linux

Linux versions of Envision Web and Envision Desktop are now built on Rocky Linux 8.9 with glibc 2.28 and gcc 8.5. You can read more about Rocky Linux here: https://rockylinux.org/

### CAE-1310 New navigation type: rotate around x, y, z axes

This ticket allows a specified keyboard key to be held and activate a navigation mode that rotates the model about a desired axis. In the feature request, it is described that they would like to hold the x key to rotate about the model X axis, the y key to rotate about the model Y axis, and the z key to rotate about the model Z axis.

To demonstrate this, we used the work done on operators to extend and customize our `NavigationOperator`. The main change to the API allows the user to specify an arbitrary axis of rotation to rotate about. The `TrackballManipulator` will look to see if a valid rotation vector is provided, and if so, will use that as the rotation axis for the rotate operation. If it is undefined or null, the rotation behaves as before.

Using operators, a user can extend the Navigation operator to detect `onKeyDown` and `onKeyUp` inputs and set the desired input keys and rotation axes. In the case of the support request, we look for key presses for X, Y, and Z and if held, will set the rotation axis to (1, 0, 0), (0, 1, 0), and (0, 0, 1) respectively. If released, the rotation vector is reset to undefined and behaves as default.

### CAE-1312 Updated internal XML parser library

To remove a CVE we have removed an internal xml parser library, TinyXML, which has been discontinued. The xml parser has been replaced with pugixml 1.14. (https://pugixml.org/)

This is an internal implementation used for reading/writing Envision VTFx files and should not cause any changes for Envision users.

Note! The CeeReport component still uses TinyXML. This will be addressed in a later release.

### CAE-1340 Add state group support on Web

State groups are extracted from the states which are flagged as groups and sent to the client (`ModelDirectory.stateGroupInfoArray`). The user can inspect the state groups and set them as needed in `ModelSpec.stateIdArray` to setup an animation.

### CAE-1361 Extended and documented LOD controls for streaming in RemoteModel

Extended and documented LOD controls for streaming in RemoteModel

## Fixed Bugs

### CAE-1308 view.getBoundingBoxVisibleParts() not working when there are invisible parts with opacity

The `getBoundingBoxVisibleParts()` now handles invisible parts with opacity.

### CAE-1309 Expanded beams: Draw Style set to LINES make beams invisible

This fix allows for the visualization of expanded elements as lines using `DrawStyle.LINES` (or any other lines based drawstyle, such as `HIDDEN_LINES_REMOVED`). Prior to this change, using these draw styles resulted in no rendering of the element, since triangles were not being generated/displayed, and lines were not supported.

### CAE-1308 Invalid bounding box for an empty view

`RemoteModel.getBoundingBox` and `View.getBoundingBox` are now correctly returning an invalid bounding box when all the parts are hidden (the view is empty).

### CAE-1342 Switching case from case with animation to the one with no animations produces an error

- Fixed an error when repopulating `ModelDirectory` after switching a VTFx case
- Fixed a bug when switching from a VTFx case with animation to a case without one

### CAE-1353 Assert failures in BoundingBox functions when all parts hidden

Now support sending an invalid bounding box to client, in the event all parts are hidden and the computed bounding box is empty. This was an issue introduced in Envision 2.0 with the update to bounding box handing.

### CAE-1362 OpenFOAM: Crash in Data Provider for dataset with sampled surfaces

The support for multi-dimensional results for sampled surfaces were not fully implemented in the OpenFOAM data provider. Improvements were done to the sampled surfaces and node-averaged multi-dimensional (vector, tensor) results.

### CAE-1363 Exclude undefined values from global maximum in QueryResultMinMax

Ignore undefined results by default for global min/max in QueryResultMinMax

### CAE-1366 Displacement results show wrong scaleFactor on Web

When applying the default case to a model with a displacement result, that displacement will have its `scaleFactor` set by default to 3.4028234663852886e+38 (if it’s not set otherwise from the VTFx file). This fix makes sure that the scale factor defaults in this scenario to 1.

### CAE-1367 VTU: Not correctly identifying file as vtu file

The file interface for VTU files did not always correctly identify the VTU file. This logic has been improved.

Conversation saved
HOOPSY BETA

### Hello! I'm HOOPSY

Your multilingual generative AI assistant for documentation. Ask me anything about HOOPS Envision for Desktop in your own language, or choose a sample question below to start a conversation:

What is HOOPS Envision for Desktop?
What are the latest release notes for HOOPS Envision for Desktop?
How do I start evaluating HOOPS Envision for Desktop?
How do I write my first sample application?
How can I get assistance?

HOOPSY may store conversations according to OpenAI's policy. Responses may not always be accurate.

HOOPSY is thinking...