1.10.0 Change Notes
View transition animations
iModel.js will now perform smooth animations when changing between saved views, if possible. If the beginning and ending views are in the same direction but far apart, a zoom out then in path is followed to provide context. See ScreenViewport.animation for settings that control view animations.
Viewport.synchWithView previously accepted a boolean
argument indicating whether or not the changes should be saved in the undo buffer. It now alternatively accepts a ViewChangeOptions allowing further customization of its behavior, including whether and how to animate the transition.
IModel Transformation and Data Exchange
IModelExporter, IModelTransformer, and IModelImporter are now beta and provide low-level functionality needed for iModel transformation and data exchange. See the iModel Transformation and Data Exchange article for more information.
High-DPI display support
Beta support for device pixel ratio was introduced in v1.9.0. 1.10.0 fixes a handful of bugs associated with this feature. In particular, device pixel ratio may vary between different Viewports. As a result, the previously free-standing APIs have moved to the Viewport class:
- Viewport.devicePixelRatio replaces
queryDevicePixelRatio
. - Viewport.cssPixelsToDevicePixels replaces
cssPixelsToDevicePixels
.
Do not assume that Viewport.devicePixelRatio
will always return window.devicePixelRatio
.
Viewing tools
- New walk tool LookAndMoveTool.
- Supports mouse look and keyboard (wasd) for movement.
- Touch screen control sticks for look and move.
- Improved responsiveness when using touch controls.
Visualization
- Reduced CPU overhead associated with binding uniform shader program variables, resulting in up to 30% improvement in frames per second.
- Graphics for reality models and background maps load much more quickly and smoothly.
Geometry
Matrix3d inverse state bug fix
- BUG: matrix times matrix multipliers (multiplyMatrixMatrix, multiplyMatrixMatrixInverse, multiplyMatrixInverseMatrix, multiplyMatrixMatrixTranspose, multiplyMatrixTransposeMatrix) did not transfer inverse coefficient arrays into the product.
- When an existing result matrix marked "inverseStored" was supplied, the "inverseStored" marking persisted, but the product inverse coefficient matrix was not constructed
- When no result was supplied in the call, there were no problems.
- As corrected, all 5 multiplications construct inverse products when possible, and mark up appropriately.
CurveCurve.intersectionPairsXY
returns details of line-line and arc-arc coincident geometry
CurveLocationDetail
data carrier has new optional membersfraction1
= fractional position for end of coincident sectionpoint
= point at end of coincident sectiondetail.captureFraction1Point1 (f,xyz)
directly captures (no clone) fraction and point.- CurveLocationDetail.createCurveEvaluatedFractionFraction` constructor with 2 fractions.
detail.inverseInterpolateFraction (f, defaultLocalFraction)
maps input fraction f to local fraction of thefraction, fraction1
interval of the detail.detail.swapFractionsAndPoints ()
swaps the[fraction,point]
and[fraction1, point1]
values (if both defined)
Miscellaneous
- New
Arc3d
methodarc.scaleAboutCenterInPlace (scaleFactor);
- New
Matrix3d
methodmatrixA.multiplyMatrixInverseMatrix(other: Matrix3d, result?: Matrix3d): Matrix3d | undefined
- New
Segment1d
methodsegment.clampDirectedTo01(): boolean;
- intersect with [0,1] interval
- maintain current direction
- return false if empty after clip.
- New
Segment1d
methodsegment.
reverseIfNeededForDeltaSign(sign?: number): void;`- maintain endpoints, but reverse so direction corresponds to request.
Last Updated: 15 May, 2024