Skip to content

Viewer 3.16.0 - Quince

Choose a tag to compare

@MajorMeerkatThe3rd MajorMeerkatThe3rd released this 08 Jul 14:50
51ec55e

The main focus of this release was the refactoring of the Gumball into a broader Transformation Tools package, which now also includes a new Rectangle Transform tool. Alongside this, significant improvements were made to the Drawing Tools, including the ability to run multiple instances simultaneously, a new pause/resume functionality, many new configuration options, and restriction visualization. A third major area of this release was rendering performance: the glTF loading pipeline, shader caching, scene tree management, and interaction effects were all overhauled to reduce CPU time, memory allocation, and main-thread blocking.

Transformation Tools

  • The @shapediver/viewer.features.gumball package has been replaced by @shapediver/viewer.features.transformation-tools. Please refer to the migration guide for details on the renamed exports.
  • Introduced the new RectangleTransform tool, which allows translating, rotating, and scaling objects in a 2D plane using a widely known handle. It is also available as an interaction parameter type (rectangleTransform) to be used directly from Grasshopper.
  • Implemented restriction visualization for transformation tools restrictions.
  • Various fixes for rotation issues and occlusion.

Drawing Tools

  • Multiple instances of the Drawing Tools can now be active simultaneously. The previous restriction that only one instance could exist at a time has been removed.
  • Implemented pause() and continue() to suspend and resume all user interactions without closing the tool.
  • Added movePoint() for programmatic movement of individual points.
  • Added cancelDrag() and isInteractionActive() to query and cancel in-progress hover/drag interactions.
  • New behavior settings block: enable/disable insertion, deletion, translation, and selection of points independently, as well as a displayUnit option for imperial and other unit formats.
  • New visualization settings (previously named display): separate visualization settings for edge controls, pointer position label, and per-restriction wireframe display.
  • New keyBindings settings block: customize the keyboard shortcuts for all drawing tool actions (insert, delete, confirm, cancel, undo, redo).
  • New geometry options: weightedAdjacency for propagating point movements to neighbors, disabledPoints to lock specific points in place, and constraints to restrict position and size along each axis.
  • New controls array for attaching custom point controls (e.g. edge-aligned or plane-aligned movement).
  • Support for imperial display units ("mile", "feet", "inches").
  • Restriction visualization (wireframe outline) is now built in and can be configured per restriction via wireframe and wireframeColor properties on point, line, and geometry restrictions.

Camera

  • New initialAutoAdjust option on ICameraApi and in ViewportCreationDefinition to automatically fit the camera to the model the first time a scene is loaded.
  • Fixed issues with orthographic camera zooming into the model and near-plane clipping.
  • Fixed plane restriction interactions with orthographic cameras.

Session Error Events

  • Introduced the new SESSION_ERROR event (EVENTTYPE_SESSION.SESSION_ERROR), which carries an ISessionErrorEvent with the originating Error object. This makes it possible to react to session-level errors without wrapping createSession / customize calls in try-catch.
  • Implemented texture fallback for failed texture downloads so that models are still displayed even if some textures cannot be loaded.

Performance

  • Added ViewportApi.updateGeometryData() for updating the material of a geometry on the GPU without triggering a full scene tree reconversion — ideal for hover/interaction effects.
  • Integrated ImageBitmap for faster texture decoding during glTF loading.
  • General glTF loading performance improvements and shader caching improvements.
  • Attribute Visualization performance improvements.

Bugfixes

  • Fixed scene extents computation for very small models (SS-9520).
  • Fixed a race condition in parameter computation triggers (SS-9476).
  • Fixed scene extents / camera adjust for models with instanced geometry.
  • Fixed text label rendering issues.