.. role:: raw-html(raw)
    :format: html

.. |supported| image:: /_assets/images/green_circle.png
.. |na| image:: /_assets/images/grey_circle.png
.. |unsupported| image:: /_assets/images/red_circle.png
.. |partialsupport| image:: /_assets/images/gray_green_circle.png


################################
HOOPS Visualize Desktop 2026.7.0
################################

Overview
========

Tech Soft 3D is pleased to announce the release of HOOPS Visualize 2026.7.0. This release introduces expanded CAD interoperability, modernized Linux platform support, enhancements to model subwindow and label controls, and improvements to point cloud streaming and integration workflows across HOOPS Visualize Desktop  and Visualize Web.


What's New in HOOPS Visualize 2026.7.0
---------------------------------------

Expanded CAD & Point Cloud Format Interoperability
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

**QIF Format Support for Desktop Applications**

HOOPS Visualize now provides native capabilities to read and display Quality Information Framework (QIF) file data. This enables developers to seamlessly incorporate QIF model data into digital manufacturing and inspection workflows.

**E57 Point Cloud Import Support**

Support for the E57 point cloud file format has been integrated into the point cloud import interface. Developers can now ingest E57 point cloud files directly into HPS databases for high-performance visualization.

**Sprocket Point Cloud**

A dedicated Sprocket Point Cloud has been added to the API, taking the place of HPS::PointCloud. This facilitates modular integration and distribution for desktop visualization applications and web applications through the Visualize Web SDK.


Model Subwindow and Label Handling Interfaces
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

New interface options in HPS enhance control over label subwindows attached to 3D models:

- **Automatic Camera Tracking:** Subwindows no longer require manual application updates during camera movements; position and orientation sync automatically.

- **Natural Z-Sorting:** Subwindows can now be depth-sorted naturally alongside model geometry while retaining the ability to set priority overrides for specialized annotation displays.


Quality and Stability Enhancements
------------------------------------

In addition to feature enhancements, HOOPS Visualize 2026.7.0 delivers several targeted bug fixes and stability improvements across core rendering modules:

- **HSF Export Compatibility:** Addressed backward-compatibility issues when exporting HSF files to ensure files saved in current releases can be reliably loaded in earlier versions of HOOPS Visualize.

- **Text Formatting & Attributes:** Resolved an unexpected crash when applying character attributes (``SetCharacterAttributes``) to strings containing Unicode characters.

- **Visual Selection & Rendering Performance:** Resolved a crash in the visual selection algorithm and optimized cut-geometry generation performance during model translation.

- **Qt Integration:** Corrected a layout layer issue where HOOPS widgets rendered on top of overlapping ``QGraphicsItem`` elements in Qt-based applications.

- **Transformed Text Overlaps:** Fixed display issues where transformed background mask text overlapped during zoom operations.

----

Technology Updates
==================

Library Compatibility Information
---------------------------------

.. only:: not spatial

   .. csv-table::
      :header: "Library name", "Version", "Windows", "Linux", "OS X", "Android", "iOS", "Notes"

      "Android NDK", "r27", |unsupported|, |unsupported|, |unsupported|, |supported|, |unsupported|, ""
      "HOOPS Exchange", "2026.7.0", |supported|, |supported|, |supported|, |supported|, |supported|, "Android support is limited. See the programming guide."
      "HOOPS Visualize Web HTML Sprocket", "2026.6.0", |supported|, |unsupported|, |unsupported|, |supported|, |supported|, "Formerly the HOOPS Communicator HTML Sprocket. Only works with Visual Studio toolset 142."
      "HOOPS Visualize Web Streaming Sprocket (HCA)", "2025.3.0", |supported|, |unsupported|, |unsupported|, |supported|, |supported|, "Formerly the HOOPS Communicator Streaming Sprocket. Only works with Visual Studio toolset 142."
      ".NET Framework", "4.8", |supported|, |unsupported|, |unsupported|, |unsupported|, |unsupported|, "Required for Visual Studio v14.2 libraries and samples."
      ".NET Standard", "2.0", |supported|, |unsupported|, |unsupported|, |unsupported|, |unsupported|, "Required for Visual Studio 2019 (toolset 142) and 2022 (toolset 143)."
      ".NET Core", "8.0", |supported|, |unsupported|, |unsupported|, |unsupported|, |unsupported|, "Required for Visual Studio 2022 (toolset 143)."
      "Parasolid", "35.1", |supported|, |supported|, |supported|, |unsupported|, |supported|, "For iOS platforms, support is limited to 64-bit platforms for the Parasolid Sprockets (hps_sprk_parasolid and hps_sprk_exchange_parasolid)."
      "RealDWG", "2023", |supported|, |unsupported|, |unsupported|, |unsupported|, |unsupported|, "RealDWG 2023 is only compatible with Visual Studio 2019 (v142 toolchain) "
      "RealDWG", "2025", |supported|, |unsupported|, |unsupported|, |unsupported|, |unsupported|, "RealDWG 2025 is only compatible with Visual Studio 2022 (v143 toolchain) "
      "Qt", "5.12.7", |supported|, |supported|, |supported|, |unsupported|, |unsupported|, ""
      "SketchUp", "2023", |supported|, |unsupported|, |unsupported|, |unsupported|, |unsupported|, "VS2019 Redistributable required, and only x64 Sketchup is supported"

.. only:: spatial

   .. csv-table::
      :header: "Library name", "Version", "Windows", "Linux", "OS X", "Android", "iOS", "Notes"

      "Android NDK", "r27", |unsupported|, |unsupported|, |unsupported|, |supported|, |unsupported|, ""
      ".NET Framework", "4.8", |supported|, |unsupported|, |unsupported|, |unsupported|, |unsupported|, "Required for Visual Studio v14.2 libraries and samples."
      ".NET Standard", "2.0", |supported|, |unsupported|, |unsupported|, |unsupported|, |unsupported|, "Required for Visual Studio 2019 (toolset 142) and 2022 (toolset 143)."
      ".NET Core", "8.0", |supported|, |unsupported|, |unsupported|, |unsupported|, |unsupported|, "Required for Visual Studio 2022 (toolset 143)."
      "Parasolid", "35.1", |supported|, |supported|, |supported|, |unsupported|, |supported|, "For iOS platforms, support is limited to 64-bit platforms for the Parasolid Sprockets (hps_sprk_parasolid and hps_sprk_exchange_parasolid)."
      "RealDWG", "2023", |supported|, |unsupported|, |unsupported|, |unsupported|, |unsupported|, "RealDWG 2023 is only compatible with Visual Studio 2019 (v142 toolchain) "
      "RealDWG", "2025", |supported|, |unsupported|, |unsupported|, |unsupported|, |unsupported|, "RealDWG 2025 is only compatible with Visual Studio 2022 (v143 toolchain) "
      "Qt", "5.12.7", |supported|, |supported|, |supported|, |unsupported|, |unsupported|, ""
      "SketchUp", "2023", |supported|, |unsupported|, |unsupported|, |unsupported|, |unsupported|, "VS2019 Redistributable required, and only x64 Sketchup is supported"


Third-Party Library Updates
---------------------------

================== =======================
*Library*          *New Version*
================== =======================
libE57Format       3.1.1
Xerces-C++         3.2.5
libtiff            4.7.2
================== =======================

*libE57Format* and *Xerces-C++* are new dependencies introduced by the E57 point cloud import added in this release.

Platform Changes
----------------

* **Linux hosts without a GPU**
  HPS core no longer links OpenGL itself, so it starts up on headless build agents, containers and hosts with no graphics driver.
  Your build is unaffected: applications that link HPS still get OpenGL exactly as before.
  GLU was never used and is no longer linked on any platform.

* **Red Hat Enterprise Linux 8 (RHEL 8) Support**
Linux binaries now support Red Hat Enterprise Linux 8 deployments by targeting an updated toolchain configuration compatible with older ``libstdc++`` runtime environments, ensuring seamless integration across enterprise Linux clusters.

* **HOOPS Visualize Web (HVW) 2026.6.0 Integration**
The underlying HOOPS Visualize Web dependency across HPS components has been updated to version 2026.6.0, bringing updated web rendering components and performance optimizations to HTML and web-connected workflows.


New Features
============

New Functions / Capabilities
----------------------------

* **E57 point cloud import**
  HOOPS Visualize Desktop now reads ASTM E57 (``.e57``) files, the format most laser scanners and reality-capture tools export.
  Import them with ``HPS::v2::PointCloud::File::Import``.
  Per-point color and intensity are read from the file when present.
  Each scan is imported into its own subsegment with its own pose, so you can handle scans individually.
  Spherical coordinates are not supported, and E57 import ships on Windows in this release.
  See :ref:`Notes on Point Cloud Files <prog_guide/0901_importing_files:Notes on Point Cloud Files>`.

* **Point-anchored subwindows**
  A subwindow can now be anchored to an object-space point instead of a window-relative rectangle.
  A callout or a label then stays attached to the geometry it annotates as the camera moves.

* **Subwindow sorting**
  ``SetSubwindowSorting`` draws them in segment-priority order instead of visitation order, with depth breaking ties.
  Selection follows the same order, so what you click is what you see on top.
  See :ref:`Subwindow Sorting <prog_guide/0304_subwindows:Subwindow Sorting>`.

* **HSF export version**
  ``HPS::Stream::ExportOptionsKit::SetTargetVersion`` pins the export to a file-format version you choose.
  ``HPS::Stream::ImportResultsKit::ShowVersion`` reports the version you just loaded.
  Both are available in the HOOPS Demo Viewer HSF export dialog.

.. only:: not spatial

   * **QIF import**
     You can now open Quality Information Framework files, used to exchange dimensional metrology and inspection results.
     The new ``HPS::Exchange::File::Format::QIF`` enumerator identifies them.
     QIF ships on Windows in this release.

   * **Exchange format discovery**
     Four new functions on ``HPS::Exchange::File`` report the formats, names and file patterns Exchange supports on the current platform.
     Build your filter from them and it stays correct as formats come and go.
     See :ref:`Discovering Supported Formats <prog_guide/0906_exchange_integration:Discovering Supported Formats>`.


New Drivers
-----------

No new drivers in this release.


API Changes
===========

New API Functions
-----------------

The functions behind the features above, grouped by the class they belong to.

``HPS::SubwindowKit`` and ``HPS::SubwindowControl``

* ``SetSubwindow(Point const & in_subwindow_point_position, IntRectangle const & in_subwindow_offsets)`` - defines a subwindow from an object-space anchor point and pixel-space offsets.
* ``ShowSubwindow(Point & out_subwindow_point_position, IntRectangle & out_subwindow_offsets) const`` - returns ``true`` only when the subwindow was defined by a point.
* ``SetSubwindowSorting(bool in_sorting = true)``, ``UnsetSubwindowSorting()``, ``ShowSubwindowSorting(bool & out_sorting) const``.

``HPS::Stream::ExportOptionsKit``

* ``SetTargetVersion(unsigned int in_version)``, ``UnsetTargetVersion()``, ``ShowTargetVersion(unsigned int & out_version) const``.

``HPS::Stream::ImportResultsKit``

* ``SetVersion(unsigned int in_version)``, ``UnsetVersion()``, ``ShowVersion(unsigned int & out_version) const``.

``HPS::v2::PointCloud::ImportResultsKit``

* ``SegmentKeyArray ShowPointCloudSegments() const`` - the subsegments created for each scan in the imported file, in import order.
  Currently populated for E57 imports only; empty otherwise.

.. only:: not spatial

   ``HPS::Exchange::File``

   * ``Format::QIF`` - new enumerator for Quality Information Framework files.
     Windows only.
   * ``FormatArray`` - ``typedef std::vector<Format, HPS::Allocator<Format>>``.
   * ``static FormatArray GetFormats()`` - every format importable on the current platform.
     Formats absent from the running configuration are not returned, and ``Format::Unsupported`` is never returned.
   * ``static UTF8 GetFormatName(Format in_format)`` - short, user-facing name, e.g. ``"QIF"``.
   * ``static UTF8 GetFormatDescription(Format in_format)`` - file-dialog friendly description, e.g. ``"Quality Information Framework Files"``.
   * ``static UTF8Array GetFormatFilePatterns(Format in_format)`` - lower-case filename globs ready for a file dialog, e.g. ``{"*.stp", "*.step", "*.stpz", "*.stp.z"}`` for ``Format::STEP``.
     The most common pattern comes first.
     Empty for ``Format::Unsupported``.


Functional Changes
------------------

* **Per-character text attribute ranges**
  The attribute array is now sized to the range you ask for, not to the length of the string on the kit.
  The result no longer depends on whether you call ``SetText`` before or after ``SetCharacterAttributes``.

* **SetCharacterAttributes default count**
  For the single-kit overload it is now ``1`` instead of ``std::numeric_limits<size_t>::max()``, so an unqualified call now styles one character rather than the rest of the string.
  For the array overloads, the effective default is the length of the supplied array.
  Code that relied on the old "to end of text" default must now pass the count explicitly.

  .. admonition:: Note

     This is a source-compatible but behavior-changing modification.
     Review any call to ``SetCharacterAttributes`` that omits ``in_count``.

* ``HPS::TextKit::UnsetCharacterAttributes`` now leaves the kit untouched when ``in_offset`` is past the end of the attribute array.

* **Subwindow priority scope**
  Segment priority normally orders sibling segments only.
  When subwindow sorting is enabled on a window ancestor, priority instead orders every subwindow segment beneath that ancestor.


Documentation Changes
=====================

* The Programming Guide has a new :ref:`Subwindow Sorting <prog_guide/0304_subwindows:Subwindow Sorting>` section.
  The *Subwindow Priority* section now states that priority alone orders only subwindows sharing a common parent.

* :ref:`Notes on Point Cloud Files <prog_guide/0901_importing_files:Notes on Point Cloud Files>` now covers E57 import.

* :ref:`HSF Export <prog_guide/0902_exporting_files:HSF Export>` now covers targeting a file-format version on export, and reading it back on import.

* :doc:`Supported File Formats </general/supported_file_formats>` now lists E57 among the importable point cloud formats.

.. only:: not spatial

   * A new :ref:`Discovering Supported Formats <prog_guide/0906_exchange_integration:Discovering Supported Formats>` section shows how to build a file dialog filter.


Deprecations
============

* **HPS Core PointCloud** *(reminder, deprecated in 2026.6.0)*
  ``HPS::PointCloud`` in HPS Core is deprecated in favor of ``HPS::v2::PointCloud``, and targeted for removal in HPS 2028.1.0.
  New functionality, including E57 import, goes only to ``HPS::v2::PointCloud``.

* **PointCloud import returning a notifier** *(reminder)*
  ``HPS::v2::PointCloud::File::Import(char const * in_file_name, ImportOptionsKit const & in_options)`` remains deprecated.
  Use the overload that takes an ``ImportNotifier`` as a parameter.

* Support for Visual Studio 2019 (toolchain 14.2) and .Net 8 will be discontinued starting with HOOPS Visualize Desktop 2027.1.0, planned for release in January 2027.

* Support for macOS on Intel architecture will be discontinued starting with HOOPS Visualize Desktop 2027.1.0, planned for release in January 2027 due to the end of support in MacOS 27.

* HOOPS Communicator sprocket (HCA) is deprecated and will be removed in HPS 2027.1.0.


Fixed Bugs
==========

.. csv-table::
    :header: "Issue", "Description"

    "SDHV-21649", "Added an option to export HSF at an desired version"
    "SDHV-21614", "Removed the text-length limit on character attributes, fixing data loss and crashes."
    "SDHV-21609", "Guarded against depth peeling during visual selection, fixing a crash"
    "SDHV-21539", "Stopped text labels with backgrounds from overlapping when zooming in and out"
    "SDHV-21399", "Sped up OOC point cloud preprocessing by replacing slow string stream parsing"
    "SDHV-21346", "Fixed slow scene updates when a modelling matrix was added to a cut model"


Fixed CVEs
==========

.. csv-table::
    :header: "Issue", "Description"

    "VIZ-7722", "libtiff upgraded to 4.7.2."
